@teambit/variants 0.0.950 → 0.0.952
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants.ts +1 -0
- package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
- package/dist/variants.composition.d.ts +2 -2
- package/dist/variants.main.runtime.d.ts +2 -2
- package/dist/variants.main.runtime.js +1 -1
- package/dist/variants.main.runtime.js.map +1 -1
- package/index.ts +2 -0
- package/package.json +14 -21
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
- package/variants.aspect.ts +5 -0
- package/variants.main.runtime.ts +122 -0
- package/variants.provider.ts +13 -0
package/constants.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const EXT_NAME = 'teambit.workspace/variants';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_variants@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_variants@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_variants@0.0.952/dist/variants.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_variants@0.0.952/dist/variants.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const Logo: () =>
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Logo: () => JSX.Element;
|
|
@@ -2,10 +2,10 @@ import type { ConfigMain } from '@teambit/config';
|
|
|
2
2
|
import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
|
|
3
3
|
import { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';
|
|
4
4
|
import { MatchedPatternWithConfig } from '@teambit/workspace.modules.match-pattern';
|
|
5
|
-
export
|
|
5
|
+
export type Patterns = {
|
|
6
6
|
[pattern: string]: Record<string, any>;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export type VariantsComponentConfig = {
|
|
9
9
|
propagate: boolean;
|
|
10
10
|
exclude?: string[];
|
|
11
11
|
defaultScope?: string;
|
|
@@ -139,7 +139,7 @@ class VariantsMain {
|
|
|
139
139
|
[variant]: newVariant
|
|
140
140
|
});
|
|
141
141
|
this.configAspect.setExtension(_variants().VariantsAspect.id, this.patterns, {
|
|
142
|
-
overrideExisting:
|
|
142
|
+
overrideExisting: opts?.overrideExisting === true,
|
|
143
143
|
ignoreVersion: true
|
|
144
144
|
});
|
|
145
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_config","_extensionData","_commentJson","_lodash","_workspaceModules","_legacyBitId","_variants","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","INTERNAL_FIELDS","VariantsMain","constructor","patterns","configAspect","validateConfig","forEach","patternConfig","pattern","defaultScope","isValidScopeName","InvalidScopeName","undefined","raw","byRootDirAndName","rootDir","componentName","matches","match","isMatchPattern","excluded","push","config","specificity","maxSpecificity","sortedMatches","sortMatchesBySpecificity","propagate","extensionsToMerge","getExtensionFromPatternRawConfig","mergedExtensions","ExtensionDataList","mergeConfigs","result","extensions","length","setExtension","variant","extensionId","extensionConfig","opts","newVariant","assign","VariantsAspect","id","overrideExisting","ignoreVersion","provider","exports","MainRuntime","ConfigAspect","rawExtensions","omit","fromConfigObject","addRuntime"],"sources":["variants.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ConfigMain } from '@teambit/config';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { assign } from 'comment-json';\nimport { omit, forEach } from 'lodash';\nimport {\n MatchedPatternWithConfig,\n isMatchPattern,\n sortMatchesBySpecificity,\n} from '@teambit/workspace.modules.match-pattern';\nimport { InvalidScopeName, isValidScopeName } from '@teambit/legacy-bit-id';\nimport { VariantsAspect } from './variants.aspect';\n\nexport type Patterns = { [pattern: string]: Record<string, any> };\n\nexport type VariantsComponentConfig = {\n propagate: boolean;\n exclude?: string[];\n defaultScope?: string;\n extensions: ExtensionDataList;\n maxSpecificity: number;\n sortedMatches: MatchedPatternWithConfig[];\n};\n\nconst INTERNAL_FIELDS = ['propagate', 'exclude', 'defaultScope'];\n\nexport class VariantsMain {\n static runtime = MainRuntime;\n static dependencies = [ConfigAspect];\n\n constructor(private patterns: Patterns, private configAspect: ConfigMain) {\n this.validateConfig();\n }\n\n private validateConfig() {\n forEach(this.patterns, (patternConfig: Record<string, any>, pattern: string) => {\n if (patternConfig.defaultScope && !isValidScopeName(patternConfig.defaultScope)) {\n throw new InvalidScopeName(patternConfig.defaultScope, undefined, pattern);\n }\n });\n }\n\n raw(): Patterns {\n return this.patterns;\n }\n\n /**\n * Gets the config for specific component after merge all matching patterns of the component dir and id in the variants section\n * @param rootDir\n */\n byRootDirAndName(rootDir: PathLinuxRelative, componentName: string): VariantsComponentConfig | undefined {\n const matches: MatchedPatternWithConfig[] = [];\n forEach(this.patterns, (patternConfig, pattern) => {\n const match = isMatchPattern(rootDir, componentName, pattern);\n\n // Ignore matches with exclude matches\n if (match.match && !match.excluded) {\n matches.push({\n config: patternConfig,\n specificity: match.maxSpecificity,\n pattern: match.pattern,\n });\n }\n });\n\n const sortedMatches: MatchedPatternWithConfig[] = sortMatchesBySpecificity(matches);\n\n let defaultScope;\n let propagate = true;\n const extensionsToMerge: ExtensionDataList[] = [];\n sortedMatches.forEach((match) => {\n defaultScope = defaultScope || match.config.defaultScope;\n if (propagate) {\n extensionsToMerge.push(getExtensionFromPatternRawConfig(match.config));\n }\n if (match.config.propagate === false) {\n propagate = false;\n }\n });\n\n const mergedExtensions = ExtensionDataList.mergeConfigs(extensionsToMerge);\n const result = {\n defaultScope,\n extensions: mergedExtensions,\n propagate,\n maxSpecificity: sortedMatches.length ? sortedMatches[0].specificity : -1,\n sortedMatches,\n };\n return result;\n }\n\n /**\n * Updates the specified extension object of the specified variant.\n * @param {string} variant - The variant pattern.\n * @param {string} extensionId - The extension ID.\n * @param {Object} extensionConfig - The extension configuration.\n * @param {boolean} opts.overrideExisting - When true, any existing entries are overriden.\n */\n setExtension(variant: string, extensionId: string, extensionConfig: any, opts?: { overrideExisting?: boolean }) {\n const newVariant = this.patterns[variant] ?? {};\n assign(newVariant, { [extensionId]: extensionConfig });\n assign(this.patterns, { [variant]: newVariant });\n this.configAspect.setExtension(VariantsAspect.id, this.patterns, {\n overrideExisting: opts?.overrideExisting === true,\n ignoreVersion: true,\n });\n }\n\n static async provider([configAspect]: [ConfigMain], config) {\n return new VariantsMain(config, configAspect);\n }\n}\n\nfunction getExtensionFromPatternRawConfig(config: Record<string, any>) {\n const rawExtensions = omit(config, INTERNAL_FIELDS);\n const extensions = ExtensionDataList.fromConfigObject(rawExtensions);\n return extensions;\n}\n\nVariantsAspect.addRuntime(VariantsMain);\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_config","_extensionData","_commentJson","_lodash","_workspaceModules","_legacyBitId","_variants","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","INTERNAL_FIELDS","VariantsMain","constructor","patterns","configAspect","validateConfig","forEach","patternConfig","pattern","defaultScope","isValidScopeName","InvalidScopeName","undefined","raw","byRootDirAndName","rootDir","componentName","matches","match","isMatchPattern","excluded","push","config","specificity","maxSpecificity","sortedMatches","sortMatchesBySpecificity","propagate","extensionsToMerge","getExtensionFromPatternRawConfig","mergedExtensions","ExtensionDataList","mergeConfigs","result","extensions","length","setExtension","variant","extensionId","extensionConfig","opts","newVariant","assign","VariantsAspect","id","overrideExisting","ignoreVersion","provider","exports","MainRuntime","ConfigAspect","rawExtensions","omit","fromConfigObject","addRuntime"],"sources":["variants.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ConfigMain } from '@teambit/config';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { assign } from 'comment-json';\nimport { omit, forEach } from 'lodash';\nimport {\n MatchedPatternWithConfig,\n isMatchPattern,\n sortMatchesBySpecificity,\n} from '@teambit/workspace.modules.match-pattern';\nimport { InvalidScopeName, isValidScopeName } from '@teambit/legacy-bit-id';\nimport { VariantsAspect } from './variants.aspect';\n\nexport type Patterns = { [pattern: string]: Record<string, any> };\n\nexport type VariantsComponentConfig = {\n propagate: boolean;\n exclude?: string[];\n defaultScope?: string;\n extensions: ExtensionDataList;\n maxSpecificity: number;\n sortedMatches: MatchedPatternWithConfig[];\n};\n\nconst INTERNAL_FIELDS = ['propagate', 'exclude', 'defaultScope'];\n\nexport class VariantsMain {\n static runtime = MainRuntime;\n static dependencies = [ConfigAspect];\n\n constructor(private patterns: Patterns, private configAspect: ConfigMain) {\n this.validateConfig();\n }\n\n private validateConfig() {\n forEach(this.patterns, (patternConfig: Record<string, any>, pattern: string) => {\n if (patternConfig.defaultScope && !isValidScopeName(patternConfig.defaultScope)) {\n throw new InvalidScopeName(patternConfig.defaultScope, undefined, pattern);\n }\n });\n }\n\n raw(): Patterns {\n return this.patterns;\n }\n\n /**\n * Gets the config for specific component after merge all matching patterns of the component dir and id in the variants section\n * @param rootDir\n */\n byRootDirAndName(rootDir: PathLinuxRelative, componentName: string): VariantsComponentConfig | undefined {\n const matches: MatchedPatternWithConfig[] = [];\n forEach(this.patterns, (patternConfig, pattern) => {\n const match = isMatchPattern(rootDir, componentName, pattern);\n\n // Ignore matches with exclude matches\n if (match.match && !match.excluded) {\n matches.push({\n config: patternConfig,\n specificity: match.maxSpecificity,\n pattern: match.pattern,\n });\n }\n });\n\n const sortedMatches: MatchedPatternWithConfig[] = sortMatchesBySpecificity(matches);\n\n let defaultScope;\n let propagate = true;\n const extensionsToMerge: ExtensionDataList[] = [];\n sortedMatches.forEach((match) => {\n defaultScope = defaultScope || match.config.defaultScope;\n if (propagate) {\n extensionsToMerge.push(getExtensionFromPatternRawConfig(match.config));\n }\n if (match.config.propagate === false) {\n propagate = false;\n }\n });\n\n const mergedExtensions = ExtensionDataList.mergeConfigs(extensionsToMerge);\n const result = {\n defaultScope,\n extensions: mergedExtensions,\n propagate,\n maxSpecificity: sortedMatches.length ? sortedMatches[0].specificity : -1,\n sortedMatches,\n };\n return result;\n }\n\n /**\n * Updates the specified extension object of the specified variant.\n * @param {string} variant - The variant pattern.\n * @param {string} extensionId - The extension ID.\n * @param {Object} extensionConfig - The extension configuration.\n * @param {boolean} opts.overrideExisting - When true, any existing entries are overriden.\n */\n setExtension(variant: string, extensionId: string, extensionConfig: any, opts?: { overrideExisting?: boolean }) {\n const newVariant = this.patterns[variant] ?? {};\n assign(newVariant, { [extensionId]: extensionConfig });\n assign(this.patterns, { [variant]: newVariant });\n this.configAspect.setExtension(VariantsAspect.id, this.patterns, {\n overrideExisting: opts?.overrideExisting === true,\n ignoreVersion: true,\n });\n }\n\n static async provider([configAspect]: [ConfigMain], config) {\n return new VariantsMain(config, configAspect);\n }\n}\n\nfunction getExtensionFromPatternRawConfig(config: Record<string, any>) {\n const rawExtensions = omit(config, INTERNAL_FIELDS);\n const extensions = ExtensionDataList.fromConfigObject(rawExtensions);\n return extensions;\n}\n\nVariantsAspect.addRuntime(VariantsMain);\n"],"mappings":"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"}
|
package/index.ts
ADDED
package/package.json
CHANGED
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/variants",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.952",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/workspace/variants",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.workspace",
|
|
8
8
|
"name": "variants",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.952"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"comment-json": "3.0.3",
|
|
13
13
|
"lodash": "4.17.21",
|
|
14
|
-
"core-js": "^3.0.0",
|
|
15
|
-
"@babel/runtime": "7.20.0",
|
|
16
14
|
"@teambit/harmony": "0.4.6",
|
|
17
15
|
"@teambit/legacy-bit-id": "1.1.0",
|
|
18
|
-
"@teambit/cli": "0.0.
|
|
19
|
-
"@teambit/config": "0.0.
|
|
16
|
+
"@teambit/cli": "0.0.840",
|
|
17
|
+
"@teambit/config": "0.0.859",
|
|
20
18
|
"@teambit/workspace.modules.match-pattern": "0.0.502"
|
|
21
19
|
},
|
|
22
20
|
"devDependencies": {
|
|
23
|
-
"@types/react": "^17.0.8",
|
|
24
21
|
"@types/lodash": "4.14.165",
|
|
25
22
|
"@types/mocha": "9.1.0",
|
|
26
|
-
"@types/
|
|
27
|
-
"@types/
|
|
28
|
-
"@
|
|
29
|
-
"@
|
|
30
|
-
"@teambit/workspace.content.variants": "1.95.9"
|
|
23
|
+
"@types/jest": "^29.2.2",
|
|
24
|
+
"@types/testing-library__jest-dom": "^5.9.5",
|
|
25
|
+
"@teambit/workspace.content.variants": "1.95.9",
|
|
26
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.13"
|
|
31
27
|
},
|
|
32
28
|
"peerDependencies": {
|
|
33
|
-
"
|
|
34
|
-
"react": "^
|
|
35
|
-
"
|
|
29
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
30
|
+
"@types/react": "^18.2.12",
|
|
31
|
+
"@teambit/legacy": "1.0.624"
|
|
36
32
|
},
|
|
37
33
|
"license": "Apache-2.0",
|
|
38
34
|
"optionalDependencies": {},
|
|
@@ -46,7 +42,7 @@
|
|
|
46
42
|
},
|
|
47
43
|
"private": false,
|
|
48
44
|
"engines": {
|
|
49
|
-
"node": ">=
|
|
45
|
+
"node": ">=16.0.0"
|
|
50
46
|
},
|
|
51
47
|
"repository": {
|
|
52
48
|
"type": "git",
|
|
@@ -55,12 +51,9 @@
|
|
|
55
51
|
"keywords": [
|
|
56
52
|
"bit",
|
|
57
53
|
"bit-aspect",
|
|
54
|
+
"bit-core-aspect",
|
|
58
55
|
"components",
|
|
59
56
|
"collaboration",
|
|
60
|
-
"web"
|
|
61
|
-
"react",
|
|
62
|
-
"react-components",
|
|
63
|
-
"angular",
|
|
64
|
-
"angular-components"
|
|
57
|
+
"web"
|
|
65
58
|
]
|
|
66
59
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,38 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
"lib": [
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"DOM.Iterable",
|
|
8
|
-
"ScriptHost"
|
|
4
|
+
"esnext",
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.Iterable"
|
|
9
7
|
],
|
|
10
|
-
"target": "
|
|
11
|
-
"module": "
|
|
12
|
-
"jsx": "react",
|
|
13
|
-
"allowJs": true,
|
|
14
|
-
"composite": true,
|
|
8
|
+
"target": "es2020",
|
|
9
|
+
"module": "es2020",
|
|
10
|
+
"jsx": "react-jsx",
|
|
15
11
|
"declaration": true,
|
|
16
12
|
"sourceMap": true,
|
|
17
|
-
"skipLibCheck": true,
|
|
18
13
|
"experimentalDecorators": true,
|
|
19
|
-
"
|
|
14
|
+
"skipLibCheck": true,
|
|
20
15
|
"moduleResolution": "node",
|
|
21
16
|
"esModuleInterop": true,
|
|
22
|
-
"rootDir": ".",
|
|
23
17
|
"resolveJsonModule": true,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"strictPropertyInitialization": false,
|
|
28
|
-
"strict": true,
|
|
29
|
-
"noImplicitAny": false,
|
|
30
|
-
"preserveConstEnums": true
|
|
18
|
+
"allowJs": true,
|
|
19
|
+
"outDir": "dist",
|
|
20
|
+
"emitDeclarationOnly": true
|
|
31
21
|
},
|
|
32
22
|
"exclude": [
|
|
23
|
+
"artifacts",
|
|
24
|
+
"public",
|
|
33
25
|
"dist",
|
|
26
|
+
"node_modules",
|
|
27
|
+
"package.json",
|
|
34
28
|
"esm.mjs",
|
|
35
|
-
"
|
|
29
|
+
"**/*.cjs",
|
|
30
|
+
"./dist"
|
|
36
31
|
],
|
|
37
32
|
"include": [
|
|
38
33
|
"**/*",
|
package/types/asset.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ declare module '*.png' {
|
|
|
5
5
|
declare module '*.svg' {
|
|
6
6
|
import type { FunctionComponent, SVGProps } from 'react';
|
|
7
7
|
|
|
8
|
-
export const ReactComponent: FunctionComponent<
|
|
8
|
+
export const ReactComponent: FunctionComponent<
|
|
9
|
+
SVGProps<SVGSVGElement> & { title?: string }
|
|
10
|
+
>;
|
|
9
11
|
const src: string;
|
|
10
12
|
export default src;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
// @TODO Gilad
|
|
14
14
|
declare module '*.jpg' {
|
|
15
15
|
const value: any;
|
|
16
16
|
export = value;
|
|
@@ -27,3 +27,15 @@ declare module '*.bmp' {
|
|
|
27
27
|
const value: any;
|
|
28
28
|
export = value;
|
|
29
29
|
}
|
|
30
|
+
declare module '*.otf' {
|
|
31
|
+
const value: any;
|
|
32
|
+
export = value;
|
|
33
|
+
}
|
|
34
|
+
declare module '*.woff' {
|
|
35
|
+
const value: any;
|
|
36
|
+
export = value;
|
|
37
|
+
}
|
|
38
|
+
declare module '*.woff2' {
|
|
39
|
+
const value: any;
|
|
40
|
+
export = value;
|
|
41
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { MainRuntime } from '@teambit/cli';
|
|
2
|
+
import { ConfigAspect } from '@teambit/config';
|
|
3
|
+
import type { ConfigMain } from '@teambit/config';
|
|
4
|
+
import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
|
|
5
|
+
import { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';
|
|
6
|
+
import { assign } from 'comment-json';
|
|
7
|
+
import { omit, forEach } from 'lodash';
|
|
8
|
+
import {
|
|
9
|
+
MatchedPatternWithConfig,
|
|
10
|
+
isMatchPattern,
|
|
11
|
+
sortMatchesBySpecificity,
|
|
12
|
+
} from '@teambit/workspace.modules.match-pattern';
|
|
13
|
+
import { InvalidScopeName, isValidScopeName } from '@teambit/legacy-bit-id';
|
|
14
|
+
import { VariantsAspect } from './variants.aspect';
|
|
15
|
+
|
|
16
|
+
export type Patterns = { [pattern: string]: Record<string, any> };
|
|
17
|
+
|
|
18
|
+
export type VariantsComponentConfig = {
|
|
19
|
+
propagate: boolean;
|
|
20
|
+
exclude?: string[];
|
|
21
|
+
defaultScope?: string;
|
|
22
|
+
extensions: ExtensionDataList;
|
|
23
|
+
maxSpecificity: number;
|
|
24
|
+
sortedMatches: MatchedPatternWithConfig[];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const INTERNAL_FIELDS = ['propagate', 'exclude', 'defaultScope'];
|
|
28
|
+
|
|
29
|
+
export class VariantsMain {
|
|
30
|
+
static runtime = MainRuntime;
|
|
31
|
+
static dependencies = [ConfigAspect];
|
|
32
|
+
|
|
33
|
+
constructor(private patterns: Patterns, private configAspect: ConfigMain) {
|
|
34
|
+
this.validateConfig();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private validateConfig() {
|
|
38
|
+
forEach(this.patterns, (patternConfig: Record<string, any>, pattern: string) => {
|
|
39
|
+
if (patternConfig.defaultScope && !isValidScopeName(patternConfig.defaultScope)) {
|
|
40
|
+
throw new InvalidScopeName(patternConfig.defaultScope, undefined, pattern);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
raw(): Patterns {
|
|
46
|
+
return this.patterns;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Gets the config for specific component after merge all matching patterns of the component dir and id in the variants section
|
|
51
|
+
* @param rootDir
|
|
52
|
+
*/
|
|
53
|
+
byRootDirAndName(rootDir: PathLinuxRelative, componentName: string): VariantsComponentConfig | undefined {
|
|
54
|
+
const matches: MatchedPatternWithConfig[] = [];
|
|
55
|
+
forEach(this.patterns, (patternConfig, pattern) => {
|
|
56
|
+
const match = isMatchPattern(rootDir, componentName, pattern);
|
|
57
|
+
|
|
58
|
+
// Ignore matches with exclude matches
|
|
59
|
+
if (match.match && !match.excluded) {
|
|
60
|
+
matches.push({
|
|
61
|
+
config: patternConfig,
|
|
62
|
+
specificity: match.maxSpecificity,
|
|
63
|
+
pattern: match.pattern,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const sortedMatches: MatchedPatternWithConfig[] = sortMatchesBySpecificity(matches);
|
|
69
|
+
|
|
70
|
+
let defaultScope;
|
|
71
|
+
let propagate = true;
|
|
72
|
+
const extensionsToMerge: ExtensionDataList[] = [];
|
|
73
|
+
sortedMatches.forEach((match) => {
|
|
74
|
+
defaultScope = defaultScope || match.config.defaultScope;
|
|
75
|
+
if (propagate) {
|
|
76
|
+
extensionsToMerge.push(getExtensionFromPatternRawConfig(match.config));
|
|
77
|
+
}
|
|
78
|
+
if (match.config.propagate === false) {
|
|
79
|
+
propagate = false;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const mergedExtensions = ExtensionDataList.mergeConfigs(extensionsToMerge);
|
|
84
|
+
const result = {
|
|
85
|
+
defaultScope,
|
|
86
|
+
extensions: mergedExtensions,
|
|
87
|
+
propagate,
|
|
88
|
+
maxSpecificity: sortedMatches.length ? sortedMatches[0].specificity : -1,
|
|
89
|
+
sortedMatches,
|
|
90
|
+
};
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Updates the specified extension object of the specified variant.
|
|
96
|
+
* @param {string} variant - The variant pattern.
|
|
97
|
+
* @param {string} extensionId - The extension ID.
|
|
98
|
+
* @param {Object} extensionConfig - The extension configuration.
|
|
99
|
+
* @param {boolean} opts.overrideExisting - When true, any existing entries are overriden.
|
|
100
|
+
*/
|
|
101
|
+
setExtension(variant: string, extensionId: string, extensionConfig: any, opts?: { overrideExisting?: boolean }) {
|
|
102
|
+
const newVariant = this.patterns[variant] ?? {};
|
|
103
|
+
assign(newVariant, { [extensionId]: extensionConfig });
|
|
104
|
+
assign(this.patterns, { [variant]: newVariant });
|
|
105
|
+
this.configAspect.setExtension(VariantsAspect.id, this.patterns, {
|
|
106
|
+
overrideExisting: opts?.overrideExisting === true,
|
|
107
|
+
ignoreVersion: true,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static async provider([configAspect]: [ConfigMain], config) {
|
|
112
|
+
return new VariantsMain(config, configAspect);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function getExtensionFromPatternRawConfig(config: Record<string, any>) {
|
|
117
|
+
const rawExtensions = omit(config, INTERNAL_FIELDS);
|
|
118
|
+
const extensions = ExtensionDataList.fromConfigObject(rawExtensions);
|
|
119
|
+
return extensions;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
VariantsAspect.addRuntime(VariantsMain);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// import { Variants, Patterns } from './variants.extension';
|
|
2
|
+
// import { Config } from '../config';
|
|
3
|
+
|
|
4
|
+
// export type VariantsDeps = [Config];
|
|
5
|
+
|
|
6
|
+
// export async function provideVariants([hostConfig]: VariantsDeps, config: Patterns) {
|
|
7
|
+
// const variants = new Variants(config, hostConfig);
|
|
8
|
+
// // TODO: fix when config become maybe
|
|
9
|
+
// if (hostConfig.type) {
|
|
10
|
+
// hostConfig.registerGetVariantsConfig(variants.legacy.bind(variants));
|
|
11
|
+
// }
|
|
12
|
+
// return variants;
|
|
13
|
+
// }
|