From 2e4b186fe558262c62d594bb49659252f40c8f8f Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Fri, 13 Jan 2023 17:48:40 +0100 Subject: [PATCH 1/6] Add intial constituent feature data --- feature-group-definitions/cascade-layers.yml | 15 +++++++++++++++ index.ts | 19 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/feature-group-definitions/cascade-layers.yml b/feature-group-definitions/cascade-layers.yml index 309cbb09b99..34e1b72a9ec 100644 --- a/feature-group-definitions/cascade-layers.yml +++ b/feature-group-definitions/cascade-layers.yml @@ -1,2 +1,17 @@ spec: https://drafts.csswg.org/css-cascade-5/#layering caniuse: css-cascade-layers +constituentFeatures: + - source: "@mdn/browser-compat-data" + query: css.at-rules.layer + - source: "@mdn/browser-compat-data" + query: css.at-rules.import.layer + - source: "@mdn/browser-compat-data" + query: api.CSSImportRule.layerName + - source: "@mdn/browser-compat-data" + query: api.CSSLayerBlockRule + - source: "@mdn/browser-compat-data" + query: api.CSSLayerBlockRule.name + - source: "@mdn/browser-compat-data" + query: api.CSSLayerStatementRule + - source: "@mdn/browser-compat-data" + query: api.CSSLayerStatementRule.nameList diff --git a/index.ts b/index.ts index 2e40c8b3f89..f1228dedb3c 100644 --- a/index.ts +++ b/index.ts @@ -6,7 +6,22 @@ import YAML from 'yaml'; interface FeatureData { spec: string, - caniuse?: string + caniuse?: string, + constituentFeatures?: Array<{source: string, query: string}> +} + +// Some FeatureData keys aren't (and may never) be ready for publishing. +// They're not part of the public schema (yet). +// They'll be removed. +const omittables = [ + "constituentFeatures" +] + +function scrub(data: FeatureData) { + for (const key of omittables) { + delete data[key]; + } + return data; } const filePaths = new fdir() @@ -23,7 +38,7 @@ for (const fp of filePaths) { const src = fs.readFileSync(fp, { encoding: 'utf-8'}); const data = YAML.parse(src); - features[key] = data; + features[key] = scrub(data); } export default features; From 9ae1238324bf4a2c4c99117fa185b76b1dc1116f Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Fri, 13 Jan 2023 17:54:24 +0100 Subject: [PATCH 2/6] Enforce formatting on YAML files --- .prettierignore | 4 ++++ .prettierrc | 1 + package.json | 6 ++++-- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000000..49055009164 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +/* + +# Opt-in the YAML files only (at least for now) +!/feature-group-definitions/*.yml diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/package.json b/package.json index d06d5978b43..a00269ca392 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,12 @@ "main": "index.ts", "scripts": { "build": "ts-node scripts/build.ts", - "test": "npm run test:caniuse -- --quiet && npm run test:schema && npm run test:specs", + "test": "npm run test:caniuse -- --quiet && npm run test:schema && npm run test:specs && npm run format", "test:caniuse": "ts-node scripts/caniuse.ts", "test:schema": "ts-node scripts/schema.ts", - "test:specs": "ts-node scripts/specs.ts" + "test:specs": "ts-node scripts/specs.ts", + "test:format": "prettier --check .", + "format": "npx prettier --write ." }, "devDependencies": { "@types/caniuse-lite": "^1.0.1", From 04c1d225d2f2f0ce2f670816a5dc02dd775c5c2a Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Fri, 3 Feb 2023 15:42:42 +0100 Subject: [PATCH 3/6] Use underscores for constituent features --- feature-group-definitions/cascade-layers.yml | 2 +- index.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/feature-group-definitions/cascade-layers.yml b/feature-group-definitions/cascade-layers.yml index 6a311100d58..e4c5a37871b 100644 --- a/feature-group-definitions/cascade-layers.yml +++ b/feature-group-definitions/cascade-layers.yml @@ -1,7 +1,7 @@ spec: https://drafts.csswg.org/css-cascade-5/#layering caniuse: css-cascade-layers usage_stats: https://chromestatus.com/metrics/feature/timeline/popularity/4007 -constituentFeatures: +constituent_features: - source: "@mdn/browser-compat-data" query: css.at-rules.layer - source: "@mdn/browser-compat-data" diff --git a/index.ts b/index.ts index f1228dedb3c..367c59c036c 100644 --- a/index.ts +++ b/index.ts @@ -7,14 +7,14 @@ import YAML from 'yaml'; interface FeatureData { spec: string, caniuse?: string, - constituentFeatures?: Array<{source: string, query: string}> + constituent_features?: {source: string, query: string}[]; } // Some FeatureData keys aren't (and may never) be ready for publishing. // They're not part of the public schema (yet). // They'll be removed. const omittables = [ - "constituentFeatures" + "constituent_features" ] function scrub(data: FeatureData) { From 832c458ede17dcd1a9a7c3d08ab847e687cf784a Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Wed, 15 Feb 2023 19:02:20 +0100 Subject: [PATCH 4/6] Flatten constituent features --- feature-group-definitions/cascade-layers.yml | 21 +++++++------------- index.ts | 2 +- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/feature-group-definitions/cascade-layers.yml b/feature-group-definitions/cascade-layers.yml index 197e2b85668..ddcd1cacdbc 100644 --- a/feature-group-definitions/cascade-layers.yml +++ b/feature-group-definitions/cascade-layers.yml @@ -9,17 +9,10 @@ status: firefox: "97" safari: "15.4" constituent_features: - - source: "@mdn/browser-compat-data" - query: css.at-rules.layer - - source: "@mdn/browser-compat-data" - query: css.at-rules.import.layer - - source: "@mdn/browser-compat-data" - query: api.CSSImportRule.layerName - - source: "@mdn/browser-compat-data" - query: api.CSSLayerBlockRule - - source: "@mdn/browser-compat-data" - query: api.CSSLayerBlockRule.name - - source: "@mdn/browser-compat-data" - query: api.CSSLayerStatementRule - - source: "@mdn/browser-compat-data" - query: api.CSSLayerStatementRule.nameList + - css.at-rules.layer + - css.at-rules.import.layer + - api.CSSImportRule.layerName + - api.CSSLayerBlockRule + - api.CSSLayerBlockRule.name + - api.CSSLayerStatementRule + - api.CSSLayerStatementRule.nameList diff --git a/index.ts b/index.ts index 86cb87f23ab..adc749eb49b 100644 --- a/index.ts +++ b/index.ts @@ -8,7 +8,7 @@ interface FeatureData { spec: string, caniuse?: string, status?: SupportStatus - constituent_features?: {source: string, query: string}[]; + constituent_features?: string[]; } type browserIdentifier = "chrome" | "firefox" | "safari"; From 309208d497ca65eea935c989cad4c8a415279373 Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Wed, 15 Feb 2023 19:02:35 +0100 Subject: [PATCH 5/6] Fix typo --- index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.ts b/index.ts index adc749eb49b..f0c1c2ec3bc 100644 --- a/index.ts +++ b/index.ts @@ -14,7 +14,7 @@ interface FeatureData { type browserIdentifier = "chrome" | "firefox" | "safari"; interface SupportStatus { - is_basline: boolean, since?: string, support?: {[K in browserIdentifier]?: string} + is_baseline: boolean, since?: string, support?: {[K in browserIdentifier]?: string} } // Some FeatureData keys aren't (and may never) be ready for publishing. From 4b93376e775a10bc518e444ecab8291466475f5e Mon Sep 17 00:00:00 2001 From: "Daniel D. Beck" Date: Wed, 15 Feb 2023 19:10:43 +0100 Subject: [PATCH 6/6] Rename "constituent_features" to "compat_features" --- feature-group-definitions/cascade-layers.yml | 2 +- index.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/feature-group-definitions/cascade-layers.yml b/feature-group-definitions/cascade-layers.yml index ddcd1cacdbc..a68411f6652 100644 --- a/feature-group-definitions/cascade-layers.yml +++ b/feature-group-definitions/cascade-layers.yml @@ -8,7 +8,7 @@ status: chrome: "99" firefox: "97" safari: "15.4" -constituent_features: +compat_features: - css.at-rules.layer - css.at-rules.import.layer - api.CSSImportRule.layerName diff --git a/index.ts b/index.ts index f0c1c2ec3bc..ba9a829f807 100644 --- a/index.ts +++ b/index.ts @@ -8,7 +8,7 @@ interface FeatureData { spec: string, caniuse?: string, status?: SupportStatus - constituent_features?: string[]; + compat_features?: string[]; } type browserIdentifier = "chrome" | "firefox" | "safari"; @@ -21,7 +21,7 @@ interface SupportStatus { // They're not part of the public schema (yet). // They'll be removed. const omittables = [ - "constituent_features" + "compat_features" ] function scrub(data: FeatureData) {