@skyux/packages 9.0.0-alpha.0 → 9.0.0-alpha.10

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.
Files changed (28) hide show
  1. package/package.json +57 -55
  2. package/src/schematics/migrations/migration-collection.json +28 -3
  3. package/src/schematics/migrations/update-9/add-compat-stylesheets/add-compat-stylesheet.schematic.d.ts +2 -0
  4. package/src/schematics/migrations/update-9/add-compat-stylesheets/add-compat-stylesheet.schematic.js +148 -0
  5. package/src/schematics/migrations/update-9/add-compat-stylesheets/add-compat-stylesheet.schematic.js.map +1 -0
  6. package/src/schematics/migrations/update-9/add-forms-popovers-peer-dependency/add-forms-popovers-peer-dependency.schematic.d.ts +2 -0
  7. package/src/schematics/migrations/update-9/add-forms-popovers-peer-dependency/add-forms-popovers-peer-dependency.schematic.js +15 -0
  8. package/src/schematics/migrations/update-9/add-forms-popovers-peer-dependency/add-forms-popovers-peer-dependency.schematic.js.map +1 -0
  9. package/src/schematics/migrations/update-9/ag-grid-29/ag-grid-29.schematic.d.ts +12 -0
  10. package/src/schematics/migrations/update-9/ag-grid-29/ag-grid-29.schematic.js +127 -0
  11. package/src/schematics/migrations/update-9/ag-grid-29/ag-grid-29.schematic.js.map +1 -0
  12. package/src/schematics/migrations/update-9/i18n-resources-module/i18n-resources-module.schematic.d.ts +2 -0
  13. package/src/schematics/migrations/update-9/i18n-resources-module/i18n-resources-module.schematic.js +42 -0
  14. package/src/schematics/migrations/update-9/i18n-resources-module/i18n-resources-module.schematic.js.map +1 -0
  15. package/src/schematics/migrations/update-9/legacy-services/legacy-services.schematic.d.ts +10 -0
  16. package/src/schematics/migrations/update-9/legacy-services/legacy-services.schematic.js +70 -0
  17. package/src/schematics/migrations/update-9/legacy-services/legacy-services.schematic.js.map +1 -0
  18. package/src/schematics/migrations/update-9/update-angular-tree-component/update-angular-tree-component.schematic.js +32 -10
  19. package/src/schematics/migrations/update-9/update-angular-tree-component/update-angular-tree-component.schematic.js.map +1 -1
  20. package/src/schematics/rules/ensure-peers-installed.d.ts +2 -1
  21. package/src/schematics/rules/ensure-peers-installed.js +17 -7
  22. package/src/schematics/rules/ensure-peers-installed.js.map +1 -1
  23. package/src/schematics/utility/typescript/imports.d.ts +11 -0
  24. package/src/schematics/utility/typescript/imports.js +83 -0
  25. package/src/schematics/utility/typescript/imports.js.map +1 -0
  26. package/src/schematics/utility/typescript/source-file.d.ts +2 -0
  27. package/src/schematics/utility/typescript/source-file.js +10 -0
  28. package/src/schematics/utility/typescript/source-file.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/packages",
3
- "version": "9.0.0-alpha.0",
3
+ "version": "9.0.0-alpha.10",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "description": "Handles the `ng update` command for SKY UX component libraries.",
6
6
  "keywords": [
@@ -20,8 +20,7 @@
20
20
  "exports": {
21
21
  ".": {
22
22
  "types": "./src/index.d.ts",
23
- "default": "./src/index.js",
24
- "require": "./src/index.js"
23
+ "default": "./src/index.js"
25
24
  },
26
25
  "./package.json": {
27
26
  "default": "./package.json"
@@ -37,65 +36,68 @@
37
36
  "ng-update": {
38
37
  "migrations": "./src/schematics/migrations/migration-collection.json",
39
38
  "packageGroup": {
40
- "@skyux-sdk/eslint-config": "9.0.0-alpha.0",
41
- "@skyux-sdk/prettier-schematics": "9.0.0-alpha.0",
42
- "@skyux-sdk/testing": "9.0.0-alpha.0",
43
- "@skyux/a11y": "9.0.0-alpha.0",
44
- "@skyux/action-bars": "9.0.0-alpha.0",
45
- "@skyux/ag-grid": "9.0.0-alpha.0",
46
- "@skyux/angular-tree-component": "9.0.0-alpha.0",
47
- "@skyux/animations": "9.0.0-alpha.0",
48
- "@skyux/assets": "9.0.0-alpha.0",
49
- "@skyux/autonumeric": "9.0.0-alpha.0",
50
- "@skyux/avatar": "9.0.0-alpha.0",
51
- "@skyux/colorpicker": "9.0.0-alpha.0",
52
- "@skyux/config": "9.0.0-alpha.0",
53
- "@skyux/core": "9.0.0-alpha.0",
54
- "@skyux/data-manager": "9.0.0-alpha.0",
55
- "@skyux/datetime": "9.0.0-alpha.0",
56
- "@skyux/errors": "9.0.0-alpha.0",
57
- "@skyux/flyout": "9.0.0-alpha.0",
58
- "@skyux/forms": "9.0.0-alpha.0",
59
- "@skyux/grids": "9.0.0-alpha.0",
60
- "@skyux/http": "9.0.0-alpha.0",
61
- "@skyux/i18n": "9.0.0-alpha.0",
39
+ "@blackbaud/angular-tree-component": "^1.0.0-alpha.0",
40
+ "@skyux-sdk/eslint-config": "9.0.0-alpha.10",
41
+ "@skyux-sdk/prettier-schematics": "9.0.0-alpha.10",
42
+ "@skyux-sdk/testing": "9.0.0-alpha.10",
43
+ "@skyux/a11y": "9.0.0-alpha.10",
44
+ "@skyux/action-bars": "9.0.0-alpha.10",
45
+ "@skyux/ag-grid": "9.0.0-alpha.10",
46
+ "@skyux/angular-tree-component": "9.0.0-alpha.10",
47
+ "@skyux/animations": "9.0.0-alpha.10",
48
+ "@skyux/assets": "9.0.0-alpha.10",
49
+ "@skyux/autonumeric": "9.0.0-alpha.10",
50
+ "@skyux/avatar": "9.0.0-alpha.10",
51
+ "@skyux/colorpicker": "9.0.0-alpha.10",
52
+ "@skyux/config": "9.0.0-alpha.10",
53
+ "@skyux/core": "9.0.0-alpha.10",
54
+ "@skyux/data-manager": "9.0.0-alpha.10",
55
+ "@skyux/datetime": "9.0.0-alpha.10",
56
+ "@skyux/errors": "9.0.0-alpha.10",
57
+ "@skyux/flyout": "9.0.0-alpha.10",
58
+ "@skyux/forms": "9.0.0-alpha.10",
59
+ "@skyux/grids": "9.0.0-alpha.10",
60
+ "@skyux/http": "9.0.0-alpha.10",
61
+ "@skyux/i18n": "9.0.0-alpha.10",
62
62
  "@skyux/icons": "^6.0.0",
63
- "@skyux/indicators": "9.0.0-alpha.0",
64
- "@skyux/inline-form": "9.0.0-alpha.0",
65
- "@skyux/layout": "9.0.0-alpha.0",
66
- "@skyux/list-builder": "9.0.0-alpha.0",
67
- "@skyux/list-builder-common": "9.0.0-alpha.0",
68
- "@skyux/list-builder-view-checklist": "9.0.0-alpha.0",
69
- "@skyux/list-builder-view-grids": "9.0.0-alpha.0",
70
- "@skyux/lists": "9.0.0-alpha.0",
71
- "@skyux/lookup": "9.0.0-alpha.0",
72
- "@skyux/modals": "9.0.0-alpha.0",
73
- "@skyux/navbar": "9.0.0-alpha.0",
74
- "@skyux/omnibar-interop": "9.0.0-alpha.0",
75
- "@skyux/pages": "9.0.0-alpha.0",
76
- "@skyux/phone-field": "9.0.0-alpha.0",
77
- "@skyux/popovers": "9.0.0-alpha.0",
78
- "@skyux/progress-indicator": "9.0.0-alpha.0",
79
- "@skyux/router": "9.0.0-alpha.0",
80
- "@skyux/select-field": "9.0.0-alpha.0",
81
- "@skyux/split-view": "9.0.0-alpha.0",
82
- "@skyux/tabs": "9.0.0-alpha.0",
83
- "@skyux/text-editor": "9.0.0-alpha.0",
84
- "@skyux/theme": "9.0.0-alpha.0",
85
- "@skyux/tiles": "9.0.0-alpha.0",
86
- "@skyux/toast": "9.0.0-alpha.0",
87
- "@skyux/validation": "9.0.0-alpha.0",
88
- "ag-grid-angular": "^28.2.1",
89
- "ag-grid-community": "^28.2.1",
90
- "ag-grid-enterprise": "^28.2.1"
63
+ "@skyux/indicators": "9.0.0-alpha.10",
64
+ "@skyux/inline-form": "9.0.0-alpha.10",
65
+ "@skyux/layout": "9.0.0-alpha.10",
66
+ "@skyux/list-builder": "9.0.0-alpha.10",
67
+ "@skyux/list-builder-common": "9.0.0-alpha.10",
68
+ "@skyux/list-builder-view-checklist": "9.0.0-alpha.10",
69
+ "@skyux/list-builder-view-grids": "9.0.0-alpha.10",
70
+ "@skyux/lists": "9.0.0-alpha.10",
71
+ "@skyux/lookup": "9.0.0-alpha.10",
72
+ "@skyux/modals": "9.0.0-alpha.10",
73
+ "@skyux/navbar": "9.0.0-alpha.10",
74
+ "@skyux/omnibar-interop": "9.0.0-alpha.10",
75
+ "@skyux/pages": "9.0.0-alpha.10",
76
+ "@skyux/phone-field": "9.0.0-alpha.10",
77
+ "@skyux/popovers": "9.0.0-alpha.10",
78
+ "@skyux/progress-indicator": "9.0.0-alpha.10",
79
+ "@skyux/router": "9.0.0-alpha.10",
80
+ "@skyux/select-field": "9.0.0-alpha.10",
81
+ "@skyux/split-view": "9.0.0-alpha.10",
82
+ "@skyux/tabs": "9.0.0-alpha.10",
83
+ "@skyux/text-editor": "9.0.0-alpha.10",
84
+ "@skyux/theme": "9.0.0-alpha.10",
85
+ "@skyux/tiles": "9.0.0-alpha.10",
86
+ "@skyux/toast": "9.0.0-alpha.10",
87
+ "@skyux/validation": "9.0.0-alpha.10",
88
+ "ag-grid-angular": "^29.3.5",
89
+ "ag-grid-community": "^29.3.5",
90
+ "ag-grid-enterprise": "^29.3.5",
91
+ "autonumeric": "^4.9.0"
91
92
  }
92
93
  },
93
94
  "peerDependencies": {
94
- "@angular/cli": "^16.1.6"
95
+ "@angular/cli": "^16.2.0",
96
+ "@angular/core": "^16.2.1"
95
97
  },
96
98
  "dependencies": {
97
99
  "fs-extra": "10.1.0",
98
100
  "jsonc-parser": "3.2.0"
99
101
  },
100
- "types": "./src/index.d.ts"
102
+ "type": "commonjs"
101
103
  }
@@ -1,14 +1,39 @@
1
1
  {
2
2
  "schematics": {
3
3
  "noop": {
4
- "version": "9.0.0-alpha.0",
4
+ "version": "9.0.0-alpha.10",
5
5
  "factory": "./noop/noop.schematic",
6
6
  "description": "Update all SKY UX component packages"
7
7
  },
8
8
  "update-angular-tree-component": {
9
- "version": "8.0.0-alpha.0",
9
+ "version": "9.0.0-0",
10
10
  "factory": "./update-9/update-angular-tree-component/update-angular-tree-component.schematic",
11
- "description": "Update the angular tree component package to point to the Blackbaud forked version"
11
+ "description": "Update the Angular tree component package to point to the Blackbaud forked version"
12
+ },
13
+ "add-forms-popovers-peer-dependency": {
14
+ "version": "9.0.0-0",
15
+ "factory": "./update-9/add-forms-popovers-peer-dependency/add-forms-popovers-peer-dependency.schematic",
16
+ "description": "Add @skyux/popovers peer dependency for @skyux/forms"
17
+ },
18
+ "add-compat-stylesheets": {
19
+ "version": "9.0.0-0",
20
+ "factory": "./update-9/add-compat-stylesheets/add-compat-stylesheet.schematic",
21
+ "description": "Add a backwards-compatible stylesheet with styles that have been removed from components in SKY UX 9."
22
+ },
23
+ "ag-grid-29": {
24
+ "version": "9.0.0-0",
25
+ "factory": "./update-9/ag-grid-29/ag-grid-29.schematic",
26
+ "description": "Apply changes to support AG Grid 29"
27
+ },
28
+ "legacy-services": {
29
+ "version": "9.0.0-0",
30
+ "factory": "./update-9/legacy-services/legacy-services.schematic",
31
+ "description": "Modal and flyout services were previously provided in 'any' but are now provided in 'root'. Replace with a 'legacy' version for backward compatibility."
32
+ },
33
+ "i18n-resources-module": {
34
+ "version": "9.0.0-0",
35
+ "factory": "./update-9/i18n-resources-module/i18n-resources-module.schematic",
36
+ "description": "Regenerate i18n resources modules for libraries."
12
37
  }
13
38
  }
14
39
  }
@@ -0,0 +1,2 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export default function (): Rule;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schematics_1 = require("@angular-devkit/schematics");
4
+ const tree_1 = require("../../../utility/tree");
5
+ const workspace_1 = require("../../../utility/workspace");
6
+ const COMPAT_CSS_FILE_NAME = 'skyux9-compat.css';
7
+ const compatStyles = {
8
+ libraries: [
9
+ {
10
+ name: '@skyux/forms',
11
+ components: [
12
+ {
13
+ name: 'input box',
14
+ styles: [
15
+ {
16
+ css: `
17
+ :root {
18
+ --sky-compat-sky-form-group-margin-bottom: 10px
19
+ }
20
+ `,
21
+ instructions: `
22
+ The bottom margin has been removed from the \`sky-input-box\`. To address this, remove this block of CSS and use \`stacked="true"\` to automatically have the latest vertical spacing added.`,
23
+ },
24
+ ],
25
+ },
26
+ ],
27
+ },
28
+ {
29
+ name: '@skyux/theme',
30
+ components: [
31
+ {
32
+ name: 'styles',
33
+ styles: [
34
+ {
35
+ css: `
36
+ :root {
37
+ --sky-compat-sky-form-group-margin-bottom: 10px
38
+ }
39
+ `,
40
+ instructions: `
41
+ The bottom margin has been removed from \`sky-form-group\` style class. To address this, remove this block of css and change \`sky-form-group\` to \`sky-margin-stacked-sm\` or other appropriate spacing classes. See https://developer.blackbaud.com/skyux/design/styles/spacing for a list of supported spacing classes.`,
42
+ },
43
+ ],
44
+ },
45
+ ],
46
+ },
47
+ ],
48
+ };
49
+ function getProjectSourcePath(projectDefinition) {
50
+ /*istanbul ignore else*/
51
+ if (projectDefinition.sourceRoot) {
52
+ return `${projectDefinition.sourceRoot}/app`;
53
+ }
54
+ else {
55
+ return `${projectDefinition.root}/src/app`;
56
+ }
57
+ }
58
+ function buildCommentBlock(message) {
59
+ return `/${'*'.repeat(79)}
60
+ * ${message.replace(/(?![^\n]{1,75}$)([^\n]{1,75})\s/g, '$1\n * ')}
61
+ ${'*'.repeat(79)}/`;
62
+ }
63
+ function buildComponentCss(component) {
64
+ let contents = buildCommentBlock(`COMPONENT: ${component.name.toUpperCase()}`);
65
+ for (const style of component.styles) {
66
+ contents += `
67
+
68
+ ${buildCommentBlock(style.instructions.trim())}
69
+
70
+ ${style.css.trim()}
71
+ `;
72
+ }
73
+ return contents;
74
+ }
75
+ function writeStylesheet(sourceRoot, contents) {
76
+ const filePath = `${sourceRoot}/${COMPAT_CSS_FILE_NAME}`;
77
+ return (tree) => {
78
+ if (tree.exists(filePath)) {
79
+ tree.overwrite(filePath, contents);
80
+ }
81
+ else {
82
+ tree.create(filePath, contents);
83
+ }
84
+ };
85
+ }
86
+ function addStylesheetToWorkspace() {
87
+ return () => (0, workspace_1.updateWorkspace)((workspace) => {
88
+ for (const project of workspace.projects.values()) {
89
+ for (const targetName of ['build', 'test']) {
90
+ if (project.extensions['projectType'] === 'application') {
91
+ const target = project.targets.get(targetName);
92
+ const sourceRoot = getProjectSourcePath(project);
93
+ const filePath = `${sourceRoot}/${COMPAT_CSS_FILE_NAME}`;
94
+ /* istanbul ignore else */
95
+ if (target && target.options) {
96
+ const styles = (target.options['styles'] = (target.options['styles'] || []));
97
+ if (!styles.includes(filePath)) {
98
+ styles.push(filePath);
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ });
105
+ }
106
+ function getCompatStyles(tree) {
107
+ let contents = '';
108
+ const packageJson = JSON.parse((0, tree_1.readRequiredFile)(tree, '/package.json'));
109
+ for (const library of compatStyles.libraries) {
110
+ if (packageJson.dependencies?.[library.name] ||
111
+ packageJson.devDependencies?.[library.name]) {
112
+ for (const component of library.components) {
113
+ contents += `
114
+ ${buildComponentCss(component)}`;
115
+ }
116
+ }
117
+ }
118
+ return contents
119
+ ? `${buildCommentBlock(`TODO: The following component libraries introduced visual breaking changes in SKY UX 9. Each block of CSS reintroduces the styles that were changed or removed for backwards compatibility. You will need to do the following before migrating to the next major version of SKY UX:
120
+ - Address each of the changes by following the instructions
121
+ in each block of CSS, then remove the block.
122
+ - Delete this file after all blocks have been addressed.
123
+ - Remove each occurrence of this file in your project's
124
+ angular.json file.`)}
125
+ ${contents}`
126
+ : undefined;
127
+ }
128
+ function default_1() {
129
+ return async (tree) => {
130
+ const { workspace } = await (0, workspace_1.getWorkspace)(tree);
131
+ const styles = getCompatStyles(tree);
132
+ const rules = [];
133
+ for (const [, projectDefinition] of workspace.projects.entries()) {
134
+ if (projectDefinition.extensions['projectType'] === 'application') {
135
+ if (styles) {
136
+ const sourcePath = getProjectSourcePath(projectDefinition);
137
+ rules.push(writeStylesheet(sourcePath, styles));
138
+ }
139
+ }
140
+ }
141
+ if (styles) {
142
+ rules.push(addStylesheetToWorkspace());
143
+ }
144
+ return (0, schematics_1.chain)(rules);
145
+ };
146
+ }
147
+ exports.default = default_1;
148
+ //# sourceMappingURL=add-compat-stylesheet.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-compat-stylesheet.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/add-compat-stylesheets/add-compat-stylesheet.schematic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export default function (): Rule;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dependencies_1 = require("@schematics/angular/utility/dependencies");
4
+ const ensure_peers_installed_1 = require("../../../rules/ensure-peers-installed");
5
+ function default_1() {
6
+ return (0, ensure_peers_installed_1.ensurePeersInstalled)('@skyux/forms', [
7
+ {
8
+ matchVersion: true,
9
+ name: '@skyux/popovers',
10
+ type: dependencies_1.NodeDependencyType.Default,
11
+ },
12
+ ]);
13
+ }
14
+ exports.default = default_1;
15
+ //# sourceMappingURL=add-forms-popovers-peer-dependency.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-forms-popovers-peer-dependency.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/add-forms-popovers-peer-dependency/add-forms-popovers-peer-dependency.schematic.ts"],"names":[],"mappings":";;AACA,2EAA8E;AAE9E,kFAA6E;AAE7E;IACE,OAAO,IAAA,6CAAoB,EAAC,cAAc,EAAE;QAC1C;YACE,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,iCAAkB,CAAC,OAAO;SACjC;KACF,CAAC,CAAC;AACL,CAAC;AARD,4BAQC"}
@@ -0,0 +1,12 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ /**
3
+ * Upgrade to AG Grid 29 and address breaking changes:
4
+ *
5
+ * - Introduce IRowNode in some cases replacing RowNode
6
+ * - Replace `selectThisNode` with `setSelected`
7
+ * - Replace `columnApi.setColumnState` with `columnApi.applyColumnState`
8
+ * - Replace `column.isLockVisible()` with `column.getColDef().lockVisible`
9
+ * - Do not import AG Grid theme CSS files in angular.json
10
+ *
11
+ */
12
+ export default function (): Rule;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const typescript_1 = tslib_1.__importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
6
+ const utility_1 = require("@schematics/angular/utility");
7
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
8
+ const change_1 = require("@schematics/angular/utility/change");
9
+ const dependencies_1 = require("@schematics/angular/utility/dependencies");
10
+ const AG_GRID = 'ag-grid-community';
11
+ const AG_GRID_ENT = 'ag-grid-enterprise';
12
+ /**
13
+ * Check package.json for AG Grid dependencies.
14
+ */
15
+ function readDependencies(tree) {
16
+ const agGridDependency = (0, dependencies_1.getPackageJsonDependency)(tree, AG_GRID);
17
+ const agGridDependencyEnt = (0, dependencies_1.getPackageJsonDependency)(tree, AG_GRID_ENT);
18
+ return {
19
+ agGridDependency,
20
+ agGridDependencyEnt,
21
+ };
22
+ }
23
+ /**
24
+ * Do not import AG Grid themes in angular.json.
25
+ */
26
+ function removeAgGridCssFiles() {
27
+ return async (tree) => {
28
+ const workspace = await (0, utility_1.readWorkspace)(tree);
29
+ workspace.projects.forEach((project, projectName) => {
30
+ ['build', 'test'].forEach((targetName) => {
31
+ if (targetName === 'build' &&
32
+ project.extensions['projectType'] === 'library') {
33
+ return;
34
+ }
35
+ const targetDefinition = project.targets.get(targetName);
36
+ if (targetDefinition?.['options']?.['styles'] &&
37
+ Array.isArray(targetDefinition.options['styles']) &&
38
+ targetDefinition.options['styles'].includes('node_modules/@skyux/theme/css/sky.css')) {
39
+ targetDefinition['options']['styles'] = targetDefinition.options['styles'].filter((cssFile) => !cssFile.startsWith('ag-grid-community/dist/styles/'));
40
+ if (!targetDefinition.options['styles'].includes('node_modules/@skyux/ag-grid/css/sky-ag-grid.css')) {
41
+ targetDefinition.options['styles'].push('node_modules/@skyux/ag-grid/css/sky-ag-grid.css');
42
+ }
43
+ project.targets.set(targetName, targetDefinition);
44
+ }
45
+ });
46
+ workspace.projects.set(projectName, project);
47
+ });
48
+ await (0, utility_1.writeWorkspace)(tree, workspace);
49
+ };
50
+ }
51
+ function switchToRenamedMethods(filePath, content, changes) {
52
+ const renames = new Map([
53
+ ['selectThisNode', 'setSelected'],
54
+ ['columnApi.setColumnState', 'columnApi.applyColumnState'],
55
+ ['column.isLockVisible()', 'column.getColDef().lockVisible'],
56
+ ]);
57
+ renames.forEach((toText, fromText) => {
58
+ let pos = content.indexOf(fromText);
59
+ while (pos > -1) {
60
+ changes.push(new change_1.ReplaceChange(filePath, pos, fromText, toText));
61
+ pos = content.indexOf(fromText, pos + 1);
62
+ }
63
+ });
64
+ }
65
+ function switchToRowNodeInterface(filePath, content, changes) {
66
+ let pos = content.indexOf(': RowNode');
67
+ if (pos > -1) {
68
+ const source = typescript_1.default.createSourceFile(filePath, content, typescript_1.default.ScriptTarget.Latest, true, typescript_1.default.ScriptKind.TS);
69
+ if (!(0, ast_utils_1.isImported)(source, 'IRowNode', 'ag-grid-community')) {
70
+ changes.push((0, ast_utils_1.insertImport)(source, content, 'IRowNode', 'ag-grid-community'));
71
+ }
72
+ while (pos > -1) {
73
+ // Not accessing a RowNode static property.
74
+ if (content.charAt(pos + 9) !== '.') {
75
+ changes.push(new change_1.ReplaceChange(filePath, pos, ': RowNode', ': IRowNode'));
76
+ }
77
+ pos = content.indexOf(': RowNode', pos + 1);
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Visit all files and apply the changes.
83
+ */
84
+ function updateSourceFiles() {
85
+ return async (tree) => {
86
+ const workspace = await (0, utility_1.readWorkspace)(tree);
87
+ workspace.projects.forEach((project) => {
88
+ tree
89
+ .getDir(project.sourceRoot || project.root)
90
+ .visit((filePath) => {
91
+ // If the file is not a TypeScript file, we can skip it.
92
+ if (!filePath.endsWith('.ts')) {
93
+ return;
94
+ }
95
+ const content = tree.readText(filePath);
96
+ const changes = [];
97
+ switchToRenamedMethods(filePath, content, changes);
98
+ switchToRowNodeInterface(filePath, content, changes);
99
+ const recorder = tree.beginUpdate(filePath);
100
+ (0, change_1.applyToUpdateRecorder)(recorder, changes);
101
+ tree.commitUpdate(recorder);
102
+ });
103
+ });
104
+ };
105
+ }
106
+ /**
107
+ * Upgrade to AG Grid 29 and address breaking changes:
108
+ *
109
+ * - Introduce IRowNode in some cases replacing RowNode
110
+ * - Replace `selectThisNode` with `setSelected`
111
+ * - Replace `columnApi.setColumnState` with `columnApi.applyColumnState`
112
+ * - Replace `column.isLockVisible()` with `column.getColDef().lockVisible`
113
+ * - Do not import AG Grid theme CSS files in angular.json
114
+ *
115
+ */
116
+ function default_1() {
117
+ return async (tree) => {
118
+ const { agGridDependency, agGridDependencyEnt } = readDependencies(tree);
119
+ // AG Grid is not installed, so we don't need to do anything.
120
+ if (!agGridDependency && !agGridDependencyEnt) {
121
+ return;
122
+ }
123
+ return (0, schematics_1.chain)([updateSourceFiles(), removeAgGridCssFiles()]);
124
+ };
125
+ }
126
+ exports.default = default_1;
127
+ //# sourceMappingURL=ag-grid-29.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ag-grid-29.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/ag-grid-29/ag-grid-29.schematic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export default function (): Rule;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schematics_1 = require("@angular-devkit/schematics");
4
+ const tree_1 = require("../../../utility/tree");
5
+ const workspace_1 = require("../../../utility/workspace");
6
+ const RESOURCES_MODULE_SUFFIX = '-resources.module.ts';
7
+ function default_1() {
8
+ return async (tree) => {
9
+ const { workspace } = await (0, workspace_1.getWorkspace)(tree);
10
+ const rules = [];
11
+ for (const [projectName, projectDefinition,] of workspace.projects.entries()) {
12
+ if (projectDefinition.extensions['projectType'] === 'library') {
13
+ const packageJson = JSON.parse((0, tree_1.readRequiredFile)(tree, '/package.json'));
14
+ const dependencies = {
15
+ ...(packageJson.dependencies ?? {}),
16
+ ...(packageJson.devDependencies ?? {}),
17
+ };
18
+ if (dependencies['@skyux/i18n'] === undefined) {
19
+ continue;
20
+ }
21
+ const srcRoot = projectDefinition.sourceRoot ?? `${projectDefinition.root}/src`;
22
+ const srcRootRegex = new RegExp(`^/${srcRoot}/`);
23
+ tree.getDir(srcRoot).visit((filePath) => {
24
+ if (filePath.endsWith(RESOURCES_MODULE_SUFFIX)) {
25
+ const content = (0, tree_1.readRequiredFile)(tree, filePath);
26
+ if (content.includes('SKY_LIB_RESOURCES_PROVIDERS')) {
27
+ rules.push((0, schematics_1.externalSchematic)('@skyux/i18n', 'lib-resources-module', {
28
+ project: projectName,
29
+ name: filePath
30
+ .replace(srcRootRegex, '')
31
+ .replace(/-resources\.module\.ts$/, ''),
32
+ }));
33
+ }
34
+ }
35
+ });
36
+ }
37
+ }
38
+ return (0, schematics_1.chain)(rules);
39
+ };
40
+ }
41
+ exports.default = default_1;
42
+ //# sourceMappingURL=i18n-resources-module.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-resources-module.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/i18n-resources-module/i18n-resources-module.schematic.ts"],"names":[],"mappings":";;AAAA,2DAA4E;AAE5E,gDAAyD;AACzD,0DAA0D;AAE1D,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAEvD;IACE,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,KAAK,MAAM,CACT,WAAW,EACX,iBAAiB,EAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;gBAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,uBAAgB,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;gBAExE,MAAM,YAAY,GAAG;oBACnB,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;iBACvC,CAAC;gBAEF,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;oBAC7C,SAAS;iBACV;gBAED,MAAM,OAAO,GACX,iBAAiB,CAAC,UAAU,IAAI,GAAG,iBAAiB,CAAC,IAAI,MAAM,CAAC;gBAElE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC;gBAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;wBAC9C,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;wBAEjD,IAAI,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE;4BACnD,KAAK,CAAC,IAAI,CACR,IAAA,8BAAiB,EAAC,aAAa,EAAE,sBAAsB,EAAE;gCACvD,OAAO,EAAE,WAAW;gCACpB,IAAI,EAAE,QAAQ;qCACX,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;qCACzB,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;6BAC1C,CAAC,CACH,CAAC;yBACH;qBACF;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;QAED,OAAO,IAAA,kBAAK,EAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAhDD,4BAgDC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The contents of this file are heavily inspired by Angular's "untyped forms" migration.
3
+ * @see https://github.com/angular/angular/blob/14.3.x/packages/core/schematics/migrations/typed-forms/index.ts
4
+ */
5
+ import { Rule } from '@angular-devkit/schematics';
6
+ /**
7
+ * Replaces certain SKY UX services with their "legacy" equivalents.
8
+ * For example, `SkyModalService` becomes `SkyModalLegacyService`.
9
+ */
10
+ export default function (): Rule;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tree_1 = require("../../../utility/tree");
4
+ const imports_1 = require("../../../utility/typescript/imports");
5
+ const source_file_1 = require("../../../utility/typescript/source-file");
6
+ const workspace_1 = require("../../../utility/workspace");
7
+ // A collection of services (and their packages) that should be replaced with "legacy" versions.
8
+ const packages = new Map([
9
+ ['@skyux/core', ['SkyDynamicComponentService', 'SkyOverlayService']],
10
+ ['@skyux/flyout', ['SkyFlyoutService']],
11
+ ['@skyux/modals', ['SkyModalService']],
12
+ ['@skyux/toast', ['SkyToastService']],
13
+ ]);
14
+ function runLegacyServicesMigration(tree, filePath) {
15
+ const sourceFile = (0, source_file_1.createSourceFile)(filePath, (0, tree_1.readRequiredFile)(tree, filePath));
16
+ let update = null;
17
+ const rewriter = (startPos, origLength, text) => {
18
+ if (update === null) {
19
+ // Lazily initialize update, because most files will not require migration.
20
+ update = tree.beginUpdate(sourceFile.fileName);
21
+ }
22
+ update.remove(startPos, origLength);
23
+ update.insertLeft(startPos, text);
24
+ };
25
+ const imports = (0, imports_1.getImports)(sourceFile, packages);
26
+ // If no relevant classes are imported, we can exit early.
27
+ if (imports.length === 0) {
28
+ return;
29
+ }
30
+ // For each control class, migrate all of its uses.
31
+ for (const imp of imports) {
32
+ const usages = (0, imports_1.getUsages)(sourceFile, imp);
33
+ for (const usage of usages) {
34
+ const newName = getLegacyVersionOfName(imp.getText(sourceFile));
35
+ if (newName) {
36
+ rewriter(usage.node.getStart(sourceFile), usage.node.getWidth(sourceFile), newName);
37
+ }
38
+ }
39
+ }
40
+ // For each imported control class, migrate to the corresponding legacy import.
41
+ for (const imp of imports) {
42
+ // If the import specifier has a property name, use that instead (for example, `import {PropertyName as Foo}`).
43
+ const item = imp.propertyName ?? imp;
44
+ rewriter(item.getStart(sourceFile), item.getWidth(sourceFile), getLegacyVersionOfName(item.getText(sourceFile)));
45
+ }
46
+ if (update) {
47
+ tree.commitUpdate(update);
48
+ }
49
+ }
50
+ function getLegacyVersionOfName(name) {
51
+ return name.replace(/(?:Service)$/, 'LegacyService');
52
+ }
53
+ /**
54
+ * Replaces certain SKY UX services with their "legacy" equivalents.
55
+ * For example, `SkyModalService` becomes `SkyModalLegacyService`.
56
+ */
57
+ function default_1() {
58
+ return async (tree) => {
59
+ const { workspace } = await (0, workspace_1.getWorkspace)(tree);
60
+ workspace.projects.forEach((project) => {
61
+ tree.getDir(project.root).visit((filePath) => {
62
+ if (filePath.endsWith('.ts') && !filePath.includes('node_modules')) {
63
+ runLegacyServicesMigration(tree, filePath);
64
+ }
65
+ });
66
+ });
67
+ };
68
+ }
69
+ exports.default = default_1;
70
+ //# sourceMappingURL=legacy-services.schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-services.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/legacy-services/legacy-services.schematic.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schematics_1 = require("@angular-devkit/schematics");
3
4
  const dependencies_1 = require("@schematics/angular/utility/dependencies");
4
5
  const ensure_peers_installed_1 = require("../../../rules/ensure-peers-installed");
6
+ const tree_1 = require("../../../utility/tree");
7
+ const workspace_1 = require("../../../utility/workspace");
8
+ function renameTypeScriptImportPaths() {
9
+ return async (tree) => {
10
+ const { workspace } = await (0, workspace_1.getWorkspace)(tree);
11
+ for (const [, projectDefinition] of workspace.projects.entries()) {
12
+ tree.getDir(projectDefinition.root).visit((filePath) => {
13
+ if (filePath.match(/\.ts$/)) {
14
+ const content = (0, tree_1.readRequiredFile)(tree, filePath);
15
+ const updatedContent = content.replace(/import {\s*(?:\w|,|\s)+\s*} from ['"](@circlon)\/angular-tree-component(?:\w|\/)*['"];/g, (match, importPath) => match.replace(importPath, '@blackbaud'));
16
+ if (updatedContent !== content) {
17
+ tree.overwrite(filePath, updatedContent);
18
+ }
19
+ }
20
+ });
21
+ }
22
+ };
23
+ }
5
24
  function default_1() {
6
- return (0, ensure_peers_installed_1.ensurePeersInstalled)('@skyux/angular-tree-component', [
7
- {
8
- name: '@blackbaud/angular-tree-component',
9
- version: '1.0.0-alpha.0',
10
- type: dependencies_1.NodeDependencyType.Default,
11
- },
12
- ], [
13
- {
14
- name: '@circlon/angular-tree-component',
15
- },
25
+ return (0, schematics_1.chain)([
26
+ renameTypeScriptImportPaths(),
27
+ (0, ensure_peers_installed_1.ensurePeersInstalled)('@skyux/angular-tree-component', [
28
+ {
29
+ name: '@blackbaud/angular-tree-component',
30
+ version: '1.0.0-alpha.0',
31
+ type: dependencies_1.NodeDependencyType.Default,
32
+ },
33
+ ], [
34
+ {
35
+ name: '@circlon/angular-tree-component',
36
+ },
37
+ ]),
16
38
  ]);
17
39
  }
18
40
  exports.default = default_1;
@@ -1 +1 @@
1
- {"version":3,"file":"update-angular-tree-component.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/update-angular-tree-component/update-angular-tree-component.schematic.ts"],"names":[],"mappings":";;AACA,2EAA8E;AAE9E,kFAA6E;AAE7E;IACE,OAAO,IAAA,6CAAoB,EACzB,+BAA+B,EAC/B;QACE;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,iCAAkB,CAAC,OAAO;SACjC;KACF,EACD;QACE;YACE,IAAI,EAAE,iCAAiC;SACxC;KACF,CACF,CAAC;AACJ,CAAC;AAhBD,4BAgBC"}
1
+ {"version":3,"file":"update-angular-tree-component.schematic.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/packages/src/schematics/migrations/update-9/update-angular-tree-component/update-angular-tree-component.schematic.ts"],"names":[],"mappings":";;AAAA,2DAAyD;AACzD,2EAA8E;AAE9E,kFAA6E;AAC7E,gDAAyD;AACzD,0DAA0D;AAE1D,SAAS,2BAA2B;IAClC,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAE/C,KAAK,MAAM,CAAC,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;YAChE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrD,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;oBAC3B,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAEjD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CACpC,yFAAyF,EACzF,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAC/D,CAAC;oBAEF,IAAI,cAAc,KAAK,OAAO,EAAE;wBAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;qBAC1C;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;AACJ,CAAC;AAED;IACE,OAAO,IAAA,kBAAK,EAAC;QACX,2BAA2B,EAAE;QAC7B,IAAA,6CAAoB,EAClB,+BAA+B,EAC/B;YACE;gBACE,IAAI,EAAE,mCAAmC;gBACzC,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,iCAAkB,CAAC,OAAO;aACjC;SACF,EACD;YACE;gBACE,IAAI,EAAE,iCAAiC;aACxC;SACF,CACF;KACF,CAAC,CAAC;AACL,CAAC;AAnBD,4BAmBC"}
@@ -1,8 +1,9 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
2
  import { NodeDependencyType } from '@schematics/angular/utility/dependencies';
3
3
  type PackageDetails = {
4
+ matchVersion?: boolean;
4
5
  name: string;
5
- version: string;
6
+ version?: string;
6
7
  type: NodeDependencyType;
7
8
  };
8
9
  /**
@@ -5,16 +5,21 @@ const schematics_1 = require("@angular-devkit/schematics");
5
5
  const tasks_1 = require("@angular-devkit/schematics/tasks");
6
6
  const dependencies_1 = require("@schematics/angular/utility/dependencies");
7
7
  const tree_1 = require("../utility/tree");
8
- function installPackages(packages) {
8
+ function installPackages(packages, targetPackageVersion) {
9
9
  return (tree, context) => {
10
10
  for (const details of packages) {
11
11
  // Remove the package (if it exists) so we can ensure it's added to the appropriate section.
12
12
  (0, dependencies_1.removePackageJsonDependency)(tree, details.name, '/package.json');
13
- (0, dependencies_1.addPackageJsonDependency)(tree, {
14
- type: details.type,
15
- name: details.name,
16
- version: details.version,
17
- });
13
+ const version = details.matchVersion
14
+ ? targetPackageVersion
15
+ : details.version;
16
+ if (version) {
17
+ (0, dependencies_1.addPackageJsonDependency)(tree, {
18
+ type: details.type,
19
+ name: details.name,
20
+ version,
21
+ });
22
+ }
18
23
  }
19
24
  context.addTask(new tasks_1.NodePackageInstallTask());
20
25
  };
@@ -40,12 +45,17 @@ function uninstallPackages(packages) {
40
45
  function ensurePeersInstalled(targetPackageName, peers, peersToRemove) {
41
46
  return async (tree) => {
42
47
  const packageJson = JSON.parse((0, tree_1.readRequiredFile)(tree, '/package.json'));
48
+ const targetPackageVersion = packageJson.dependencies?.[targetPackageName] ??
49
+ packageJson.devDependencies?.[targetPackageName];
43
50
  const dependencies = {
44
51
  ...(packageJson.dependencies || {}),
45
52
  ...(packageJson.devDependencies || {}),
46
53
  };
47
54
  return dependencies[targetPackageName]
48
- ? (0, schematics_1.chain)([uninstallPackages(peersToRemove), installPackages(peers)])
55
+ ? (0, schematics_1.chain)([
56
+ uninstallPackages(peersToRemove),
57
+ installPackages(peers, targetPackageVersion),
58
+ ])
49
59
  : undefined;
50
60
  };
51
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-peers-installed.js","sourceRoot":"","sources":["../../../../../../../libs/components/packages/src/schematics/rules/ensure-peers-installed.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AACzD,4DAA0E;AAC1E,2EAIkD;AAElD,0CAAmD;AAQnD,SAAS,eAAe,CAAC,QAA0B;IACjD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,4FAA4F;YAC5F,IAAA,0CAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YACjE,IAAA,uCAAwB,EAAC,IAAI,EAAE;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;SACJ;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAyC;IAClE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,0BAA0B;QAC1B,IAAI,QAAQ,EAAE;YACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IAAA,0CAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;aAClE;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;SAC/C;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,iBAAyB,EACzB,KAAuB,EACvB,aAA8C;IAE9C,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,WAAW,GAGb,IAAI,CAAC,KAAK,CAAC,IAAA,uBAAgB,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QAExD,MAAM,YAAY,GAA2B;YAC3C,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;SACvC,CAAC;QAEF,OAAO,YAAY,CAAC,iBAAiB,CAAC;YACpC,CAAC,CAAC,IAAA,kBAAK,EAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AApBD,oDAoBC"}
1
+ {"version":3,"file":"ensure-peers-installed.js","sourceRoot":"","sources":["../../../../../../../libs/components/packages/src/schematics/rules/ensure-peers-installed.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AACzD,4DAA0E;AAC1E,2EAIkD;AAElD,0CAAmD;AAcnD,SAAS,eAAe,CACtB,QAA0B,EAC1B,oBAA6B;IAE7B,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,4FAA4F;YAC5F,IAAA,0CAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY;gBAClC,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YAEpB,IAAI,OAAO,EAAE;gBACX,IAAA,uCAAwB,EAAC,IAAI,EAAE;oBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO;iBACR,CAAC,CAAC;aACJ;SACF;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAyC;IAClE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,0BAA0B;QAC1B,IAAI,QAAQ,EAAE;YACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IAAA,0CAA2B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;aAClE;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;SAC/C;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,iBAAyB,EACzB,KAAuB,EACvB,aAA8C;IAE9C,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CACzC,IAAA,uBAAgB,EAAC,IAAI,EAAE,eAAe,CAAC,CACxC,CAAC;QACF,MAAM,oBAAoB,GACxB,WAAW,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC;YAC7C,WAAW,CAAC,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAEnD,MAAM,YAAY,GAA2B;YAC3C,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;SACvC,CAAC;QAEF,OAAO,YAAY,CAAC,iBAAiB,CAAC;YACpC,CAAC,CAAC,IAAA,kBAAK,EAAC;gBACJ,iBAAiB,CAAC,aAAa,CAAC;gBAChC,eAAe,CAAC,KAAK,EAAE,oBAAoB,CAAC;aAC7C,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAzBD,oDAyBC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The contents of this file are heavily inspired by Angular's source code.
3
+ * @see https://github.com/angular/angular/blob/14.3.x/packages/core/schematics/utils/typescript/imports.ts
4
+ */
5
+ import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript';
6
+ export interface ImportUsage {
7
+ node: ts.Node;
8
+ importName: string;
9
+ }
10
+ export declare function getImports(sourceFile: ts.SourceFile, packages: Map<string, string[]>): ts.ImportSpecifier[];
11
+ export declare function getUsages(sourceFile: ts.SourceFile, importSpecifier: ts.ImportSpecifier): ImportUsage[];
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUsages = exports.getImports = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /**
6
+ * The contents of this file are heavily inspired by Angular's source code.
7
+ * @see https://github.com/angular/angular/blob/14.3.x/packages/core/schematics/utils/typescript/imports.ts
8
+ */
9
+ const ts = tslib_1.__importStar(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
10
+ function getImports(sourceFile, packages) {
11
+ const importSpecifiers = [];
12
+ for (const [packageName, classes] of packages.entries()) {
13
+ for (const cc of classes) {
14
+ const specifiers = getImportSpecifiers(sourceFile, packageName, cc);
15
+ if (specifiers) {
16
+ importSpecifiers.push(...specifiers);
17
+ }
18
+ }
19
+ }
20
+ return importSpecifiers;
21
+ }
22
+ exports.getImports = getImports;
23
+ function getUsages(sourceFile, importSpecifier) {
24
+ const usages = [];
25
+ const visitNode = (node) => {
26
+ // Skip this node and all of its children; imports are a special case.
27
+ if (ts.isImportSpecifier(node)) {
28
+ return;
29
+ }
30
+ const importName = importSpecifier.getText(sourceFile);
31
+ if (ts.isIdentifier(node) && node.escapedText === importName) {
32
+ usages.push({ node, importName });
33
+ }
34
+ ts.forEachChild(node, visitNode);
35
+ };
36
+ ts.forEachChild(sourceFile, visitNode);
37
+ return usages;
38
+ }
39
+ exports.getUsages = getUsages;
40
+ /**
41
+ * Gets top-level import specifiers with a specific name that is imported from a particular module.
42
+ * E.g. given a file that looks like:
43
+ *
44
+ * ```
45
+ * import { Component, Directive } from '@angular/core';
46
+ * import { Foo } from './foo';
47
+ * ```
48
+ *
49
+ * Calling `getImportSpecifiers(sourceFile, '@angular/core', 'Directive')` will yield the nodes
50
+ * referring to `Directive` in the top import.
51
+ *
52
+ * @param sourceFile File in which to look for imports.
53
+ * @param moduleName Name of the import's module.
54
+ * @param specifierName Original name of the specifier to look for. Aliases will be resolved to
55
+ * their original name.
56
+ */
57
+ function getImportSpecifiers(sourceFile, moduleName, specifierName) {
58
+ const importSpecifiers = [];
59
+ for (const node of sourceFile.statements) {
60
+ if (ts.isImportDeclaration(node) &&
61
+ ts.isStringLiteral(node.moduleSpecifier) &&
62
+ node.moduleSpecifier.text === moduleName) {
63
+ const namedBindings = node.importClause && node.importClause.namedBindings;
64
+ if (namedBindings && ts.isNamedImports(namedBindings)) {
65
+ const match = findImportSpecifier(namedBindings.elements, specifierName);
66
+ if (match) {
67
+ importSpecifiers.push(match);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ return importSpecifiers;
73
+ }
74
+ /**
75
+ * Finds an import specifier with a particular name.
76
+ */
77
+ function findImportSpecifier(nodes, specifierName) {
78
+ return nodes.find((element) => {
79
+ const { name, propertyName } = element;
80
+ return propertyName?.text === specifierName || name.text === specifierName;
81
+ });
82
+ }
83
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../../../../../../libs/components/packages/src/schematics/utility/typescript/imports.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,2HAAqG;AAOrG,SAAgB,UAAU,CACxB,UAAyB,EACzB,QAA+B;IAE/B,MAAM,gBAAgB,GAAyB,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;QACvD,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;YACxB,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YAEpE,IAAI,UAAU,EAAE;gBACd,gBAAgB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;aACtC;SACF;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAjBD,gCAiBC;AAED,SAAgB,SAAS,CACvB,UAAyB,EACzB,eAAmC;IAEnC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,EAAE;QAClC,sEAAsE;QACtE,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;YAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;SACnC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,8BAwBC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,mBAAmB,CAC1B,UAAyB,EACzB,UAAkB,EAClB,aAAqB;IAErB,MAAM,gBAAgB,GAAyB,EAAE,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,UAAU,EAAE;QACxC,IACE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,UAAU,EACxC;YACA,MAAM,aAAa,GACjB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAEvD,IAAI,aAAa,IAAI,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;gBACrD,MAAM,KAAK,GAAG,mBAAmB,CAC/B,aAAa,CAAC,QAAQ,EACtB,aAAa,CACd,CAAC;gBAEF,IAAI,KAAK,EAAE;oBACT,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;SACF;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,KAAuC,EACvC,aAAqB;IAErB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5B,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAEvC,OAAO,YAAY,EAAE,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import * as ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript';
2
+ export declare function createSourceFile(filePath: string, fileContents: string): ts.SourceFile;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSourceFile = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ts = tslib_1.__importStar(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
6
+ function createSourceFile(filePath, fileContents) {
7
+ return ts.createSourceFile(filePath, fileContents, ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
8
+ }
9
+ exports.createSourceFile = createSourceFile;
10
+ //# sourceMappingURL=source-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-file.js","sourceRoot":"","sources":["../../../../../../../../libs/components/packages/src/schematics/utility/typescript/source-file.ts"],"names":[],"mappings":";;;;AAAA,2HAAqG;AAErG,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,YAAoB;IAEpB,OAAO,EAAE,CAAC,gBAAgB,CACxB,QAAQ,EACR,YAAY,EACZ,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,KAAK,EACL,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;AACJ,CAAC;AAXD,4CAWC"}