@nx/js 0.0.0-pr-22179-271588f

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 (204) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +68 -0
  3. package/babel.d.ts +13 -0
  4. package/babel.js +91 -0
  5. package/executors.json +32 -0
  6. package/generators.json +46 -0
  7. package/migrations.json +159 -0
  8. package/package.json +76 -0
  9. package/plugins/jest/local-registry.d.ts +1 -0
  10. package/plugins/jest/local-registry.js +4 -0
  11. package/src/executors/node/lib/kill-tree.d.ts +2 -0
  12. package/src/executors/node/lib/kill-tree.js +114 -0
  13. package/src/executors/node/node-with-require-overrides.d.ts +7 -0
  14. package/src/executors/node/node-with-require-overrides.js +21 -0
  15. package/src/executors/node/node.impl.d.ts +7 -0
  16. package/src/executors/node/node.impl.js +288 -0
  17. package/src/executors/node/schema.d.ts +18 -0
  18. package/src/executors/node/schema.json +92 -0
  19. package/src/executors/release-publish/format-bytes.d.ts +1 -0
  20. package/src/executors/release-publish/format-bytes.js +28 -0
  21. package/src/executors/release-publish/log-tar.d.ts +1 -0
  22. package/src/executors/release-publish/log-tar.js +68 -0
  23. package/src/executors/release-publish/release-publish.impl.d.ts +5 -0
  24. package/src/executors/release-publish/release-publish.impl.js +198 -0
  25. package/src/executors/release-publish/schema.d.ts +8 -0
  26. package/src/executors/release-publish/schema.json +26 -0
  27. package/src/executors/swc/schema.json +154 -0
  28. package/src/executors/swc/swc.impl.d.ts +10 -0
  29. package/src/executors/swc/swc.impl.js +149 -0
  30. package/src/executors/tsc/lib/batch/build-task-info-per-tsconfig-map.d.ts +5 -0
  31. package/src/executors/tsc/lib/batch/build-task-info-per-tsconfig-map.js +62 -0
  32. package/src/executors/tsc/lib/batch/index.d.ts +4 -0
  33. package/src/executors/tsc/lib/batch/index.js +7 -0
  34. package/src/executors/tsc/lib/batch/normalize-tasks-options.d.ts +3 -0
  35. package/src/executors/tsc/lib/batch/normalize-tasks-options.js +14 -0
  36. package/src/executors/tsc/lib/batch/types.d.ts +17 -0
  37. package/src/executors/tsc/lib/batch/types.js +2 -0
  38. package/src/executors/tsc/lib/batch/watch.d.ts +3 -0
  39. package/src/executors/tsc/lib/batch/watch.js +56 -0
  40. package/src/executors/tsc/lib/get-custom-transformers-factory.d.ts +3 -0
  41. package/src/executors/tsc/lib/get-custom-transformers-factory.js +13 -0
  42. package/src/executors/tsc/lib/get-task-options.d.ts +3 -0
  43. package/src/executors/tsc/lib/get-task-options.js +34 -0
  44. package/src/executors/tsc/lib/get-tsconfig.d.ts +4 -0
  45. package/src/executors/tsc/lib/get-tsconfig.js +86 -0
  46. package/src/executors/tsc/lib/index.d.ts +4 -0
  47. package/src/executors/tsc/lib/index.js +7 -0
  48. package/src/executors/tsc/lib/normalize-options.d.ts +2 -0
  49. package/src/executors/tsc/lib/normalize-options.js +39 -0
  50. package/src/executors/tsc/lib/typescript-compilation.d.ts +29 -0
  51. package/src/executors/tsc/lib/typescript-compilation.js +203 -0
  52. package/src/executors/tsc/lib/typescript-diagnostic-reporters.d.ts +3 -0
  53. package/src/executors/tsc/lib/typescript-diagnostic-reporters.js +37 -0
  54. package/src/executors/tsc/schema.json +163 -0
  55. package/src/executors/tsc/tsc.batch-impl.d.ts +5 -0
  56. package/src/executors/tsc/tsc.batch-impl.js +180 -0
  57. package/src/executors/tsc/tsc.impl.d.ts +7 -0
  58. package/src/executors/tsc/tsc.impl.js +97 -0
  59. package/src/executors/verdaccio/schema.d.ts +7 -0
  60. package/src/executors/verdaccio/schema.json +35 -0
  61. package/src/executors/verdaccio/verdaccio.impl.d.ts +12 -0
  62. package/src/executors/verdaccio/verdaccio.impl.js +220 -0
  63. package/src/generators/convert-to-swc/convert-to-swc.d.ts +4 -0
  64. package/src/generators/convert-to-swc/convert-to-swc.js +59 -0
  65. package/src/generators/convert-to-swc/schema.d.ts +4 -0
  66. package/src/generators/convert-to-swc/schema.json +36 -0
  67. package/src/generators/init/files/__fileName__ +20 -0
  68. package/src/generators/init/init.d.ts +4 -0
  69. package/src/generators/init/init.js +114 -0
  70. package/src/generators/init/schema.d.ts +7 -0
  71. package/src/generators/init/schema.json +36 -0
  72. package/src/generators/library/files/jest-config/jest.config.__ext__ +30 -0
  73. package/src/generators/library/files/lib/src/index.ts__tmpl__ +1 -0
  74. package/src/generators/library/files/lib/src/lib/__fileName__.spec.ts__tmpl__ +7 -0
  75. package/src/generators/library/files/lib/src/lib/__fileName__.ts__tmpl__ +3 -0
  76. package/src/generators/library/files/lib/tsconfig.lib.json__tmpl__ +14 -0
  77. package/src/generators/library/files/readme/README.md +19 -0
  78. package/src/generators/library/library.d.ts +16 -0
  79. package/src/generators/library/library.js +751 -0
  80. package/src/generators/library/schema.json +151 -0
  81. package/src/generators/release-version/release-version.d.ts +5 -0
  82. package/src/generators/release-version/release-version.js +390 -0
  83. package/src/generators/release-version/schema.d.ts +1 -0
  84. package/src/generators/release-version/schema.json +67 -0
  85. package/src/generators/release-version/test-utils/create-workspace-with-package-dependencies.d.ts +16 -0
  86. package/src/generators/release-version/test-utils/create-workspace-with-package-dependencies.js +40 -0
  87. package/src/generators/release-version/utils/package.d.ts +12 -0
  88. package/src/generators/release-version/utils/package.js +34 -0
  89. package/src/generators/release-version/utils/resolve-local-package-dependencies.d.ts +12 -0
  90. package/src/generators/release-version/utils/resolve-local-package-dependencies.js +78 -0
  91. package/src/generators/release-version/utils/resolve-version-spec.d.ts +1 -0
  92. package/src/generators/release-version/utils/resolve-version-spec.js +29 -0
  93. package/src/generators/release-version/utils/update-lock-file.d.ts +5 -0
  94. package/src/generators/release-version/utils/update-lock-file.js +105 -0
  95. package/src/generators/setup-build/generator.d.ts +4 -0
  96. package/src/generators/setup-build/generator.js +142 -0
  97. package/src/generators/setup-build/schema.d.ts +7 -0
  98. package/src/generators/setup-build/schema.json +42 -0
  99. package/src/generators/setup-verdaccio/files/config.yml +28 -0
  100. package/src/generators/setup-verdaccio/generator.d.ts +4 -0
  101. package/src/generators/setup-verdaccio/generator.js +56 -0
  102. package/src/generators/setup-verdaccio/schema.d.ts +3 -0
  103. package/src/generators/setup-verdaccio/schema.json +16 -0
  104. package/src/index.d.ts +17 -0
  105. package/src/index.js +28 -0
  106. package/src/internal.d.ts +4 -0
  107. package/src/internal.js +15 -0
  108. package/src/migrations/update-15-8-0/rename-swcrc-config.d.ts +2 -0
  109. package/src/migrations/update-15-8-0/rename-swcrc-config.js +77 -0
  110. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  111. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
  112. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts +2 -0
  113. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.js +34 -0
  114. package/src/migrations/update-16-8-2/update-swcrc.d.ts +2 -0
  115. package/src/migrations/update-16-8-2/update-swcrc.js +23 -0
  116. package/src/migrations/update-17-0-0/remove-deprecated-build-options.d.ts +6 -0
  117. package/src/migrations/update-17-0-0/remove-deprecated-build-options.js +30 -0
  118. package/src/plugins/jest/start-local-registry.d.ts +12 -0
  119. package/src/plugins/jest/start-local-registry.js +63 -0
  120. package/src/plugins/rollup/type-definitions.d.ts +8 -0
  121. package/src/plugins/rollup/type-definitions.js +48 -0
  122. package/src/utils/add-babel-inputs.d.ts +3 -0
  123. package/src/utils/add-babel-inputs.js +23 -0
  124. package/src/utils/add-local-registry-scripts.d.ts +5 -0
  125. package/src/utils/add-local-registry-scripts.js +77 -0
  126. package/src/utils/assets/assets.d.ts +10 -0
  127. package/src/utils/assets/assets.js +36 -0
  128. package/src/utils/assets/copy-assets-handler.d.ts +32 -0
  129. package/src/utils/assets/copy-assets-handler.js +154 -0
  130. package/src/utils/assets/index.d.ts +16 -0
  131. package/src/utils/assets/index.js +27 -0
  132. package/src/utils/buildable-libs-utils.d.ts +43 -0
  133. package/src/utils/buildable-libs-utils.js +375 -0
  134. package/src/utils/check-dependencies.d.ts +8 -0
  135. package/src/utils/check-dependencies.js +23 -0
  136. package/src/utils/code-frames/highlight.d.ts +1 -0
  137. package/src/utils/code-frames/highlight.js +86 -0
  138. package/src/utils/code-frames/identifiers.d.ts +5 -0
  139. package/src/utils/code-frames/identifiers.js +52 -0
  140. package/src/utils/compiler-helper-dependency.d.ts +18 -0
  141. package/src/utils/compiler-helper-dependency.js +120 -0
  142. package/src/utils/find-npm-dependencies.d.ts +9 -0
  143. package/src/utils/find-npm-dependencies.js +140 -0
  144. package/src/utils/generate-globs.d.ts +6 -0
  145. package/src/utils/generate-globs.js +80 -0
  146. package/src/utils/get-import-path.d.ts +5 -0
  147. package/src/utils/get-import-path.js +14 -0
  148. package/src/utils/get-main-file-dir.d.ts +1 -0
  149. package/src/utils/get-main-file-dir.js +11 -0
  150. package/src/utils/inline.d.ts +19 -0
  151. package/src/utils/inline.js +210 -0
  152. package/src/utils/package-json/create-entry-points.d.ts +1 -0
  153. package/src/utils/package-json/create-entry-points.js +23 -0
  154. package/src/utils/package-json/get-npm-scope.d.ts +5 -0
  155. package/src/utils/package-json/get-npm-scope.js +16 -0
  156. package/src/utils/package-json/index.d.ts +13 -0
  157. package/src/utils/package-json/index.js +30 -0
  158. package/src/utils/package-json/update-package-json.d.ts +30 -0
  159. package/src/utils/package-json/update-package-json.js +179 -0
  160. package/src/utils/prettier.d.ts +6 -0
  161. package/src/utils/prettier.js +34 -0
  162. package/src/utils/schema.d.ts +87 -0
  163. package/src/utils/swc/add-swc-config.d.ts +3 -0
  164. package/src/utils/swc/add-swc-config.js +41 -0
  165. package/src/utils/swc/add-swc-dependencies.d.ts +3 -0
  166. package/src/utils/swc/add-swc-dependencies.js +18 -0
  167. package/src/utils/swc/compile-swc.d.ts +13 -0
  168. package/src/utils/swc/compile-swc.js +160 -0
  169. package/src/utils/swc/get-swcrc-path.d.ts +5 -0
  170. package/src/utils/swc/get-swcrc-path.js +15 -0
  171. package/src/utils/swc/inline.d.ts +2 -0
  172. package/src/utils/swc/inline.js +11 -0
  173. package/src/utils/typescript/__mocks__/plugin-a.d.ts +1 -0
  174. package/src/utils/typescript/__mocks__/plugin-a.js +5 -0
  175. package/src/utils/typescript/__mocks__/plugin-b.d.ts +1 -0
  176. package/src/utils/typescript/__mocks__/plugin-b.js +5 -0
  177. package/src/utils/typescript/add-tslib-dependencies.d.ts +2 -0
  178. package/src/utils/typescript/add-tslib-dependencies.js +11 -0
  179. package/src/utils/typescript/ast-utils.d.ts +32 -0
  180. package/src/utils/typescript/ast-utils.js +266 -0
  181. package/src/utils/typescript/compile-typescript-files.d.ts +10 -0
  182. package/src/utils/typescript/compile-typescript-files.js +43 -0
  183. package/src/utils/typescript/create-ts-config.d.ts +18 -0
  184. package/src/utils/typescript/create-ts-config.js +48 -0
  185. package/src/utils/typescript/ensure-typescript.d.ts +1 -0
  186. package/src/utils/typescript/ensure-typescript.js +9 -0
  187. package/src/utils/typescript/get-source-nodes.d.ts +2 -0
  188. package/src/utils/typescript/get-source-nodes.js +18 -0
  189. package/src/utils/typescript/load-ts-transformers.d.ts +5 -0
  190. package/src/utils/typescript/load-ts-transformers.js +62 -0
  191. package/src/utils/typescript/print-diagnostics.d.ts +1 -0
  192. package/src/utils/typescript/print-diagnostics.js +18 -0
  193. package/src/utils/typescript/run-type-check.d.ts +32 -0
  194. package/src/utils/typescript/run-type-check.js +128 -0
  195. package/src/utils/typescript/ts-config.d.ts +9 -0
  196. package/src/utils/typescript/ts-config.js +85 -0
  197. package/src/utils/typescript/tsnode-register.d.ts +1 -0
  198. package/src/utils/typescript/tsnode-register.js +24 -0
  199. package/src/utils/typescript/types.d.ts +18 -0
  200. package/src/utils/typescript/types.js +2 -0
  201. package/src/utils/versions.d.ts +17 -0
  202. package/src/utils/versions.js +21 -0
  203. package/src/utils/watch-for-single-file-changes.d.ts +1 -0
  204. package/src/utils/watch-for-single-file-changes.js +22 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.highlight = void 0;
4
+ // Adapted from https://raw.githubusercontent.com/babel/babel/4108524/packages/babel-highlight/src/index.js
5
+ const jsTokens = require("js-tokens");
6
+ const chalk = require("chalk");
7
+ const identifiers_1 = require("./identifiers");
8
+ /**
9
+ * Chalk styles for token types.
10
+ */
11
+ function getDefs(chalk) {
12
+ return {
13
+ keyword: chalk.cyan,
14
+ capitalized: chalk.yellow,
15
+ jsx_tag: chalk.yellow,
16
+ punctuator: chalk.yellow,
17
+ // bracket: intentionally omitted.
18
+ number: chalk.magenta,
19
+ string: chalk.green,
20
+ regex: chalk.magenta,
21
+ comment: chalk.grey,
22
+ invalid: chalk.white.bgRed.bold,
23
+ };
24
+ }
25
+ /**
26
+ * RegExp to test for newlines in terminal.
27
+ */
28
+ const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
29
+ /**
30
+ * RegExp to test for what seems to be a JSX tag name.
31
+ */
32
+ const JSX_TAG = /^[a-z][\w-]*$/i;
33
+ /**
34
+ * RegExp to test for the three types of brackets.
35
+ */
36
+ const BRACKET = /^[()[\]{}]$/;
37
+ /**
38
+ * Get the type of token, specifying punctuator type.
39
+ */
40
+ function getTokenType(match) {
41
+ const [offset, text] = match.slice(-2);
42
+ const token = jsTokens.matchToToken(match);
43
+ if (token.type === 'name') {
44
+ if ((0, identifiers_1.isKeyword)(token.value) || (0, identifiers_1.isReservedWord)(token.value)) {
45
+ return 'keyword';
46
+ }
47
+ if (JSX_TAG.test(token.value) &&
48
+ (text[offset - 1] === '<' || text.slice(offset - 2, 2) == '</')) {
49
+ return 'jsx_tag';
50
+ }
51
+ if (token.value[0] !== token.value[0].toLowerCase()) {
52
+ return 'capitalized';
53
+ }
54
+ }
55
+ if (token.type === 'punctuator' && BRACKET.test(token.value)) {
56
+ return 'bracket';
57
+ }
58
+ if (token.type === 'invalid' &&
59
+ (token.value === '@' || token.value === '#')) {
60
+ return 'punctuator';
61
+ }
62
+ return token.type;
63
+ }
64
+ /**
65
+ * Highlight `text` using the token definitions in `defs`.
66
+ */
67
+ function highlightTokens(defs, text) {
68
+ return text.replace(jsTokens.default, function (...args) {
69
+ const type = getTokenType(args);
70
+ const colorize = defs[type];
71
+ if (colorize) {
72
+ return args[0]
73
+ .split(NEWLINE)
74
+ .map((str) => colorize(str))
75
+ .join('\n');
76
+ }
77
+ else {
78
+ return args[0];
79
+ }
80
+ });
81
+ }
82
+ function highlight(code) {
83
+ const defs = getDefs(chalk);
84
+ return highlightTokens(defs, code);
85
+ }
86
+ exports.highlight = highlight;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Checks if word is a reserved word in non-strict mode
3
+ */
4
+ export declare function isReservedWord(word: string, inModule?: boolean): boolean;
5
+ export declare function isKeyword(word: string): boolean;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isKeyword = exports.isReservedWord = void 0;
4
+ // Adapted from https://raw.githubusercontent.com/babel/babel/e39b508030a9f696584d21b0eb9677498e3ca231/packages/babel-helper-validator-identifier/src/keyword.js
5
+ const keywords = new Set([
6
+ 'break',
7
+ 'case',
8
+ 'catch',
9
+ 'continue',
10
+ 'debugger',
11
+ 'default',
12
+ 'do',
13
+ 'else',
14
+ 'finally',
15
+ 'for',
16
+ 'function',
17
+ 'if',
18
+ 'return',
19
+ 'switch',
20
+ 'throw',
21
+ 'try',
22
+ 'var',
23
+ 'const',
24
+ 'while',
25
+ 'with',
26
+ 'new',
27
+ 'this',
28
+ 'super',
29
+ 'class',
30
+ 'extends',
31
+ 'export',
32
+ 'import',
33
+ 'null',
34
+ 'true',
35
+ 'false',
36
+ 'in',
37
+ 'instanceof',
38
+ 'typeof',
39
+ 'void',
40
+ 'delete',
41
+ ]);
42
+ /**
43
+ * Checks if word is a reserved word in non-strict mode
44
+ */
45
+ function isReservedWord(word, inModule) {
46
+ return (inModule && word === 'await') || word === 'enum';
47
+ }
48
+ exports.isReservedWord = isReservedWord;
49
+ function isKeyword(word) {
50
+ return keywords.has(word);
51
+ }
52
+ exports.isKeyword = isKeyword;
@@ -0,0 +1,18 @@
1
+ import { type ProjectGraph, type ProjectGraphDependency } from '@nx/devkit';
2
+ import { DependentBuildableProjectNode } from './buildable-libs-utils';
3
+ export declare enum HelperDependency {
4
+ tsc = "npm:tslib",
5
+ swc = "npm:@swc/helpers"
6
+ }
7
+ /**
8
+ * Check and return a DependencyNode for the compiler's external helpers npm package. Return "null"
9
+ * if it doesn't need it or it cannot be found in the Project Graph
10
+ *
11
+ * @param {HelperDependency} helperDependency
12
+ * @param {string} configPath
13
+ * @param {DependentBuildableProjectNode[]} dependencies
14
+ * @param {ProjectGraph} projectGraph
15
+ * @param {boolean=false} returnDependencyIfFound
16
+ */
17
+ export declare function getHelperDependency(helperDependency: HelperDependency, configPath: string, dependencies: DependentBuildableProjectNode[], projectGraph: ProjectGraph, returnDependencyIfFound?: boolean): DependentBuildableProjectNode | null;
18
+ export declare function getHelperDependenciesFromProjectGraph(contextRoot: string, sourceProject: string, projectGraph: ProjectGraph): ProjectGraphDependency[];
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHelperDependenciesFromProjectGraph = exports.getHelperDependency = exports.HelperDependency = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const path_1 = require("path");
6
+ const ts_config_1 = require("./typescript/ts-config");
7
+ const get_swcrc_path_1 = require("./swc/get-swcrc-path");
8
+ var HelperDependency;
9
+ (function (HelperDependency) {
10
+ HelperDependency["tsc"] = "npm:tslib";
11
+ HelperDependency["swc"] = "npm:@swc/helpers";
12
+ })(HelperDependency || (exports.HelperDependency = HelperDependency = {}));
13
+ const jsExecutors = {
14
+ '@nx/js:tsc': {
15
+ helperDependency: HelperDependency.tsc,
16
+ getConfigPath: (options, contextRoot, _) => (0, path_1.join)(contextRoot, options.tsConfig),
17
+ },
18
+ '@nx/js:swc': {
19
+ helperDependency: HelperDependency.swc,
20
+ getConfigPath: (options, contextRoot, projectRoot) => (0, get_swcrc_path_1.getSwcrcPath)(options, contextRoot, projectRoot),
21
+ },
22
+ };
23
+ /**
24
+ * Check and return a DependencyNode for the compiler's external helpers npm package. Return "null"
25
+ * if it doesn't need it or it cannot be found in the Project Graph
26
+ *
27
+ * @param {HelperDependency} helperDependency
28
+ * @param {string} configPath
29
+ * @param {DependentBuildableProjectNode[]} dependencies
30
+ * @param {ProjectGraph} projectGraph
31
+ * @param {boolean=false} returnDependencyIfFound
32
+ */
33
+ function getHelperDependency(helperDependency, configPath, dependencies, projectGraph, returnDependencyIfFound = false) {
34
+ const dependency = dependencies.find((dep) => dep.name === helperDependency);
35
+ if (!!dependency) {
36
+ // if a helperDependency is found, we either return null or the found dependency
37
+ // We return the found return dependency for the cases where it is a part of a
38
+ // project's dependency's dependency instead
39
+ // eg: app-a -> lib-a (helperDependency is on lib-a instead of app-a)
40
+ // When building app-a, we'd want to know about the found helper dependency still
41
+ return returnDependencyIfFound ? dependency : null;
42
+ }
43
+ let isHelperNeeded = false;
44
+ switch (helperDependency) {
45
+ case HelperDependency.tsc:
46
+ isHelperNeeded = !!(0, ts_config_1.readTsConfig)(configPath).options['importHelpers'];
47
+ break;
48
+ case HelperDependency.swc:
49
+ isHelperNeeded = !!(0, devkit_1.readJsonFile)(configPath)['jsc']['externalHelpers'];
50
+ break;
51
+ }
52
+ if (!isHelperNeeded)
53
+ return null;
54
+ let libNode = projectGraph[helperDependency];
55
+ // If libNode is not found due to the version suffix from pnpm lockfile, try to match it by package name.
56
+ if (!libNode) {
57
+ for (const nodeName of Object.keys(projectGraph.externalNodes)) {
58
+ const node = projectGraph.externalNodes[nodeName];
59
+ if (`npm:${node.data.packageName}` === helperDependency) {
60
+ libNode = node;
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ if (!libNode) {
66
+ devkit_1.logger.warn(`Your library compilation option specifies that the compiler external helper (${helperDependency.split(':')[1]}) is needed but it is not installed.`);
67
+ return null;
68
+ }
69
+ return {
70
+ name: helperDependency,
71
+ outputs: [],
72
+ node: libNode,
73
+ };
74
+ }
75
+ exports.getHelperDependency = getHelperDependency;
76
+ function getHelperDependenciesFromProjectGraph(contextRoot, sourceProject, projectGraph) {
77
+ // if the source project isn't part of the projectGraph nodes; skip
78
+ if (!projectGraph.nodes[sourceProject])
79
+ return [];
80
+ // if the source project does not have any dependencies; skip
81
+ if (!projectGraph.dependencies[sourceProject] ||
82
+ !projectGraph.dependencies[sourceProject].length)
83
+ return [];
84
+ const sourceDependencies = projectGraph.dependencies[sourceProject];
85
+ const internalDependencies = sourceDependencies.reduce((result, dependency) => {
86
+ // we check if a dependency is part of the workspace and if it's a library
87
+ // because we wouldn't want to include external dependencies (npm packages)
88
+ if (projectGraph.nodes[dependency.target] &&
89
+ projectGraph.nodes[dependency.target].type === 'lib') {
90
+ const targetData = projectGraph.nodes[dependency.target].data;
91
+ // check if the dependency has a buildable target with one of the jsExecutors
92
+ const targetExecutor = Object.values(targetData.targets).find(({ executor }) => !!jsExecutors[executor]);
93
+ if (targetExecutor) {
94
+ const jsExecutor = jsExecutors[targetExecutor['executor']];
95
+ const { root: projectRoot } = targetData;
96
+ const configPath = jsExecutor.getConfigPath(targetExecutor['options'], contextRoot, projectRoot);
97
+ // construct the correct helperDependency configurations
98
+ // so we can compute the ProjectGraphDependency later
99
+ result.push({
100
+ helperDependency: jsExecutors[targetExecutor['executor']].helperDependency,
101
+ dependencies: projectGraph.dependencies[dependency.target],
102
+ configPath,
103
+ });
104
+ }
105
+ }
106
+ return result;
107
+ }, []);
108
+ return internalDependencies.reduce((result, { helperDependency, configPath, dependencies }) => {
109
+ const dependency = getHelperDependency(helperDependency, configPath, dependencies, projectGraph, true);
110
+ if (dependency) {
111
+ result.push({
112
+ type: 'static',
113
+ source: sourceProject,
114
+ target: dependency.name,
115
+ });
116
+ }
117
+ return result;
118
+ }, []);
119
+ }
120
+ exports.getHelperDependenciesFromProjectGraph = getHelperDependenciesFromProjectGraph;
@@ -0,0 +1,9 @@
1
+ import { type ProjectFileMap, type ProjectGraph, type ProjectGraphProjectNode } from '@nx/devkit';
2
+ /**
3
+ * Finds all npm dependencies and their expected versions for a given project.
4
+ */
5
+ export declare function findNpmDependencies(workspaceRoot: string, sourceProject: ProjectGraphProjectNode, projectGraph: ProjectGraph, projectFileMap: ProjectFileMap, buildTarget: string, options?: {
6
+ includeTransitiveDependencies?: boolean;
7
+ ignoredFiles?: string[];
8
+ useLocalPathsForWorkspaceDependencies?: boolean;
9
+ }): Record<string, string>;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findNpmDependencies = void 0;
4
+ const path_1 = require("path");
5
+ const configuration_1 = require("nx/src/config/configuration");
6
+ const devkit_1 = require("@nx/devkit");
7
+ const fileutils_1 = require("nx/src/utils/fileutils");
8
+ const project_graph_1 = require("nx/src/config/project-graph");
9
+ const ts_config_1 = require("./typescript/ts-config");
10
+ const task_hasher_1 = require("nx/src/hasher/task-hasher");
11
+ /**
12
+ * Finds all npm dependencies and their expected versions for a given project.
13
+ */
14
+ function findNpmDependencies(workspaceRoot, sourceProject, projectGraph, projectFileMap, buildTarget, options = {}) {
15
+ let seen = null;
16
+ if (options.includeTransitiveDependencies) {
17
+ seen = new Set();
18
+ }
19
+ const results = {};
20
+ function collectAll(currentProject, collectedDeps) {
21
+ if (seen?.has(currentProject.name))
22
+ return;
23
+ seen?.add(currentProject.name);
24
+ collectDependenciesFromFileMap(workspaceRoot, currentProject, projectGraph, projectFileMap, buildTarget, options.ignoredFiles, options.useLocalPathsForWorkspaceDependencies, collectedDeps);
25
+ collectHelperDependencies(workspaceRoot, currentProject, projectGraph, buildTarget, collectedDeps);
26
+ if (options.includeTransitiveDependencies) {
27
+ const projectDeps = projectGraph.dependencies[currentProject.name];
28
+ for (const dep of projectDeps) {
29
+ const projectDep = projectGraph.nodes[dep.target];
30
+ if (projectDep)
31
+ collectAll(projectDep, collectedDeps);
32
+ }
33
+ }
34
+ }
35
+ collectAll(sourceProject, results);
36
+ return results;
37
+ }
38
+ exports.findNpmDependencies = findNpmDependencies;
39
+ // Keep track of workspace libs we already read package.json for so we don't read from disk again.
40
+ const seenWorkspaceDeps = {};
41
+ function collectDependenciesFromFileMap(workspaceRoot, sourceProject, projectGraph, projectFileMap, buildTarget, ignoredFiles, useLocalPathsForWorkspaceDependencies, npmDeps) {
42
+ const rawFiles = projectFileMap[sourceProject.name];
43
+ if (!rawFiles)
44
+ return;
45
+ // If build target does not exist in project, use all files as input.
46
+ // This is needed for transitive dependencies for apps -- where libs may not be buildable.
47
+ const inputs = sourceProject.data.targets[buildTarget]
48
+ ? (0, task_hasher_1.getTargetInputs)((0, configuration_1.readNxJson)(), sourceProject, buildTarget).selfInputs
49
+ : ['{projectRoot}/**/*'];
50
+ if (ignoredFiles) {
51
+ for (const pattern of ignoredFiles) {
52
+ inputs.push(`!${pattern}`);
53
+ }
54
+ }
55
+ const files = (0, task_hasher_1.filterUsingGlobPatterns)(sourceProject.data.root, projectFileMap[sourceProject.name] || [], inputs);
56
+ for (const fileData of files) {
57
+ if (!fileData.deps ||
58
+ fileData.file ===
59
+ (0, devkit_1.joinPathFragments)(sourceProject.data.root, 'package.json')) {
60
+ continue;
61
+ }
62
+ for (const dep of fileData.deps) {
63
+ const target = (0, project_graph_1.fileDataDepTarget)(dep);
64
+ // If the node is external, then read package info from `data`.
65
+ const externalDep = projectGraph.externalNodes[target];
66
+ if (externalDep?.type === 'npm') {
67
+ npmDeps[externalDep.data.packageName] = externalDep.data.version;
68
+ continue;
69
+ }
70
+ // If node is internal, then try reading package info from `package.json` (which must exist for this to work).
71
+ const workspaceDep = projectGraph.nodes[target];
72
+ if (!workspaceDep)
73
+ continue;
74
+ const cached = seenWorkspaceDeps[workspaceDep.name];
75
+ if (cached) {
76
+ npmDeps[cached.name] = cached.version;
77
+ }
78
+ else {
79
+ const packageJson = readPackageJson(workspaceDep, workspaceRoot);
80
+ if (
81
+ // Check that this is a buildable project, otherwise it cannot be a dependency in package.json.
82
+ workspaceDep.data.targets[buildTarget] &&
83
+ // Make sure package.json exists and has a valid name.
84
+ packageJson?.name) {
85
+ let version;
86
+ if (useLocalPathsForWorkspaceDependencies) {
87
+ // Find the relative `file:...` path and use that as the version value.
88
+ // This is useful for monorepos like Nx where the release will handle setting the correct version in dist.
89
+ const depRoot = (0, path_1.join)(workspaceRoot, workspaceDep.data.root);
90
+ const ownRoot = (0, path_1.join)(workspaceRoot, sourceProject.data.root);
91
+ const relativePath = (0, path_1.relative)(ownRoot, depRoot);
92
+ const filePath = (0, devkit_1.normalizePath)(relativePath); // normalize slashes for windows
93
+ version = `file:${filePath}`;
94
+ }
95
+ else {
96
+ // Otherwise, read the version from the dependencies `package.json` file.
97
+ // This is useful for monorepos that commit release versions.
98
+ // Users can also set version as "*" in source `package.json` files, which will be the value set here.
99
+ // This is useful if they use custom scripts to update them in dist.
100
+ version = packageJson.version ?? '*'; // fallback in case version is missing
101
+ }
102
+ npmDeps[packageJson.name] = version;
103
+ seenWorkspaceDeps[workspaceDep.name] = {
104
+ name: packageJson.name,
105
+ version,
106
+ };
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ function readPackageJson(project, workspaceRoot) {
113
+ const packageJsonPath = (0, path_1.join)(workspaceRoot, project.data.root, 'package.json');
114
+ if ((0, fileutils_1.fileExists)(packageJsonPath))
115
+ return (0, devkit_1.readJsonFile)(packageJsonPath);
116
+ return null;
117
+ }
118
+ function collectHelperDependencies(workspaceRoot, sourceProject, projectGraph, buildTarget, npmDeps) {
119
+ const target = sourceProject.data.targets[buildTarget];
120
+ if (!target)
121
+ return;
122
+ if (target.executor === '@nx/js:tsc' && target.options?.tsConfig) {
123
+ const tsConfig = (0, ts_config_1.readTsConfig)((0, path_1.join)(workspaceRoot, target.options.tsConfig));
124
+ if (tsConfig?.options['importHelpers']) {
125
+ npmDeps['tslib'] = projectGraph.externalNodes['npm:tslib']?.data.version;
126
+ }
127
+ }
128
+ if (target.executor === '@nx/js:swc') {
129
+ const swcConfigPath = target.options.swcrc
130
+ ? (0, path_1.join)(workspaceRoot, target.options.swcrc)
131
+ : (0, path_1.join)(workspaceRoot, sourceProject.data.root, '.swcrc');
132
+ const swcConfig = (0, fileutils_1.fileExists)(swcConfigPath)
133
+ ? (0, devkit_1.readJsonFile)(swcConfigPath)
134
+ : {};
135
+ if (swcConfig?.jsc?.externalHelpers) {
136
+ npmDeps['@swc/helpers'] =
137
+ projectGraph.externalNodes['npm:@swc/helpers']?.data.version;
138
+ }
139
+ }
140
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generates a set of glob patterns based off the source root of the app and its dependencies
3
+ * @param dirPath workspace relative directory path that will be used to infer the parent project and dependencies
4
+ * @param fileGlobPattern pass a custom glob pattern to be used
5
+ */
6
+ export declare function createGlobPatternsForDependencies(dirPath: string, fileGlobPattern: string): string[];
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createGlobPatternsForDependencies = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const workspace_root_1 = require("nx/src/utils/workspace-root");
6
+ const path_1 = require("path");
7
+ const project_graph_1 = require("nx/src/project-graph/project-graph");
8
+ const project_graph_utils_1 = require("nx/src/utils/project-graph-utils");
9
+ const fs_1 = require("fs");
10
+ const ignore_1 = require("ignore");
11
+ const find_project_for_path_1 = require("nx/src/project-graph/utils/find-project-for-path");
12
+ function configureIgnore() {
13
+ let ig;
14
+ const pathToGitIgnore = (0, path_1.join)(workspace_root_1.workspaceRoot, '.gitignore');
15
+ if ((0, fs_1.existsSync)(pathToGitIgnore)) {
16
+ ig = (0, ignore_1.default)();
17
+ ig.add((0, fs_1.readFileSync)(pathToGitIgnore, { encoding: 'utf-8' }));
18
+ }
19
+ return ig;
20
+ }
21
+ /**
22
+ * Generates a set of glob patterns based off the source root of the app and its dependencies
23
+ * @param dirPath workspace relative directory path that will be used to infer the parent project and dependencies
24
+ * @param fileGlobPattern pass a custom glob pattern to be used
25
+ */
26
+ function createGlobPatternsForDependencies(dirPath, fileGlobPattern) {
27
+ let ig = configureIgnore();
28
+ const filenameRelativeToWorkspaceRoot = (0, devkit_1.normalizePath)((0, path_1.relative)(workspace_root_1.workspaceRoot, dirPath));
29
+ const projectGraph = (0, project_graph_1.readCachedProjectGraph)();
30
+ const projectRootMappings = (0, find_project_for_path_1.createProjectRootMappings)(projectGraph.nodes);
31
+ // find the project
32
+ let projectName;
33
+ try {
34
+ projectName = (0, find_project_for_path_1.findProjectForPath)(filenameRelativeToWorkspaceRoot, projectRootMappings);
35
+ if (!projectName) {
36
+ throw new Error(`createGlobPatternsForDependencies: Could not find any project containing the file "${filenameRelativeToWorkspaceRoot}" among it's project files`);
37
+ }
38
+ }
39
+ catch (e) {
40
+ throw new Error(`createGlobPatternsForDependencies: Error when trying to determine main project.\n${e?.message}`);
41
+ }
42
+ // generate the glob
43
+ try {
44
+ const [projectDirs, warnings] = (0, project_graph_utils_1.getSourceDirOfDependentProjects)(projectName, projectGraph);
45
+ const dirsToUse = [];
46
+ const recursiveScanDirs = (dirPath) => {
47
+ const children = (0, fs_1.readdirSync)((0, path_1.resolve)(workspace_root_1.workspaceRoot, dirPath));
48
+ for (const child of children) {
49
+ const childPath = (0, path_1.join)(dirPath, child);
50
+ if (ig?.ignores(childPath) ||
51
+ !(0, fs_1.lstatSync)((0, path_1.resolve)(workspace_root_1.workspaceRoot, childPath)).isDirectory()) {
52
+ continue;
53
+ }
54
+ if ((0, fs_1.existsSync)((0, path_1.join)(workspace_root_1.workspaceRoot, childPath, 'ng-package.json'))) {
55
+ dirsToUse.push(childPath);
56
+ }
57
+ else {
58
+ recursiveScanDirs(childPath);
59
+ }
60
+ }
61
+ };
62
+ for (const srcDir of projectDirs) {
63
+ dirsToUse.push(srcDir);
64
+ const root = (0, path_1.dirname)(srcDir);
65
+ recursiveScanDirs(root);
66
+ }
67
+ if (warnings.length > 0) {
68
+ devkit_1.logger.warn(`
69
+ [createGlobPatternsForDependencies] Failed to generate glob pattern for the following:
70
+ ${warnings.join('\n- ')}\n
71
+ due to missing "sourceRoot" in the dependencies' project configuration
72
+ `);
73
+ }
74
+ return dirsToUse.map((sourceDir) => (0, path_1.resolve)(workspace_root_1.workspaceRoot, (0, devkit_1.joinPathFragments)(sourceDir, fileGlobPattern)));
75
+ }
76
+ catch (e) {
77
+ throw new Error(`createGlobPatternsForDependencies: Error when generating globs.\n${e?.message}`);
78
+ }
79
+ }
80
+ exports.createGlobPatternsForDependencies = createGlobPatternsForDependencies;
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@nx/devkit';
2
+ /**
3
+ * Prefixes project name with npm scope
4
+ */
5
+ export declare function getImportPath(tree: Tree, projectDirectory: string): string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getImportPath = void 0;
4
+ const get_npm_scope_1 = require("./package-json/get-npm-scope");
5
+ /**
6
+ * Prefixes project name with npm scope
7
+ */
8
+ function getImportPath(tree, projectDirectory) {
9
+ const npmScope = (0, get_npm_scope_1.getNpmScope)(tree);
10
+ return npmScope
11
+ ? `${npmScope === '@' ? '' : '@'}${npmScope}/${projectDirectory}`
12
+ : projectDirectory;
13
+ }
14
+ exports.getImportPath = getImportPath;
@@ -0,0 +1 @@
1
+ export declare function getRelativeDirectoryToProjectRoot(file: string, projectRoot: string): string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRelativeDirectoryToProjectRoot = void 0;
4
+ const path_1 = require("path");
5
+ const path_2 = require("nx/src/utils/path");
6
+ function getRelativeDirectoryToProjectRoot(file, projectRoot) {
7
+ const dir = (0, path_1.dirname)(file);
8
+ const relativeDir = (0, path_2.normalizePath)((0, path_1.relative)(projectRoot, dir));
9
+ return relativeDir === '' ? `./` : `./${relativeDir}/`;
10
+ }
11
+ exports.getRelativeDirectoryToProjectRoot = getRelativeDirectoryToProjectRoot;
@@ -0,0 +1,19 @@
1
+ import type { ExecutorContext } from '@nx/devkit';
2
+ import type { NormalizedExecutorOptions } from './schema';
3
+ interface InlineProjectNode {
4
+ name: string;
5
+ root: string;
6
+ sourceRoot: string;
7
+ pathAlias: string;
8
+ buildOutputPath?: string;
9
+ }
10
+ export interface InlineProjectGraph {
11
+ nodes: Record<string, InlineProjectNode>;
12
+ externals: Record<string, InlineProjectNode>;
13
+ dependencies: Record<string, string[]>;
14
+ }
15
+ export declare function isInlineGraphEmpty(inlineGraph: InlineProjectGraph): boolean;
16
+ export declare function handleInliningBuild(context: ExecutorContext, options: NormalizedExecutorOptions, tsConfigPath: string, projectName?: string): InlineProjectGraph;
17
+ export declare function postProcessInlinedDependencies(outputPath: string, parentOutputPath: string, inlineGraph: InlineProjectGraph): void;
18
+ export declare function getRootTsConfigPath(context: ExecutorContext): string | null;
19
+ export {};