├── .editorconfig ├── .gitattributes ├── .github ├── CONTRIBUTING.md └── ISSUE_TEMPLATE.md ├── .gitignore ├── .travis.yml ├── .vscode └── settings.json ├── LICENSE.md ├── README.md ├── package-lock.json ├── package.json ├── scripts ├── schema.json └── validate-status-json.js └── status.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # For more information about the configurations used 2 | # in this file, please see the EditorConfig documentation: 3 | # 4 | # https://editorconfig.org 5 | 6 | root = true 7 | 8 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 | 10 | [*] 11 | 12 | charset = utf-8 13 | indent_size = 2 14 | indent_style = space 15 | insert_final_newline = true 16 | trim_trailing_whitespace = true 17 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Automatically normalize line endings for all text-based files. 2 | # https://git-scm.com/docs/gitattributes#_end_of_line_conversion 3 | 4 | * text=auto 5 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to status.microsoftedge.com 2 | 3 | There are many ways you can contribute to status.microsoftedge.com: 4 | 5 | ## Adding New Features 6 | The web platform is vast and ever-changing, so we often get requests to add new features to the site. In the spirit of tracking the modern interoperable web platform, we generally only add features that meet at least the following criteria: 7 | 8 | 1. Exposes new, significant, and useful capabilities that web developers can adopt in sites 9 | 2. Likely to be eventually implemented by the majority of browsers 10 | 3. Currently lacking support in at least one major browser 11 | 12 | Over time, it's expected (and desired!) that features will become fully interoperable, meaning they no longer meet the third requirement above. We don't currently have a plan to remove such features from the site, but may do so at a future date. Not all requests to add features will be accepted as there is a high maintenance cost to keep interoperability, documentation, and standards statuses up to date. 13 | 14 | ## Updating Features 15 | Feature data on status.microsoftedge.com is merged from both status.json and also the [Chromium Dashboard](https://github.com/GoogleChrome/chromium-dashboard). While it is possible to override data from the Chromium Dashboard, it is preferred that this data be updated upstream in the Chromium Dashboard project. This allows both sites to reflect accurate information. 16 | 17 | When requesting to change the implementation status of a browser or the standardization status, please include a citation in your pull request to where the change in status can be validated. Microsoft believes that standards organizations (such as the W3C) are the best place for developing interoperable open web standards. Therefore, please reference standards specifications in pull requests, when available. 18 | 19 | ## Reporting bugs in the website 20 | Bugs happen so if you find one please open an issue. 21 | 22 | # Using Pull Requests 23 | If you want to contribute to the repo, please use a GitHub pull request. There are just a couple things to keep in mind: 24 | - Make sure there is an issue open for your PR. If there isn't you can create one! 25 | - The commit message should reference the issue and hopefully fix it (you can use "fixes #issueNumber" or "ref #issueNumber" if it doesn't fix it completely). 26 | - If you are adding or modifying a feature add the links to the documentation to verify your changes are valid. 27 | - Separate PR for separate issues. If you are updating several feature please do a PR for each one. 28 | 29 | Thank you for contributing to status.microsoftedge.com! 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | :warning: Notes: 2 | 3 | * Note that this GitHub project is *not* for making feature requests for or reporting bugs in Internet Explorer or Microsoft Edge. Browser feedback can be provided through the built in `Help and feedback > Send feedback` menu or `alt + shift + i`. 4 | * For most of the features, the support data for browsers other than Microsoft Edge and Internet Explorer comes from the [Chromium Dashboard](https://www.chromestatus.com), so bugs related to that data should be filed [here](https://github.com/GoogleChrome/chromium-dashboard/issues). 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # For more information about the configurations used 2 | # in this file, please see the Travis CI documentation: 3 | # https://docs.travis-ci.com 4 | 5 | language: node_js 6 | 7 | dist: trusty 8 | 9 | node_js: 10 | - node 11 | 12 | notifications: 13 | email: 14 | on_failure: always 15 | on_success: never 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "fileMatch": [ "/status.json" ], 5 | "url": "/scripts/schema.json" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) Microsoft Corporation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 4 | 5 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Status [![Build Status](https://travis-ci.org/MicrosoftEdge/Status.svg)](https://travis-ci.org/MicrosoftEdge/Status) 2 | 3 | This project contains the data for [`status.microsoftedge.com`](https://status.microsoftedge.com), a portal for the latest implementation status and future roadmap for interoperable web platform features in Microsoft Edge and other browsers, including Internet Explorer. 4 | 5 | 6 | ## Using Status Data 7 | 8 | This repository provides valuable data on the implementation status and future plans for web platform features in Microsoft Edge. This data is encouraged to be used for other purposes as licensed by the [Creative Commons Attribution 2.5 License](https://creativecommons.org/licenses/by/2.5/legalcode), being provided as a JSON document served at https://developer.microsoft.com/en-us/microsoft-edge/api/platform/status/ with an `Access-Control-Allow-Origin: *` header, so it may be requested cross-domain. 9 | 10 | 11 | ## Contributing 12 | 13 | Want to contribute to this project? We'd love to have your help! Take a look at the [Contributing Guidelines](.github/CONTRIBUTING.md) before you dive in. For many features, support data for browsers other than Internet Explorer and Microsoft Edge comes from the [Chromium Dashboard](https://www.chromestatus.com) and bugs against that data can be filed on [Chromium Dashboard GitHub page](https://github.com/GoogleChrome/chromium-dashboard/issues). 14 | 15 | When adding a new feature, add it to the very end and increment your new status item's `"statusid"` value by 1 (eg: If the status item's `statusid` before yours is 350, make your `statusid` value 351). 16 | 17 | Note that this GitHub project is *not* for making feature requests for or reporting bugs in Internet Explorer or Microsoft Edge. Browser feedback can be provided through the built in `Help and feedback > Send feedback` menu or `alt + shift + i`. 18 | 19 | 20 | ## Additional Attributions 21 | 22 | Portions of the content in this page are from [chromestatus.com](https://www.chromestatus.com), used under [Creative Commons Attribution 2.5 License](https://creativecommons.org/licenses/by/2.5/legalcode). 23 | 24 | No trademark licenses or rights are provided. All trademarks are the property of their respective owners. 25 | 26 | ## Code of Conduct 27 | 28 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 29 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "ajv": { 6 | "version": "6.5.4", 7 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", 8 | "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", 9 | "dev": true, 10 | "requires": { 11 | "fast-deep-equal": "^2.0.1", 12 | "fast-json-stable-stringify": "^2.0.0", 13 | "json-schema-traverse": "^0.4.1", 14 | "uri-js": "^4.2.2" 15 | } 16 | }, 17 | "fast-deep-equal": { 18 | "version": "2.0.1", 19 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 20 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 21 | "dev": true 22 | }, 23 | "fast-json-stable-stringify": { 24 | "version": "2.0.0", 25 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 26 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 27 | "dev": true 28 | }, 29 | "json-schema-traverse": { 30 | "version": "0.4.1", 31 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 32 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 33 | "dev": true 34 | }, 35 | "punycode": { 36 | "version": "2.1.1", 37 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 38 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 39 | "dev": true 40 | }, 41 | "uri-js": { 42 | "version": "4.2.2", 43 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 44 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 45 | "dev": true, 46 | "requires": { 47 | "punycode": "^2.1.0" 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "ajv": "^6.5.4" 4 | }, 5 | "private": true, 6 | "scripts": { 7 | "test": "node scripts/validate-status-json.js" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /scripts/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema#", 3 | "definitions": { 4 | "feature_categories": { 5 | "enum": [ 6 | "Accessibility", 7 | "CSS", 8 | "DOM", 9 | "Device", 10 | "File APIs", 11 | "Graphics", 12 | "JavaScript", 13 | "Misc", 14 | "Multimedia", 15 | "Network / Connectivity", 16 | "Offline / Storage", 17 | "Performance", 18 | "Realtime / Communication", 19 | "Security", 20 | "User input", 21 | "Web Components" 22 | ], 23 | "type": "string" 24 | }, 25 | "feature_priority": { 26 | "enum": [ 27 | "High", 28 | "Low", 29 | "Medium" 30 | ], 31 | "type": "string" 32 | }, 33 | "implementation_statuses": { 34 | "enum": [ 35 | "Behind a flag", 36 | "Deprecated", 37 | "Enabled by default", 38 | "In Development", 39 | "In Development (Windows & Mac backend services)", 40 | "No active development", 41 | "No public signals", 42 | "Not currently planned", 43 | "Not Supported", 44 | "Partial Support", 45 | "Prefixed", 46 | "Preview Release", 47 | "Provided-by-underlying-OS", 48 | "Removed", 49 | "Shipped", 50 | "Supported", 51 | "Under Consideration" 52 | ], 53 | "type": "string" 54 | }, 55 | "standard_statuses": { 56 | "enum": [ 57 | "De-facto standard", 58 | "Established standard", 59 | "Working draft or equivalent", 60 | "Editor's draft", 61 | "Public discussion", 62 | "No public standards discussion" 63 | ], 64 | "type": "string" 65 | }, 66 | "url": { 67 | "format": "uri", 68 | "type": "string" 69 | }, 70 | "vendor_views": { 71 | "properties": { 72 | "additionalProperties": false, 73 | "text": { 74 | "$ref": "#/definitions/implementation_statuses" 75 | }, 76 | "value": { 77 | "maximum": 12, 78 | "minimum": 1, 79 | "type": "number" 80 | } 81 | }, 82 | "required": [ 83 | "text" 84 | ], 85 | "type": "object" 86 | } 87 | }, 88 | "description": "Schema for Microsoft Edge platform status JSON", 89 | "items": { 90 | "additionalProperties": false, 91 | "type": "object", 92 | "properties": { 93 | "category": { 94 | "$ref": "#/definitions/feature_categories" 95 | }, 96 | "demo": { 97 | "$ref": "#/definitions/url" 98 | }, 99 | "ff_views": { 100 | "$ref": "#/definitions/vendor_views" 101 | }, 102 | "ff_views_link": { 103 | "$ref": "#/definitions/url" 104 | }, 105 | "id": { 106 | "type": "number" 107 | }, 108 | "ieStatus": { 109 | "additionalProperties": false, 110 | "properties": { 111 | "flag": { 112 | "type": "boolean" 113 | }, 114 | "iePrefixed": { 115 | "minLength": 1, 116 | "type": "string" 117 | }, 118 | "ieUnprefixed": { 119 | "minLength": 1, 120 | "type": "string" 121 | }, 122 | "platform": { 123 | "$type": "object", 124 | "properties": { 125 | "desktop": { 126 | "type": "boolean" 127 | }, 128 | "mixedreality": { 129 | "type": "boolean" 130 | }, 131 | "mobile": { 132 | "type": "boolean" 133 | }, 134 | "xbox": { 135 | "type": "boolean" 136 | } 137 | } 138 | }, 139 | "priority": { 140 | "$ref": "#/definitions/feature_priority" 141 | }, 142 | "text": { 143 | "$ref": "#/definitions/implementation_statuses" 144 | } 145 | }, 146 | "required": [ 147 | "text" 148 | ] 149 | }, 150 | "edgechromiumoverride": { 151 | "additionalProperties": false, 152 | "properties": { 153 | "status_text": { 154 | "$ref": "#/definitions/implementation_statuses" 155 | }, 156 | "supported_buildnum": { 157 | "type": "number" 158 | } 159 | } 160 | }, 161 | "impl_status_chrome": { 162 | "$ref": "#/definitions/implementation_statuses" 163 | }, 164 | "link": { 165 | "$ref": "#/definitions/url" 166 | }, 167 | "msdn": { 168 | "$ref": "#/definitions/url" 169 | }, 170 | "name": { 171 | "minLength": 1, 172 | "type": "string" 173 | }, 174 | "shipped_opera_milestone": { 175 | "type": "boolean" 176 | }, 177 | "safari_views": { 178 | "$ref": "#/definitions/vendor_views" 179 | }, 180 | "safari_views_link": { 181 | "$ref": "#/definitions/url" 182 | }, 183 | "spec": { 184 | "minLength": 1, 185 | "type": "string" 186 | }, 187 | "standardStatus": { 188 | "$ref": "#/definitions/standard_statuses" 189 | }, 190 | "summary": { 191 | "minLength": 20, 192 | "type": "string" 193 | }, 194 | "uservoiceid": { 195 | "type": "number" 196 | }, 197 | "statusid": { 198 | "type": "number" 199 | } 200 | } 201 | }, 202 | "required": [ 203 | "category", 204 | "ieStatus", 205 | "name", 206 | "summary", 207 | "statusid" 208 | ], 209 | "type": "array" 210 | } 211 | -------------------------------------------------------------------------------- /scripts/validate-status-json.js: -------------------------------------------------------------------------------- 1 | const ajv = require('ajv'); 2 | const validator = new ajv({ 3 | $data: true, 4 | allErrors: true, 5 | logger: false, 6 | schemaId: 'id', 7 | useDefaults: true, 8 | verbose: true 9 | }); 10 | 11 | const schema = require('./schema.json'); 12 | const statusData = require('./../status.json'); 13 | const validate = validator.compile(schema); 14 | 15 | // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16 | 17 | if (!validate(statusData)) { 18 | console.error(validate.errors); 19 | process.exit(1); 20 | } else { 21 | process.exit(0); 22 | } 23 | --------------------------------------------------------------------------------