@o3r/design 10.2.0-prerelease.9 → 10.3.0-prerelease.0
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 +3 -0
- package/package.json +43 -42
- package/schematics/design-token-to-component/index.d.ts +1 -1
- package/schematics/design-token-to-component/index.d.ts.map +1 -1
- package/schematics/design-token-to-component/index.js +14 -2
- package/schematics/ng-add/index.d.ts +6 -1
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +41 -25
- package/schematics/ng-add/register-generate-css/register-task.d.ts.map +1 -1
- package/schematics/ng-add/register-generate-css/register-task.js +14 -13
package/README.md
CHANGED
|
@@ -9,6 +9,9 @@ This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/ot
|
|
|
9
9
|
|
|
10
10
|
## Description
|
|
11
11
|
|
|
12
|
+
[](https://www.npmjs.com/package/@o3r/design)
|
|
13
|
+
[](https://www.npmjs.com/package/@o3r/design)
|
|
14
|
+
|
|
12
15
|
Set of tools to generate CSS themes and [Metadata](https://github.com/AmadeusITGroup/otter/tree/main/docs/cms-adapters/CMS_ADAPTERS.md) based on the [Design Token Specifications](https://design-tokens.github.io/community-group/format/).
|
|
13
16
|
|
|
14
17
|
## How to install
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/design",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.3.0-prerelease.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
+
"typings": "./src/public_api.d.ts",
|
|
7
8
|
"description": "A design framework to generate theme on an Otter application based on Design Tokens.",
|
|
8
9
|
"keywords": [
|
|
9
10
|
"design",
|
|
@@ -48,15 +49,15 @@
|
|
|
48
49
|
"jsonschema": "~1.4.1",
|
|
49
50
|
"minimatch": "~9.0.3",
|
|
50
51
|
"minimist": "^1.2.6",
|
|
51
|
-
"tslib": "^2.
|
|
52
|
+
"tslib": "^2.6.2"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
|
-
"@o3r/core": "^10.
|
|
55
|
-
"@o3r/schematics": "^10.
|
|
56
|
-
"@o3r/styling": "^10.
|
|
55
|
+
"@o3r/core": "^10.3.0-prerelease.0",
|
|
56
|
+
"@o3r/schematics": "^10.3.0-prerelease.0",
|
|
57
|
+
"@o3r/styling": "^10.3.0-prerelease.0",
|
|
57
58
|
"chokidar": "^3.5.2",
|
|
58
59
|
"globby": "^11.1.0",
|
|
59
|
-
"sass": "~1.
|
|
60
|
+
"sass": "~1.74.0"
|
|
60
61
|
},
|
|
61
62
|
"peerDependenciesMeta": {
|
|
62
63
|
"@o3r/core": {
|
|
@@ -79,60 +80,60 @@
|
|
|
79
80
|
}
|
|
80
81
|
},
|
|
81
82
|
"devDependencies": {
|
|
82
|
-
"@angular-devkit/architect": "~0.
|
|
83
|
-
"@angular-devkit/build-angular": "~17.
|
|
84
|
-
"@angular-devkit/core": "~17.
|
|
85
|
-
"@angular-devkit/schematics": "~17.
|
|
86
|
-
"@angular-eslint/eslint-plugin": "~17.
|
|
87
|
-
"@angular/animations": "~17.
|
|
88
|
-
"@angular/cli": "~17.
|
|
89
|
-
"@angular/common": "~17.
|
|
90
|
-
"@angular/compiler": "~17.
|
|
91
|
-
"@angular/compiler-cli": "~17.
|
|
92
|
-
"@angular/core": "~17.
|
|
93
|
-
"@angular/platform-browser": "~17.
|
|
94
|
-
"@angular/platform-browser-dynamic": "~17.
|
|
83
|
+
"@angular-devkit/architect": "~0.1703.0",
|
|
84
|
+
"@angular-devkit/build-angular": "~17.3.0",
|
|
85
|
+
"@angular-devkit/core": "~17.3.0",
|
|
86
|
+
"@angular-devkit/schematics": "~17.3.0",
|
|
87
|
+
"@angular-eslint/eslint-plugin": "~17.3.0",
|
|
88
|
+
"@angular/animations": "~17.3.0",
|
|
89
|
+
"@angular/cli": "~17.3.0",
|
|
90
|
+
"@angular/common": "~17.3.0",
|
|
91
|
+
"@angular/compiler": "~17.3.0",
|
|
92
|
+
"@angular/compiler-cli": "~17.3.0",
|
|
93
|
+
"@angular/core": "~17.3.0",
|
|
94
|
+
"@angular/platform-browser": "~17.3.0",
|
|
95
|
+
"@angular/platform-browser-dynamic": "~17.3.0",
|
|
95
96
|
"@babel/core": "~7.24.0",
|
|
96
|
-
"@babel/preset-typescript": "~7.
|
|
97
|
+
"@babel/preset-typescript": "~7.24.0",
|
|
97
98
|
"@compodoc/compodoc": "^1.1.19",
|
|
98
|
-
"@nx/eslint": "~18.0
|
|
99
|
-
"@nx/eslint-plugin": "~18.0
|
|
100
|
-
"@nx/jest": "~18.0
|
|
101
|
-
"@nx/js": "~18.0
|
|
102
|
-
"@o3r/build-helpers": "^10.
|
|
103
|
-
"@o3r/core": "^10.
|
|
104
|
-
"@o3r/eslint-plugin": "^10.
|
|
105
|
-
"@o3r/schematics": "^10.
|
|
106
|
-
"@o3r/styling": "^10.
|
|
107
|
-
"@o3r/test-helpers": "^10.
|
|
108
|
-
"@schematics/angular": "~17.
|
|
99
|
+
"@nx/eslint": "~18.2.0",
|
|
100
|
+
"@nx/eslint-plugin": "~18.2.0",
|
|
101
|
+
"@nx/jest": "~18.2.0",
|
|
102
|
+
"@nx/js": "~18.2.0",
|
|
103
|
+
"@o3r/build-helpers": "^10.3.0-prerelease.0",
|
|
104
|
+
"@o3r/core": "^10.3.0-prerelease.0",
|
|
105
|
+
"@o3r/eslint-plugin": "^10.3.0-prerelease.0",
|
|
106
|
+
"@o3r/schematics": "^10.3.0-prerelease.0",
|
|
107
|
+
"@o3r/styling": "^10.3.0-prerelease.0",
|
|
108
|
+
"@o3r/test-helpers": "^10.3.0-prerelease.0",
|
|
109
|
+
"@schematics/angular": "~17.3.0",
|
|
109
110
|
"@stylistic/eslint-plugin-ts": "^1.5.4",
|
|
110
111
|
"@types/jest": "~29.5.2",
|
|
111
112
|
"@types/minimist": "^1.2.2",
|
|
112
113
|
"@types/node": "^20.0.0",
|
|
113
114
|
"@types/semver": "^7.3.13",
|
|
114
|
-
"@typescript-eslint/eslint-plugin": "^7.0
|
|
115
|
-
"@typescript-eslint/parser": "^7.0
|
|
115
|
+
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
116
|
+
"@typescript-eslint/parser": "^7.2.0",
|
|
116
117
|
"chokidar": "^3.5.2",
|
|
117
118
|
"cpy-cli": "^5.0.0",
|
|
118
|
-
"eslint": "^8.
|
|
119
|
-
"eslint-import-resolver-node": "^0.3.
|
|
119
|
+
"eslint": "^8.57.0",
|
|
120
|
+
"eslint-import-resolver-node": "^0.3.9",
|
|
120
121
|
"eslint-plugin-jest": "~27.9.0",
|
|
121
|
-
"eslint-plugin-jsdoc": "~48.2.
|
|
122
|
+
"eslint-plugin-jsdoc": "~48.2.1",
|
|
122
123
|
"eslint-plugin-prefer-arrow": "~1.2.3",
|
|
123
|
-
"eslint-plugin-unicorn": "^51.0.
|
|
124
|
+
"eslint-plugin-unicorn": "^51.0.1",
|
|
124
125
|
"globby": "^11.1.0",
|
|
125
126
|
"jest": "~29.7.0",
|
|
126
127
|
"jest-junit": "~16.0.0",
|
|
127
128
|
"jsonc-eslint-parser": "~2.4.0",
|
|
128
129
|
"jsonschema": "~1.4.1",
|
|
129
|
-
"nx": "~18.0
|
|
130
|
+
"nx": "~18.2.0",
|
|
130
131
|
"rxjs": "^7.8.1",
|
|
131
|
-
"sass": "~1.
|
|
132
|
-
"ts-jest": "~29.1.
|
|
133
|
-
"ts-node": "~10.9.
|
|
132
|
+
"sass": "~1.74.0",
|
|
133
|
+
"ts-jest": "~29.1.2",
|
|
134
|
+
"ts-node": "~10.9.2",
|
|
134
135
|
"type-fest": "^4.10.2",
|
|
135
|
-
"typescript": "~5.
|
|
136
|
+
"typescript": "~5.4.2",
|
|
136
137
|
"zone.js": "~0.14.2"
|
|
137
138
|
},
|
|
138
139
|
"engines": {
|
|
@@ -9,5 +9,5 @@ export declare function ngAddDesignTokenFn(options: NgAddDesignTokenSchematicsSc
|
|
|
9
9
|
* Add Design Token to an existing component
|
|
10
10
|
* @param options
|
|
11
11
|
*/
|
|
12
|
-
export declare const ngAddDesignToken: (options: NgAddDesignTokenSchematicsSchema) => Rule
|
|
12
|
+
export declare const ngAddDesignToken: (options: NgAddDesignTokenSchematicsSchema) => () => Promise<Rule>;
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/design-token-to-component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,IAAI,EAGL,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/design-token-to-component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,IAAI,EAGL,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAGjE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gCAAgC,GAAG,IAAI,CAelF;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAa,gCAAgC,wBAWzE,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ngAddDesignToken = exports.ngAddDesignTokenFn = void 0;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
-
const schematics_2 = require("@o3r/schematics");
|
|
6
5
|
const node_path_1 = require("node:path");
|
|
7
6
|
/**
|
|
8
7
|
* Add Design Token to an existing component
|
|
@@ -27,5 +26,18 @@ exports.ngAddDesignTokenFn = ngAddDesignTokenFn;
|
|
|
27
26
|
* Add Design Token to an existing component
|
|
28
27
|
* @param options
|
|
29
28
|
*/
|
|
30
|
-
|
|
29
|
+
const ngAddDesignToken = (options) => async () => {
|
|
30
|
+
let createSchematicWithMetrics;
|
|
31
|
+
try {
|
|
32
|
+
({ createSchematicWithMetricsIfInstalled: createSchematicWithMetrics } = await Promise.resolve().then(() => require('@o3r/schematics')));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// No @o3r/schematics detected
|
|
36
|
+
}
|
|
37
|
+
if (!createSchematicWithMetrics) {
|
|
38
|
+
return ngAddDesignTokenFn(options);
|
|
39
|
+
}
|
|
40
|
+
return createSchematicWithMetrics(ngAddDesignTokenFn)(options);
|
|
41
|
+
};
|
|
42
|
+
exports.ngAddDesignToken = ngAddDesignToken;
|
|
31
43
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,5 +4,10 @@ import type { NgAddSchematicsSchema } from './schema';
|
|
|
4
4
|
* Add Otter design to an Angular Project
|
|
5
5
|
* @param options
|
|
6
6
|
*/
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function ngAddFn(options: NgAddSchematicsSchema): Rule;
|
|
8
|
+
/**
|
|
9
|
+
* Add Otter design to an Angular Project
|
|
10
|
+
* @param options
|
|
11
|
+
*/
|
|
12
|
+
export declare const ngAdd: (options: NgAddSchematicsSchema) => Rule;
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAWtD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CA2B5D;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa,qBAAqB,KAAG,IAGtD,CAAC"}
|
|
@@ -1,40 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ngAdd = void 0;
|
|
3
|
+
exports.ngAdd = exports.ngAddFn = void 0;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const register_generate_css_1 = require("./register-generate-css");
|
|
6
6
|
const extract_token_1 = require("../extract-token");
|
|
7
|
-
const schematics_2 = require("@o3r/schematics");
|
|
8
7
|
const path = require("node:path");
|
|
9
8
|
const packageJsonPath = path.resolve(__dirname, '..', '..', 'package.json');
|
|
9
|
+
const reportMissingSchematicsDep = (logger) => (reason) => {
|
|
10
|
+
logger.error(`[ERROR]: Adding @o3r/design has failed.
|
|
11
|
+
You need to install '@o3r/schematics' to be able to use the o3r apis-manager package. Please run 'ng add @o3r/schematics'.`);
|
|
12
|
+
throw reason;
|
|
13
|
+
};
|
|
10
14
|
/**
|
|
11
15
|
* Add Otter design to an Angular Project
|
|
12
16
|
* @param options
|
|
13
17
|
*/
|
|
14
|
-
function
|
|
18
|
+
function ngAddFn(options) {
|
|
15
19
|
/* ng add rules */
|
|
16
|
-
return (tree) =>
|
|
17
|
-
|
|
18
|
-
(0,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
20
|
+
return async (tree) => {
|
|
21
|
+
const { getPackageInstallConfig, setupDependencies, setupSchematicsDefaultParams } = await Promise.resolve().then(() => require('@o3r/schematics'));
|
|
22
|
+
return (0, schematics_1.chain)([
|
|
23
|
+
(0, register_generate_css_1.registerGenerateCssBuilder)(),
|
|
24
|
+
setupSchematicsDefaultParams({
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
26
|
+
'@o3r/core:component': {
|
|
27
|
+
useOtterDesignToken: true
|
|
28
|
+
},
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
30
|
+
'@o3r/core:component-presenter': {
|
|
31
|
+
useOtterDesignToken: true
|
|
32
|
+
},
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
34
|
+
'*:*': {
|
|
35
|
+
useOtterDesignToken: true
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
setupDependencies({
|
|
39
|
+
projectName: options.projectName,
|
|
40
|
+
dependencies: getPackageInstallConfig(packageJsonPath, tree, options.projectName, false, !!options.exactO3rVersion)
|
|
41
|
+
}),
|
|
42
|
+
options.extractDesignToken ? (0, extract_token_1.extractToken)({ componentFilePatterns: ['**/*.scss'], includeTags: true }) : schematics_1.noop
|
|
43
|
+
]);
|
|
44
|
+
};
|
|
38
45
|
}
|
|
46
|
+
exports.ngAddFn = ngAddFn;
|
|
47
|
+
/**
|
|
48
|
+
* Add Otter design to an Angular Project
|
|
49
|
+
* @param options
|
|
50
|
+
*/
|
|
51
|
+
const ngAdd = (options) => async (_, { logger }) => {
|
|
52
|
+
const { createSchematicWithMetricsIfInstalled } = await Promise.resolve().then(() => require('@o3r/schematics')).catch(reportMissingSchematicsDep(logger));
|
|
53
|
+
return createSchematicWithMetricsIfInstalled(ngAddFn)(options);
|
|
54
|
+
};
|
|
39
55
|
exports.ngAdd = ngAdd;
|
|
40
56
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-task.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-add/register-generate-css/register-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,IAAI,EAAiB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"register-task.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-add/register-generate-css/register-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,IAAI,EAAiB,MAAM,4BAA4B,CAAC;AAIzI;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,iBAAkB,MAAM,wBAA8B,IA0D5F,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerGenerateCssBuilder = void 0;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
-
const schematics_2 = require("@o3r/schematics");
|
|
6
5
|
const node_path_1 = require("node:path");
|
|
7
6
|
/**
|
|
8
7
|
* Register the Design Token CSS generator
|
|
@@ -10,8 +9,9 @@ const node_path_1 = require("node:path");
|
|
|
10
9
|
* @param taskName name of the task to generate
|
|
11
10
|
*/
|
|
12
11
|
const registerGenerateCssBuilder = (projectName, taskName = 'generate-css') => {
|
|
13
|
-
const registerBuilderRule = (tree, { logger }) => {
|
|
14
|
-
const
|
|
12
|
+
const registerBuilderRule = async (tree, { logger }) => {
|
|
13
|
+
const { getWorkspaceConfig, registerBuilder } = await Promise.resolve().then(() => require('@o3r/schematics'));
|
|
14
|
+
const workspaceProject = projectName ? getWorkspaceConfig(tree)?.projects[projectName] : undefined;
|
|
15
15
|
const srcBasePath = workspaceProject?.sourceRoot || (workspaceProject?.root ? node_path_1.posix.resolve(workspaceProject.root, 'src') : '');
|
|
16
16
|
const themeFile = node_path_1.posix.resolve(srcBasePath, 'style', 'theme.scss');
|
|
17
17
|
const taskOptions = {
|
|
@@ -30,31 +30,32 @@ const registerGenerateCssBuilder = (projectName, taskName = 'generate-css') => {
|
|
|
30
30
|
};
|
|
31
31
|
if (!workspaceProject) {
|
|
32
32
|
logger.warn(`No angular.json found, the task ${taskName} will not be created`);
|
|
33
|
-
return
|
|
33
|
+
return;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
return tree;
|
|
35
|
+
registerBuilder(workspaceProject, taskName, taskParameters);
|
|
37
36
|
};
|
|
38
|
-
const generateTemplateRule = (tree
|
|
39
|
-
const
|
|
37
|
+
const generateTemplateRule = async (tree) => {
|
|
38
|
+
const { getWorkspaceConfig } = await Promise.resolve().then(() => require('@o3r/schematics'));
|
|
39
|
+
const workspaceProject = projectName ? getWorkspaceConfig(tree)?.projects[projectName] : undefined;
|
|
40
40
|
const srcBasePath = workspaceProject?.sourceRoot || (workspaceProject?.root ? node_path_1.posix.resolve(workspaceProject.root, 'src') : '');
|
|
41
41
|
const themeFolder = node_path_1.posix.resolve(srcBasePath, 'style');
|
|
42
42
|
const rule = (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./templates'), [
|
|
43
43
|
(0, schematics_1.template)({}),
|
|
44
44
|
(0, schematics_1.move)(themeFolder),
|
|
45
45
|
(0, schematics_1.renameTemplateFiles)()
|
|
46
|
-
]), schematics_1.MergeStrategy.Overwrite)
|
|
46
|
+
]), schematics_1.MergeStrategy.Overwrite);
|
|
47
47
|
return rule;
|
|
48
48
|
};
|
|
49
|
-
const importTheme = (tree, context) => {
|
|
50
|
-
const
|
|
49
|
+
const importTheme = async (tree, context) => {
|
|
50
|
+
const { getWorkspaceConfig } = await Promise.resolve().then(() => require('@o3r/schematics'));
|
|
51
|
+
const workspaceProject = projectName ? getWorkspaceConfig(tree)?.projects[projectName] : undefined;
|
|
51
52
|
const srcBasePath = workspaceProject?.sourceRoot || (workspaceProject?.root ? node_path_1.posix.resolve(workspaceProject.root, 'src') : '');
|
|
52
53
|
const styleFile = node_path_1.posix.resolve(srcBasePath, 'styles.scss');
|
|
53
54
|
if (!tree.exists(styleFile)) {
|
|
54
55
|
context.logger.warn(`The theme was not updated as ${styleFile} was not found`);
|
|
55
|
-
return
|
|
56
|
+
return;
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
+
tree.overwrite(styleFile, '@import "./style/theme.scss";\n' + tree.readText(styleFile));
|
|
58
59
|
};
|
|
59
60
|
return (0, schematics_1.chain)([
|
|
60
61
|
registerBuilderRule,
|