devextreme-schematics 1.3.0-beta.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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>;