devextreme-schematics 1.3.0-beta.0 → 1.3.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.
Files changed (96) hide show
  1. package/package.json +10 -8
  2. package/src/add-app-template/index.js +2 -1
  3. package/src/add-app-template/index.js.map +1 -1
  4. package/src/add-app-template/index.ts +30 -0
  5. package/src/add-app-template/index_spec.js +6 -5
  6. package/src/add-app-template/index_spec.js.map +1 -1
  7. package/src/add-app-template/index_spec.ts +73 -0
  8. package/src/add-app-template/schema.json +7 -3
  9. package/src/add-layout/files/devextreme.json +1 -1
  10. package/src/add-layout/files/src/app/__name__.component.html +3 -3
  11. package/src/add-layout/files/src/app/__name__.component.ts +1 -1
  12. package/src/add-layout/files/src/app/app-routing.module.ts +1 -1
  13. package/src/add-layout/files/src/app/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.component.ts +13 -11
  14. package/src/add-layout/files/src/app/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.component.ts +10 -9
  15. package/src/add-layout/files/src/app/layouts/single-card/single-card.component.ts +4 -4
  16. package/src/add-layout/files/src/app/not-authorized-container.ts +2 -0
  17. package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.html +8 -6
  18. package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.ts +6 -15
  19. package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.html +9 -7
  20. package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.ts +4 -13
  21. package/src/add-layout/files/src/app/shared/components/header/header.component.ts +11 -6
  22. package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.html +8 -6
  23. package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.ts +2 -12
  24. package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.html +8 -6
  25. package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.ts +2 -12
  26. package/src/add-layout/files/src/app/shared/components/side-navigation-menu/side-navigation-menu.component.ts +8 -7
  27. package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.html +5 -2
  28. package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.ts +3 -2
  29. package/src/add-layout/files/src/app/shared/services/auth.service.ts +11 -5
  30. package/src/add-layout/files/src/app/shared/services/screen.service.ts +2 -2
  31. package/src/add-layout/files/src/app/unauthenticated-content.ts +53 -0
  32. package/src/add-layout/files/src/dx-styles.scss +4 -0
  33. package/src/add-layout/index.js +45 -31
  34. package/src/add-layout/index.js.map +1 -1
  35. package/src/add-layout/index.ts +384 -0
  36. package/src/add-layout/index_spec.js +42 -28
  37. package/src/add-layout/index_spec.js.map +1 -1
  38. package/src/add-layout/index_spec.ts +340 -0
  39. package/src/add-layout/schema.json +6 -2
  40. package/src/add-sample-views/files/pages/home/home.component.html +5 -5
  41. package/src/add-sample-views/files/pages/profile/profile.component.ts +1 -1
  42. package/src/add-sample-views/files/pages/tasks/tasks.component.html +1 -0
  43. package/src/add-sample-views/index.js +13 -4
  44. package/src/add-sample-views/index.js.map +1 -1
  45. package/src/add-sample-views/index.ts +141 -0
  46. package/src/add-sample-views/index_spec.js +5 -4
  47. package/src/add-sample-views/index_spec.js.map +1 -1
  48. package/src/add-sample-views/index_spec.ts +74 -0
  49. package/src/add-sample-views/schema.json +1 -1
  50. package/src/add-view/index.d.ts +2 -2
  51. package/src/add-view/index.js +33 -22
  52. package/src/add-view/index.js.map +1 -1
  53. package/src/add-view/index.ts +166 -0
  54. package/src/add-view/index_spec.js +12 -12
  55. package/src/add-view/index_spec.js.map +1 -1
  56. package/src/add-view/index_spec.ts +155 -0
  57. package/src/add-view/schema.json +4 -4
  58. package/src/collection.json +2 -1
  59. package/src/install/index.js +16 -3
  60. package/src/install/index.js.map +1 -1
  61. package/src/install/index.ts +88 -0
  62. package/src/install/index_spec.js +10 -9
  63. package/src/install/index_spec.js.map +1 -1
  64. package/src/install/index_spec.ts +106 -0
  65. package/src/install/schema.json +2 -2
  66. package/src/utility/array.js +1 -0
  67. package/src/utility/array.js.map +1 -1
  68. package/src/utility/array.ts +3 -0
  69. package/src/utility/change.js +1 -0
  70. package/src/utility/change.js.map +1 -1
  71. package/src/utility/change.ts +66 -0
  72. package/src/utility/latest-versions.d.ts +1 -1
  73. package/src/utility/latest-versions.js +3 -2
  74. package/src/utility/latest-versions.js.map +1 -1
  75. package/src/utility/latest-versions.ts +6 -0
  76. package/src/utility/modify-json-file.d.ts +1 -0
  77. package/src/utility/modify-json-file.js +7 -3
  78. package/src/utility/modify-json-file.js.map +1 -1
  79. package/src/utility/modify-json-file.ts +16 -0
  80. package/src/utility/project.d.ts +4 -4
  81. package/src/utility/project.js +35 -12
  82. package/src/utility/project.js.map +1 -1
  83. package/src/utility/project.ts +30 -0
  84. package/src/utility/routing.js +1 -0
  85. package/src/utility/routing.js.map +1 -1
  86. package/src/utility/routing.ts +44 -0
  87. package/src/utility/source.js +1 -0
  88. package/src/utility/source.js.map +1 -1
  89. package/src/utility/source.ts +16 -0
  90. package/src/utility/string.js +1 -0
  91. package/src/utility/string.js.map +1 -1
  92. package/src/utility/string.ts +5 -0
  93. package/src/utility/styles.d.ts +1 -2
  94. package/src/utility/styles.js +3 -4
  95. package/src/utility/styles.js.map +1 -1
  96. package/src/utility/styles.ts +30 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/schema",
3
- "id": "SchematicsDevextremeAddView",
3
+ "$id": "SchematicsDevextremeAddView",
4
4
  "title": "Add a view to a DevExtreme Angular application",
5
5
  "type": "object",
6
6
  "properties": {
@@ -30,10 +30,10 @@
30
30
  "type": "string",
31
31
  "description": "The name of a project to modify"
32
32
  },
33
- "spec": {
33
+ "skipTests": {
34
34
  "type": "boolean",
35
- "description": "Specifies whether to generate a spec file",
36
- "default": true
35
+ "description": "When true, does not create \"spec.ts\" test files for the new component.",
36
+ "default": false
37
37
  },
38
38
  "inlineStyle": {
39
39
  "description": "Specifies whether to define styles in the ts file",
@@ -8,7 +8,8 @@
8
8
  },
9
9
  "add-layout": {
10
10
  "description": "Add DevExtreme Layout to the Angular application.",
11
- "factory": "./add-layout/index"
11
+ "factory": "./add-layout/index",
12
+ "schema": "./add-layout/schema.json"
12
13
  },
13
14
  "add-sample-views": {
14
15
  "description": "Add Sample views to the Angular application.",
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  const schematics_1 = require("@angular-devkit/schematics");
4
13
  const styles_1 = require("../utility/styles");
@@ -6,6 +15,7 @@ const dependencies_1 = require("@schematics/angular/utility/dependencies");
6
15
  const tasks_1 = require("@angular-devkit/schematics/tasks");
7
16
  const latest_versions_1 = require("../utility/latest-versions");
8
17
  const modify_json_file_1 = require("../utility/modify-json-file");
18
+ const project_1 = require("../utility/project");
9
19
  function default_1(options) {
10
20
  return schematics_1.chain([
11
21
  (host) => addDevExtremeDependency(host, { dxversion: options.dxversion }),
@@ -41,10 +51,13 @@ function addDevExtremeDependency(host, options) {
41
51
  return host;
42
52
  }
43
53
  function addDevExtremeCSS(host, options) {
44
- modify_json_file_1.modifyJSONFile(host, './angular.json', config => {
45
- return styles_1.addStylesToApp(host, options.project, config);
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const projectName = yield project_1.getProjectName(host, options.project);
56
+ modify_json_file_1.modifyJSONFile(host, './angular.json', config => {
57
+ return styles_1.addStylesToApp(projectName, config);
58
+ });
59
+ return host;
46
60
  });
47
- return host;
48
61
  }
49
62
  function reqisterJSZip(host) {
50
63
  modify_json_file_1.modifyJSONFile(host, './tsconfig.app.json', config => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAAA,2DAKoC;AAEpC,8CAAmD;AAEnD,2EAGkD;AAElD,4DAE0C;AAE1C,gEAA4D;AAC5D,kEAA6D;AAE7D,mBAAwB,OAAY;IAClC,OAAO,kBAAK,CAAC;QACX,CAAC,IAAU,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/E,CAAC,IAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACpE,CAAC,IAAU,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;QACnC,CAAC,CAAC,EAAE,OAAyB,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AATD,4BASC;AAED,SAAS,uBAAuB,CAAC,IAAU,EAAE,OAAY;IACvD,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,OAAO;QAChC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,YAAY,CAAC;KAC3D,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,OAAO;QAChC,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,oBAAoB,CAAC;KACnE,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,GAAG;QAC5B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gCAAc,CAAC,gBAAgB,CAAC;KAC1C,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,GAAG;QAC5B,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,YAAY,CAAC;KAC3D,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAY;IAChD,iCAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE;QAE9C,OAAO,uBAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,iCAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,EAAE,CAAC;SACZ;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;SAC3D;QAED,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAEjC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2DAKoC;AAEpC,8CAAmD;AAEnD,2EAGkD;AAElD,4DAE0C;AAE1C,gEAA4D;AAC5D,kEAA6D;AAC7D,gDAAoD;AAEpD,mBAAwB,OAAY;IAClC,OAAO,kBAAK,CAAC;QACX,CAAC,IAAU,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/E,CAAC,IAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACpE,CAAC,IAAU,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;QACnC,CAAC,CAAC,EAAE,OAAyB,EAAE,EAAE;YAC/B,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AATD,4BASC;AAED,SAAS,uBAAuB,CAAC,IAAU,EAAE,OAAY;IACvD,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,OAAO;QAChC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,YAAY,CAAC;KAC3D,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,OAAO;QAChC,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,oBAAoB,CAAC;KACnE,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,GAAG;QAC5B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gCAAc,CAAC,gBAAgB,CAAC;KAC1C,CAAC,CAAC;IACH,uCAAwB,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,iCAAkB,CAAC,GAAG;QAC5B,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,gCAAc,CAAC,YAAY,CAAC;KAC3D,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAe,gBAAgB,CAAC,IAAU,EAAE,OAAY;;QACtD,MAAM,WAAW,GAAG,MAAM,wBAAc,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,iCAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE;YAE9C,OAAO,uBAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,iCAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,EAAE,CAAC;SACZ;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;SAC3D;QAED,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAEjC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,88 @@
1
+ import {
2
+ Rule,
3
+ Tree,
4
+ SchematicContext,
5
+ chain
6
+ } from '@angular-devkit/schematics';
7
+
8
+ import { addStylesToApp } from '../utility/styles';
9
+
10
+ import {
11
+ NodeDependencyType,
12
+ addPackageJsonDependency
13
+ } from '@schematics/angular/utility/dependencies';
14
+
15
+ import {
16
+ NodePackageInstallTask
17
+ } from '@angular-devkit/schematics/tasks';
18
+
19
+ import { latestVersions } from '../utility/latest-versions';
20
+ import { modifyJSONFile } from '../utility/modify-json-file';
21
+ import { getProjectName } from '../utility/project';
22
+
23
+ export default function(options: any): Rule {
24
+ return chain([
25
+ (host: Tree) => addDevExtremeDependency(host, { dxversion: options.dxversion }),
26
+ (host: Tree) => addDevExtremeCSS(host, { project: options.project }),
27
+ (host: Tree) => reqisterJSZip(host),
28
+ (_, context: SchematicContext) => {
29
+ context.addTask(new NodePackageInstallTask());
30
+ }
31
+ ]);
32
+ }
33
+
34
+ function addDevExtremeDependency(host: Tree, options: any) {
35
+ addPackageJsonDependency(host, {
36
+ type: NodeDependencyType.Default,
37
+ name: 'devextreme',
38
+ version: options.dxversion || latestVersions['devextreme']
39
+ });
40
+ addPackageJsonDependency(host, {
41
+ type: NodeDependencyType.Default,
42
+ name: 'devextreme-angular',
43
+ version: options.dxversion || latestVersions['devextreme-angular']
44
+ });
45
+ addPackageJsonDependency(host, {
46
+ type: NodeDependencyType.Dev,
47
+ name: 'devextreme-cli',
48
+ version: latestVersions['devextreme-cli']
49
+ });
50
+ addPackageJsonDependency(host, {
51
+ type: NodeDependencyType.Dev,
52
+ name: 'devextreme-themebuilder',
53
+ version: options.dxversion || latestVersions['devextreme']
54
+ });
55
+
56
+ return host;
57
+ }
58
+
59
+ async function addDevExtremeCSS(host: Tree, options: any) {
60
+ const projectName = await getProjectName(host, options.project);
61
+ modifyJSONFile(host, './angular.json', config => {
62
+
63
+ return addStylesToApp(projectName, config);
64
+ });
65
+
66
+ return host;
67
+ }
68
+
69
+ function reqisterJSZip(host: Tree) {
70
+ modifyJSONFile(host, './tsconfig.app.json', config => {
71
+ const compilerOptions = config['compilerOptions'];
72
+ let paths = compilerOptions['paths'];
73
+
74
+ if (!paths) {
75
+ paths = {};
76
+ }
77
+
78
+ if (!paths['jszip']) {
79
+ paths['jszip'] = ['node_modules/jszip/dist/jszip.min.js'];
80
+ }
81
+
82
+ compilerOptions['paths'] = paths;
83
+
84
+ return config;
85
+ });
86
+
87
+ return host;
88
+ }
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
@@ -27,16 +28,16 @@ describe('install', () => {
27
28
  const workspaceOptions = {
28
29
  name: 'workspace',
29
30
  // TODO: use angular latest-versions module
30
- version: '6.0.0'
31
+ version: '12.0.0'
31
32
  };
32
33
  const angularSchematicsCollection = require.resolve('../../node_modules/@schematics/angular/collection.json');
33
34
  const schematicRunner = new testing_1.SchematicTestRunner('@schematics/angular', angularSchematicsCollection);
34
35
  let appTree;
35
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
36
+ beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
36
37
  appTree = yield schematicRunner.runSchematicAsync('workspace', workspaceOptions).toPromise();
37
38
  appTree = yield schematicRunner.runSchematicAsync('application', appOptions, appTree).toPromise();
38
39
  }));
39
- it('should add devextreme dependency (default)', () => __awaiter(this, void 0, void 0, function* () {
40
+ it('should add devextreme dependency (default)', () => __awaiter(void 0, void 0, void 0, function* () {
40
41
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
41
42
  const tree = yield runner.runSchematicAsync('install', {}, appTree).toPromise();
42
43
  const packageConfig = JSON.parse(tree.readContent('package.json'));
@@ -44,20 +45,20 @@ describe('install', () => {
44
45
  expect(packageConfig.dependencies['devextreme-angular']).toBe(latest_versions_1.latestVersions['devextreme-angular']);
45
46
  expect(packageConfig.devDependencies['devextreme-themebuilder']).toBe(latest_versions_1.latestVersions['devextreme']);
46
47
  }));
47
- it('should add devextreme dependency (custom)', () => __awaiter(this, void 0, void 0, function* () {
48
+ it('should add devextreme dependency (custom)', () => __awaiter(void 0, void 0, void 0, function* () {
48
49
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
49
50
  const tree = yield runner.runSchematicAsync('install', { dxversion: '18.2.5' }, appTree).toPromise();
50
51
  const packageConfig = JSON.parse(tree.readContent('package.json'));
51
52
  expect(packageConfig.dependencies.devextreme).toBe('18.2.5');
52
53
  expect(packageConfig.devDependencies['devextreme-themebuilder']).toBe('18.2.5');
53
54
  }));
54
- it('should add devextreme cli devDependency', () => __awaiter(this, void 0, void 0, function* () {
55
+ it('should add devextreme cli devDependency', () => __awaiter(void 0, void 0, void 0, function* () {
55
56
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
56
57
  const tree = yield runner.runSchematicAsync('install', { dxversion: '18.2.5' }, appTree).toPromise();
57
58
  const packageConfig = JSON.parse(tree.readContent('package.json'));
58
59
  expect(packageConfig.devDependencies['devextreme-cli']).toBeDefined();
59
60
  }));
60
- it('should add devextreme styles', () => __awaiter(this, void 0, void 0, function* () {
61
+ it('should add devextreme styles', () => __awaiter(void 0, void 0, void 0, function* () {
61
62
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
62
63
  const tree = yield runner.runSchematicAsync('install', {}, appTree).toPromise();
63
64
  const angularConfig = JSON.parse(tree.readContent('angular.json'));
@@ -65,14 +66,14 @@ describe('install', () => {
65
66
  expect(styles[0]).toBe('node_modules/devextreme/dist/css/dx.common.css');
66
67
  expect(styles[1]).toBe('node_modules/devextreme/dist/css/dx.light.css');
67
68
  }));
68
- it('should register jszip', () => __awaiter(this, void 0, void 0, function* () {
69
+ it('should register jszip', () => __awaiter(void 0, void 0, void 0, function* () {
69
70
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
70
71
  const tree = yield runner.runSchematicAsync('install', {}, appTree).toPromise();
71
72
  const tsconfig = JSON.parse(tree.readContent('tsconfig.app.json'));
72
73
  const jszip = tsconfig['compilerOptions']['paths']['jszip'];
73
74
  expect(jszip[0]).toBe('node_modules/jszip/dist/jszip.min.js');
74
75
  }));
75
- it('should add devextreme styles to the specified project', () => __awaiter(this, void 0, void 0, function* () {
76
+ it('should add devextreme styles to the specified project', () => __awaiter(void 0, void 0, void 0, function* () {
76
77
  const secondAppOptions = {
77
78
  name: 'testApp2',
78
79
  inlineStyle: false,
@@ -1 +1 @@
1
- {"version":3,"file":"index_spec.js","sourceRoot":"","sources":["index_spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index_spec.js","sourceRoot":"","sources":["index_spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
2
+ import { Schema as WorkspaceOptions } from '@schematics/angular/workspace/schema';
3
+ import * as path from 'path';
4
+ import { latestVersions } from '../utility/latest-versions';
5
+
6
+ const collectionPath = path.join(__dirname, '../collection.json');
7
+
8
+ describe('install', () => {
9
+ // TODO: Extract workspase preparing somewhere
10
+ const appOptions: any = {
11
+ name: 'testApp',
12
+ projectRoot: '',
13
+ inlineStyle: false,
14
+ inlineTemplate: false,
15
+ routing: true,
16
+ style: 'css',
17
+ skipTests: false,
18
+ skipPackageJson: false
19
+ };
20
+
21
+ const workspaceOptions: WorkspaceOptions = {
22
+ name: 'workspace',
23
+ // TODO: use angular latest-versions module
24
+ version: '12.0.0'
25
+ };
26
+
27
+ const angularSchematicsCollection = require.resolve('../../node_modules/@schematics/angular/collection.json');
28
+ const schematicRunner = new SchematicTestRunner('@schematics/angular', angularSchematicsCollection);
29
+ let appTree: UnitTestTree;
30
+
31
+ beforeEach(async () => {
32
+ appTree = await schematicRunner.runSchematicAsync('workspace', workspaceOptions).toPromise();
33
+ appTree = await schematicRunner.runSchematicAsync('application', appOptions, appTree).toPromise();
34
+ });
35
+
36
+ it('should add devextreme dependency (default)', async () => {
37
+ const runner = new SchematicTestRunner('schematics', collectionPath);
38
+ const tree = await runner.runSchematicAsync('install', {}, appTree).toPromise();
39
+ const packageConfig = JSON.parse(tree.readContent('package.json'));
40
+
41
+ expect(packageConfig.dependencies['devextreme']).toBe(latestVersions['devextreme']);
42
+ expect(packageConfig.dependencies['devextreme-angular']).toBe(latestVersions['devextreme-angular']);
43
+ expect(packageConfig.devDependencies['devextreme-themebuilder']).toBe(latestVersions['devextreme']);
44
+ });
45
+
46
+ it('should add devextreme dependency (custom)', async () => {
47
+ const runner = new SchematicTestRunner('schematics', collectionPath);
48
+ const tree = await runner.runSchematicAsync('install', { dxversion: '18.2.5' }, appTree).toPromise();
49
+ const packageConfig = JSON.parse(tree.readContent('package.json'));
50
+
51
+ expect(packageConfig.dependencies.devextreme).toBe('18.2.5');
52
+ expect(packageConfig.devDependencies['devextreme-themebuilder']).toBe('18.2.5');
53
+ });
54
+
55
+ it('should add devextreme cli devDependency', async () => {
56
+ const runner = new SchematicTestRunner('schematics', collectionPath);
57
+ const tree = await runner.runSchematicAsync('install', { dxversion: '18.2.5' }, appTree).toPromise();
58
+ const packageConfig = JSON.parse(tree.readContent('package.json'));
59
+
60
+ expect(packageConfig.devDependencies['devextreme-cli']).toBeDefined();
61
+ });
62
+
63
+ it('should add devextreme styles', async () => {
64
+ const runner = new SchematicTestRunner('schematics', collectionPath);
65
+ const tree = await runner.runSchematicAsync('install', {}, appTree).toPromise();
66
+ const angularConfig = JSON.parse(tree.readContent('angular.json'));
67
+ const styles = angularConfig['projects']['testApp']['architect']['build']['options']['styles'];
68
+
69
+ expect(styles[0]).toBe('node_modules/devextreme/dist/css/dx.common.css');
70
+ expect(styles[1]).toBe('node_modules/devextreme/dist/css/dx.light.css');
71
+ });
72
+
73
+ it('should register jszip', async () => {
74
+ const runner = new SchematicTestRunner('schematics', collectionPath);
75
+ const tree = await runner.runSchematicAsync('install', {}, appTree).toPromise();
76
+ const tsconfig = JSON.parse(tree.readContent('tsconfig.app.json'));
77
+ const jszip = tsconfig['compilerOptions']['paths']['jszip'];
78
+
79
+ expect(jszip[0]).toBe('node_modules/jszip/dist/jszip.min.js');
80
+ });
81
+
82
+ it('should add devextreme styles to the specified project', async () => {
83
+ const secondAppOptions: any = {
84
+ name: 'testApp2',
85
+ inlineStyle: false,
86
+ inlineTemplate: false,
87
+ projectRoot: 'src2',
88
+ routing: true,
89
+ style: 'css',
90
+ skipTests: false,
91
+ skipPackageJson: false
92
+ };
93
+
94
+ appTree = await schematicRunner.runSchematicAsync('application', secondAppOptions, appTree).toPromise();
95
+
96
+ const runner = new SchematicTestRunner('schematics', collectionPath);
97
+ const tree = await runner.runSchematicAsync('install', { project: 'testApp2' }, appTree).toPromise();
98
+ const angularConfig = JSON.parse(tree.readContent('angular.json'));
99
+ const styles = angularConfig['projects']['testApp2']['architect']['build']['options']['styles'];
100
+
101
+ expect(styles[0]).toBe('node_modules/devextreme/dist/css/dx.common.css');
102
+ expect(styles[1]).toBe('node_modules/devextreme/dist/css/dx.light.css');
103
+
104
+ expect(angularConfig['projects']['testApp']['architect']['build']['options']['styles'].length).toBe(1);
105
+ });
106
+ });
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/schema",
3
- "id": "SchematicsDevextremeInstall",
3
+ "$id": "SchematicsDevextremeInstall",
4
4
  "title": "Add DevExtreme to an Angular application",
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "dxversion": {
8
8
  "type": "string",
9
9
  "description": "The DevExtreme version",
10
- "default": "latest"
10
+ "default": "^21.2.4"
11
11
  },
12
12
  "project": {
13
13
  "type": "string",
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeArrayUnique = void 0;
3
4
  function makeArrayUnique(arr) {
4
5
  return [...new Set(arr)];
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["array.ts"],"names":[],"mappings":";;AAAA,SAAgB,eAAe,CAAC,GAAe;IAC7C,OAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAFD,0CAEC"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["array.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe,CAAC,GAAe;IAC7C,OAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAFD,0CAEC"}
@@ -0,0 +1,3 @@
1
+ export function makeArrayUnique(arr: Array<any>) {
2
+ return [...new Set(arr)];
3
+ }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.insertItemToArray = exports.applyChanges = void 0;
3
4
  const newLine = `
4
5
  `;
5
6
  function applyChanges(host, changes, filePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"change.js","sourceRoot":"","sources":["change.ts"],"names":[],"mappings":";;AAOA,MAAM,OAAO,GAAG;CACf,CAAC;AAEF,SAAgB,YAAY,CAAC,IAAU,EAAE,OAAiB,EAAE,QAAgB;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAoB,EAAE,EAAE;QACvC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,oCAUC;AAED,gCAAgC;AAChC,2CAA2C;AAC3C,SAAgB,iBAAiB,CAC/B,IAAU,EACV,QAAgB,EAChB,IAAU,EACV,IAAY,EACZ,UAAyC,EAAE,QAAQ,EAAE,OAAO,EAAE;IAE9D,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAG,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,YAAY,GAAG,mBAAmB,GAAG,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,WAAW,EAAE;QACf,MAAM,cAAc,GAAG,IAAI,OAAO,GAAG,CAAC;QACtC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC;QACzF,YAAY,CAAC,UAAU,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC3C;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC9B,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACnB;aAAM;YACL,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;SACnB;KACF;IAED,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhC,OAAO,IAAI,CAAC;AACd,CAAC;AAzCD,8CAyCC"}
1
+ {"version":3,"file":"change.js","sourceRoot":"","sources":["change.ts"],"names":[],"mappings":";;;AAOA,MAAM,OAAO,GAAG;CACf,CAAC;AAEF,SAAgB,YAAY,CAAC,IAAU,EAAE,OAAiB,EAAE,QAAgB;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAoB,EAAE,EAAE;QACvC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,oCAUC;AAED,gCAAgC;AAChC,2CAA2C;AAC3C,SAAgB,iBAAiB,CAC/B,IAAU,EACV,QAAgB,EAChB,IAAU,EACV,IAAY,EACZ,UAAyC,EAAE,QAAQ,EAAE,OAAO,EAAE;IAE9D,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAG,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,YAAY,GAAG,mBAAmB,GAAG,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,WAAW,EAAE;QACf,MAAM,cAAc,GAAG,IAAI,OAAO,GAAG,CAAC;QACtC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC;QACzF,YAAY,CAAC,UAAU,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC3C;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC9B,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACnB;aAAM;YACL,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;SACnB;KACF;IAED,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhC,OAAO,IAAI,CAAC;AACd,CAAC;AAzCD,8CAyCC"}
@@ -0,0 +1,66 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+ import { InsertChange, Change } from '@schematics/angular/utility/change';
3
+
4
+ import {
5
+ Node
6
+ } from 'typescript';
7
+
8
+ const newLine = `
9
+ `;
10
+
11
+ export function applyChanges(host: Tree, changes: Change[], filePath: string) {
12
+ const recorder = host.beginUpdate(filePath);
13
+
14
+ changes.forEach((change: InsertChange) => {
15
+ recorder.insertLeft(change.pos, change.toAdd);
16
+ });
17
+
18
+ host.commitUpdate(recorder);
19
+
20
+ return host;
21
+ }
22
+
23
+ // TODO: implement options.index
24
+ // TODO: implement spaces shift calculation
25
+ export function insertItemToArray(
26
+ host: Tree,
27
+ filePath: string,
28
+ node: Node,
29
+ item: string,
30
+ options: { location: 'start' | 'end' } = { location: 'start' }
31
+ ) {
32
+ const isItemValid = /^\s*\{[\s\S]*\}\s*$/m.test(item);
33
+ if (!isItemValid) {
34
+ return host;
35
+ }
36
+
37
+ const nodeContent = node.getText();
38
+ const nodePosition = node.getStart();
39
+ const leftBracketPosition = nodePosition + nodeContent.indexOf('[');
40
+ const rightBracketPosition = nodePosition + nodeContent.lastIndexOf(']');
41
+ let itemPosition = leftBracketPosition + 1;
42
+ let fileRecorder = host.beginUpdate(filePath);
43
+
44
+ item = newLine + item;
45
+
46
+ const isNodeEmpty = !/\[[\s\S]*\S+[\s\S]*\]/m.test(nodeContent);
47
+ if (isNodeEmpty) {
48
+ const formattedArray = `[${newLine}]`;
49
+ fileRecorder.remove(leftBracketPosition, rightBracketPosition - leftBracketPosition + 1);
50
+ fileRecorder.insertLeft(leftBracketPosition, formattedArray);
51
+ host.commitUpdate(fileRecorder);
52
+ fileRecorder = host.beginUpdate(filePath);
53
+ } else {
54
+ if (options.location === 'end') {
55
+ itemPosition = nodePosition + nodeContent.lastIndexOf('}') + 1;
56
+ item = ',' + item;
57
+ } else {
58
+ item = item + ',';
59
+ }
60
+ }
61
+
62
+ fileRecorder.insertLeft(itemPosition, item);
63
+ host.commitUpdate(fileRecorder);
64
+
65
+ return host;
66
+ }
@@ -1,5 +1,5 @@
1
1
  export declare const latestVersions: {
2
- 'devextreme': string;
2
+ devextreme: string;
3
3
  'devextreme-angular': string;
4
4
  'devextreme-cli': string;
5
5
  };
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.latestVersions = void 0;
3
4
  // TODO: implement
4
5
  exports.latestVersions = {
5
- 'devextreme': '20.1-stable',
6
- 'devextreme-angular': '20.1-stable',
6
+ 'devextreme': '^21.2.4',
7
+ 'devextreme-angular': '^21.2.4',
7
8
  'devextreme-cli': 'latest'
8
9
  };
9
10
  //# sourceMappingURL=latest-versions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"latest-versions.js","sourceRoot":"","sources":["latest-versions.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AACL,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,aAAa;IAC3B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,QAAQ;CAC3B,CAAC"}
1
+ {"version":3,"file":"latest-versions.js","sourceRoot":"","sources":["latest-versions.ts"],"names":[],"mappings":";;;AAAA,kBAAkB;AACL,QAAA,cAAc,GAAG;IAC5B,YAAY,EAAE,SAAS;IACvB,oBAAoB,EAAE,SAAS;IAC/B,gBAAgB,EAAE,QAAQ;CAC3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ // TODO: implement
2
+ export const latestVersions = {
3
+ 'devextreme': '^21.2.4',
4
+ 'devextreme-angular': '^21.2.4',
5
+ 'devextreme-cli': 'latest'
6
+ };
@@ -1,2 +1,3 @@
1
1
  import { Tree } from '@angular-devkit/schematics';
2
+ export declare const parseJson: (str: string) => any;
2
3
  export declare function modifyJSONFile(host: Tree, path: string, callback: (obj: any) => any): import("@angular-devkit/schematics/src/tree/interface").Tree;
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modifyJSONFile = exports.parseJson = void 0;
4
+ const parseJson = (str) => {
5
+ return JSON.parse(str.replace(/\/\*[\S\s]+?\*\/\r?\n/g, ''));
6
+ };
7
+ exports.parseJson = parseJson;
3
8
  function modifyJSONFile(host, path, callback) {
4
- let serializedConfig = host.read(path).toString();
5
- serializedConfig = serializedConfig.replace(/\/\*[\S\s]+?\*\/\r?\n/g, '');
6
- let obj = JSON.parse(serializedConfig);
9
+ const serializedConfig = host.read(path).toString();
10
+ let obj = exports.parseJson(serializedConfig);
7
11
  obj = callback(obj);
8
12
  host.overwrite(path, `${JSON.stringify(obj, null, 2)}\n`);
9
13
  return host;
@@ -1 +1 @@
1
- {"version":3,"file":"modify-json-file.js","sourceRoot":"","sources":["modify-json-file.ts"],"names":[],"mappings":";;AAEA,SAAgB,cAAc,CAAC,IAAU,EAAE,IAAY,EAAE,QAA2B;IAClF,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,EAAE,CAAC;IACnD,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC1E,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEvC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,wCAUC"}
1
+ {"version":3,"file":"modify-json-file.js","sourceRoot":"","sources":["modify-json-file.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEF,SAAgB,cAAc,CAAC,IAAU,EAAE,IAAY,EAAE,QAA2B;IAClF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,EAAE,CAAC;IACrD,IAAI,GAAG,GAAG,iBAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC;AACd,CAAC;AATD,wCASC"}
@@ -0,0 +1,16 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+
3
+ export const parseJson = (str: string) => {
4
+ return JSON.parse(str.replace(/\/\*[\S\s]+?\*\/\r?\n/g, ''));
5
+ };
6
+
7
+ export function modifyJSONFile(host: Tree, path: string, callback: (obj: any) => any) {
8
+ const serializedConfig = host.read(path)!.toString();
9
+ let obj = parseJson(serializedConfig);
10
+
11
+ obj = callback(obj);
12
+
13
+ host.overwrite(path, `${JSON.stringify(obj, null, 2)}\n`);
14
+
15
+ return host;
16
+ }
@@ -1,5 +1,5 @@
1
1
  import { Tree } from '@angular-devkit/schematics';
2
- export declare function getProjectName(host: Tree, project: any): any;
3
- export declare function getApplicationPath(host: Tree, projectName: string): string;
4
- export declare function getSourceRootPath(host: Tree, projectName: string): string;
5
- export declare function getRootPath(host: Tree, projectName: string): string;
2
+ export declare function getProjectName(host: Tree, projectName: string): Promise<string>;
3
+ export declare function getApplicationPath(host: Tree, projectName: string): Promise<string>;
4
+ export declare function getSourceRootPath(host: Tree, projectName: string): Promise<string | undefined>;
5
+ export declare function getRootPath(host: Tree, projectName: string): Promise<string | undefined>;