@nestledjs/api 0.0.6 → 0.0.8

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 (102) hide show
  1. package/package.json +2 -2
  2. package/src/account/generator.d.ts +3 -0
  3. package/src/account/generator.js +19 -0
  4. package/src/account/generator.js.map +1 -0
  5. package/src/app/generator.d.ts +6 -0
  6. package/src/app/generator.js +96 -0
  7. package/src/app/generator.js.map +1 -0
  8. package/src/config/generator.d.ts +3 -0
  9. package/src/config/generator.js +18 -0
  10. package/src/config/generator.js.map +1 -0
  11. package/src/core/generator.d.ts +3 -0
  12. package/src/core/generator.js +31 -0
  13. package/src/core/generator.js.map +1 -0
  14. package/src/custom/generator.d.ts +24 -0
  15. package/src/custom/generator.js +199 -0
  16. package/src/custom/generator.js.map +1 -0
  17. package/src/custom/schema.d.ts +5 -0
  18. package/src/custom/schema.js +3 -0
  19. package/src/custom/schema.js.map +1 -0
  20. package/src/extended/generator.d.ts +3 -0
  21. package/src/extended/generator.js +136 -0
  22. package/src/extended/generator.js.map +1 -0
  23. package/src/extended/index.d.ts +1 -0
  24. package/src/extended/index.js +7 -0
  25. package/src/extended/index.js.map +1 -0
  26. package/src/extended/{schema.ts → schema.d.ts} +2 -2
  27. package/src/extended/schema.js +3 -0
  28. package/src/extended/schema.js.map +1 -0
  29. package/src/generate-crud/generator.d.ts +50 -0
  30. package/src/generate-crud/generator.js +296 -0
  31. package/src/generate-crud/generator.js.map +1 -0
  32. package/src/generate-crud/schema.d.ts +8 -0
  33. package/src/generate-crud/schema.js +3 -0
  34. package/src/generate-crud/schema.js.map +1 -0
  35. package/src/index.d.ts +13 -0
  36. package/src/index.js +17 -0
  37. package/src/index.js.map +1 -0
  38. package/src/plugin/generator.d.ts +3 -0
  39. package/src/plugin/generator.js +74 -0
  40. package/src/plugin/generator.js.map +1 -0
  41. package/src/plugin/{schema.ts → schema.d.ts} +3 -3
  42. package/src/plugin/schema.js +3 -0
  43. package/src/plugin/schema.js.map +1 -0
  44. package/src/prisma/generator.d.ts +3 -0
  45. package/src/prisma/generator.js +61 -0
  46. package/src/prisma/generator.js.map +1 -0
  47. package/src/setup/generator.d.ts +3 -0
  48. package/src/setup/generator.js +104 -0
  49. package/src/setup/generator.js.map +1 -0
  50. package/src/smtp-mailer/generator.d.ts +2 -0
  51. package/src/smtp-mailer/generator.js +17 -0
  52. package/src/smtp-mailer/generator.js.map +1 -0
  53. package/src/user/generator.d.ts +2 -0
  54. package/src/user/generator.js +18 -0
  55. package/src/user/generator.js.map +1 -0
  56. package/src/utils/generator.d.ts +2 -0
  57. package/src/utils/generator.js +17 -0
  58. package/src/utils/generator.js.map +1 -0
  59. package/src/workspace-setup/generator.d.ts +1 -0
  60. package/src/workspace-setup/generator.js +42 -0
  61. package/src/workspace-setup/generator.js.map +1 -0
  62. package/src/workspace-setup/lib/helpers.d.ts +16 -0
  63. package/src/workspace-setup/lib/helpers.js +164 -0
  64. package/src/workspace-setup/lib/helpers.js.map +1 -0
  65. package/eslint.config.cjs +0 -28
  66. package/project.json +0 -47
  67. package/src/account/generator.spec.ts +0 -71
  68. package/src/account/generator.ts +0 -20
  69. package/src/app/generator.spec.ts +0 -112
  70. package/src/app/generator.ts +0 -105
  71. package/src/config/generator.spec.ts +0 -47
  72. package/src/config/generator.ts +0 -16
  73. package/src/core/generator.spec.ts +0 -85
  74. package/src/core/generator.ts +0 -35
  75. package/src/custom/generator.spec.ts +0 -75
  76. package/src/custom/generator.ts +0 -239
  77. package/src/custom/schema.ts +0 -5
  78. package/src/extended/generator.spec.ts +0 -95
  79. package/src/extended/generator.ts +0 -161
  80. package/src/extended/index.ts +0 -1
  81. package/src/generate-crud/generator.spec.ts +0 -84
  82. package/src/generate-crud/generator.ts +0 -354
  83. package/src/generate-crud/schema.ts +0 -8
  84. package/src/index.ts +0 -13
  85. package/src/plugin/generator.spec.ts +0 -18
  86. package/src/plugin/generator.ts +0 -74
  87. package/src/prisma/generator.spec.ts +0 -60
  88. package/src/prisma/generator.ts +0 -61
  89. package/src/setup/generator.spec.ts +0 -18
  90. package/src/setup/generator.ts +0 -107
  91. package/src/smtp-mailer/generator.spec.ts +0 -41
  92. package/src/smtp-mailer/generator.ts +0 -14
  93. package/src/user/generator.spec.ts +0 -41
  94. package/src/user/generator.ts +0 -15
  95. package/src/utils/generator.ts +0 -14
  96. package/src/workspace-setup/generator.spec.ts +0 -85
  97. package/src/workspace-setup/generator.ts +0 -57
  98. package/src/workspace-setup/lib/helpers.ts +0 -149
  99. package/tsconfig.json +0 -16
  100. package/tsconfig.lib.json +0 -23
  101. package/tsconfig.spec.json +0 -22
  102. package/vite.config.mts +0 -31
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiSetupGenerator = apiSetupGenerator;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const utils_1 = require("@nestledjs/utils");
7
+ function ensureNpmrc(tree) {
8
+ const npmrcPath = '.npmrc';
9
+ const content = 'ignore-workspace-root-check=true\n';
10
+ tree.write(npmrcPath, content);
11
+ }
12
+ function apiSetupGenerator(tree) {
13
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ // Add dependencies
15
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {
16
+ '@nestjs/apollo': '^13.1.0',
17
+ '@nestjs/axios': '^4.0.0',
18
+ '@nestjs/common': '^11.1.3',
19
+ '@nestjs/config': '^4.0.2',
20
+ '@nestjs/core': '^11.1.3',
21
+ '@nestjs/graphql': '^13.1.0',
22
+ '@nestjs/jwt': '^11.0.0',
23
+ '@nestjs/passport': '^11.0.5',
24
+ '@nestjs/platform-express': '^11.1.3',
25
+ '@paljs/plugins': '^8.2.0',
26
+ axios: '^1.9.0',
27
+ bcryptjs: '^3.0.2',
28
+ express: '^5.1.0',
29
+ graphql: '^16.11.0',
30
+ 'graphql-query-complexity': '1.1.0',
31
+ 'graphql-scalars': '^1.24.2',
32
+ 'graphql-subscriptions': '^3.0.0',
33
+ 'graphql-ws': '^6.0.5',
34
+ joi: '^17.13.3',
35
+ nodemailer: '^7.0.3',
36
+ 'reflect-metadata': '^0.2.2',
37
+ rxjs: '^7.8.2',
38
+ 'type-graphql': '^2.0.0-rc.2',
39
+ 'graphql-fields': '^2.0.3',
40
+ 'class-validator': '^0.14.0',
41
+ 'class-transformer': '^0.5.1',
42
+ 'graphql-redis-subscriptions': '^2.7.0',
43
+ ioredis: '^5.6.1',
44
+ 'cookie-parser': '^1.4.7',
45
+ 'passport-jwt': '^4.0.1',
46
+ }, {
47
+ nx: '21.2.0',
48
+ '@nx/js': '21.2.0',
49
+ '@nx/nest': '21.2.0',
50
+ '@nx/node': '21.2.0',
51
+ '@nx/webpack': '21.2.0',
52
+ '@nestjs/schematics': '^11.0.5',
53
+ '@nestjs/testing': '^11.1.3',
54
+ '@prisma/extension-optimize': '2.0.0',
55
+ '@swc-node/register': '~1.10.10',
56
+ '@swc/cli': '~0.7.7',
57
+ '@swc/core': '~1.12.1',
58
+ '@types/cookie-parser': '^1.4.3',
59
+ '@types/express': '^5.0.3',
60
+ '@types/nodemailer': '^6.4.7',
61
+ '@types/passport-jwt': '^4.0.1',
62
+ '@types/node': '^24.0.1',
63
+ '@prisma/internals': '^6.9.0',
64
+ autoprefixer: '10.4.21',
65
+ jest: '^30.0.0',
66
+ 'jest-environment-node': '^30.0.0',
67
+ pg: '8.16.0',
68
+ prisma: '^6.9.0',
69
+ 'ts-node': '10.9.2',
70
+ yaml: '^2.4.2',
71
+ 'ts-loader': '^9.5.2',
72
+ 'webpack-cli': '^6.0.1',
73
+ 'webpack-node-externals': '^3.0.0',
74
+ 'tsconfig-paths-webpack-plugin': '^4.2.0',
75
+ 'prisma-graphql-type-decimal': '^3.0.1',
76
+ 'graphql-type-json': '^0.3.2',
77
+ });
78
+ // Update pnpm-workspace.yaml with build dependencies
79
+ const packagesToBuild = [
80
+ '@apollo/protobufjs',
81
+ '@parcel/watcher',
82
+ '@prisma/client',
83
+ '@prisma/extension-optimize',
84
+ '@prisma/engines',
85
+ 'esbuild',
86
+ 'nx',
87
+ 'prisma',
88
+ 'ioredis',
89
+ 'prisma-graphql-type-decimal',
90
+ '@nestjs/core',
91
+ 'type-graphql',
92
+ 'express',
93
+ 'unrs-resolver',
94
+ '@swc/core',
95
+ ];
96
+ (0, utils_1.updatePnpmWorkspaceConfig)(tree, { onlyBuiltDependencies: packagesToBuild });
97
+ // Ensure .npmrc exists with the required content
98
+ ensureNpmrc(tree);
99
+ // Return a callback that will run after the generator completes
100
+ return (0, utils_1.pnpmInstallCallback)();
101
+ });
102
+ }
103
+ exports.default = apiSetupGenerator;
104
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/setup/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { GeneratorCallback, Tree } from '@nx/devkit';
2
+ export default function generateLibraries(tree: Tree): Promise<GeneratorCallback>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = generateLibraries;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const utils_1 = require("@nestledjs/utils");
7
+ function generateLibraries(tree) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ const templateRootPath = (0, devkit_1.joinPathFragments)(__dirname, './files');
10
+ yield (0, utils_1.apiLibraryGenerator)(tree, { name: 'smtp-mailer' }, templateRootPath, 'data-access');
11
+ yield (0, devkit_1.formatFiles)(tree);
12
+ return () => {
13
+ (0, devkit_1.installPackagesTask)(tree);
14
+ };
15
+ });
16
+ }
17
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/smtp-mailer/generator.ts"],"names":[],"mappings":";;AAGA,oCAUC;;AAbD,uCAAyG;AACzG,4CAAsD;AAEtD,SAA8B,iBAAiB,CAAC,IAAU;;QACxD,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAEhE,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;QAEzF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ import { GeneratorCallback, Tree } from '@nx/devkit';
2
+ export default function generateLibraries(tree: Tree): Promise<GeneratorCallback>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = generateLibraries;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const utils_1 = require("@nestledjs/utils");
7
+ function generateLibraries(tree) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ const templateRootPath = (0, devkit_1.joinPathFragments)(__dirname, './files');
10
+ yield (0, utils_1.apiLibraryGenerator)(tree, { name: 'user' }, templateRootPath, 'data-access');
11
+ yield (0, utils_1.apiLibraryGenerator)(tree, { name: 'user' }, templateRootPath, 'feature', true);
12
+ yield (0, devkit_1.formatFiles)(tree);
13
+ return () => {
14
+ (0, devkit_1.installPackagesTask)(tree);
15
+ };
16
+ });
17
+ }
18
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/user/generator.ts"],"names":[],"mappings":";;AAGA,oCAWC;;AAdD,uCAAyG;AACzG,4CAAsD;AAEtD,SAA8B,iBAAiB,CAAC,IAAU;;QACxD,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAEhE,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;QAClF,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAEpF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function generator(tree: Tree): Promise<void>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = generator;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const utils_1 = require("@nestledjs/utils");
7
+ function generator(tree) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ const templateRootPath = (0, devkit_1.joinPathFragments)(__dirname, './files');
10
+ const overwrite = false;
11
+ yield (0, utils_1.apiLibraryGenerator)(tree, { name: 'utils', overwrite }, templateRootPath, '', false);
12
+ // Remove the default module file if it exists
13
+ (0, utils_1.deleteFiles)(tree, ['libs/api/utils/src/lib/api-utils.module.ts']);
14
+ yield (0, devkit_1.formatFiles)(tree);
15
+ });
16
+ }
17
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/utils/generator.ts"],"names":[],"mappings":";;AAGA,4BAUC;;AAbD,uCAAiE;AACjE,4CAAmE;AAEnE,SAA8B,SAAS,CAAC,IAAU;;QAChD,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAChE,MAAM,SAAS,GAAG,KAAK,CAAA;QAEvB,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;QAE1F,8CAA8C;QAC9C,IAAA,mBAAW,EAAC,IAAI,EAAE,CAAC,4CAA4C,CAAC,CAAC,CAAA;QAEjE,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;IACzB,CAAC;CAAA"}
@@ -0,0 +1 @@
1
+ export default function (): Promise<void>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const tslib_1 = require("tslib");
5
+ require('dotenv').config();
6
+ const helpers_1 = require("./lib/helpers");
7
+ function default_1() {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ (0, helpers_1.log)('Setting up workspace');
10
+ (0, helpers_1.ensureDotEnv)();
11
+ require('dotenv').config();
12
+ const DATABASE_URL = process.env.DATABASE_URL;
13
+ if (!DATABASE_URL) {
14
+ throw new Error('Please provide DATABASE_URL env var');
15
+ }
16
+ if (!DATABASE_URL.includes('localhost')) {
17
+ throw new Error(`Refusing to connect to non-local database: ${DATABASE_URL}`);
18
+ }
19
+ (0, helpers_1.ensureDockerIsRunning)();
20
+ const connected = yield (0, helpers_1.canConnect)(DATABASE_URL);
21
+ if (!connected) {
22
+ yield (0, helpers_1.ensureDockerComposeIsRunning)();
23
+ // Extra safety delay — DB might show "healthy" before accepting connections
24
+ yield (0, helpers_1.sleep)(2000);
25
+ }
26
+ try {
27
+ (0, helpers_1.log)('Applying Prisma migrations...');
28
+ (0, helpers_1.runPrismaSetup)();
29
+ yield (0, helpers_1.sleep)(2000);
30
+ (0, helpers_1.log)('Generating GraphQL types from Prisma schema...');
31
+ (0, helpers_1.runGraphQLTypeGeneration)();
32
+ (0, helpers_1.log)('Seeding database...');
33
+ (0, helpers_1.runPrismaSeed)();
34
+ (0, helpers_1.log)('✅ Workspace setup complete');
35
+ }
36
+ catch (error) {
37
+ console.error('❌ Error during workspace setup:', error.message);
38
+ process.exit(1);
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/workspace-setup/generator.ts"],"names":[],"mappings":";;AAaA,4BA2CC;;AAxDD,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAC1B,2CAUsB;AAEtB;;QACE,IAAA,aAAG,EAAC,sBAAsB,CAAC,CAAA;QAE3B,IAAA,sBAAY,GAAE,CAAA;QACd,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;QAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,EAAE,CAAC,CAAA;QAC/E,CAAC;QAED,IAAA,+BAAqB,GAAE,CAAA;QAEvB,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAU,EAAC,YAAY,CAAC,CAAA;QAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAA,sCAA4B,GAAE,CAAA;YACpC,4EAA4E;YAC5E,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,IAAI,CAAC;YACH,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAA;YACpC,IAAA,wBAAc,GAAE,CAAA;YAEhB,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAA;YAEjB,IAAA,aAAG,EAAC,gDAAgD,CAAC,CAAA;YACrD,IAAA,kCAAwB,GAAE,CAAA;YAE1B,IAAA,aAAG,EAAC,qBAAqB,CAAC,CAAA;YAC1B,IAAA,uBAAa,GAAE,CAAA;YAEf,IAAA,aAAG,EAAC,4BAA4B,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Client } from 'pg';
2
+ export declare const MAX_RETRIES = 30;
3
+ export declare const WORKSPACE_NAME: string;
4
+ export declare const DATABASE_URL: string;
5
+ export declare const DOCKER_COMPOSE_FILE = ".dev/docker-compose.yml";
6
+ export declare function log(...msg: any[]): void;
7
+ export declare function connectToPostgres(url: string): Promise<Client>;
8
+ export declare function canConnect(url: string): Promise<boolean>;
9
+ export declare function ensureDockerIsRunning(): boolean;
10
+ export declare function isDockerComposeRunning(): boolean;
11
+ export declare function ensureDockerComposeIsRunning(): Promise<boolean>;
12
+ export declare function ensureDotEnv(): void;
13
+ export declare function runPrismaSetup(): boolean;
14
+ export declare function runPrismaSeed(): boolean;
15
+ export declare function runGraphQLTypeGeneration(): boolean;
16
+ export declare const sleep: (ms?: number) => Promise<unknown>;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = exports.DOCKER_COMPOSE_FILE = exports.DATABASE_URL = exports.WORKSPACE_NAME = exports.MAX_RETRIES = void 0;
4
+ exports.log = log;
5
+ exports.connectToPostgres = connectToPostgres;
6
+ exports.canConnect = canConnect;
7
+ exports.ensureDockerIsRunning = ensureDockerIsRunning;
8
+ exports.isDockerComposeRunning = isDockerComposeRunning;
9
+ exports.ensureDockerComposeIsRunning = ensureDockerComposeIsRunning;
10
+ exports.ensureDotEnv = ensureDotEnv;
11
+ exports.runPrismaSetup = runPrismaSetup;
12
+ exports.runPrismaSeed = runPrismaSeed;
13
+ exports.runGraphQLTypeGeneration = runGraphQLTypeGeneration;
14
+ const tslib_1 = require("tslib");
15
+ const child_process_1 = require("child_process");
16
+ const fs_1 = require("fs");
17
+ const path_1 = require("path");
18
+ const pg_1 = require("pg");
19
+ const devkit_1 = require("@nx/devkit");
20
+ exports.MAX_RETRIES = 30;
21
+ exports.WORKSPACE_NAME = (0, path_1.basename)(process.cwd());
22
+ exports.DATABASE_URL = process.env.DATABASE_URL;
23
+ exports.DOCKER_COMPOSE_FILE = '.dev/docker-compose.yml';
24
+ function log(...msg) {
25
+ console.log(`[${exports.WORKSPACE_NAME}]`, ...msg);
26
+ }
27
+ function connectToPostgres(url) {
28
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
29
+ const client = new pg_1.Client(url);
30
+ yield client.connect();
31
+ return client;
32
+ });
33
+ }
34
+ function canConnect(url) {
35
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
+ try {
37
+ yield connectToPostgres(url);
38
+ log('Connected to Postgres');
39
+ return true;
40
+ }
41
+ catch (_a) {
42
+ return false;
43
+ }
44
+ });
45
+ }
46
+ function ensureDockerIsRunning() {
47
+ try {
48
+ (0, child_process_1.execSync)('docker ps', { stdio: 'ignore' });
49
+ log('Docker is Up');
50
+ return true;
51
+ }
52
+ catch (_a) {
53
+ throw new Error(`Make sure Docker is running, then run this again`);
54
+ }
55
+ }
56
+ function isDockerComposeRunning() {
57
+ try {
58
+ const res = (0, child_process_1.execSync)('pnpm run docker:ps', { stdio: ['inherit', 'inherit'], cwd: devkit_1.workspaceRoot });
59
+ if (res) {
60
+ log('Docker Compose is Running');
61
+ return true;
62
+ }
63
+ return false;
64
+ }
65
+ catch (_a) {
66
+ return false;
67
+ }
68
+ }
69
+ function ensureDockerComposeIsRunning() {
70
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
71
+ const isRunning = isDockerComposeRunning();
72
+ if (isRunning) {
73
+ log('Docker Compose already running');
74
+ return true;
75
+ }
76
+ log('Starting Docker Compose...');
77
+ try {
78
+ (0, child_process_1.execSync)('pnpm run docker:up', { stdio: 'inherit', cwd: devkit_1.workspaceRoot });
79
+ }
80
+ catch (e) {
81
+ throw new Error(`Failed to start Docker Compose: ${e.message}`);
82
+ }
83
+ try {
84
+ yield waitForConnection();
85
+ log('Docker Compose Started and DB connection confirmed');
86
+ }
87
+ catch (_a) {
88
+ (0, child_process_1.execSync)('pnpm run docker:logs', { stdio: 'inherit', cwd: devkit_1.workspaceRoot });
89
+ throw new Error(`Database failed to start or respond in time`);
90
+ }
91
+ });
92
+ }
93
+ function ensureDotEnv() {
94
+ try {
95
+ if (!(0, fs_1.existsSync)('.env')) {
96
+ (0, fs_1.writeFileSync)('.env', (0, fs_1.readFileSync)('.env.example'));
97
+ log('.env created (copied from .env.example)');
98
+ }
99
+ else {
100
+ log('.env exists');
101
+ }
102
+ }
103
+ catch (_a) {
104
+ throw new Error(`Error creating or reading.env file`);
105
+ }
106
+ }
107
+ function runPrismaSetup() {
108
+ try {
109
+ (0, child_process_1.execSync)('pnpm prisma:apply', { stdio: 'inherit', cwd: devkit_1.workspaceRoot });
110
+ log('Prisma Setup is Done');
111
+ return true;
112
+ }
113
+ catch (e) {
114
+ (0, child_process_1.execSync)('pnpm run docker:logs', { stdio: 'inherit', cwd: devkit_1.workspaceRoot });
115
+ throw new Error(`There was an issue running 'pnpm prisma:apply': ${e.message}`);
116
+ }
117
+ }
118
+ function runPrismaSeed() {
119
+ try {
120
+ (0, child_process_1.execSync)('npx prisma db seed -- --confirm --timeout 0', { stdio: 'inherit' });
121
+ log('Prisma Seed is Done');
122
+ return true;
123
+ }
124
+ catch (e) {
125
+ console.error('Prisma Seed Error:', e.message);
126
+ throw new Error(`There was an issue running 'pnpm prisma:seed': ${e.message}`);
127
+ }
128
+ }
129
+ function runGraphQLTypeGeneration() {
130
+ try {
131
+ (0, child_process_1.execSync)('pnpm generate:models', { stdio: 'inherit' });
132
+ log('GraphQL types generation is done');
133
+ return true;
134
+ }
135
+ catch (e) {
136
+ console.error('GraphQL types generation error:', e.message);
137
+ throw new Error(`There was an issue running 'pnpm generate:models': ${e.message}`);
138
+ }
139
+ }
140
+ const sleep = (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
141
+ exports.sleep = sleep;
142
+ function waitForConnection() {
143
+ log('Waiting for Postgres to connect');
144
+ return new Promise((resolve, reject) => {
145
+ let count = 0;
146
+ function tryConnect() {
147
+ if (count >= exports.MAX_RETRIES) {
148
+ reject();
149
+ return;
150
+ }
151
+ canConnect(exports.DATABASE_URL).then((isConnected) => {
152
+ if (isConnected) {
153
+ resolve();
154
+ }
155
+ else {
156
+ count++;
157
+ (0, exports.sleep)().then(tryConnect);
158
+ }
159
+ });
160
+ }
161
+ tryConnect();
162
+ });
163
+ }
164
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../generators/api/src/workspace-setup/lib/helpers.ts"],"names":[],"mappings":"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"}
package/eslint.config.cjs DELETED
@@ -1,28 +0,0 @@
1
- const baseConfig = require('../../eslint.config.js')
2
-
3
- module.exports = [
4
- ...baseConfig,
5
- {
6
- files: ['**/*.json'],
7
- rules: {
8
- '@nx/dependency-checks': [
9
- 'error',
10
- {
11
- ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs}', '{projectRoot}/vite.config.{js,ts,mjs,mts}'],
12
- },
13
- ],
14
- },
15
- languageOptions: {
16
- parser: require('jsonc-eslint-parser'),
17
- },
18
- },
19
- {
20
- files: ['**/package.json'],
21
- rules: {
22
- '@nx/nx-plugin-checks': 'error',
23
- },
24
- languageOptions: {
25
- parser: require('jsonc-eslint-parser'),
26
- },
27
- },
28
- ]
package/project.json DELETED
@@ -1,47 +0,0 @@
1
- {
2
- "name": "api",
3
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "generators/api/src",
5
- "projectType": "library",
6
- "tags": [],
7
- "publishable": true,
8
- "targets": {
9
- "build": {
10
- "executor": "@nx/js:tsc",
11
- "outputs": ["{options.outputPath}"],
12
- "options": {
13
- "outputPath": "dist/generators/api",
14
- "main": "generators/api/src/index.ts",
15
- "tsConfig": "generators/api/tsconfig.lib.json",
16
- "assets": [
17
- "generators/api/*.md",
18
- {
19
- "input": "./generators/api/src",
20
- "glob": "**/!(*.ts)",
21
- "output": "./src"
22
- },
23
- {
24
- "input": "./generators/api/src",
25
- "glob": "**/*.d.ts",
26
- "output": "./src"
27
- },
28
- {
29
- "input": "./generators/api",
30
- "glob": "generators.json",
31
- "output": "."
32
- },
33
- {
34
- "input": "./generators/api",
35
- "glob": "executors.json",
36
- "output": "."
37
- },
38
- {
39
- "input": "./generators/api/src",
40
- "glob": "*/files/**/*",
41
- "output": "./src"
42
- }
43
- ]
44
- }
45
- }
46
- }
47
- }
@@ -1,71 +0,0 @@
1
- import { formatFiles, installPackagesTask, Tree } from '@nx/devkit'
2
- import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'
3
- import { describe, expect, it, vi } from 'vitest'
4
- import { apiLibraryGenerator } from '@nestledjs/utils'
5
-
6
- import generator from './generator'
7
-
8
- vi.mock('@nestledjs/utils', async () => {
9
- const actual = await vi.importActual('@nestledjs/utils')
10
- return {
11
- ...actual,
12
- apiLibraryGenerator: vi.fn(),
13
- }
14
- })
15
-
16
- vi.mock('@nx/devkit', async () => {
17
- const actual = await vi.importActual('@nx/devkit')
18
- return {
19
- ...actual,
20
- formatFiles: vi.fn(),
21
- installPackagesTask: vi.fn(),
22
- }
23
- })
24
-
25
- describe('account generator', () => {
26
- let tree: Tree
27
-
28
- beforeEach(() => {
29
- tree = createTreeWithEmptyWorkspace()
30
- })
31
-
32
- it('should run successfully', async () => {
33
- const callback = await generator(tree)
34
- callback()
35
-
36
- expect(apiLibraryGenerator).toHaveBeenCalledWith(
37
- tree,
38
- { name: 'account', overwrite: false },
39
- expect.any(String),
40
- 'data-access',
41
- )
42
- expect(apiLibraryGenerator).toHaveBeenCalledWith(
43
- tree,
44
- { name: 'account', overwrite: false },
45
- expect.any(String),
46
- 'feature',
47
- true,
48
- )
49
- expect(formatFiles).toHaveBeenCalledWith(tree)
50
- expect(installPackagesTask).toHaveBeenCalledWith(tree)
51
- })
52
-
53
- it('should pass overwrite flag to apiLibraryGenerator when overwrite is true', async () => {
54
- const callback = await generator(tree, { overwrite: true })
55
- callback()
56
-
57
- expect(apiLibraryGenerator).toHaveBeenCalledWith(
58
- tree,
59
- { name: 'account', overwrite: true },
60
- expect.any(String),
61
- 'data-access',
62
- )
63
- expect(apiLibraryGenerator).toHaveBeenCalledWith(
64
- tree,
65
- { name: 'account', overwrite: true },
66
- expect.any(String),
67
- 'feature',
68
- true,
69
- )
70
- })
71
- })
@@ -1,20 +0,0 @@
1
- import { formatFiles, GeneratorCallback, installPackagesTask, joinPathFragments, Tree } from '@nx/devkit'
2
- import { apiLibraryGenerator } from '@nestledjs/utils'
3
- import { ApiAccountGeneratorSchema } from './schema'
4
-
5
- export default async function generateLibraries(
6
- tree: Tree,
7
- options: ApiAccountGeneratorSchema = {},
8
- ): Promise<GeneratorCallback> {
9
- const templateRootPath = joinPathFragments(__dirname, './files')
10
- const overwrite = options.overwrite === true
11
-
12
- await apiLibraryGenerator(tree, { name: 'account', overwrite }, templateRootPath, 'data-access')
13
- await apiLibraryGenerator(tree, { name: 'account', overwrite }, templateRootPath, 'feature', true)
14
-
15
- await formatFiles(tree)
16
-
17
- return () => {
18
- installPackagesTask(tree)
19
- }
20
- }