@o3r/design 11.1.0-prerelease.9 → 11.1.0-rc.1
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/README.md +17 -0
- package/builders/generate-css/index.d.ts.map +1 -1
- package/builders/generate-css/index.js +20 -7
- package/builders/generate-css/index.js.map +1 -0
- package/builders/generate-css/schema.d.ts +5 -1
- package/builders/generate-css/schema.d.ts.map +1 -1
- package/builders/generate-css/schema.js.map +1 -0
- package/builders/generate-css/schema.json +18 -5
- package/builders/generate-jsonschema/index.d.ts +8 -0
- package/builders/generate-jsonschema/index.d.ts.map +1 -0
- package/builders/generate-jsonschema/index.js +76 -0
- package/builders/generate-jsonschema/index.js.map +1 -0
- package/builders/generate-jsonschema/schema.d.ts +22 -0
- package/builders/generate-jsonschema/schema.d.ts.map +1 -0
- package/builders/generate-jsonschema/schema.js +3 -0
- package/builders/generate-jsonschema/schema.js.map +1 -0
- package/builders/generate-jsonschema/schema.json +45 -0
- package/builders.json +5 -0
- package/cli/package.json +3 -0
- package/package.json +36 -36
- package/schemas/design-token-template.schema.json +32 -0
- package/schemas/design-token.schema.json +623 -0
- package/schematics/design-token-to-component/index.js +2 -2
- package/schematics/design-token-to-component/index.js.map +1 -0
- package/schematics/design-token-to-component/schema.js.map +1 -0
- package/schematics/extract-token/index.js +1 -2
- package/schematics/extract-token/index.js.map +1 -0
- package/schematics/extract-token/schema.js.map +1 -0
- package/schematics/generate-css/index.js +1 -2
- package/schematics/generate-css/index.js.map +1 -0
- package/schematics/generate-css/schema.js.map +1 -0
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/register-generate-css/index.js.map +1 -0
- package/schematics/ng-add/register-generate-css/register-task.d.ts.map +1 -1
- package/schematics/ng-add/register-generate-css/register-task.js +29 -15
- package/schematics/ng-add/register-generate-css/register-task.js.map +1 -0
- package/schematics/ng-add/register-generate-css/templates/theme.scss.template +0 -1
- package/schematics/ng-add/register-generate-css/templates-workspace/design-token.template.json.template +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/src/core/design-token/design-token-specification.interface.d.ts +28 -7
- package/src/core/design-token/design-token-specification.interface.d.ts.map +1 -1
- package/src/core/design-token/design-token-specification.interface.js.map +1 -1
- package/src/core/design-token/parsers/design-token-parser.interface.d.ts +8 -1
- package/src/core/design-token/parsers/design-token-parser.interface.d.ts.map +1 -1
- package/src/core/design-token/parsers/design-token.parser.d.ts.map +1 -1
- package/src/core/design-token/parsers/design-token.parser.js +30 -13
- package/src/core/design-token/parsers/design-token.parser.js.map +1 -1
- package/src/core/design-token/renderers/design-token-style.renderer.d.ts.map +1 -1
- package/src/core/design-token/renderers/index.d.ts +3 -2
- package/src/core/design-token/renderers/index.d.ts.map +1 -1
- package/src/core/design-token/renderers/index.js +3 -2
- package/src/core/design-token/renderers/index.js.map +1 -1
- package/src/core/design-token/renderers/json-schema/design-token-definition.renderers.d.ts +13 -0
- package/src/core/design-token/renderers/json-schema/design-token-definition.renderers.d.ts.map +1 -0
- package/src/core/design-token/renderers/json-schema/design-token-definition.renderers.js +39 -0
- package/src/core/design-token/renderers/json-schema/design-token-definition.renderers.js.map +1 -0
- package/src/core/design-token/renderers/json-schema/design-token-updater.renderers.d.ts +14 -0
- package/src/core/design-token/renderers/json-schema/design-token-updater.renderers.d.ts.map +1 -0
- package/src/core/design-token/renderers/json-schema/design-token-updater.renderers.js +20 -0
- package/src/core/design-token/renderers/json-schema/design-token-updater.renderers.js.map +1 -0
- package/src/core/design-token/renderers/json-schema/design-token-value.renderers.d.ts +20 -0
- package/src/core/design-token/renderers/json-schema/design-token-value.renderers.d.ts.map +1 -0
- package/src/core/design-token/renderers/json-schema/design-token-value.renderers.js +39 -0
- package/src/core/design-token/renderers/json-schema/design-token-value.renderers.js.map +1 -0
- package/src/core/design-token/renderers/json-schema/index.d.ts +4 -0
- package/src/core/design-token/renderers/json-schema/index.d.ts.map +1 -0
- package/src/core/design-token/renderers/json-schema/index.js +7 -0
- package/src/core/design-token/renderers/json-schema/index.js.map +1 -0
package/README.md
CHANGED
|
@@ -41,14 +41,31 @@ The following configurations are available:
|
|
|
41
41
|
| Options | Default Value | Description |
|
|
42
42
|
| --------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
43
43
|
| **designTokenFilePatterns** | [] *Require* | Path patterns to the Design Token JSON files. <br /> Files in dependencies are supported and resolved with Node Resolver. |
|
|
44
|
+
| **variableType** | `'css'` | Type of the variables to generate for a Design Token. |
|
|
44
45
|
| **output** | *null* | Output file where the CSS will be generated. <br /> The path specified in `o3rTargetFile` will be ignore if this option is specified |
|
|
45
46
|
| **defaultStyleFile** | src/theme.scss | File path to generate the variable if not determined by the specifications |
|
|
46
47
|
| **metadataOutput** | *null* | Path to generate the metadata for the CMS. <br /> The metadata will be generated only if the file path is specified. |
|
|
47
48
|
| **rootPath** | *null* | Root path of files where the CSS will be generated. |
|
|
48
49
|
| **failOnDuplicate** | false | Determine if the process should stop in case of Token duplication. |
|
|
50
|
+
| **templateFile** | *null* | Path to a template file to apply as default configuration to a Design Token extension. |
|
|
49
51
|
| **prefix** | *null* | Prefix to append to generated variables. |
|
|
52
|
+
| **prefixPrivate** | *null* | Prefix to append to generated private variables. |
|
|
50
53
|
| **watch** | false | Enable Watch mode. |
|
|
51
54
|
|
|
55
|
+
### generate-jsonschema
|
|
56
|
+
|
|
57
|
+
The `generate-jsonschema` builder can generate a [JSON Schema](https://json-schema.org/) validating and providing auto-completion to a third party Design Token file implementing a theme for the current Design system.
|
|
58
|
+
The following configurations are available:
|
|
59
|
+
|
|
60
|
+
| Options | Default Value | Description |
|
|
61
|
+
| --------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
62
|
+
| **designTokenFilePatterns** | [] *Require* | Path patterns to the Design Token JSON files. <br /> Files in dependencies are supported and resolved with Node Resolver. |
|
|
63
|
+
| **output** | *null* | Output file where the CSS will be generated. <br /> The path specified in `o3rTargetFile` will be ignored if this option is specified |
|
|
64
|
+
| **failOnDuplicate** | false | Determine if the process should stop in case of Token duplication. |
|
|
65
|
+
| **schemaId** | *null* | ID used in the generated JSON Schema. |
|
|
66
|
+
| **schemaDescription** | *null* | Description of the generated JSON Schema. |
|
|
67
|
+
| **watch** | false | Enable Watch mode. |
|
|
68
|
+
|
|
52
69
|
## Technical documentation
|
|
53
70
|
|
|
54
71
|
Documentation providing explanations on the use and customization of the `Design Token` parser and renderers is available in the [technical documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/design/TECHNICAL_DOCUMENTATION.md).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/generate-css/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/generate-css/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAkB5D;;;GAGG;;AACH,wBAmIG"}
|
|
@@ -5,13 +5,14 @@ const public_api_1 = require("../../src/public_api");
|
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
const globby = require("globby");
|
|
7
7
|
const node_os_1 = require("node:os");
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
8
9
|
/**
|
|
9
10
|
* Generate CSS from Design Token files
|
|
10
11
|
* @param options
|
|
11
12
|
*/
|
|
12
13
|
exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
13
14
|
const designTokenFilePatterns = Array.isArray(options.designTokenFilePatterns) ? options.designTokenFilePatterns : [options.designTokenFilePatterns];
|
|
14
|
-
const
|
|
15
|
+
const determineFileToUpdate = options.output ? () => (0, node_path_1.resolve)(context.workspaceRoot, options.output) :
|
|
15
16
|
(token) => {
|
|
16
17
|
if (token.extensions.o3rTargetFile) {
|
|
17
18
|
return token.context?.basePath && !options.rootPath ?
|
|
@@ -27,7 +28,7 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
27
28
|
logger
|
|
28
29
|
});
|
|
29
30
|
const renderDesignTokenOptionsCss = {
|
|
30
|
-
determineFileToUpdate
|
|
31
|
+
determineFileToUpdate,
|
|
31
32
|
tokenDefinitionRenderer: (0, public_api_1.getCssTokenDefinitionRenderer)({
|
|
32
33
|
tokenVariableNameRenderer,
|
|
33
34
|
privateDefinitionRenderer: options.renderPrivateVariableTo === 'sass' ? sassRenderer : undefined,
|
|
@@ -39,6 +40,14 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
39
40
|
}),
|
|
40
41
|
logger
|
|
41
42
|
};
|
|
43
|
+
const renderDesignTokenOptionsSass = {
|
|
44
|
+
determineFileToUpdate,
|
|
45
|
+
tokenDefinitionRenderer: (0, public_api_1.getSassTokenDefinitionRenderer)({
|
|
46
|
+
tokenVariableNameRenderer: (v) => (options?.prefix || '') + (0, public_api_1.tokenVariableNameSassRenderer)(v),
|
|
47
|
+
logger
|
|
48
|
+
}),
|
|
49
|
+
logger
|
|
50
|
+
};
|
|
42
51
|
const renderDesignTokenOptionsMetadata = {
|
|
43
52
|
determineFileToUpdate: () => (0, node_path_1.resolve)(context.workspaceRoot, options.metadataOutput),
|
|
44
53
|
styleContentUpdater: (0, public_api_1.getMetadataStyleContentUpdater)(),
|
|
@@ -46,6 +55,7 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
46
55
|
logger
|
|
47
56
|
};
|
|
48
57
|
const execute = async (renderDesignTokenOptions) => {
|
|
58
|
+
const template = options.templateFile ? JSON.parse(await (0, promises_1.readFile)((0, node_path_1.resolve)(context.workspaceRoot, options.templateFile), { encoding: 'utf-8' })) : undefined;
|
|
49
59
|
const files = (await globby(designTokenFilePatterns, { cwd: context.workspaceRoot, absolute: true }));
|
|
50
60
|
const inDependencies = designTokenFilePatterns
|
|
51
61
|
.filter((pathName) => !pathName.startsWith('.') && !pathName.startsWith('*') && !pathName.startsWith('/'))
|
|
@@ -61,7 +71,7 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
61
71
|
files.push(...inDependencies);
|
|
62
72
|
try {
|
|
63
73
|
const duplicatedToken = [];
|
|
64
|
-
const tokens = (await Promise.all(files.map(async (file) => ({ file, parsed: await (0, public_api_1.parseDesignTokenFile)(file) }))))
|
|
74
|
+
const tokens = (await Promise.all(files.map(async (file) => ({ file, parsed: await (0, public_api_1.parseDesignTokenFile)(file, { specificationContext: { template } }) }))))
|
|
65
75
|
.reduce((acc, { file, parsed }) => {
|
|
66
76
|
parsed.forEach((variable, key) => {
|
|
67
77
|
if (acc.has(key)) {
|
|
@@ -79,12 +89,12 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
79
89
|
return { success: true };
|
|
80
90
|
}
|
|
81
91
|
catch (err) {
|
|
82
|
-
return { success: false, error:
|
|
92
|
+
return { success: false, error: String(err) };
|
|
83
93
|
}
|
|
84
94
|
};
|
|
85
95
|
const executeMultiRenderer = async () => {
|
|
86
96
|
return (await Promise.allSettled([
|
|
87
|
-
execute(renderDesignTokenOptionsCss),
|
|
97
|
+
execute(options.variableType === 'sass' ? renderDesignTokenOptionsSass : renderDesignTokenOptionsCss),
|
|
88
98
|
...(options.metadataOutput ? [execute(renderDesignTokenOptionsMetadata)] : [])
|
|
89
99
|
])).reduce((acc, res) => {
|
|
90
100
|
if (res.status === 'fulfilled') {
|
|
@@ -110,7 +120,10 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
110
120
|
}
|
|
111
121
|
else {
|
|
112
122
|
try {
|
|
113
|
-
await Promise.resolve().then(() => require('chokidar')).then((chokidar) => chokidar.watch(
|
|
123
|
+
await Promise.resolve().then(() => require('chokidar')).then((chokidar) => chokidar.watch([
|
|
124
|
+
...designTokenFilePatterns.map((p) => (0, node_path_1.resolve)(context.workspaceRoot, p)),
|
|
125
|
+
...(options.templateFile ? [(0, node_path_1.resolve)(context.workspaceRoot, options.templateFile)] : [])
|
|
126
|
+
]))
|
|
114
127
|
.then((watcher) => watcher.on('all', async () => {
|
|
115
128
|
const res = await executeMultiRenderer();
|
|
116
129
|
if (res.error) {
|
|
@@ -120,7 +133,7 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
120
133
|
return { success: true };
|
|
121
134
|
}
|
|
122
135
|
catch (err) {
|
|
123
|
-
return { success: false, error:
|
|
136
|
+
return { success: false, error: String(err) };
|
|
124
137
|
}
|
|
125
138
|
}
|
|
126
139
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../builders/generate-css/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,13 @@ export interface GenerateCssSchematicsSchema extends SchematicOptionObject {
|
|
|
26
26
|
prefix?: string;
|
|
27
27
|
/** Generate the Private Variable to the given language */
|
|
28
28
|
renderPrivateVariableTo?: 'sass';
|
|
29
|
-
/** Prefix to happen to generated
|
|
29
|
+
/** Prefix to happen to generated private variables */
|
|
30
30
|
prefixPrivate?: string;
|
|
31
31
|
/** Determine if the builder should fail if a missing Design Token reference is detected */
|
|
32
32
|
failOnMissingReference?: boolean;
|
|
33
|
+
/** Type of the variables to generate for a Design Token */
|
|
34
|
+
variableType?: 'css' | 'sass';
|
|
35
|
+
/** Path to a template file to apply as default configuration to a Design Token extension */
|
|
36
|
+
templateFile?: string;
|
|
33
37
|
}
|
|
34
38
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../builders/generate-css/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,mDAAmD;IACnD,uBAAuB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IAEzB,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../builders/generate-css/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,mDAAmD;IACnD,uBAAuB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IAEzB,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2FAA2F;IAC3F,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAE9B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../builders/generate-css/schema.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
-
"$id": "
|
|
4
|
-
"title": "
|
|
5
|
-
"description": "
|
|
3
|
+
"$id": "generateCssSchematicsSchema",
|
|
4
|
+
"title": "Generate the style from Design Token",
|
|
5
|
+
"description": "Generate the style from Design Token",
|
|
6
6
|
"properties": {
|
|
7
|
+
"variableType": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"enum": [
|
|
10
|
+
"css",
|
|
11
|
+
"sass"
|
|
12
|
+
],
|
|
13
|
+
"default": "css",
|
|
14
|
+
"description": "Type of the variables to generate for a Design Token."
|
|
15
|
+
},
|
|
7
16
|
"designTokenFilePatterns": {
|
|
8
17
|
"description": "Path patterns to the Design Token JSON files (it supports Node dependency paths).",
|
|
9
18
|
"oneOf": [
|
|
@@ -45,13 +54,17 @@
|
|
|
45
54
|
"default": false,
|
|
46
55
|
"description": "Determine if the process should stop in case of Token duplication"
|
|
47
56
|
},
|
|
57
|
+
"templateFile": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "Path to a template file to apply as default configuration to a Design Token extension"
|
|
60
|
+
},
|
|
48
61
|
"prefix": {
|
|
49
62
|
"type": "string",
|
|
50
|
-
"description": "Prefix to
|
|
63
|
+
"description": "Prefix to append to generated variables"
|
|
51
64
|
},
|
|
52
65
|
"prefixPrivate": {
|
|
53
66
|
"type": "string",
|
|
54
|
-
"description": "Prefix to
|
|
67
|
+
"description": "Prefix to append to generated private variables"
|
|
55
68
|
},
|
|
56
69
|
"renderPrivateVariableTo": {
|
|
57
70
|
"type": "string",
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GenerateJsonSchemaSchematicsSchema } from './schema';
|
|
2
|
+
/**
|
|
3
|
+
* Generate Json Schema from Design Token files
|
|
4
|
+
* @param options
|
|
5
|
+
*/
|
|
6
|
+
declare const _default: import("@angular-devkit/architect/src/internal").Builder<GenerateJsonSchemaSchematicsSchema & import("@angular-devkit/core").JsonObject>;
|
|
7
|
+
export default _default;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/generate-jsonschema/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAC;AAYnE;;;GAGG;;AACH,wBAkEG"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const architect_1 = require("@angular-devkit/architect");
|
|
4
|
+
const public_api_1 = require("../../src/public_api");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const globby = require("globby");
|
|
7
|
+
/**
|
|
8
|
+
* Generate Json Schema from Design Token files
|
|
9
|
+
* @param options
|
|
10
|
+
*/
|
|
11
|
+
exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
12
|
+
const designTokenFilePatterns = Array.isArray(options.designTokenFilePatterns) ? options.designTokenFilePatterns : [options.designTokenFilePatterns];
|
|
13
|
+
const execute = async () => {
|
|
14
|
+
const files = (await globby(designTokenFilePatterns, { cwd: context.workspaceRoot, absolute: true }));
|
|
15
|
+
const inDependencies = designTokenFilePatterns
|
|
16
|
+
.filter((pathName) => !pathName.startsWith('.') && !pathName.startsWith('*') && !pathName.startsWith('/'))
|
|
17
|
+
.map((pathName) => {
|
|
18
|
+
try {
|
|
19
|
+
return require.resolve(pathName);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
.filter((pathName) => !!pathName);
|
|
26
|
+
files.push(...inDependencies);
|
|
27
|
+
try {
|
|
28
|
+
const duplicatedToken = [];
|
|
29
|
+
const tokens = (await Promise.all(files.map(async (file) => ({ file, parsed: await (0, public_api_1.parseDesignTokenFile)(file) }))))
|
|
30
|
+
.reduce((acc, { file, parsed }) => {
|
|
31
|
+
parsed.forEach((variable, key) => {
|
|
32
|
+
if (acc.has(key)) {
|
|
33
|
+
context.logger[options.failOnDuplicate ? 'error' : 'warn'](`A duplication of the variable ${key} is found in ${file}`);
|
|
34
|
+
duplicatedToken.push(variable);
|
|
35
|
+
}
|
|
36
|
+
acc.set(key, variable);
|
|
37
|
+
});
|
|
38
|
+
return acc;
|
|
39
|
+
}, new Map());
|
|
40
|
+
if (options.failOnDuplicate && duplicatedToken.length > 0) {
|
|
41
|
+
throw new Error(`Found ${duplicatedToken.length} duplicated Design Token keys`);
|
|
42
|
+
}
|
|
43
|
+
await (0, public_api_1.renderDesignTokens)(tokens, {
|
|
44
|
+
determineFileToUpdate: () => (0, node_path_1.resolve)(context.workspaceRoot, options.output),
|
|
45
|
+
tokenDefinitionRenderer: (0, public_api_1.getJsonSchemaTokenDefinitionRenderer)(),
|
|
46
|
+
styleContentUpdater: (0, public_api_1.getJsonSchemaStyleContentUpdater)({
|
|
47
|
+
id: options.schemaId,
|
|
48
|
+
description: options.schemaDescription
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
return { success: true };
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return { success: false, error: String(err) };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (!options.watch) {
|
|
58
|
+
return await execute();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
try {
|
|
62
|
+
await Promise.resolve().then(() => require('chokidar')).then((chokidar) => chokidar.watch(designTokenFilePatterns.map((p) => (0, node_path_1.resolve)(context.workspaceRoot, p))))
|
|
63
|
+
.then((watcher) => watcher.on('all', async () => {
|
|
64
|
+
const res = await execute();
|
|
65
|
+
if (res.error) {
|
|
66
|
+
context.logger.error(res.error);
|
|
67
|
+
}
|
|
68
|
+
}));
|
|
69
|
+
return { success: true };
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return { success: false, error: String(err) };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../builders/generate-jsonschema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SchematicOptionObject } from '@o3r/schematics';
|
|
2
|
+
export interface GenerateJsonSchemaSchematicsSchema extends SchematicOptionObject {
|
|
3
|
+
/** Path patterns to the Design Token JSON files */
|
|
4
|
+
designTokenFilePatterns: string | string[];
|
|
5
|
+
/** Path to the outputted Json schema file. */
|
|
6
|
+
output: string;
|
|
7
|
+
/** File path to generate the variable if not determined by the specification */
|
|
8
|
+
defaultStyleFile: string;
|
|
9
|
+
/** Enable Watch mode */
|
|
10
|
+
watch?: boolean;
|
|
11
|
+
/** Root path of files where the CSS will be generated */
|
|
12
|
+
rootPath?: string;
|
|
13
|
+
/** Determine if the process should stop in case of Token duplication */
|
|
14
|
+
failOnDuplicate?: boolean;
|
|
15
|
+
/** Determine if the builder should fail if a missing Design Token reference is detected */
|
|
16
|
+
failOnMissingReference?: boolean;
|
|
17
|
+
/** ID used in the generated JSON Schema */
|
|
18
|
+
schemaId?: string;
|
|
19
|
+
/** Description of the generated JSON Schema */
|
|
20
|
+
schemaDescription?: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../builders/generate-jsonschema/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,kCAAmC,SAAQ,qBAAqB;IAC/E,mDAAmD;IACnD,uBAAuB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3C,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IAEf,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IAEzB,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,2FAA2F;IAC3F,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../builders/generate-jsonschema/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "generateJsonSchematicsSchema",
|
|
4
|
+
"title": "Generate the JSON Schema from Design Token",
|
|
5
|
+
"description": "Generate the JSON Schema from Design Token",
|
|
6
|
+
"properties": {
|
|
7
|
+
"designTokenFilePatterns": {
|
|
8
|
+
"description": "Path patterns to the Design Token JSON files (it supports Node dependency paths).",
|
|
9
|
+
"type": [
|
|
10
|
+
"array",
|
|
11
|
+
"string"
|
|
12
|
+
],
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"output": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Path to the outputted Json schema file.",
|
|
20
|
+
"default": "design-token.schema.json"
|
|
21
|
+
},
|
|
22
|
+
"watch": {
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"default": false,
|
|
25
|
+
"description": "Enable Watch mode"
|
|
26
|
+
},
|
|
27
|
+
"failOnDuplicate": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"default": false,
|
|
30
|
+
"description": "Determine if the process should stop in case of Token duplication"
|
|
31
|
+
},
|
|
32
|
+
"schemaId": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "ID used in the generated JSON Schema"
|
|
35
|
+
},
|
|
36
|
+
"schemaDescription": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"description": "Description of the generated JSON Schema"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"additionalProperties": true,
|
|
42
|
+
"required": [
|
|
43
|
+
"designTokenFilePatterns"
|
|
44
|
+
]
|
|
45
|
+
}
|
package/builders.json
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
"implementation": "./builders/generate-css/",
|
|
6
6
|
"schema": "./builders/generate-css/schema.json",
|
|
7
7
|
"description": "Generate CSS from Design Token files"
|
|
8
|
+
},
|
|
9
|
+
"generate-jsonschema": {
|
|
10
|
+
"implementation": "./builders/generate-jsonschema/",
|
|
11
|
+
"schema": "./builders/generate-jsonschema/schema.json",
|
|
12
|
+
"description": "Generate JSON Schema from Design Token files"
|
|
8
13
|
}
|
|
9
14
|
}
|
|
10
15
|
}
|
package/cli/package.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/design",
|
|
3
|
-
"version": "11.1.0-
|
|
3
|
+
"version": "11.1.0-rc.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"nx": "nx",
|
|
16
16
|
"ng": "yarn nx",
|
|
17
17
|
"test": "yarn nx test design",
|
|
18
|
-
"copy:templates": "yarn cpy 'schematics/**/templates/**/*' dist/schematics",
|
|
18
|
+
"copy:templates": "yarn cpy 'schematics/**/templates{-*,}/**/*' dist/schematics && yarn cpy 'builders/**/templates/**/*' dist/builders",
|
|
19
19
|
"copy:schemas": "yarn cpy 'schemas/**/*' dist/schemas",
|
|
20
|
-
"prepare:build:builders": "yarn cpy 'builders
|
|
20
|
+
"prepare:build:builders": "yarn cpy 'builders/**/schema.json' dist/builders && yarn cpy '{builders,collection,migration}.json' dist && yarn cpy 'schematics/**/schema.json' dist/schematics && yarn copy:templates",
|
|
21
21
|
"prepare:publish": "prepare-publish ./dist",
|
|
22
22
|
"build:source": "tsc -b tsconfig.build.json && yarn cpy package.json dist/",
|
|
23
23
|
"build:builders": "tsc -b tsconfig.builders.json --pretty && yarn copy:templates && generate-cjs-manifest",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"tslib": "^2.6.2"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@o3r/core": "^11.1.0-
|
|
56
|
-
"@o3r/schematics": "^11.1.0-
|
|
57
|
-
"@o3r/styling": "^11.1.0-
|
|
55
|
+
"@o3r/core": "^11.1.0-rc.1",
|
|
56
|
+
"@o3r/schematics": "^11.1.0-rc.1",
|
|
57
|
+
"@o3r/styling": "^11.1.0-rc.1",
|
|
58
58
|
"chokidar": "^3.5.2",
|
|
59
59
|
"globby": "^11.1.0",
|
|
60
60
|
"sass": "~1.77.0"
|
|
@@ -80,34 +80,34 @@
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@angular-devkit/architect": "~0.
|
|
84
|
-
"@angular-devkit/build-angular": "~18.
|
|
85
|
-
"@angular-devkit/core": "~18.
|
|
86
|
-
"@angular-devkit/schematics": "~18.
|
|
87
|
-
"@angular-eslint/eslint-plugin": "~18.
|
|
88
|
-
"@angular/animations": "~18.
|
|
89
|
-
"@angular/cli": "~18.
|
|
90
|
-
"@angular/common": "~18.
|
|
91
|
-
"@angular/compiler": "~18.
|
|
92
|
-
"@angular/compiler-cli": "~18.
|
|
93
|
-
"@angular/core": "~18.
|
|
94
|
-
"@angular/platform-browser": "~18.
|
|
95
|
-
"@angular/platform-browser-dynamic": "~18.
|
|
96
|
-
"@babel/core": "~7.
|
|
83
|
+
"@angular-devkit/architect": "~0.1801.0",
|
|
84
|
+
"@angular-devkit/build-angular": "~18.1.0",
|
|
85
|
+
"@angular-devkit/core": "~18.1.0",
|
|
86
|
+
"@angular-devkit/schematics": "~18.1.0",
|
|
87
|
+
"@angular-eslint/eslint-plugin": "~18.1.0",
|
|
88
|
+
"@angular/animations": "~18.1.0",
|
|
89
|
+
"@angular/cli": "~18.1.0",
|
|
90
|
+
"@angular/common": "~18.1.0",
|
|
91
|
+
"@angular/compiler": "~18.1.0",
|
|
92
|
+
"@angular/compiler-cli": "~18.1.0",
|
|
93
|
+
"@angular/core": "~18.1.0",
|
|
94
|
+
"@angular/platform-browser": "~18.1.0",
|
|
95
|
+
"@angular/platform-browser-dynamic": "~18.1.0",
|
|
96
|
+
"@babel/core": "~7.25.0",
|
|
97
97
|
"@babel/preset-typescript": "~7.24.0",
|
|
98
98
|
"@compodoc/compodoc": "^1.1.19",
|
|
99
|
-
"@nx/eslint": "~19.
|
|
100
|
-
"@nx/eslint-plugin": "~19.
|
|
101
|
-
"@nx/jest": "~19.
|
|
102
|
-
"@nx/js": "~19.
|
|
103
|
-
"@o3r/build-helpers": "^11.1.0-
|
|
104
|
-
"@o3r/core": "^11.1.0-
|
|
105
|
-
"@o3r/eslint-plugin": "^11.1.0-
|
|
106
|
-
"@o3r/schematics": "^11.1.0-
|
|
107
|
-
"@o3r/styling": "^11.1.0-
|
|
108
|
-
"@o3r/test-helpers": "^11.1.0-
|
|
109
|
-
"@schematics/angular": "~18.
|
|
110
|
-
"@stylistic/eslint-plugin-ts": "
|
|
99
|
+
"@nx/eslint": "~19.5.0",
|
|
100
|
+
"@nx/eslint-plugin": "~19.5.0",
|
|
101
|
+
"@nx/jest": "~19.5.0",
|
|
102
|
+
"@nx/js": "~19.5.0",
|
|
103
|
+
"@o3r/build-helpers": "^11.1.0-rc.1",
|
|
104
|
+
"@o3r/core": "^11.1.0-rc.1",
|
|
105
|
+
"@o3r/eslint-plugin": "^11.1.0-rc.1",
|
|
106
|
+
"@o3r/schematics": "^11.1.0-rc.1",
|
|
107
|
+
"@o3r/styling": "^11.1.0-rc.1",
|
|
108
|
+
"@o3r/test-helpers": "^11.1.0-rc.1",
|
|
109
|
+
"@schematics/angular": "~18.1.0",
|
|
110
|
+
"@stylistic/eslint-plugin-ts": "~2.4.0",
|
|
111
111
|
"@types/jest": "~29.5.2",
|
|
112
112
|
"@types/minimist": "^1.2.2",
|
|
113
113
|
"@types/node": "^20.0.0",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"eslint": "^8.57.0",
|
|
121
121
|
"eslint-import-resolver-node": "^0.3.9",
|
|
122
122
|
"eslint-plugin-jest": "~28.6.0",
|
|
123
|
-
"eslint-plugin-jsdoc": "~48.
|
|
123
|
+
"eslint-plugin-jsdoc": "~48.10.0",
|
|
124
124
|
"eslint-plugin-prefer-arrow": "~1.2.3",
|
|
125
125
|
"eslint-plugin-unicorn": "^54.0.0",
|
|
126
126
|
"globby": "^11.1.0",
|
|
@@ -128,15 +128,15 @@
|
|
|
128
128
|
"jest-junit": "~16.0.0",
|
|
129
129
|
"jsonc-eslint-parser": "~2.4.0",
|
|
130
130
|
"jsonschema": "~1.4.1",
|
|
131
|
-
"nx": "~19.
|
|
131
|
+
"nx": "~19.5.0",
|
|
132
132
|
"pid-from-port": "^1.1.3",
|
|
133
133
|
"rxjs": "^7.8.1",
|
|
134
134
|
"sass": "~1.77.0",
|
|
135
135
|
"semver": "^7.5.2",
|
|
136
|
-
"ts-jest": "~29.
|
|
136
|
+
"ts-jest": "~29.2.0",
|
|
137
137
|
"ts-node": "~10.9.2",
|
|
138
138
|
"type-fest": "^4.10.2",
|
|
139
|
-
"typescript": "~5.4
|
|
139
|
+
"typescript": "~5.5.4",
|
|
140
140
|
"zone.js": "~0.14.2"
|
|
141
141
|
},
|
|
142
142
|
"engines": {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "DesignTokenTemplateSchema",
|
|
4
|
+
"description": "Schema Describing the structure of the Design Token template, to enhance a Design Token structure",
|
|
5
|
+
"allOf": [
|
|
6
|
+
{
|
|
7
|
+
"$ref": "#/definitions/tokenTemplateGroup"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"definitions": {
|
|
11
|
+
"tokenTemplateGroup": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"$schema": {
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"$description": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"$extensions": {
|
|
21
|
+
"$ref": "https://raw.githubusercontent.com/AmadeusITGroup/otter/main/packages/%40o3r/design/schemas/design-token.schema.json#/definitions/extensions"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"patternProperties": {
|
|
25
|
+
"^[^$.].*$": {
|
|
26
|
+
"$ref": "#/definitions/tokenTemplateGroup"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"additionalProperties": false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|