@space-arch/nx-plugin-std 1.7.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 (86) hide show
  1. package/README.md +35 -0
  2. package/dist/generators/cfg/cfg-generator.d.ts +5 -0
  3. package/dist/generators/cfg/cfg-generator.d.ts.map +1 -0
  4. package/dist/generators/cfg/cfg-generator.js +21 -0
  5. package/dist/generators/cfg/files/cursor-rules/commit-rules.mdc.template +274 -0
  6. package/dist/generators/cfg/files/cursor-rules/core-rules.mdc.template +106 -0
  7. package/dist/generators/cfg/files/cursor-rules/drizzle-orm-rules.mdc.template +110 -0
  8. package/dist/generators/cfg/files/cursor-rules/rust-rules.mdc.template +65 -0
  9. package/dist/generators/cfg/files/cursor-rules/typescript-rules.mdc.template +73 -0
  10. package/dist/generators/cfg/files/lint/.prettierignore.template +7 -0
  11. package/dist/generators/cfg/files/lint/.prettierrc.template +32 -0
  12. package/dist/generators/cfg/files/lint/eslint.config.mjs.template +91 -0
  13. package/dist/generators/cfg/lib/initCursorRules.d.ts +3 -0
  14. package/dist/generators/cfg/lib/initCursorRules.d.ts.map +1 -0
  15. package/dist/generators/cfg/lib/initCursorRules.js +4 -0
  16. package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.d.ts +3 -0
  17. package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.d.ts.map +1 -0
  18. package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.js +21 -0
  19. package/dist/generators/cfg/lib/versionMatch.d.ts +3 -0
  20. package/dist/generators/cfg/lib/versionMatch.d.ts.map +1 -0
  21. package/dist/generators/cfg/lib/versionMatch.js +25 -0
  22. package/dist/generators/cfg/lib/versionResolve.d.ts +10 -0
  23. package/dist/generators/cfg/lib/versionResolve.d.ts.map +1 -0
  24. package/dist/generators/cfg/lib/versionResolve.js +49 -0
  25. package/dist/generators/cfg/schema.d.ts +5 -0
  26. package/dist/generators/cfg/schema.json +33 -0
  27. package/dist/generators/mv/mv-generator.d.ts +5 -0
  28. package/dist/generators/mv/mv-generator.d.ts.map +1 -0
  29. package/dist/generators/mv/mv-generator.js +11 -0
  30. package/dist/generators/mv/schema.d.ts +4 -0
  31. package/dist/generators/mv/schema.json +24 -0
  32. package/dist/generators/pkg/__snapshots__/pkg-generator.spec.ts.snap +297 -0
  33. package/dist/generators/pkg/lib/tsPathsBased.d.ts +4 -0
  34. package/dist/generators/pkg/lib/tsPathsBased.d.ts.map +1 -0
  35. package/dist/generators/pkg/lib/tsPathsBased.js +54 -0
  36. package/dist/generators/pkg/lib/tsReferenceBased.d.ts +4 -0
  37. package/dist/generators/pkg/lib/tsReferenceBased.d.ts.map +1 -0
  38. package/dist/generators/pkg/lib/tsReferenceBased.js +62 -0
  39. package/dist/generators/pkg/lib/util/addLocalPackage.d.ts +20 -0
  40. package/dist/generators/pkg/lib/util/addLocalPackage.d.ts.map +1 -0
  41. package/dist/generators/pkg/lib/util/addLocalPackage.js +48 -0
  42. package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.d.ts +3 -0
  43. package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.d.ts.map +1 -0
  44. package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.js +33 -0
  45. package/dist/generators/pkg/lib/util/resolveViteConfigPath.d.ts +7 -0
  46. package/dist/generators/pkg/lib/util/resolveViteConfigPath.d.ts.map +1 -0
  47. package/dist/generators/pkg/lib/util/resolveViteConfigPath.js +13 -0
  48. package/dist/generators/pkg/lib/util/setJsTsOptions.d.ts +3 -0
  49. package/dist/generators/pkg/lib/util/setJsTsOptions.d.ts.map +1 -0
  50. package/dist/generators/pkg/lib/util/setJsTsOptions.js +16 -0
  51. package/dist/generators/pkg/lib/util/setNextTsOptions.d.ts +3 -0
  52. package/dist/generators/pkg/lib/util/setNextTsOptions.d.ts.map +1 -0
  53. package/dist/generators/pkg/lib/util/setNextTsOptions.js +13 -0
  54. package/dist/generators/pkg/lib/util/setReactTsOptions.d.ts +3 -0
  55. package/dist/generators/pkg/lib/util/setReactTsOptions.d.ts.map +1 -0
  56. package/dist/generators/pkg/lib/util/setReactTsOptions.js +64 -0
  57. package/dist/generators/pkg/lib/util/updateArrayProperty.d.ts +2 -0
  58. package/dist/generators/pkg/lib/util/updateArrayProperty.d.ts.map +1 -0
  59. package/dist/generators/pkg/lib/util/updateArrayProperty.js +4 -0
  60. package/dist/generators/pkg/lib/util/updateTsConfigLibJson.d.ts +3 -0
  61. package/dist/generators/pkg/lib/util/updateTsConfigLibJson.d.ts.map +1 -0
  62. package/dist/generators/pkg/lib/util/updateTsConfigLibJson.js +4 -0
  63. package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.d.ts +3 -0
  64. package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.d.ts.map +1 -0
  65. package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.js +4 -0
  66. package/dist/generators/pkg/lib/util/updateViteBuildFormats.d.ts +8 -0
  67. package/dist/generators/pkg/lib/util/updateViteBuildFormats.d.ts.map +1 -0
  68. package/dist/generators/pkg/lib/util/updateViteBuildFormats.js +16 -0
  69. package/dist/generators/pkg/lib/util/updateVitestConfig.d.ts +4 -0
  70. package/dist/generators/pkg/lib/util/updateVitestConfig.d.ts.map +1 -0
  71. package/dist/generators/pkg/lib/util/updateVitestConfig.js +29 -0
  72. package/dist/generators/pkg/pkg-generator.d.ts +5 -0
  73. package/dist/generators/pkg/pkg-generator.d.ts.map +1 -0
  74. package/dist/generators/pkg/pkg-generator.js +19 -0
  75. package/dist/generators/pkg/schema.d.ts +8 -0
  76. package/dist/generators/pkg/schema.json +66 -0
  77. package/dist/generators/rm/rm-generator.d.ts +5 -0
  78. package/dist/generators/rm/rm-generator.d.ts.map +1 -0
  79. package/dist/generators/rm/rm-generator.js +19 -0
  80. package/dist/generators/rm/schema.d.ts +3 -0
  81. package/dist/generators/rm/schema.json +19 -0
  82. package/dist/index.d.ts +5 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +2 -0
  85. package/generators.json +24 -0
  86. package/package.json +90 -0
@@ -0,0 +1,297 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`ts-path-based non-publishable package > should generate expected vite.config.ts 1`] = `
4
+ "/// <reference types='vitest' />
5
+ import { defineConfig } from 'vite';
6
+ import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
7
+ import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
8
+
9
+ export default defineConfig(() => ({
10
+ root: import.meta.dirname,
11
+ cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
12
+ plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
13
+ // Uncomment this if you are using workers.
14
+ // worker: {
15
+ // plugins: () => [ nxViteTsPaths() ],
16
+ // },
17
+ test: {
18
+ passWithNoTests: true,
19
+ name: 'foo-bar-baz',
20
+ watch: false,
21
+ globals: true,
22
+ environment: 'node',
23
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
24
+ reporters: ['default'],
25
+ coverage: {
26
+ reportsDirectory: '../../../coverage/packages/foo/bar-baz',
27
+ provider: 'v8' as const,
28
+ },
29
+ },
30
+ }));
31
+ "
32
+ `;
33
+
34
+ exports[`ts-path-based publishable package > should generate expected vite.config.ts 1`] = `
35
+ "/// <reference types='vitest' />
36
+ import { defineConfig } from 'vite';
37
+ import dts from 'vite-plugin-dts';
38
+ import * as path from 'path';
39
+ import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
40
+ import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
41
+
42
+ export default defineConfig(() => ({
43
+ root: import.meta.dirname,
44
+ cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
45
+ plugins: [
46
+ nxViteTsPaths(),
47
+ nxCopyAssetsPlugin(['*.md']),
48
+ dts({
49
+ entryRoot: 'src',
50
+ tsconfigPath: path.join(import.meta.dirname, 'tsconfig.lib.json'),
51
+ pathsToAliases: false,
52
+ }),
53
+ ],
54
+ // Uncomment this if you are using workers.
55
+ // worker: {
56
+ // plugins: () => [ nxViteTsPaths() ],
57
+ // },
58
+ // Configuration for building your library.
59
+ // See: https://vite.dev/guide/build.html#library-mode
60
+ build: {
61
+ outDir: '../../../dist/packages/foo/bar-baz',
62
+ emptyOutDir: true,
63
+ reportCompressedSize: true,
64
+ commonjsOptions: {
65
+ transformMixedEsModules: true,
66
+ },
67
+ lib: {
68
+ // Could also be a dictionary or array of multiple entry points.
69
+ entry: 'src/index.ts',
70
+ name: 'foo-bar-baz',
71
+ fileName: 'index',
72
+ // Change this to the formats you want to support.
73
+ // Don't forget to update your package.json as well.
74
+ formats: ['es' as const, 'cjs' as const],
75
+ },
76
+ rollupOptions: {
77
+ // External packages that should not be bundled into your library.
78
+ external: [],
79
+ },
80
+ },
81
+ test: {
82
+ passWithNoTests: true,
83
+ name: 'foo-bar-baz',
84
+ watch: false,
85
+ globals: true,
86
+ environment: 'node',
87
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
88
+ reporters: ['default'],
89
+ coverage: {
90
+ reportsDirectory: '../../../coverage/packages/foo/bar-baz',
91
+ provider: 'v8' as const,
92
+ },
93
+ },
94
+ }));
95
+ "
96
+ `;
97
+
98
+ exports[`ts-reference-based not publishable package > should generate expected package.json 1`] = `
99
+ "{
100
+ "name": "@ns/foo-bar-baz",
101
+ "version": "0.0.1",
102
+ "private": true,
103
+ "type": "module",
104
+ "main": "./src/index.ts",
105
+ "types": "./src/index.ts",
106
+ "exports": {
107
+ ".": {
108
+ "types": "./src/index.ts",
109
+ "import": "./src/index.ts",
110
+ "default": "./src/index.ts"
111
+ },
112
+ "./package.json": "./package.json"
113
+ },
114
+ "nx": {
115
+ "name": "foo-bar-baz",
116
+ "targets": {
117
+ "lint": {
118
+ "executor": "@nx/eslint:lint"
119
+ },
120
+ "test": {
121
+ "executor": "@nx/vitest:test",
122
+ "outputs": [
123
+ "{options.reportsDirectory}"
124
+ ],
125
+ "options": {
126
+ "reportsDirectory": "../../../coverage/packages/foo/bar-baz"
127
+ }
128
+ }
129
+ }
130
+ },
131
+ "dependencies": {}
132
+ }
133
+ "
134
+ `;
135
+
136
+ exports[`ts-reference-based not publishable package > should generate expected vite.config.ts 1`] = `
137
+ "/// <reference types='vitest' />
138
+ import { defineConfig } from 'vite';
139
+
140
+ export default defineConfig(() => ({
141
+ root: import.meta.dirname,
142
+ cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
143
+ plugins: [],
144
+ // Uncomment this if you are using workers.
145
+ // worker: {
146
+ // plugins: [],
147
+ // },
148
+ test: {
149
+ passWithNoTests: true,
150
+ name: 'foo-bar-baz',
151
+ watch: false,
152
+ globals: true,
153
+ environment: 'node',
154
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
155
+ reporters: ['default'],
156
+ coverage: {
157
+ reportsDirectory: './test-output/vitest/coverage',
158
+ provider: 'v8' as const,
159
+ },
160
+ },
161
+ }));
162
+ "
163
+ `;
164
+
165
+ exports[`ts-reference-based publishable package > should generate expected package.json 1`] = `
166
+ "{
167
+ "name": "@ns/foo-bar-baz",
168
+ "version": "0.0.1",
169
+ "type": "module",
170
+ "main": "./dist/index.js",
171
+ "module": "./dist/index.js",
172
+ "types": "./dist/index.d.ts",
173
+ "exports": {
174
+ "./package.json": "./package.json",
175
+ ".": {
176
+ "development": "./src/index.ts",
177
+ "types": "./dist/index.d.ts",
178
+ "import": "./dist/index.js",
179
+ "require": "./dist/index.cjs"
180
+ }
181
+ },
182
+ "files": [
183
+ "dist",
184
+ "!**/*.tsbuildinfo"
185
+ ],
186
+ "nx": {
187
+ "name": "foo-bar-baz",
188
+ "targets": {
189
+ "build": {
190
+ "executor": "@nx/vite:build",
191
+ "outputs": [
192
+ "{options.outputPath}"
193
+ ],
194
+ "defaultConfiguration": "production",
195
+ "options": {
196
+ "outputPath": "packages/foo/bar-baz/dist"
197
+ },
198
+ "configurations": {
199
+ "development": {
200
+ "mode": "development"
201
+ },
202
+ "production": {
203
+ "mode": "production"
204
+ }
205
+ }
206
+ },
207
+ "test": {
208
+ "executor": "@nx/vitest:test",
209
+ "outputs": [
210
+ "{options.reportsDirectory}"
211
+ ],
212
+ "options": {
213
+ "reportsDirectory": "../../../coverage/packages/foo/bar-baz"
214
+ }
215
+ },
216
+ "lint": {
217
+ "executor": "@nx/eslint:lint"
218
+ }
219
+ }
220
+ },
221
+ "dependencies": {},
222
+ "publishConfig": {
223
+ "access": "public"
224
+ },
225
+ "homepage": "https://github.com/author/repo",
226
+ "bugs": {
227
+ "url": "https://github.com/author/repo/issues"
228
+ },
229
+ "author": "Author",
230
+ "license": "MIT",
231
+ "repository": {
232
+ "type": "git",
233
+ "url": "https://github.com/author/repo.git",
234
+ "directory": "packages/foo/bar-baz"
235
+ }
236
+ }
237
+ "
238
+ `;
239
+
240
+ exports[`ts-reference-based publishable package > should generate expected vite.config.ts 1`] = `
241
+ "/// <reference types='vitest' />
242
+ import { defineConfig } from 'vite';
243
+ import dts from 'vite-plugin-dts';
244
+ import * as path from 'path';
245
+
246
+ export default defineConfig(() => ({
247
+ root: import.meta.dirname,
248
+ cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
249
+ plugins: [
250
+ dts({
251
+ entryRoot: 'src',
252
+ tsconfigPath: path.join(import.meta.dirname, 'tsconfig.lib.json'),
253
+ }),
254
+ ],
255
+ // Uncomment this if you are using workers.
256
+ // worker: {
257
+ // plugins: [],
258
+ // },
259
+ // Configuration for building your library.
260
+ // See: https://vite.dev/guide/build.html#library-mode
261
+ build: {
262
+ outDir: './dist',
263
+ emptyOutDir: true,
264
+ reportCompressedSize: true,
265
+ commonjsOptions: {
266
+ transformMixedEsModules: true,
267
+ },
268
+ lib: {
269
+ // Could also be a dictionary or array of multiple entry points.
270
+ entry: 'src/index.ts',
271
+ name: 'foo-bar-baz',
272
+ fileName: 'index',
273
+ // Change this to the formats you want to support.
274
+ // Don't forget to update your package.json as well.
275
+ formats: ['es' as const, 'cjs' as const],
276
+ },
277
+ rollupOptions: {
278
+ // External packages that should not be bundled into your library.
279
+ external: [],
280
+ },
281
+ },
282
+ test: {
283
+ passWithNoTests: true,
284
+ name: 'foo-bar-baz',
285
+ watch: false,
286
+ globals: true,
287
+ environment: 'node',
288
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
289
+ reporters: ['default'],
290
+ coverage: {
291
+ reportsDirectory: './test-output/vitest/coverage',
292
+ provider: 'v8' as const,
293
+ },
294
+ },
295
+ }));
296
+ "
297
+ `;
@@ -0,0 +1,4 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { PkgGeneratorSchema } from '../schema.d.ts';
3
+ export declare function tsPathsbased(tree: Tree, name: string, { path, publishable, buildable, env, preset }: PkgGeneratorSchema): Promise<void>;
4
+ //# sourceMappingURL=tsPathsBased.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsPathsBased.d.ts","sourceRoot":"","sources":["../../../../src/generators/pkg/lib/tsPathsBased.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAA+B,MAAM,YAAY,CAAC;AAMpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASzD,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBAuDlE"}
@@ -0,0 +1,54 @@
1
+ import { joinPathFragments, readJson } from '@nx/devkit';
2
+ import { libraryGenerator } from '@nx/js';
3
+ import { addPublishInfoToPackageJson } from "./util/addPublishInfoToPackageJson.js";
4
+ import { setJsTsOptions } from "./util/setJsTsOptions.js";
5
+ import { setNextTsOptions } from "./util/setNextTsOptions.js";
6
+ import { setReactTsOptions } from "./util/setReactTsOptions.js";
7
+ import { updateViteBuildFormats } from "./util/updateViteBuildFormats.js";
8
+ import { updateVitestConfig } from "./util/updateVitestConfig.js";
9
+ export async function tsPathsbased(tree, name, { path, publishable, buildable, env, preset }) {
10
+ if (publishable && !buildable) {
11
+ throw new Error('Publishable packages must be buildable');
12
+ }
13
+ const schema = {
14
+ name,
15
+ directory: path,
16
+ linter: 'eslint',
17
+ unitTestRunner: 'vitest',
18
+ strict: true,
19
+ bundler: publishable ? 'vite' : 'tsc',
20
+ minimal: !publishable,
21
+ publishable,
22
+ skipPackageJson: true,
23
+ useProjectJson: !publishable,
24
+ buildable,
25
+ };
26
+ if (publishable) {
27
+ const namespace = readJson(tree, 'package.json').name.split('/')[0];
28
+ if (!namespace) {
29
+ throw new Error('Namespace is not defined');
30
+ }
31
+ if (!namespace.startsWith('@')) {
32
+ throw new Error('Namespace must start with @');
33
+ }
34
+ schema.importPath = `${namespace}/${name}`;
35
+ }
36
+ await libraryGenerator(tree, schema);
37
+ await updateVitestConfig(tree, path, env);
38
+ if (preset === 'js') {
39
+ setJsTsOptions(tree, path);
40
+ }
41
+ if (preset === 'react') {
42
+ setReactTsOptions(tree, path);
43
+ }
44
+ if (preset === 'nextjs') {
45
+ setNextTsOptions(tree, path);
46
+ }
47
+ if (publishable) {
48
+ updateViteBuildFormats(tree, path);
49
+ addPublishInfoToPackageJson(tree, path);
50
+ }
51
+ else {
52
+ tree.delete(joinPathFragments(path, 'package.json'));
53
+ }
54
+ }
@@ -0,0 +1,4 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { PkgGeneratorSchema } from '../schema.d.ts';
3
+ export declare function tsReferenceBased(tree: Tree, name: string, { path, publishable, buildable, env, preset }: PkgGeneratorSchema): Promise<void>;
4
+ //# sourceMappingURL=tsReferenceBased.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsReferenceBased.d.ts","sourceRoot":"","sources":["../../../../src/generators/pkg/lib/tsReferenceBased.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAiC,MAAM,YAAY,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAUzD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBA4ElE"}
@@ -0,0 +1,62 @@
1
+ import { joinPathFragments, updateJson } from '@nx/devkit';
2
+ import { libraryGenerator } from '@nx/js';
3
+ import { addScopedLocalPackage } from "./util/addLocalPackage.js";
4
+ import { addPublishInfoToPackageJson } from "./util/addPublishInfoToPackageJson.js";
5
+ import { setJsTsOptions } from "./util/setJsTsOptions.js";
6
+ import { setNextTsOptions } from "./util/setNextTsOptions.js";
7
+ import { setReactTsOptions } from "./util/setReactTsOptions.js";
8
+ import { updateViteBuildFormats } from "./util/updateViteBuildFormats.js";
9
+ import { updateVitestConfig } from "./util/updateVitestConfig.js";
10
+ export async function tsReferenceBased(tree, name, { path, publishable, buildable, env, preset }) {
11
+ if (publishable && !buildable) {
12
+ throw new Error('Publishable packages must be buildable');
13
+ }
14
+ const schema = {
15
+ name,
16
+ directory: path,
17
+ linter: 'eslint',
18
+ unitTestRunner: 'vitest',
19
+ strict: true,
20
+ bundler: buildable ? 'vite' : 'none',
21
+ minimal: !publishable,
22
+ publishable,
23
+ skipPackageJson: false,
24
+ useProjectJson: false,
25
+ };
26
+ await libraryGenerator(tree, schema);
27
+ await updateVitestConfig(tree, path, env);
28
+ if (preset === 'js') {
29
+ setJsTsOptions(tree, path);
30
+ }
31
+ if (preset === 'react') {
32
+ setReactTsOptions(tree, path);
33
+ }
34
+ if (preset === 'nextjs') {
35
+ setNextTsOptions(tree, path);
36
+ }
37
+ if (publishable) {
38
+ // Update vite.config.ts to include both ES and CJS formats
39
+ updateViteBuildFormats(tree, path);
40
+ // Update package.json exports to include require field for cjs
41
+ updateJson(tree, joinPathFragments(path, 'package.json'), json => {
42
+ const dotExport = json.exports?.['.'];
43
+ if (typeof dotExport !== 'object' || dotExport === null) {
44
+ throw new Error('"." export is not an object in generated package.json');
45
+ }
46
+ if (!dotExport['types'] || !dotExport['import']) {
47
+ throw new Error('"exports" is missing required "types" or "import" fields');
48
+ }
49
+ // Remove `default` (if present) and add `require` for CJS.
50
+ // Keep the custom condition (e.g. @space-arch/source) first for correct resolution order.
51
+ const { default: _default, ...kept } = dotExport;
52
+ json.exports['.'] = {
53
+ ...kept,
54
+ require: './dist/index.cjs',
55
+ };
56
+ return json;
57
+ });
58
+ addPublishInfoToPackageJson(tree, path);
59
+ }
60
+ // do that in both cases
61
+ addScopedLocalPackage(tree, name);
62
+ }
@@ -0,0 +1,20 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export interface AddLocalPackageOptions {
3
+ packageName: string;
4
+ version?: string;
5
+ isDev?: boolean;
6
+ }
7
+ /**
8
+ * Adds a local package to the root package.json dependencies
9
+ * @param tree - The NX Tree instance
10
+ * @param options - Configuration options for adding the package
11
+ */
12
+ export declare function addLocalPackage(tree: Tree, options: AddLocalPackageOptions): void;
13
+ /**
14
+ * Adds a local package with the workspace scope automatically applied
15
+ * @param tree - The NX Tree instance
16
+ * @param packageName - The package name (without scope)
17
+ * @param isDev - Whether to add to devDependencies instead of dependencies
18
+ */
19
+ export declare function addScopedLocalPackage(tree: Tree, packageName: string, isDev?: boolean): void;
20
+ //# sourceMappingURL=addLocalPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addLocalPackage.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/addLocalPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAgBN;AAmBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,KAAK,UAAQ,GACZ,IAAI,CASN"}
@@ -0,0 +1,48 @@
1
+ import { readJson, updateJson } from '@nx/devkit';
2
+ /**
3
+ * Adds a local package to the root package.json dependencies
4
+ * @param tree - The NX Tree instance
5
+ * @param options - Configuration options for adding the package
6
+ */
7
+ export function addLocalPackage(tree, options) {
8
+ const { packageName, version = 'workspace:*', isDev = false } = options;
9
+ updateJson(tree, 'package.json', json => {
10
+ const dependencyKey = isDev ? 'devDependencies' : 'dependencies';
11
+ // Ensure the dependencies object exists
12
+ if (!json[dependencyKey]) {
13
+ json[dependencyKey] = {};
14
+ }
15
+ // Add the package with the specified version
16
+ json[dependencyKey][packageName] = version;
17
+ return json;
18
+ });
19
+ }
20
+ /**
21
+ * Extracts the scope from the root package.json name field
22
+ * @param tree - The NX Tree instance
23
+ * @returns The scope (e.g., '@space-arch') or null if no scope
24
+ */
25
+ function getWorkspaceScope(tree) {
26
+ const rootPackageJson = readJson(tree, 'package.json');
27
+ const packageName = rootPackageJson.name;
28
+ if (packageName && packageName.startsWith('@')) {
29
+ const scopeMatch = packageName.match(/^(@[^/]+)/);
30
+ return scopeMatch ? scopeMatch[1] : null;
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Adds a local package with the workspace scope automatically applied
36
+ * @param tree - The NX Tree instance
37
+ * @param packageName - The package name (without scope)
38
+ * @param isDev - Whether to add to devDependencies instead of dependencies
39
+ */
40
+ export function addScopedLocalPackage(tree, packageName, isDev = false) {
41
+ const scope = getWorkspaceScope(tree);
42
+ const fullPackageName = scope ? `${scope}/${packageName}` : packageName;
43
+ addLocalPackage(tree, {
44
+ packageName: fullPackageName,
45
+ version: 'workspace:*',
46
+ isDev,
47
+ });
48
+ }
@@ -0,0 +1,3 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export declare function addPublishInfoToPackageJson(tree: Tree, projectPath: string): void;
3
+ //# sourceMappingURL=addPublishInfoToPackageJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addPublishInfoToPackageJson.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/addPublishInfoToPackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAA2C,MAAM,YAAY,CAAC;AAehF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAuB1E"}
@@ -0,0 +1,33 @@
1
+ import { joinPathFragments, readJson, updateJson } from '@nx/devkit';
2
+ import { z } from 'zod';
3
+ const PackageJsonSchema = z.object({
4
+ repository: z.object({
5
+ type: z.string(),
6
+ url: z.string(),
7
+ directory: z.string(),
8
+ }),
9
+ homepage: z.string(),
10
+ bugs: z.record(z.string(), z.string()),
11
+ author: z.string(),
12
+ license: z.string(),
13
+ });
14
+ export function addPublishInfoToPackageJson(tree, projectPath) {
15
+ const packageJsonPath = joinPathFragments(projectPath, 'package.json');
16
+ const rootPackageJson = readJson(tree, 'package.json');
17
+ const { repository, homepage, bugs, author, license } = PackageJsonSchema.parse(rootPackageJson);
18
+ updateJson(tree, packageJsonPath, json => {
19
+ return Object.assign(json, {
20
+ publishConfig: {
21
+ access: 'public',
22
+ },
23
+ homepage,
24
+ bugs,
25
+ author,
26
+ license,
27
+ repository: {
28
+ ...repository,
29
+ directory: joinPathFragments(repository.directory, projectPath),
30
+ },
31
+ });
32
+ });
33
+ }
@@ -0,0 +1,7 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ /**
3
+ * Resolves the vite config file path, checking for `.mts` first then `.ts`.
4
+ * @returns The resolved path, or `null` if no vite config exists.
5
+ */
6
+ export declare function resolveViteConfigPath(tree: Tree, projectRoot: string): string | null;
7
+ //# sourceMappingURL=resolveViteConfigPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveViteConfigPath.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/resolveViteConfigPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,YAAY,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAMf"}
@@ -0,0 +1,13 @@
1
+ import { joinPathFragments } from '@nx/devkit';
2
+ /**
3
+ * Resolves the vite config file path, checking for `.mts` first then `.ts`.
4
+ * @returns The resolved path, or `null` if no vite config exists.
5
+ */
6
+ export function resolveViteConfigPath(tree, projectRoot) {
7
+ for (const ext of ['mts', 'ts']) {
8
+ const p = joinPathFragments(projectRoot, `vite.config.${ext}`);
9
+ if (tree.exists(p))
10
+ return p;
11
+ }
12
+ return null;
13
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ export declare function setJsTsOptions(tree: Tree, path: string): void;
3
+ //# sourceMappingURL=setJsTsOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setJsTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setJsTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAatD"}
@@ -0,0 +1,16 @@
1
+ import { updateArrayProperty } from "./updateArrayProperty.js";
2
+ import { updateTsConfigLibJson } from "./updateTsConfigLibJson.js";
3
+ import { updateTsConfigSpecJson } from "./updateTsConfigSpecJson.js";
4
+ export function setJsTsOptions(tree, path) {
5
+ updateTsConfigSpecJson(tree, path, json => {
6
+ json.compilerOptions.module = 'nodenext';
7
+ json.compilerOptions.moduleResolution = 'nodenext';
8
+ return json;
9
+ });
10
+ updateTsConfigLibJson(tree, path, json => {
11
+ json.compilerOptions.module = 'nodenext';
12
+ json.compilerOptions.moduleResolution = 'nodenext';
13
+ updateArrayProperty(json.compilerOptions, 'types', ['node', 'vite/client']);
14
+ return json;
15
+ });
16
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ export declare function setNextTsOptions(tree: Tree, path: string): void;
3
+ //# sourceMappingURL=setNextTsOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setNextTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setNextTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QASxD"}
@@ -0,0 +1,13 @@
1
+ import { setReactTsOptions } from "./setReactTsOptions.js";
2
+ import { updateArrayProperty } from "./updateArrayProperty.js";
3
+ import { updateTsConfigLibJson } from "./updateTsConfigLibJson.js";
4
+ export function setNextTsOptions(tree, path) {
5
+ setReactTsOptions(tree, path);
6
+ updateTsConfigLibJson(tree, path, json => {
7
+ updateArrayProperty(json.compilerOptions, 'types', [
8
+ 'next',
9
+ '@nx/next/typings/image.d.ts',
10
+ ]);
11
+ return json;
12
+ });
13
+ }
@@ -0,0 +1,3 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export declare function setReactTsOptions(tree: Tree, path: string): void;
3
+ //# sourceMappingURL=setReactTsOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setReactTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setReactTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,YAAY,CAAC;AAqB1D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAmDzD"}