@postxl/generators 1.2.0 → 1.2.3
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.
- package/dist/backend-core/backend.generator.js +4 -1
- package/dist/backend-core/backend.generator.js.map +1 -1
- package/dist/backend-core/generators/jest.config.generator.d.ts +2 -0
- package/dist/backend-core/{template/jest.config.ts → generators/jest.config.generator.js} +12 -8
- package/dist/backend-core/generators/jest.config.generator.js.map +1 -0
- package/dist/backend-core/generators/tsconfig.generator.d.ts +1 -1
- package/dist/backend-core/generators/tsconfig.generator.js +1 -9
- package/dist/backend-core/generators/tsconfig.generator.js.map +1 -1
- package/dist/backend-core/types.d.ts +2 -0
- package/dist/base/base.generator.js +12 -9
- package/dist/base/base.generator.js.map +1 -1
- package/dist/base/template/README.md +8 -18
- package/dist/devops/generators/e2e-yml.generator.js +1 -1
- package/dist/devops/template/.github/workflows/test.yml +1 -1
- package/dist/e2e/template/e2e/package.json +1 -1
- package/dist/e2e/template/e2e/specs/example.spec.ts +1 -1
- package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
- package/dist/frontend-core/frontend.generator.js +5 -3
- package/dist/frontend-core/frontend.generator.js.map +1 -1
- package/dist/frontend-core/generators/tsconfig.generator.js +2 -0
- package/dist/frontend-core/generators/tsconfig.generator.js.map +1 -1
- package/dist/frontend-core/template/README.md +3 -11
- package/dist/frontend-core/template/src/lib/query-client.ts +45 -4
- package/dist/frontend-core/template/src/pages/error/default-error.page.tsx +45 -12
- package/dist/frontend-core/template/vite.config.ts +21 -2
- package/package.json +2 -2
- package/dist/base/template/.nvmrc +0 -1
- package/dist/e2e/generators/package-json.generator.d.ts +0 -2
- package/dist/e2e/generators/package-json.generator.js +0 -29
- package/dist/e2e/generators/package-json.generator.js.map +0 -1
|
@@ -39,6 +39,7 @@ const Generator = __importStar(require("@postxl/generator"));
|
|
|
39
39
|
const api_config_generator_1 = require("./generators/api-config.generator");
|
|
40
40
|
const api_module_generator_1 = require("./generators/api-module.generator");
|
|
41
41
|
const dotenv_example_generator_1 = require("./generators/dotenv-example.generator");
|
|
42
|
+
const jest_config_generator_1 = require("./generators/jest.config.generator");
|
|
42
43
|
const main_generator_1 = require("./generators/main.generator");
|
|
43
44
|
const tsconfig_generator_1 = require("./generators/tsconfig.generator");
|
|
44
45
|
const baseDependencies = [
|
|
@@ -49,7 +50,7 @@ const baseDependencies = [
|
|
|
49
50
|
{ packageName: '@nestjs/core', version: '11.1.9' },
|
|
50
51
|
{ packageName: '@nestjs/platform-fastify', version: '11.1.9' },
|
|
51
52
|
{ packageName: '@nestjs/schematics', version: '11.0.9' },
|
|
52
|
-
{ packageName: '@postxl/utils'
|
|
53
|
+
{ packageName: Generator.toPostXlPackageName('@postxl/utils') },
|
|
53
54
|
{ packageName: 'colors', version: '1.4.0' },
|
|
54
55
|
{ packageName: 'jsonwebtoken', version: '9.0.3' },
|
|
55
56
|
{ packageName: 'jwks-rsa', version: '3.2.0' },
|
|
@@ -107,6 +108,7 @@ exports.backendGenerator = {
|
|
|
107
108
|
dependencies: baseDependencies,
|
|
108
109
|
devDependencies: baseDevDependencies,
|
|
109
110
|
scripts: baseScripts,
|
|
111
|
+
isInPostXlWorkspace: context.schema.projectType === 'workspace',
|
|
110
112
|
},
|
|
111
113
|
tsConfigReferences: ['utils'],
|
|
112
114
|
};
|
|
@@ -131,6 +133,7 @@ exports.backendGenerator = {
|
|
|
131
133
|
// write dynamic files
|
|
132
134
|
vfs.write('/package.json', Generator.generatePackageJson(ctx.backend.packageJson));
|
|
133
135
|
vfs.write('/tsconfig.json', (0, tsconfig_generator_1.generateTsConfig)(ctx));
|
|
136
|
+
vfs.write('/jest.config.ts', (0, jest_config_generator_1.generateJestConfig)(ctx));
|
|
134
137
|
vfs.write('/apps/api/src/api.module.ts', (0, api_module_generator_1.generateApiModule)(ctx));
|
|
135
138
|
vfs.write('/apps/api/src/main.ts', (0, main_generator_1.generateMain)(ctx));
|
|
136
139
|
vfs.write('/apps/api/src/api.config.ts', (0, api_config_generator_1.generateApiConfig)(ctx));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.generator.js","sourceRoot":"","sources":["../../src/backend-core/backend.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AAEjC,6DAA8C;AAE9C,4EAAqE;AACrE,4EAAqE;AACrE,oFAA6E;AAC7E,gEAA0D;AAC1D,wEAAkE;AAGlE,MAAM,gBAAgB,GAAkC;IACtD,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;IACnD,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACpD,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE;IAClD,EAAE,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9D,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACxD,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"backend.generator.js","sourceRoot":"","sources":["../../src/backend-core/backend.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AAEjC,6DAA8C;AAE9C,4EAAqE;AACrE,4EAAqE;AACrE,oFAA6E;AAC7E,8EAAuE;AACvE,gEAA0D;AAC1D,wEAAkE;AAGlE,MAAM,gBAAgB,GAAkC;IACtD,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;IACnD,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACpD,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE;IAClD,EAAE,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9D,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACxD,EAAE,WAAW,EAAE,SAAS,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;IAC/D,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3C,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;IACjD,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IAC7C,8FAA8F;IAC9F,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;IACpD,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;IAC1C,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE;CAC1D,CAAA;AACD,MAAM,mBAAmB,GAAkC;IACzD,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5C,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5C,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE;IACtD,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;IACnD,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE;IAClD,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE;IACnD,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;IACjD,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC1C,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7C,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE;IACnD,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/C,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;CAC/C,CAAA;AAED,MAAM,WAAW,GAA8B;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE;IACxC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,2CAA2C,EAAE;IACvE;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,oGAAoG;KAC9G;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,mGAAmG;KAC7G;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,mGAAmG;KAC7G;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,kGAAkG;KAC5G;IACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;IACrC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE;CAChD,CAAA;AAEY,QAAA,kBAAkB,GAAG,SAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAErE,QAAA,gBAAgB,GAAiC;IAC5D,EAAE,EAAE,0BAAkB;IAEtB,QAAQ,EAAE,CAAC,OAA4B,EAAE,EAAE;QACzC,MAAM,OAAO,GAAwB;YACnC,OAAO,EAAE,EAAE;YACX,WAAW,EAAE;gBACX,IAAI,EAAE,SAAS,CAAC,mBAAmB,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;gBACzE,WAAW,EAAE,eAAe,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU;gBACzD,YAAY,EAAE,gBAAgB;gBAC9B,eAAe,EAAE,mBAAmB;gBACpC,OAAO,EAAE,WAAW;gBACpB,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW;aAChE;YACD,kBAAkB,EAAE,CAAC,OAAO,CAAC;SAC9B,CAAA;QACD,OAAO;YACL,GAAG,OAAO;YACV,OAAO;SACR,CAAA;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,EAAqC,GAAyB,EAAE,EAAE;QAC/E,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAE7C,oBAAoB;QACpB,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC;YAC/C,iDAAiD;YACjD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAA;QAEF,2BAA2B;QAC3B,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;YAC1D,UAAU,EAAE,YAAY;SACzB,CAAC,CAAA;QAEF,sBAAsB;QACtB,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAClF,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAA,qCAAgB,EAAC,GAAG,CAAC,CAAC,CAAA;QAClD,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAA,0CAAkB,EAAC,GAAG,CAAC,CAAC,CAAA;QACrD,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAA,wCAAiB,EAAC,GAAG,CAAC,CAAC,CAAA;QAChE,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAA,6BAAY,EAAC,GAAG,CAAC,CAAC,CAAA;QACrD,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAA,wCAAiB,EAAC,GAAG,CAAC,CAAC,CAAA;QAEhE,MAAM,GAAG,GAAG,IAAA,gDAAqB,EAAC,GAAG,CAAC,CAAA;QACtC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAA;QACxC,mGAAmG;QACnG,oGAAoG;QACpG,mBAAmB;QACnB,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QAEhC,0BAA0B;QAC1B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QACtD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF,CAAA"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateJestConfig = generateJestConfig;
|
|
4
|
+
function generateJestConfig({ schema }) {
|
|
5
|
+
return /* ts */ `
|
|
1
6
|
import type { Config } from 'jest'
|
|
2
7
|
|
|
3
8
|
import { pathsToModuleNameMapper } from 'ts-jest'
|
|
@@ -8,15 +13,12 @@ const config: Config = {
|
|
|
8
13
|
displayName: 'backend',
|
|
9
14
|
moduleFileExtensions: ['js', 'json', 'ts'],
|
|
10
15
|
rootDir: '.',
|
|
11
|
-
testRegex: '
|
|
16
|
+
testRegex: '.*\\\\.test\\\\.ts$',
|
|
12
17
|
transform: {
|
|
13
|
-
'
|
|
18
|
+
'^.+\\\\.(t|j)s$': 'ts-jest',
|
|
14
19
|
},
|
|
15
20
|
testEnvironment: 'node',
|
|
16
|
-
roots: [
|
|
17
|
-
//'<rootDir>/libs/',
|
|
18
|
-
'<rootDir>/apps/',
|
|
19
|
-
],
|
|
21
|
+
roots: ['<rootDir>/libs/', '<rootDir>/apps/'],
|
|
20
22
|
moduleNameMapper: pathsToModuleNameMapper(tsconfig.compilerOptions.paths, {
|
|
21
23
|
prefix: '<rootDir>/',
|
|
22
24
|
}),
|
|
@@ -29,11 +31,13 @@ const config: Config = {
|
|
|
29
31
|
// the project root. Without this, Sonar not be able to map the coverage to
|
|
30
32
|
// the right files in case different packages have the same relative path.
|
|
31
33
|
// This setting does not work on Windows - however, we only need it for the CI
|
|
32
|
-
projectRoot: '../../../../',
|
|
34
|
+
projectRoot: '${schema.projectType === 'workspace' ? '../../../../' : '../../'}',
|
|
33
35
|
},
|
|
34
36
|
],
|
|
35
37
|
'html',
|
|
36
38
|
],
|
|
37
39
|
}
|
|
38
40
|
|
|
39
|
-
export default config
|
|
41
|
+
export default config`;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=jest.config.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.config.generator.js","sourceRoot":"","sources":["../../../src/backend-core/generators/jest.config.generator.ts"],"names":[],"mappings":";;AAEA,gDAsCC;AAtCD,SAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAe;IACxD,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA6BM,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ;;;;;;;sBAOhE,CAAA;AACtB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { WithBackend } from '../types';
|
|
2
|
-
export declare function generateTsConfig({ backend: { modules,
|
|
2
|
+
export declare function generateTsConfig({ backend: { modules, tsConfigReferences } }: WithBackend): string;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateTsConfig = generateTsConfig;
|
|
4
|
-
|
|
5
|
-
function generateTsConfig({ backend: { modules, packageJson, tsConfigReferences } }) {
|
|
4
|
+
function generateTsConfig({ backend: { modules, tsConfigReferences } }) {
|
|
6
5
|
const paths = [];
|
|
7
6
|
for (const m of modules) {
|
|
8
7
|
paths.push(`"@${m.name}/*": ["./libs/${m.name}/src/*"]`, `"@${m.name}": ["./libs/${m.name}/src"]`);
|
|
@@ -10,13 +9,6 @@ function generateTsConfig({ backend: { modules, packageJson, tsConfigReferences
|
|
|
10
9
|
for (const reference of tsConfigReferences) {
|
|
11
10
|
paths.push(`"@${reference}/*": ["./libs/${reference}/src/*"]`, `"@${reference}": ["./libs/${reference}/src"]`);
|
|
12
11
|
}
|
|
13
|
-
for (const d of packageJson.dependencies) {
|
|
14
|
-
if (!(0, generator_1.isLocalProjectDependency)(d)) {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
const relativePath = (0, generator_1.getRelativePath)({ from: './backend/', to: d.path });
|
|
18
|
-
paths.push(`"${d.backendModuleName}/*": ["${relativePath}*"]`, `"${d.backendModuleName}": ["${relativePath}"]`);
|
|
19
|
-
}
|
|
20
12
|
return /*json*/ `
|
|
21
13
|
{
|
|
22
14
|
"ts-node": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/backend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/backend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;AAEA,4CAiDC;AAjDD,SAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAe;IACxF,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAA;IACpG,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,iBAAiB,SAAS,UAAU,EAAE,KAAK,SAAS,eAAe,SAAS,QAAQ,CAAC,CAAA;IAChH,CAAC;IAED,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkCV,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;CAI/D,CAAA;AACD,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as Generator from '@postxl/generator';
|
|
2
|
+
import { WithBase } from '../base';
|
|
3
|
+
export type ContextRequirements = WithBase<Generator.Context>;
|
|
2
4
|
export type WithBackend<Context extends Generator.Context = Generator.Context> = Generator.ExtendContext<Context, {
|
|
3
5
|
/**
|
|
4
6
|
* The global configuration for the NestJS generator.
|
|
@@ -36,12 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.baseGenerator = exports.baseGeneratorId = void 0;
|
|
37
37
|
const path = __importStar(require("node:path"));
|
|
38
38
|
const Generator = __importStar(require("@postxl/generator"));
|
|
39
|
-
const
|
|
39
|
+
const devDependencies = [
|
|
40
|
+
{ packageName: Generator.toPostXlPackageName('@postxl/cli') },
|
|
40
41
|
{ packageName: Generator.toPostXlPackageName('@postxl/generator') },
|
|
41
42
|
{ packageName: Generator.toPostXlPackageName('@postxl/generators') },
|
|
42
43
|
{ packageName: Generator.toPostXlPackageName('@postxl/schema') },
|
|
43
|
-
];
|
|
44
|
-
const baseDevDependencies = [
|
|
45
44
|
{ packageName: '@dotenvx/dotenvx', version: '1.51.2' },
|
|
46
45
|
{ packageName: '@eslint/eslintrc', version: '3.3.3' },
|
|
47
46
|
{ packageName: '@eslint/js', version: '9.39.2' },
|
|
@@ -60,20 +59,24 @@ const baseDevDependencies = [
|
|
|
60
59
|
{ packageName: 'ts-node', version: '10.9.2' },
|
|
61
60
|
];
|
|
62
61
|
const workspaceScripts = [
|
|
63
|
-
{ name: 'generate', command: 'pnpm run generate:project' },
|
|
64
|
-
{ name: 'generate:project', command: 'pnpm run generate:project:pxl' },
|
|
65
62
|
{ name: 'generate:project:pxl', command: 'node ../../packages/cli/dist/index.js generate' },
|
|
66
63
|
{
|
|
67
64
|
name: 'generate:watch',
|
|
68
65
|
command: "chokidar '../../packages/**/dist/**' '../../generators/**/dist/**' '../../generators/**/template/**' './generate.ts' './postxl-schema.json' -c 'pnpm run generate:project:pxl -f -i'",
|
|
69
66
|
},
|
|
70
67
|
{ name: 'pxl', command: 'node ../../packages/cli/dist/index.js' },
|
|
68
|
+
{ name: 'prettier:check', command: 'prettier --check "**/*.{ts,tsx}" --config ../../prettier.config.js' },
|
|
69
|
+
];
|
|
70
|
+
const standaloneScripts = [
|
|
71
|
+
{ name: 'generate:project:pxl', command: 'pnpm pxl generate' },
|
|
72
|
+
{ name: 'prettier:check', command: 'prettier --check "**/*.{ts,tsx}"' },
|
|
71
73
|
];
|
|
72
74
|
const baseScripts = [
|
|
73
75
|
{ name: 'lint', command: 'pnpm run -r lint' },
|
|
74
76
|
{ name: 'setup', command: './scripts/setup.sh' },
|
|
75
77
|
{ name: 'docker', command: './scripts/docker.sh' },
|
|
76
|
-
{ name: '
|
|
78
|
+
{ name: 'generate', command: 'pnpm run generate:project' },
|
|
79
|
+
{ name: 'generate:project', command: 'pnpm run generate:project:pxl' },
|
|
77
80
|
];
|
|
78
81
|
const pnpmWorkspaceYaml = `packages:
|
|
79
82
|
- 'backend'
|
|
@@ -102,9 +105,9 @@ exports.baseGenerator = {
|
|
|
102
105
|
name: Generator.toPostXlPackageName(`@postxl/${context.schema.slug}`),
|
|
103
106
|
description: context.schema.description,
|
|
104
107
|
dependencies: [],
|
|
105
|
-
devDependencies
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
devDependencies,
|
|
109
|
+
scripts: [...baseScripts, ...(isWorkspaceProject ? workspaceScripts : standaloneScripts)],
|
|
110
|
+
isInPostXlWorkspace: isWorkspaceProject,
|
|
108
111
|
},
|
|
109
112
|
dotEnvExamples: [],
|
|
110
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.generator.js","sourceRoot":"","sources":["../../src/base/base.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AAEjC,6DAA8C;AA8B9C,MAAM,
|
|
1
|
+
{"version":3,"file":"base.generator.js","sourceRoot":"","sources":["../../src/base/base.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,35 +36,25 @@ Prerequisites/software needed:
|
|
|
36
36
|
- (Git)[https://git-scm.com/download/win]
|
|
37
37
|
- (Docker)[https://docs.docker.com/docker-for-windows/install/]
|
|
38
38
|
|
|
39
|
-
#### Installing NodeJS
|
|
40
|
-
|
|
41
|
-
Use Node Version Manager to download the appropriate NodeJS version.
|
|
42
|
-
|
|
43
|
-
- (MacOS) [Homebrew](https://formulae.brew.sh/formula/nvm)
|
|
44
|
-
- (Windows) [Guide](https://www.freecodecamp.org/news/nvm-for-windows-how-to-download-and-install-node-version-manager-in-windows-10/)
|
|
45
|
-
|
|
46
|
-
Once you've installed `nvm`, navigate to the root of the repository and run.
|
|
47
|
-
|
|
48
|
-
```sh
|
|
49
|
-
# NVM will automatically detect the Node version from `.nvmrc` file in the root.
|
|
50
|
-
nvm install
|
|
51
|
-
nvm use
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
> You should run `nvm use` whenever you start developing the product, to make sure the whole team is on the same NodeJS version.
|
|
55
|
-
|
|
56
39
|
#### Installing pnpm
|
|
57
40
|
|
|
58
|
-
We are using [pnpm](https://pnpm.io/installation#using-npm) for dependency management. To install
|
|
41
|
+
We are using [pnpm](https://pnpm.io/installation#using-npm) for dependency management and Node.js runtime management. To install pnpm, run:
|
|
59
42
|
|
|
60
43
|
```sh
|
|
61
44
|
npm install -g pnpm
|
|
62
45
|
```
|
|
63
46
|
|
|
47
|
+
#### Node.js Runtime
|
|
48
|
+
|
|
49
|
+
This project uses pnpm's automatic runtime management feature. The required Node.js version is specified in `package.json` under `devEngines.runtime`. When you run pnpm commands, it will automatically download and use the correct Node.js version.
|
|
50
|
+
|
|
64
51
|
```sh
|
|
52
|
+
# pnpm automatically uses the correct Node.js version
|
|
65
53
|
pnpm i
|
|
66
54
|
```
|
|
67
55
|
|
|
56
|
+
> No need to manually install or switch Node.js versions - pnpm handles it automatically.
|
|
57
|
+
|
|
68
58
|
#### Setting Up Environment Variables
|
|
69
59
|
|
|
70
60
|
Create a copy of `.env.example` file called `.env` for every `.env.example` file in the project! If you already ran `pnpm run setup -f` before, this step was included.
|
|
@@ -54,7 +54,7 @@ test('Theme toggle switches to dark mode successfully', async ({ page }) => {
|
|
|
54
54
|
|
|
55
55
|
await page.getByTestId('button-toggle-theme').click()
|
|
56
56
|
|
|
57
|
-
await expect(page.getByText("As you may see now it's dark
|
|
57
|
+
await expect(page.getByText("As you may see now it's dark")).toBeVisible()
|
|
58
58
|
})
|
|
59
59
|
|
|
60
60
|
/**
|
|
Binary file
|
|
@@ -50,8 +50,8 @@ exports.base = {
|
|
|
50
50
|
description: `Frontend for the template project`,
|
|
51
51
|
type: 'module',
|
|
52
52
|
dependencies: [
|
|
53
|
-
{ packageName: '@postxl/ui-components'
|
|
54
|
-
{ packageName: '@postxl/utils'
|
|
53
|
+
{ packageName: Generator.toPostXlPackageName('@postxl/ui-components') },
|
|
54
|
+
{ packageName: Generator.toPostXlPackageName('@postxl/utils') },
|
|
55
55
|
{ packageName: '@radix-ui/react-icons', version: '1.3.2' },
|
|
56
56
|
{ packageName: '@tailwindcss/vite', version: '4.1.16' },
|
|
57
57
|
{ packageName: '@tanstack/react-devtools', version: '0.7.9' },
|
|
@@ -101,7 +101,7 @@ exports.base = {
|
|
|
101
101
|
{ packageName: 'playwright', version: '1.56.1' },
|
|
102
102
|
{ packageName: 'storybook', version: '10.0.0' },
|
|
103
103
|
{ packageName: 'typescript', version: '~5.8.3' },
|
|
104
|
-
{ packageName: 'typescript-eslint', version: '8.
|
|
104
|
+
{ packageName: 'typescript-eslint', version: '8.50.0' },
|
|
105
105
|
{ packageName: 'vite', version: '7.1.12' },
|
|
106
106
|
{ packageName: 'vite-bundle-analyzer', version: '1.2.3' },
|
|
107
107
|
{ packageName: 'vite-plugin-svgr', version: '4.5.0' },
|
|
@@ -175,7 +175,9 @@ const configureFrontendGenerator = (into) => ({
|
|
|
175
175
|
const frontend = into ? into(new generator_1.ConfigBuilder(exports.base)).done() : exports.base;
|
|
176
176
|
frontend.packageJson.name = packageName;
|
|
177
177
|
frontend.packageJson.description = `Frontend for the ${context.schema.slug} project`;
|
|
178
|
+
frontend.packageJson.isInPostXlWorkspace = context.schema.projectType === 'workspace';
|
|
178
179
|
frontend.packageJson.scripts.push({ name: 'generate:tsr', command: 'tsr generate' });
|
|
180
|
+
frontend.packageJson.isInPostXlWorkspace = context.schema.projectType === 'workspace';
|
|
179
181
|
context.base.packageJson.scripts.push({
|
|
180
182
|
name: 'generate:tsr',
|
|
181
183
|
command: `pnpm --filter ${packageName} exec tsr generate`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AAEjC,6DAA8C;AAC9C,iDAAiH;AAKjH,wEAAkE;AAGlE,MAAM,mBAAmB,GAAG,YAAY,CAAA;AAIxC,gFAAgF;AAEnE,QAAA,IAAI,GAAyB;IACxC,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,KAAK,EAAE,CAAC,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IAC7E,WAAW,EAAE;QACX,+HAA+H;QAC/H,IAAI,EAAE,IAAA,+BAAmB,EAAC,2BAA2B,CAAC;QACtD,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,QAAQ;QAEd,YAAY,EAAE;YACZ,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/frontend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/frontend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;AAIA,4CAsDC;AA1DD,iDAAmD;AAInD,SAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,EAAE,EAAgB;IACjF,MAAM,KAAK,GAAa;QACtB,2BAA2B;QAC3B,mCAAmC;QACnC,iDAAiD;QACjD,yBAAyB;QACzB,uBAAuB;QACvB,qBAAqB;QACrB,yBAAyB;QACzB,8BAA8B;QAC9B,2BAA2B;QAC3B,2BAA2B;KAC5B,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU;YACvC,CAAC,CAAC,SAAS,CAAC,QAAQ;YACpB,CAAC,CAAC,IAAA,2BAAe,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAExE,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,UAAU,YAAY,MAAM,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,QAAQ,YAAY,IAAI,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;QAsBV,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;EAM9D,CAAA;AACF,CAAC"}
|
|
@@ -45,8 +45,7 @@ This folder contains the frontend application for the PostXL template project. I
|
|
|
45
45
|
## Prerequisites
|
|
46
46
|
|
|
47
47
|
**Required:**
|
|
48
|
-
- **
|
|
49
|
-
- **pnpm 10.8.0+** (package manager - this project does not support npm or yarn)
|
|
48
|
+
- **pnpm 10.14+** (package manager - also manages Node.js runtime automatically)
|
|
50
49
|
|
|
51
50
|
**Optional:**
|
|
52
51
|
- Backend API running (usually at `http://localhost:3001`)
|
|
@@ -58,14 +57,7 @@ This folder contains the frontend application for the PostXL template project. I
|
|
|
58
57
|
|
|
59
58
|
### 1. Initial Setup
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Switch to the correct Node.js version (22+)
|
|
65
|
-
nvm use
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
If you see warnings like `WARN Unsupported engine: wanted: {"node":">=22"}`, you MUST run `nvm use` immediately.
|
|
60
|
+
pnpm automatically manages the Node.js runtime version via the `devEngines.runtime` configuration in `package.json`. No need to manually install or switch Node.js versions.
|
|
69
61
|
|
|
70
62
|
**Installation:**
|
|
71
63
|
|
|
@@ -453,7 +445,7 @@ Available aliases:
|
|
|
453
445
|
- Check that `routeTree.gen.ts` is up to date (generated automatically on dev server start)
|
|
454
446
|
|
|
455
447
|
**Build failures:**
|
|
456
|
-
- Ensure you're using Node.js
|
|
448
|
+
- Ensure you're using pnpm 10.14+ (it manages Node.js automatically via `devEngines.runtime`)
|
|
457
449
|
- Clear build cache: `rm -rf node_modules/.vite`
|
|
458
450
|
- Rebuild from monorepo root: `pnpm run build`
|
|
459
451
|
- Check for TypeScript errors: `pnpm test:types`
|
|
@@ -1,15 +1,56 @@
|
|
|
1
1
|
import { MutationCache, QueryCache, QueryClient } from '@tanstack/react-query'
|
|
2
|
+
import { toast } from '@postxl/ui-components'
|
|
3
|
+
|
|
4
|
+
const isDev = import.meta.env.DEV
|
|
5
|
+
|
|
6
|
+
function safeStringify(obj: unknown): string {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.stringify(obj)
|
|
9
|
+
} catch {
|
|
10
|
+
return String(obj)
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getErrorMessage(error: unknown): string {
|
|
15
|
+
if (error instanceof Error) {
|
|
16
|
+
return error.message
|
|
17
|
+
}
|
|
18
|
+
if (typeof error === 'object' && error !== null && 'message' in error) {
|
|
19
|
+
return String((error as { message: unknown }).message)
|
|
20
|
+
}
|
|
21
|
+
return String(error)
|
|
22
|
+
}
|
|
2
23
|
|
|
3
24
|
const queryCache = new QueryCache({
|
|
4
|
-
onError: (error) => {
|
|
25
|
+
onError: (error, query) => {
|
|
5
26
|
// always log errors to console
|
|
6
|
-
console.
|
|
27
|
+
console.error('Query error:', error)
|
|
28
|
+
|
|
29
|
+
if (isDev) {
|
|
30
|
+
const queryKey = safeStringify(query.queryKey)
|
|
31
|
+
// Use query key hash as toast id to deduplicate repeated errors from the same query
|
|
32
|
+
toast.error(`Query failed: ${getErrorMessage(error)}`, {
|
|
33
|
+
id: `query-error-${query.queryHash}`,
|
|
34
|
+
description: `Query key: ${queryKey}`,
|
|
35
|
+
duration: 10000,
|
|
36
|
+
})
|
|
37
|
+
}
|
|
7
38
|
},
|
|
8
39
|
})
|
|
9
40
|
|
|
10
41
|
const mutationCache = new MutationCache({
|
|
11
|
-
onError: (error) => {
|
|
12
|
-
console.
|
|
42
|
+
onError: (error, _variables, _context, mutation) => {
|
|
43
|
+
console.error('Mutation error:', error)
|
|
44
|
+
|
|
45
|
+
if (isDev) {
|
|
46
|
+
const mutationKey = mutation.options.mutationKey ? safeStringify(mutation.options.mutationKey) : 'unnamed'
|
|
47
|
+
// Use mutation key as toast id to deduplicate repeated errors from the same mutation
|
|
48
|
+
toast.error(`Mutation failed: ${getErrorMessage(error)}`, {
|
|
49
|
+
id: `mutation-error-${mutationKey}`,
|
|
50
|
+
description: `Mutation key: ${mutationKey}`,
|
|
51
|
+
duration: 10000,
|
|
52
|
+
})
|
|
53
|
+
}
|
|
13
54
|
},
|
|
14
55
|
})
|
|
15
56
|
|
|
@@ -1,20 +1,53 @@
|
|
|
1
1
|
import { type ErrorComponentProps, Link } from '@tanstack/react-router'
|
|
2
2
|
|
|
3
|
-
import { Button } from '@postxl/ui-components'
|
|
3
|
+
import { Button, Card, CardContent, CardFooter, CardHeader, CardTitle } from '@postxl/ui-components'
|
|
4
|
+
|
|
5
|
+
const isDev = import.meta.env.DEV
|
|
4
6
|
|
|
5
7
|
export const DefaultErrorPage = ({ error }: { error: ErrorComponentProps }) => {
|
|
8
|
+
const actualError = error.error
|
|
9
|
+
const errorMessage = actualError instanceof Error ? actualError.message : String(actualError)
|
|
10
|
+
const errorStack = actualError instanceof Error ? actualError.stack : undefined
|
|
11
|
+
|
|
6
12
|
return (
|
|
7
|
-
<div className="flex w-full pt-4 px-4 h-(--content-without-header)">
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
An unexpected error occurred
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
<div className="flex w-full pt-4 px-4 h-(--content-without-header) items-center justify-center">
|
|
14
|
+
<Card className="max-w-3xl w-full">
|
|
15
|
+
<CardHeader>
|
|
16
|
+
<CardTitle className="text-destructive">An unexpected error occurred</CardTitle>
|
|
17
|
+
</CardHeader>
|
|
18
|
+
<CardContent className="space-y-4">
|
|
19
|
+
<div className="p-4 bg-destructive/10 border border-destructive/20 rounded-md">
|
|
20
|
+
<p className="font-mono text-sm text-destructive break-words">{errorMessage}</p>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
{isDev && errorStack && (
|
|
24
|
+
<details>
|
|
25
|
+
<summary className="cursor-pointer text-sm text-muted-foreground hover:text-foreground">
|
|
26
|
+
Show stack trace
|
|
27
|
+
</summary>
|
|
28
|
+
<pre className="mt-2 p-4 bg-muted rounded-md overflow-auto text-xs font-mono whitespace-pre-wrap break-words max-h-96">
|
|
29
|
+
{errorStack}
|
|
30
|
+
</pre>
|
|
31
|
+
</details>
|
|
32
|
+
)}
|
|
33
|
+
|
|
34
|
+
{isDev && (
|
|
35
|
+
<details>
|
|
36
|
+
<summary className="cursor-pointer text-sm text-muted-foreground hover:text-foreground">
|
|
37
|
+
Show raw error data
|
|
38
|
+
</summary>
|
|
39
|
+
<pre className="mt-2 p-4 bg-muted rounded-md overflow-auto text-xs font-mono whitespace-pre-wrap break-words max-h-64">
|
|
40
|
+
{JSON.stringify(error, null, 2)}
|
|
41
|
+
</pre>
|
|
42
|
+
</details>
|
|
43
|
+
)}
|
|
44
|
+
</CardContent>
|
|
45
|
+
<CardFooter>
|
|
46
|
+
<Button asChild>
|
|
47
|
+
<Link to={'/'}>Back to Home</Link>
|
|
48
|
+
</Button>
|
|
49
|
+
</CardFooter>
|
|
50
|
+
</Card>
|
|
18
51
|
</div>
|
|
19
52
|
)
|
|
20
53
|
}
|
|
@@ -31,8 +31,11 @@ export default defineConfig({
|
|
|
31
31
|
target: 'esnext',
|
|
32
32
|
sourcemap: true,
|
|
33
33
|
commonjsOptions: {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
strictRequires: false,
|
|
35
|
+
// We include utils here to avoid issues with CJS modules in the utils package
|
|
36
|
+
// Support both monorepo (/packages/utils/) and standalone npm install (/@postxl/utils/)
|
|
37
|
+
include: [/node_modules/, /packages\/utils/, /@postxl\/utils/],
|
|
38
|
+
transformMixedEsModules: true,
|
|
36
39
|
},
|
|
37
40
|
rollupOptions: {
|
|
38
41
|
output: {
|
|
@@ -78,6 +81,22 @@ export default defineConfig({
|
|
|
78
81
|
}
|
|
79
82
|
},
|
|
80
83
|
},
|
|
84
|
+
onwarn(warning, warn) {
|
|
85
|
+
// Suppress eval warnings from @postxl/utils
|
|
86
|
+
// These are intentional to prevent bundlers from including Node.js modules in browser builds
|
|
87
|
+
if (
|
|
88
|
+
warning.code === 'EVAL' &&
|
|
89
|
+
warning.id &&
|
|
90
|
+
(warning.id.includes('packages/utils/dist/check-port.js') ||
|
|
91
|
+
warning.id.includes('packages/utils/dist/random.js') ||
|
|
92
|
+
warning.id.includes('@postxl/utils/dist/check-port.js') ||
|
|
93
|
+
warning.id.includes('@postxl/utils/dist/random.js'))
|
|
94
|
+
) {
|
|
95
|
+
return
|
|
96
|
+
}
|
|
97
|
+
// Use default for all other warnings
|
|
98
|
+
warn(warning)
|
|
99
|
+
},
|
|
81
100
|
cache: false,
|
|
82
101
|
},
|
|
83
102
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@postxl/generators",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Code generators for PXL - generates backend, frontend, Prisma schemas, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@faker-js/faker": "9.4.0",
|
|
45
45
|
"@prisma/prisma-schema-wasm": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
|
|
46
46
|
"exceljs": "^4.4.0",
|
|
47
|
-
"@postxl/generator": "^1.0.
|
|
47
|
+
"@postxl/generator": "^1.0.11",
|
|
48
48
|
"@postxl/schema": "^1.0.3",
|
|
49
49
|
"@postxl/ui-components": "^1.0.0",
|
|
50
50
|
"@postxl/utils": "^1.0.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
v24.11.0
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePackageJson = generatePackageJson;
|
|
4
|
-
function generatePackageJson({ schema }) {
|
|
5
|
-
return /*json*/ `
|
|
6
|
-
{
|
|
7
|
-
"name": "${schema.slug}-e2e",
|
|
8
|
-
"version": "1.0.0",
|
|
9
|
-
"private": true,
|
|
10
|
-
"scripts": {
|
|
11
|
-
"e2e": "dotenvx run -- pnpm pw test",
|
|
12
|
-
"e2e:ui": "dotenvx run -- pnpm pw test --ui-host=0.0.0.0 --ui-port=3030",
|
|
13
|
-
"e2e:update-snapshots": "MAX_DIFF_PIXELS=50 dotenvx run -- pnpm pw test --update-snapshots",
|
|
14
|
-
"pw": "npx playwright",
|
|
15
|
-
"test:types": "tsc --noEmit -p tsconfig.json",
|
|
16
|
-
"lint": "eslint ."
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@dotenvx/dotenvx": "0.40.0",
|
|
20
|
-
"@playwright/test": "1.56.1",
|
|
21
|
-
"@types/node": "20.5.0",
|
|
22
|
-
"playwright": "1.56.1",
|
|
23
|
-
"typescript": "5.9.2",
|
|
24
|
-
"monocart-reporter": "^2.6.3",
|
|
25
|
-
"zod": "3.25.76"
|
|
26
|
-
}
|
|
27
|
-
}`;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=package-json.generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.generator.js","sourceRoot":"","sources":["../../../src/e2e/generators/package-json.generator.ts"],"names":[],"mappings":";;AAEA,kDAwBC;AAxBD,SAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAiB;IAC3D,OAAO,QAAQ,CAAC;;aAEL,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;EAoBtB,CAAA;AACF,CAAC"}
|