@nestjs/schematics 11.0.9 → 12.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/lib/application/files/js/package.json +10 -10
  2. package/dist/lib/application/files/ts/package.json +3 -3
  3. package/dist/lib/application/files/ts/tsconfig.json +0 -1
  4. package/dist/lib/application/files/ts-esm/.prettierrc +4 -0
  5. package/dist/lib/application/files/ts-esm/README.md +98 -0
  6. package/dist/lib/application/files/ts-esm/eslint.config.mjs +34 -0
  7. package/dist/lib/application/files/ts-esm/nest-cli.json +8 -0
  8. package/dist/lib/application/files/ts-esm/package.json +50 -0
  9. package/dist/lib/application/files/ts-esm/src/app.controller.__specFileSuffix__.ts +22 -0
  10. package/dist/lib/application/files/ts-esm/src/app.controller.ts +12 -0
  11. package/dist/lib/application/files/ts-esm/src/app.module.ts +10 -0
  12. package/dist/lib/application/files/ts-esm/src/app.service.ts +8 -0
  13. package/dist/lib/application/files/ts-esm/src/main.ts +8 -0
  14. package/dist/lib/application/files/ts-esm/test/app.e2e-__specFileSuffix__.ts +25 -0
  15. package/dist/lib/application/files/ts-esm/tsconfig.build.json +4 -0
  16. package/dist/lib/application/files/ts-esm/tsconfig.json +24 -0
  17. package/dist/lib/application/files/ts-esm/vitest.config.e2e.ts +10 -0
  18. package/dist/lib/application/files/ts-esm/vitest.config.ts +10 -0
  19. package/dist/lib/application/schema.json +14 -0
  20. package/dist/lib/library/files/ts/tsconfig.lib.json +1 -0
  21. package/dist/lib/sub-app/files/ts/tsconfig.app.json +1 -0
  22. package/dist/lib/sub-app/workspace/ts/tsconfig.app.json +1 -0
  23. package/dist/src/index.d.ts +2 -0
  24. package/dist/src/index.js +2 -0
  25. package/dist/{lib → src/lib}/application/application.factory.d.ts +1 -1
  26. package/dist/src/lib/application/application.factory.js +64 -0
  27. package/dist/{lib → src/lib}/class/class.factory.d.ts +1 -1
  28. package/dist/src/lib/class/class.factory.js +48 -0
  29. package/dist/{lib → src/lib}/client-app/angular/angular.factory.d.ts +1 -1
  30. package/dist/{lib → src/lib}/client-app/angular/angular.factory.js +23 -26
  31. package/dist/{lib → src/lib}/configuration/configuration.factory.d.ts +1 -1
  32. package/dist/src/lib/configuration/configuration.factory.js +24 -0
  33. package/dist/{lib → src/lib}/controller/controller.factory.d.ts +1 -1
  34. package/dist/src/lib/controller/controller.factory.js +69 -0
  35. package/dist/{lib → src/lib}/decorator/decorator.factory.d.ts +1 -1
  36. package/dist/src/lib/decorator/decorator.factory.js +32 -0
  37. package/dist/src/lib/defaults.js +14 -0
  38. package/dist/{lib → src/lib}/filter/filter.factory.d.ts +1 -1
  39. package/dist/src/lib/filter/filter.factory.js +40 -0
  40. package/dist/{lib → src/lib}/gateway/gateway.factory.d.ts +1 -1
  41. package/dist/src/lib/gateway/gateway.factory.js +69 -0
  42. package/dist/{lib → src/lib}/guard/guard.factory.d.ts +1 -1
  43. package/dist/src/lib/guard/guard.factory.js +40 -0
  44. package/dist/{lib → src/lib}/interceptor/interceptor.factory.d.ts +1 -1
  45. package/dist/src/lib/interceptor/interceptor.factory.js +41 -0
  46. package/dist/{lib → src/lib}/interface/interface.factory.d.ts +1 -1
  47. package/dist/src/lib/interface/interface.factory.js +31 -0
  48. package/dist/{lib → src/lib}/library/library.factory.d.ts +1 -1
  49. package/dist/{lib → src/lib}/library/library.factory.js +51 -64
  50. package/dist/{lib → src/lib}/middleware/middleware.factory.d.ts +1 -1
  51. package/dist/src/lib/middleware/middleware.factory.js +40 -0
  52. package/dist/{lib → src/lib}/module/module.factory.d.ts +1 -1
  53. package/dist/src/lib/module/module.factory.js +57 -0
  54. package/dist/{lib → src/lib}/pipe/pipe.factory.d.ts +1 -1
  55. package/dist/src/lib/pipe/pipe.factory.js +41 -0
  56. package/dist/{lib → src/lib}/provider/provider.factory.d.ts +1 -1
  57. package/dist/src/lib/provider/provider.factory.js +73 -0
  58. package/dist/{lib → src/lib}/readers/file-system.reader.d.ts +1 -1
  59. package/dist/{lib → src/lib}/readers/file-system.reader.js +3 -7
  60. package/dist/src/lib/readers/index.d.ts +2 -0
  61. package/dist/src/lib/readers/index.js +2 -0
  62. package/dist/src/lib/readers/reader.js +1 -0
  63. package/dist/{lib → src/lib}/resolver/resolver.factory.d.ts +1 -1
  64. package/dist/src/lib/resolver/resolver.factory.js +68 -0
  65. package/dist/{lib → src/lib}/resource/resource.factory.d.ts +1 -1
  66. package/dist/{lib → src/lib}/resource/resource.factory.js +35 -38
  67. package/dist/{lib → src/lib}/service/service.factory.d.ts +1 -1
  68. package/dist/src/lib/service/service.factory.js +71 -0
  69. package/dist/{lib → src/lib}/sub-app/sub-app.factory.d.ts +1 -1
  70. package/dist/{lib → src/lib}/sub-app/sub-app.factory.js +94 -69
  71. package/dist/{utils → src/utils}/dependencies.utils.js +7 -12
  72. package/dist/{utils → src/utils}/formatting.js +1 -4
  73. package/dist/src/utils/index.d.ts +11 -0
  74. package/dist/src/utils/index.js +11 -0
  75. package/dist/src/utils/jest-module-mapper.js +6 -0
  76. package/dist/{utils → src/utils}/json-file.util.js +9 -13
  77. package/dist/{utils → src/utils}/metadata.manager.d.ts +1 -1
  78. package/dist/{utils → src/utils}/metadata.manager.js +11 -15
  79. package/dist/{utils → src/utils}/module-import.declarator.d.ts +2 -2
  80. package/dist/{utils → src/utils}/module-import.declarator.js +6 -10
  81. package/dist/{utils → src/utils}/module-metadata.declarator.d.ts +1 -1
  82. package/dist/src/utils/module-metadata.declarator.js +8 -0
  83. package/dist/{utils → src/utils}/module.declarator.d.ts +2 -2
  84. package/dist/src/utils/module.declarator.js +30 -0
  85. package/dist/{utils → src/utils}/module.finder.js +3 -7
  86. package/dist/src/utils/name.parser.js +13 -0
  87. package/dist/{utils → src/utils}/object-sorting.js +1 -4
  88. package/dist/src/utils/path.solver.js +8 -0
  89. package/dist/src/utils/source-root.helpers.js +20 -0
  90. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  91. package/package.json +21 -49
  92. package/dist/index.d.ts +0 -2
  93. package/dist/index.js +0 -18
  94. package/dist/lib/application/application.factory.js +0 -63
  95. package/dist/lib/class/class.factory.js +0 -51
  96. package/dist/lib/configuration/configuration.factory.js +0 -27
  97. package/dist/lib/controller/controller.factory.js +0 -72
  98. package/dist/lib/decorator/decorator.factory.js +0 -35
  99. package/dist/lib/defaults.js +0 -17
  100. package/dist/lib/filter/filter.factory.js +0 -43
  101. package/dist/lib/gateway/gateway.factory.js +0 -72
  102. package/dist/lib/guard/guard.factory.js +0 -43
  103. package/dist/lib/interceptor/interceptor.factory.js +0 -44
  104. package/dist/lib/interface/interface.factory.js +0 -34
  105. package/dist/lib/middleware/middleware.factory.js +0 -43
  106. package/dist/lib/module/module.factory.js +0 -60
  107. package/dist/lib/pipe/pipe.factory.js +0 -44
  108. package/dist/lib/provider/provider.factory.js +0 -76
  109. package/dist/lib/readers/index.d.ts +0 -2
  110. package/dist/lib/readers/index.js +0 -18
  111. package/dist/lib/readers/reader.js +0 -2
  112. package/dist/lib/resolver/resolver.factory.js +0 -71
  113. package/dist/lib/service/service.factory.js +0 -74
  114. package/dist/utils/index.d.ts +0 -11
  115. package/dist/utils/index.js +0 -27
  116. package/dist/utils/jest-module-mapper.js +0 -9
  117. package/dist/utils/module-metadata.declarator.js +0 -12
  118. package/dist/utils/module.declarator.js +0 -34
  119. package/dist/utils/name.parser.js +0 -17
  120. package/dist/utils/path.solver.js +0 -12
  121. package/dist/utils/source-root.helpers.js +0 -24
  122. /package/dist/{lib → src/lib}/defaults.d.ts +0 -0
  123. /package/dist/{lib → src/lib}/readers/reader.d.ts +0 -0
  124. /package/dist/{utils → src/utils}/dependencies.utils.d.ts +0 -0
  125. /package/dist/{utils → src/utils}/formatting.d.ts +0 -0
  126. /package/dist/{utils → src/utils}/jest-module-mapper.d.ts +0 -0
  127. /package/dist/{utils → src/utils}/json-file.util.d.ts +0 -0
  128. /package/dist/{utils → src/utils}/module.finder.d.ts +0 -0
  129. /package/dist/{utils → src/utils}/name.parser.d.ts +0 -0
  130. /package/dist/{utils → src/utils}/object-sorting.d.ts +0 -0
  131. /package/dist/{utils → src/utils}/path.solver.d.ts +0 -0
  132. /package/dist/{utils → src/utils}/source-root.helpers.d.ts +0 -0
@@ -1,50 +1,47 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.main = main;
4
- const core_1 = require("@angular-devkit/core");
5
- const strings_1 = require("@angular-devkit/core/src/utils/strings");
6
- const schematics_1 = require("@angular-devkit/schematics");
7
- const tasks_1 = require("@angular-devkit/schematics/tasks");
8
- const pluralize = require("pluralize");
9
- const __1 = require("../..");
10
- const dependencies_utils_1 = require("../../utils/dependencies.utils");
11
- const formatting_1 = require("../../utils/formatting");
12
- const name_parser_1 = require("../../utils/name.parser");
13
- const source_root_helpers_1 = require("../../utils/source-root.helpers");
14
- function main(options) {
1
+ import { join, strings } from '@angular-devkit/core';
2
+ import { classify } from '@angular-devkit/core/src/utils/strings';
3
+ import { apply, branchAndMerge, chain, filter, mergeWith, move, noop, SchematicsException, template, url, } from '@angular-devkit/schematics';
4
+ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
5
+ import * as pluralize from 'pluralize';
6
+ import { ModuleDeclarator, ModuleFinder, } from '../../index.js';
7
+ import { addPackageJsonDependency, getPackageJsonDependency, NodeDependencyType, } from '../../utils/dependencies.utils.js';
8
+ import { normalizeToKebabOrSnakeCase } from '../../utils/formatting.js';
9
+ import { NameParser } from '../../utils/name.parser.js';
10
+ import { mergeSourceRoot } from '../../utils/source-root.helpers.js';
11
+ export function main(options) {
15
12
  options = transform(options);
16
13
  return (tree, context) => {
17
- return (0, schematics_1.branchAndMerge)((0, schematics_1.chain)([
14
+ return branchAndMerge(chain([
18
15
  addMappedTypesDependencyIfApplies(options),
19
- (0, source_root_helpers_1.mergeSourceRoot)(options),
16
+ mergeSourceRoot(options),
20
17
  addDeclarationToModule(options),
21
- (0, schematics_1.mergeWith)(generate(options)),
18
+ mergeWith(generate(options)),
22
19
  ]))(tree, context);
23
20
  };
24
21
  }
25
22
  function transform(options) {
26
23
  const target = Object.assign({}, options);
27
24
  if (!target.name) {
28
- throw new schematics_1.SchematicsException('Option (name) is required.');
25
+ throw new SchematicsException('Option (name) is required.');
29
26
  }
30
27
  target.metadata = 'imports';
31
- const location = new name_parser_1.NameParser().parse(target);
32
- target.name = (0, formatting_1.normalizeToKebabOrSnakeCase)(location.name);
33
- target.path = (0, formatting_1.normalizeToKebabOrSnakeCase)(location.path);
28
+ const location = new NameParser().parse(target);
29
+ target.name = normalizeToKebabOrSnakeCase(location.name);
30
+ target.path = normalizeToKebabOrSnakeCase(location.path);
34
31
  target.language = target.language !== undefined ? target.language : 'ts';
35
32
  if (target.language === 'js') {
36
33
  throw new Error('The "resource" schematic does not support JavaScript language (only TypeScript is supported).');
37
34
  }
38
- target.specFileSuffix = (0, formatting_1.normalizeToKebabOrSnakeCase)(options.specFileSuffix || 'spec');
35
+ target.specFileSuffix = normalizeToKebabOrSnakeCase(options.specFileSuffix || 'spec');
39
36
  target.path = target.flat
40
37
  ? target.path
41
- : (0, core_1.join)(target.path, target.name);
38
+ : join(target.path, target.name);
42
39
  target.isSwaggerInstalled = options.isSwaggerInstalled ?? false;
43
40
  return target;
44
41
  }
45
42
  function generate(options) {
46
- return (context) => (0, schematics_1.apply)((0, schematics_1.url)((0, core_1.join)('./files', options.language)), [
47
- (0, schematics_1.filter)((path) => {
43
+ return (context) => apply(url(join('./files', options.language)), [
44
+ filter((path) => {
48
45
  if (path.endsWith('.dto.ts')) {
49
46
  return (options.type !== 'graphql-code-first' &&
50
47
  options.type !== 'graphql-schema-first' &&
@@ -77,22 +74,22 @@ function generate(options) {
77
74
  return true;
78
75
  }),
79
76
  options.spec
80
- ? (0, schematics_1.noop)()
81
- : (0, schematics_1.filter)((path) => {
77
+ ? noop()
78
+ : filter((path) => {
82
79
  const suffix = `.__specFileSuffix__.ts`;
83
80
  return !path.endsWith(suffix);
84
81
  }),
85
- (0, schematics_1.template)({
86
- ...core_1.strings,
82
+ template({
83
+ ...strings,
87
84
  ...options,
88
85
  lowercased: (name) => {
89
- const classifiedName = (0, strings_1.classify)(name);
86
+ const classifiedName = classify(name);
90
87
  return (classifiedName.charAt(0).toLowerCase() + classifiedName.slice(1));
91
88
  },
92
89
  singular: (name) => pluralize.singular(name),
93
90
  ent: (name) => name + '.entity',
94
91
  }),
95
- (0, schematics_1.move)(options.path),
92
+ move(options.path),
96
93
  ])(context);
97
94
  }
98
95
  function addDeclarationToModule(options) {
@@ -100,7 +97,7 @@ function addDeclarationToModule(options) {
100
97
  if (options.skipImport !== undefined && options.skipImport) {
101
98
  return tree;
102
99
  }
103
- options.module = new __1.ModuleFinder(tree).find({
100
+ options.module = new ModuleFinder(tree).find({
104
101
  name: options.name,
105
102
  path: options.path,
106
103
  });
@@ -108,7 +105,7 @@ function addDeclarationToModule(options) {
108
105
  return tree;
109
106
  }
110
107
  const content = tree.read(options.module).toString();
111
- const declarator = new __1.ModuleDeclarator();
108
+ const declarator = new ModuleDeclarator();
112
109
  tree.overwrite(options.module, declarator.declare(content, {
113
110
  ...options,
114
111
  type: 'module',
@@ -123,20 +120,20 @@ function addMappedTypesDependencyIfApplies(options) {
123
120
  return;
124
121
  }
125
122
  if (options.type === 'rest') {
126
- const nodeDependencyRef = (0, dependencies_utils_1.getPackageJsonDependency)(host, '@nestjs/swagger');
123
+ const nodeDependencyRef = getPackageJsonDependency(host, '@nestjs/swagger');
127
124
  if (nodeDependencyRef) {
128
125
  options.isSwaggerInstalled = true;
129
126
  return;
130
127
  }
131
128
  }
132
- const nodeDependencyRef = (0, dependencies_utils_1.getPackageJsonDependency)(host, '@nestjs/mapped-types');
129
+ const nodeDependencyRef = getPackageJsonDependency(host, '@nestjs/mapped-types');
133
130
  if (!nodeDependencyRef) {
134
- (0, dependencies_utils_1.addPackageJsonDependency)(host, {
135
- type: dependencies_utils_1.NodeDependencyType.Default,
131
+ addPackageJsonDependency(host, {
132
+ type: NodeDependencyType.Default,
136
133
  name: '@nestjs/mapped-types',
137
134
  version: '*',
138
135
  });
139
- context.addTask(new tasks_1.NodePackageInstallTask());
136
+ context.addTask(new NodePackageInstallTask());
140
137
  }
141
138
  }
142
139
  catch {
@@ -1,3 +1,3 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
- import { ServiceOptions } from './service.schema';
2
+ import type { ServiceOptions } from './service.schema.js';
3
3
  export declare function main(options: ServiceOptions): Rule;
@@ -0,0 +1,71 @@
1
+ import { join, strings } from '@angular-devkit/core';
2
+ import { apply, branchAndMerge, chain, filter, mergeWith, move, noop, SchematicsException, template, url, } from '@angular-devkit/schematics';
3
+ import { normalizeToKebabOrSnakeCase } from '../../utils/formatting.js';
4
+ import { ModuleDeclarator, } from '../../utils/module.declarator.js';
5
+ import { ModuleFinder } from '../../utils/module.finder.js';
6
+ import { NameParser } from '../../utils/name.parser.js';
7
+ import { mergeSourceRoot } from '../../utils/source-root.helpers.js';
8
+ function isNullOrUndefined(value) {
9
+ return value === null || value === undefined;
10
+ }
11
+ export function main(options) {
12
+ options = transform(options);
13
+ return (tree, context) => {
14
+ return branchAndMerge(chain([
15
+ mergeSourceRoot(options),
16
+ addDeclarationToModule(options),
17
+ mergeWith(generate(options)),
18
+ ]))(tree, context);
19
+ };
20
+ }
21
+ function transform(source) {
22
+ const target = Object.assign({}, source);
23
+ target.metadata = 'providers';
24
+ target.type = 'service';
25
+ if (isNullOrUndefined(target.name)) {
26
+ throw new SchematicsException('Option (name) is required.');
27
+ }
28
+ const location = new NameParser().parse(target);
29
+ target.name = normalizeToKebabOrSnakeCase(location.name);
30
+ target.path = normalizeToKebabOrSnakeCase(location.path);
31
+ target.language = target.language !== undefined ? target.language : 'ts';
32
+ target.specFileSuffix = normalizeToKebabOrSnakeCase(source.specFileSuffix || 'spec');
33
+ target.path = target.flat
34
+ ? target.path
35
+ : join(target.path, target.name);
36
+ return target;
37
+ }
38
+ function generate(options) {
39
+ return (context) => apply(url(join('./files', options.language)), [
40
+ options.spec
41
+ ? noop()
42
+ : filter((path) => {
43
+ const languageExtension = options.language || 'ts';
44
+ const suffix = `.__specFileSuffix__.${languageExtension}`;
45
+ return !path.endsWith(suffix);
46
+ }),
47
+ template({
48
+ ...strings,
49
+ ...options,
50
+ }),
51
+ move(options.path),
52
+ ])(context);
53
+ }
54
+ function addDeclarationToModule(options) {
55
+ return (tree) => {
56
+ if (options.skipImport !== undefined && options.skipImport) {
57
+ return tree;
58
+ }
59
+ options.module = new ModuleFinder(tree).find({
60
+ name: options.name,
61
+ path: options.path,
62
+ });
63
+ if (!options.module) {
64
+ return tree;
65
+ }
66
+ const content = tree.read(options.module).toString();
67
+ const declarator = new ModuleDeclarator();
68
+ tree.overwrite(options.module, declarator.declare(content, options));
69
+ return tree;
70
+ };
71
+ }
@@ -1,3 +1,3 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
- import { SubAppOptions } from './sub-app.schema';
2
+ import type { SubAppOptions } from './sub-app.schema.js';
3
3
  export declare function main(options: SubAppOptions): Rule;
@@ -1,43 +1,41 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.main = main;
4
- const core_1 = require("@angular-devkit/core");
5
- const schematics_1 = require("@angular-devkit/schematics");
6
- const fs_1 = require("fs");
7
- const comment_json_1 = require("comment-json");
8
- const utils_1 = require("../../utils");
9
- const defaults_1 = require("../defaults");
10
- function main(options) {
1
+ import { join, normalize, strings } from '@angular-devkit/core';
2
+ import { apply, branchAndMerge, chain, mergeWith, move, noop, SchematicsException, template, url, } from '@angular-devkit/schematics';
3
+ import { existsSync, readFileSync } from 'fs';
4
+ import { parse, stringify } from 'comment-json';
5
+ import { inPlaceSortByKeys, normalizeToKebabOrSnakeCase, } from '../../utils/index.js';
6
+ import { DEFAULT_APPS_PATH, DEFAULT_APP_NAME, DEFAULT_DIR_ENTRY_APP, DEFAULT_LANGUAGE, DEFAULT_LIB_PATH, DEFAULT_PATH_NAME, PROJECT_TYPE, TEST_ENV, } from '../defaults.js';
7
+ export function main(options) {
11
8
  const appName = getAppNameFromPackageJson();
12
9
  options = transform(options);
13
- return (0, schematics_1.chain)([
14
- updateTsConfig(),
10
+ return chain([
11
+ updateTsConfig(options.path, appName),
15
12
  updatePackageJson(options, appName),
16
13
  (tree, context) => isMonorepo(tree)
17
- ? (0, schematics_1.noop)()(tree, context)
18
- : (0, schematics_1.chain)([
19
- (0, schematics_1.branchAndMerge)((0, schematics_1.mergeWith)(generateWorkspace(options, appName))),
14
+ ? noop()(tree, context)
15
+ : chain([
16
+ branchAndMerge(mergeWith(generateWorkspace(options, appName))),
20
17
  moveDefaultAppToApps(options.path, appName, options.sourceRoot),
21
18
  ])(tree, context),
22
19
  addAppsToCliOptions(options.path, options.name, appName),
23
- (0, schematics_1.branchAndMerge)((0, schematics_1.mergeWith)(generate(options))),
20
+ addTsConfigReference(options.path, options.name),
21
+ branchAndMerge(mergeWith(generate(options))),
24
22
  ]);
25
23
  }
26
24
  function getAppNameFromPackageJson() {
27
25
  try {
28
- if (!(0, fs_1.existsSync)('./package.json')) {
29
- return defaults_1.DEFAULT_DIR_ENTRY_APP;
26
+ if (!existsSync('./package.json')) {
27
+ return DEFAULT_DIR_ENTRY_APP;
30
28
  }
31
- const packageJson = JSON.parse(stripBom((0, fs_1.readFileSync)('./package.json', 'utf-8')));
29
+ const packageJson = JSON.parse(stripBom(readFileSync('./package.json', 'utf-8')));
32
30
  if (!packageJson.name) {
33
- return defaults_1.DEFAULT_DIR_ENTRY_APP;
31
+ return DEFAULT_DIR_ENTRY_APP;
34
32
  }
35
33
  let name = packageJson.name;
36
34
  name = name.replace(/[^\w.]+/g, '-').replace(/-+/g, '-');
37
35
  return name[0] === '-' ? name.substr(1) : name;
38
36
  }
39
37
  catch {
40
- return defaults_1.DEFAULT_DIR_ENTRY_APP;
38
+ return DEFAULT_DIR_ENTRY_APP;
41
39
  }
42
40
  }
43
41
  function stripBom(value) {
@@ -48,16 +46,16 @@ function stripBom(value) {
48
46
  }
49
47
  function transform(options) {
50
48
  const target = Object.assign({}, options);
51
- const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : defaults_1.DEFAULT_APPS_PATH;
49
+ const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : DEFAULT_APPS_PATH;
52
50
  if (!target.name) {
53
- target.name = defaults_1.DEFAULT_APP_NAME;
51
+ target.name = DEFAULT_APP_NAME;
54
52
  }
55
- target.language = target.language ? target.language : defaults_1.DEFAULT_LANGUAGE;
56
- target.name = (0, utils_1.normalizeToKebabOrSnakeCase)(target.name);
53
+ target.language = target.language ? target.language : DEFAULT_LANGUAGE;
54
+ target.name = normalizeToKebabOrSnakeCase(target.name);
57
55
  target.path =
58
56
  target.path !== undefined
59
- ? (0, core_1.join)((0, core_1.normalize)(defaultSourceRoot), target.path)
60
- : (0, core_1.normalize)(defaultSourceRoot);
57
+ ? join(normalize(defaultSourceRoot), target.path)
58
+ : normalize(defaultSourceRoot);
61
59
  return target;
62
60
  }
63
61
  function isMonorepo(host) {
@@ -72,20 +70,20 @@ function isMonorepo(host) {
72
70
  return false;
73
71
  }
74
72
  const sourceText = source.toString('utf-8');
75
- const optionsObj = (0, comment_json_1.parse)(sourceText);
73
+ const optionsObj = parse(sourceText);
76
74
  return !!optionsObj.monorepo;
77
75
  }
78
76
  function updateJsonFile(host, path, callback) {
79
77
  const source = host.read(path);
80
78
  if (source) {
81
79
  const sourceText = source.toString('utf-8');
82
- const json = (0, comment_json_1.parse)(sourceText);
80
+ const json = parse(sourceText);
83
81
  callback(json);
84
- host.overwrite(path, (0, comment_json_1.stringify)(json, null, 2));
82
+ host.overwrite(path, stringify(json, null, 2));
85
83
  }
86
84
  return host;
87
85
  }
88
- function updateTsConfig() {
86
+ function updateTsConfig(projectRoot, appName) {
89
87
  return (host) => {
90
88
  if (!host.exists('tsconfig.json')) {
91
89
  return host;
@@ -94,13 +92,40 @@ function updateTsConfig() {
94
92
  if (!tsconfig.compilerOptions) {
95
93
  tsconfig.compilerOptions = {};
96
94
  }
97
- if (!tsconfig.compilerOptions.baseUrl) {
98
- tsconfig.compilerOptions.baseUrl = './';
95
+ delete tsconfig.compilerOptions.baseUrl;
96
+ delete tsconfig.compilerOptions.paths;
97
+ if (!tsconfig.files) {
98
+ tsconfig.files = [];
99
99
  }
100
- if (!tsconfig.compilerOptions.paths) {
101
- tsconfig.compilerOptions.paths = {};
100
+ delete tsconfig.include;
101
+ delete tsconfig.exclude;
102
+ if (!tsconfig.references) {
103
+ tsconfig.references = [];
104
+ }
105
+ const workspaceAppTsConfigPath = join(projectRoot, appName, 'tsconfig.app.json');
106
+ const hasWorkspaceRef = tsconfig.references.some((ref) => ref.path === `./${workspaceAppTsConfigPath}`);
107
+ if (!hasWorkspaceRef) {
108
+ tsconfig.references.push({
109
+ path: `./${workspaceAppTsConfigPath}`,
110
+ });
111
+ }
112
+ });
113
+ };
114
+ }
115
+ function addTsConfigReference(projectRoot, projectName) {
116
+ return (host) => {
117
+ if (!host.exists('tsconfig.json')) {
118
+ return host;
119
+ }
120
+ return updateJsonFile(host, 'tsconfig.json', (tsconfig) => {
121
+ if (!tsconfig.references) {
122
+ tsconfig.references = [];
123
+ }
124
+ const refPath = `./${join(projectRoot, projectName, 'tsconfig.app.json')}`;
125
+ const hasRef = tsconfig.references.some((ref) => ref.path === refPath);
126
+ if (!hasRef) {
127
+ tsconfig.references.push({ path: refPath });
102
128
  }
103
- (0, utils_1.inPlaceSortByKeys)(tsconfig.compilerOptions.paths);
104
129
  });
105
130
  };
106
131
  }
@@ -130,18 +155,18 @@ function updateNpmScripts(scripts, options, defaultAppName) {
130
155
  if (scripts[defaultTestScriptName] &&
131
156
  scripts[defaultTestScriptName].indexOf(options.path) < 0) {
132
157
  const defaultTestDir = 'test';
133
- const newTestDir = (0, core_1.join)(options.path, defaultAppName, defaultTestDir);
158
+ const newTestDir = join(options.path, defaultAppName, defaultTestDir);
134
159
  scripts[defaultTestScriptName] = scripts[defaultTestScriptName].replace(defaultTestDir, newTestDir);
135
160
  }
136
161
  if (scripts[defaultFormatScriptName] &&
137
- scripts[defaultFormatScriptName].indexOf(defaults_1.DEFAULT_PATH_NAME) >= 0) {
138
- const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : defaults_1.DEFAULT_APPS_PATH;
162
+ scripts[defaultFormatScriptName].indexOf(DEFAULT_PATH_NAME) >= 0) {
163
+ const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : DEFAULT_APPS_PATH;
139
164
  scripts[defaultFormatScriptName] =
140
- `prettier --write "${defaultSourceRoot}/**/*.ts" "${defaults_1.DEFAULT_LIB_PATH}/**/*.ts"`;
165
+ `prettier --write "${defaultSourceRoot}/**/*.ts" "${DEFAULT_LIB_PATH}/**/*.ts"`;
141
166
  }
142
167
  if (scripts[defaultStartScriptName] &&
143
168
  scripts[defaultStartScriptName].indexOf('dist/main') >= 0) {
144
- const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : defaults_1.DEFAULT_APPS_PATH;
169
+ const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : DEFAULT_APPS_PATH;
145
170
  scripts[defaultStartScriptName] =
146
171
  `node dist/${defaultSourceRoot}/${defaultAppName}/main`;
147
172
  }
@@ -150,11 +175,11 @@ function updateJestOptions(jestOptions, options) {
150
175
  if (!jestOptions) {
151
176
  return;
152
177
  }
153
- if (jestOptions.rootDir === defaults_1.DEFAULT_PATH_NAME) {
178
+ if (jestOptions.rootDir === DEFAULT_PATH_NAME) {
154
179
  jestOptions.rootDir = '.';
155
180
  jestOptions.coverageDirectory = './coverage';
156
181
  }
157
- const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : defaults_1.DEFAULT_APPS_PATH;
182
+ const defaultSourceRoot = options.rootDir !== undefined ? options.rootDir : DEFAULT_APPS_PATH;
158
183
  const jestSourceRoot = `<rootDir>/${defaultSourceRoot}/`;
159
184
  if (!jestOptions.roots) {
160
185
  jestOptions.roots = [jestSourceRoot];
@@ -168,12 +193,12 @@ function updateJestOptions(jestOptions, options) {
168
193
  }
169
194
  }
170
195
  }
171
- function moveDefaultAppToApps(projectRoot, appName, sourceRoot = defaults_1.DEFAULT_PATH_NAME) {
196
+ function moveDefaultAppToApps(projectRoot, appName, sourceRoot = DEFAULT_PATH_NAME) {
172
197
  return (host) => {
173
- if (process.env.NODE_ENV === defaults_1.TEST_ENV) {
198
+ if (process.env.NODE_ENV === TEST_ENV) {
174
199
  return host;
175
200
  }
176
- const appDestination = (0, core_1.join)(projectRoot, appName);
201
+ const appDestination = join(projectRoot, appName);
177
202
  moveDirectoryTo(sourceRoot, appDestination, host);
178
203
  moveDirectoryTo('test', appDestination, host);
179
204
  return host;
@@ -183,7 +208,7 @@ function moveDirectoryTo(srcDir, destination, tree) {
183
208
  let srcDirExists = false;
184
209
  tree.getDir(srcDir).visit((filePath, file) => {
185
210
  srcDirExists = true;
186
- const newFilePath = (0, core_1.join)(destination, filePath);
211
+ const newFilePath = join(destination, filePath);
187
212
  tree.create(newFilePath, file.content);
188
213
  });
189
214
  if (srcDirExists) {
@@ -191,14 +216,14 @@ function moveDirectoryTo(srcDir, destination, tree) {
191
216
  }
192
217
  }
193
218
  function addAppsToCliOptions(projectRoot, projectName, appName) {
194
- const rootPath = (0, core_1.join)(projectRoot, projectName);
219
+ const rootPath = join(projectRoot, projectName);
195
220
  const project = {
196
- type: defaults_1.PROJECT_TYPE.APPLICATION,
221
+ type: PROJECT_TYPE.APPLICATION,
197
222
  root: rootPath,
198
223
  entryFile: 'main',
199
- sourceRoot: (0, core_1.join)(rootPath, defaults_1.DEFAULT_PATH_NAME),
224
+ sourceRoot: join(rootPath, DEFAULT_PATH_NAME),
200
225
  compilerOptions: {
201
- tsConfigPath: (0, core_1.join)(rootPath, 'tsconfig.app.json'),
226
+ tsConfigPath: join(rootPath, 'tsconfig.app.json'),
202
227
  },
203
228
  };
204
229
  return (host) => {
@@ -214,10 +239,10 @@ function addAppsToCliOptions(projectRoot, projectName, appName) {
214
239
  optionsFile.projects = {};
215
240
  }
216
241
  if (optionsFile.projects[projectName]) {
217
- throw new schematics_1.SchematicsException(`Project "${projectName}" exists in this workspace already.`);
242
+ throw new SchematicsException(`Project "${projectName}" exists in this workspace already.`);
218
243
  }
219
244
  optionsFile.projects[projectName] = project;
220
- (0, utils_1.inPlaceSortByKeys)(optionsFile.projects);
245
+ inPlaceSortByKeys(optionsFile.projects);
221
246
  });
222
247
  };
223
248
  }
@@ -225,47 +250,47 @@ function updateMainAppOptions(optionsFile, projectRoot, appName) {
225
250
  if (optionsFile.monorepo) {
226
251
  return;
227
252
  }
228
- const rootFilePath = (0, core_1.join)(projectRoot, appName);
229
- const tsConfigPath = (0, core_1.join)(rootFilePath, 'tsconfig.app.json');
253
+ const rootFilePath = join(projectRoot, appName);
254
+ const tsConfigPath = join(rootFilePath, 'tsconfig.app.json');
230
255
  optionsFile.monorepo = true;
231
256
  optionsFile.root = rootFilePath;
232
- optionsFile.sourceRoot = (0, core_1.join)(projectRoot, appName, optionsFile.sourceRoot || defaults_1.DEFAULT_PATH_NAME);
257
+ optionsFile.sourceRoot = join(projectRoot, appName, optionsFile.sourceRoot || DEFAULT_PATH_NAME);
233
258
  if (!optionsFile.compilerOptions) {
234
259
  optionsFile.compilerOptions = {};
235
260
  }
236
- optionsFile.compilerOptions.webpack = true;
261
+ optionsFile.compilerOptions.builder = 'rspack';
237
262
  optionsFile.compilerOptions.tsConfigPath = tsConfigPath;
238
263
  if (!optionsFile.projects) {
239
264
  optionsFile.projects = {};
240
265
  }
241
266
  optionsFile.projects[appName] = {
242
- type: defaults_1.PROJECT_TYPE.APPLICATION,
267
+ type: PROJECT_TYPE.APPLICATION,
243
268
  root: rootFilePath,
244
269
  entryFile: optionsFile.entryFile || 'main',
245
- sourceRoot: (0, core_1.join)(rootFilePath, defaults_1.DEFAULT_PATH_NAME),
270
+ sourceRoot: join(rootFilePath, DEFAULT_PATH_NAME),
246
271
  compilerOptions: {
247
272
  tsConfigPath,
248
273
  },
249
274
  };
250
275
  }
251
276
  function generateWorkspace(options, appName) {
252
- const path = (0, core_1.join)(options.path, appName);
253
- return (0, schematics_1.apply)((0, schematics_1.url)((0, core_1.join)('./workspace', options.language)), [
254
- (0, schematics_1.template)({
255
- ...core_1.strings,
277
+ const path = join(options.path, appName);
278
+ return apply(url(join('./workspace', options.language)), [
279
+ template({
280
+ ...strings,
256
281
  ...options,
257
282
  name: appName,
258
283
  }),
259
- (0, schematics_1.move)(path),
284
+ move(path),
260
285
  ]);
261
286
  }
262
287
  function generate(options) {
263
- const path = (0, core_1.join)(options.path, options.name);
264
- return (0, schematics_1.apply)((0, schematics_1.url)((0, core_1.join)('./files', options.language)), [
265
- (0, schematics_1.template)({
266
- ...core_1.strings,
288
+ const path = join(options.path, options.name);
289
+ return apply(url(join('./files', options.language)), [
290
+ template({
291
+ ...strings,
267
292
  ...options,
268
293
  }),
269
- (0, schematics_1.move)(path),
294
+ move(path),
270
295
  ]);
271
296
  }
@@ -1,33 +1,28 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NodeDependencyType = void 0;
4
- exports.addPackageJsonDependency = addPackageJsonDependency;
5
- exports.getPackageJsonDependency = getPackageJsonDependency;
6
- const json_file_util_1 = require("./json-file.util");
1
+ import { JSONFile } from './json-file.util.js';
7
2
  const PKG_JSON_PATH = '/package.json';
8
- var NodeDependencyType;
3
+ export var NodeDependencyType;
9
4
  (function (NodeDependencyType) {
10
5
  NodeDependencyType["Default"] = "dependencies";
11
6
  NodeDependencyType["Dev"] = "devDependencies";
12
7
  NodeDependencyType["Peer"] = "peerDependencies";
13
8
  NodeDependencyType["Optional"] = "optionalDependencies";
14
- })(NodeDependencyType || (exports.NodeDependencyType = NodeDependencyType = {}));
9
+ })(NodeDependencyType || (NodeDependencyType = {}));
15
10
  const ALL_DEPENDENCY_TYPE = [
16
11
  NodeDependencyType.Default,
17
12
  NodeDependencyType.Dev,
18
13
  NodeDependencyType.Optional,
19
14
  NodeDependencyType.Peer,
20
15
  ];
21
- function addPackageJsonDependency(tree, dependency, pkgJsonPath = PKG_JSON_PATH) {
22
- const json = new json_file_util_1.JSONFile(tree, pkgJsonPath);
16
+ export function addPackageJsonDependency(tree, dependency, pkgJsonPath = PKG_JSON_PATH) {
17
+ const json = new JSONFile(tree, pkgJsonPath);
23
18
  const { overwrite, type, name, version } = dependency;
24
19
  const path = [type, name];
25
20
  if (overwrite || !json.get(path)) {
26
21
  json.modify(path, version);
27
22
  }
28
23
  }
29
- function getPackageJsonDependency(tree, name, pkgJsonPath = PKG_JSON_PATH) {
30
- const json = new json_file_util_1.JSONFile(tree, pkgJsonPath);
24
+ export function getPackageJsonDependency(tree, name, pkgJsonPath = PKG_JSON_PATH) {
25
+ const json = new JSONFile(tree, pkgJsonPath);
31
26
  for (const depType of ALL_DEPENDENCY_TYPE) {
32
27
  const version = json.get([depType, name]);
33
28
  if (typeof version === 'string') {
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeToKebabOrSnakeCase = normalizeToKebabOrSnakeCase;
4
- function normalizeToKebabOrSnakeCase(str) {
1
+ export function normalizeToKebabOrSnakeCase(str) {
5
2
  const STRING_DASHERIZE_REGEXP = /\s/g;
6
3
  const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
7
4
  return str
@@ -0,0 +1,11 @@
1
+ export * from './metadata.manager.js';
2
+ export * from './module-import.declarator.js';
3
+ export * from './module-metadata.declarator.js';
4
+ export * from './module.declarator.js';
5
+ export * from './module.finder.js';
6
+ export * from './name.parser.js';
7
+ export * from './path.solver.js';
8
+ export * from './source-root.helpers.js';
9
+ export * from './formatting.js';
10
+ export * from './jest-module-mapper.js';
11
+ export * from './object-sorting.js';
@@ -0,0 +1,11 @@
1
+ export * from './metadata.manager.js';
2
+ export * from './module-import.declarator.js';
3
+ export * from './module-metadata.declarator.js';
4
+ export * from './module.declarator.js';
5
+ export * from './module.finder.js';
6
+ export * from './name.parser.js';
7
+ export * from './path.solver.js';
8
+ export * from './source-root.helpers.js';
9
+ export * from './formatting.js';
10
+ export * from './jest-module-mapper.js';
11
+ export * from './object-sorting.js';
@@ -0,0 +1,6 @@
1
+ export function createModuleNameMapper(packageKey, packageRoot) {
2
+ const moduleNameMapper = {};
3
+ const packageKeyRegex = '^' + packageKey + '(|/.*)$';
4
+ moduleNameMapper[packageKeyRegex] = packageRoot + '/$1';
5
+ return moduleNameMapper;
6
+ }