@zenstackhq/testtools 1.0.0-beta.1 → 1.0.0-beta.10
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/package.json +9 -10
- package/package.template.json +1 -1
- package/schema.d.ts +11 -2
- package/schema.js +71 -26
- package/schema.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/testtools",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.10",
|
|
4
4
|
"description": "ZenStack Test Tools",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -11,17 +11,16 @@
|
|
|
11
11
|
"author": "",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@prisma/
|
|
15
|
-
"
|
|
16
|
-
"@prisma/internals": "^4.7.1",
|
|
17
|
-
"prisma": "~4.7.0",
|
|
14
|
+
"@prisma/generator-helper": "^5.0.0",
|
|
15
|
+
"json5": "^2.2.3",
|
|
18
16
|
"tmp": "^0.2.1",
|
|
19
|
-
"@zenstackhq/language": "1.0.0-beta.
|
|
20
|
-
"
|
|
21
|
-
"
|
|
17
|
+
"@zenstackhq/language": "1.0.0-beta.10",
|
|
18
|
+
"zenstack": "1.0.0-beta.10",
|
|
19
|
+
"@zenstackhq/sdk": "1.0.0-beta.10",
|
|
20
|
+
"@zenstackhq/runtime": "1.0.0-beta.10"
|
|
22
21
|
},
|
|
23
22
|
"devDependencies": {
|
|
24
|
-
"@types/node": "^18.
|
|
23
|
+
"@types/node": "^18.0.0",
|
|
25
24
|
"@types/tmp": "^0.2.3",
|
|
26
25
|
"copyfiles": "^2.4.1",
|
|
27
26
|
"rimraf": "^3.0.2",
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
"scripts": {
|
|
31
30
|
"clean": "rimraf dist",
|
|
32
31
|
"lint": "eslint src --ext ts",
|
|
33
|
-
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist && copyfiles -u 1 src/package.template.json src/.npmrc.template dist",
|
|
32
|
+
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist && copyfiles -u 1 src/package.template.json src/.npmrc.template dist && pnpm pack dist --pack-destination '../../../.build'",
|
|
34
33
|
"watch": "tsc --watch"
|
|
35
34
|
}
|
|
36
35
|
}
|
package/package.template.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@prisma/client": "^4.0.0",
|
|
11
11
|
"@zenstackhq/runtime": "file:<root>/packages/runtime/dist",
|
|
12
|
-
"@zenstackhq/
|
|
12
|
+
"@zenstackhq/swr": "file:<root>/packages/plugins/swr/dist",
|
|
13
13
|
"@zenstackhq/trpc": "file:<root>/packages/plugins/trpc/dist",
|
|
14
14
|
"@zenstackhq/openapi": "file:<root>/packages/plugins/openapi/dist",
|
|
15
15
|
"prisma": "^4.0.0",
|
package/schema.d.ts
CHANGED
|
@@ -27,7 +27,16 @@ export type WeakDbClientContract = Record<string, WeakDbOperations> & {
|
|
|
27
27
|
export declare function run(cmd: string, env?: Record<string, string>, cwd?: string): void;
|
|
28
28
|
export declare function getWorkspaceRoot(start: string): string | undefined;
|
|
29
29
|
export declare function getWorkspaceNpmCacheFolder(start: string): string;
|
|
30
|
-
export
|
|
30
|
+
export type SchemaLoadOptions = {
|
|
31
|
+
addPrelude?: boolean;
|
|
32
|
+
pushDb?: boolean;
|
|
33
|
+
fullZod?: boolean;
|
|
34
|
+
extraDependencies?: string[];
|
|
35
|
+
compile?: boolean;
|
|
36
|
+
customSchemaFilePath?: string;
|
|
37
|
+
logPrismaQuery?: boolean;
|
|
38
|
+
};
|
|
39
|
+
export declare function loadSchemaFromFile(schemaFile: string, options?: SchemaLoadOptions): Promise<{
|
|
31
40
|
projectDir: string;
|
|
32
41
|
prisma: any;
|
|
33
42
|
withPolicy: (user?: AuthUser | undefined) => WeakDbClientContract;
|
|
@@ -38,7 +47,7 @@ export declare function loadSchemaFromFile(schemaFile: string, addPrelude?: bool
|
|
|
38
47
|
modelMeta: any;
|
|
39
48
|
zodSchemas: any;
|
|
40
49
|
}>;
|
|
41
|
-
export declare function loadSchema(schema: string,
|
|
50
|
+
export declare function loadSchema(schema: string, options?: SchemaLoadOptions): Promise<{
|
|
42
51
|
projectDir: string;
|
|
43
52
|
prisma: any;
|
|
44
53
|
withPolicy: (user?: AuthUser) => WeakDbClientContract;
|
package/schema.js
CHANGED
|
@@ -36,10 +36,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.loadZModelAndDmmf = exports.loadSchema = exports.loadSchemaFromFile = exports.getWorkspaceNpmCacheFolder = exports.getWorkspaceRoot = exports.run = exports.FILE_SPLITTER = void 0;
|
|
39
|
-
const internals_1 = require("@prisma/internals");
|
|
40
39
|
const runtime_1 = require("@zenstackhq/runtime");
|
|
40
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
41
41
|
const child_process_1 = require("child_process");
|
|
42
42
|
const fs = __importStar(require("fs"));
|
|
43
|
+
const json5_1 = __importDefault(require("json5"));
|
|
43
44
|
const path = __importStar(require("path"));
|
|
44
45
|
const tmp_1 = __importDefault(require("tmp"));
|
|
45
46
|
const cli_util_1 = require("zenstack/cli/cli-util");
|
|
@@ -56,12 +57,14 @@ const prisma_1 = __importDefault(require("zenstack/plugins/prisma"));
|
|
|
56
57
|
*/
|
|
57
58
|
exports.FILE_SPLITTER = '#FILE_SPLITTER#';
|
|
58
59
|
function run(cmd, env, cwd) {
|
|
60
|
+
const start = Date.now();
|
|
59
61
|
(0, child_process_1.execSync)(cmd, {
|
|
60
62
|
stdio: 'pipe',
|
|
61
63
|
encoding: 'utf-8',
|
|
62
64
|
env: Object.assign(Object.assign(Object.assign({}, process.env), { DO_NOT_TRACK: '1' }), env),
|
|
63
65
|
cwd,
|
|
64
66
|
});
|
|
67
|
+
console.log('Execution took', Date.now() - start, 'ms', '-', cmd);
|
|
65
68
|
}
|
|
66
69
|
exports.run = run;
|
|
67
70
|
function normalizePath(p) {
|
|
@@ -96,30 +99,46 @@ generator js {
|
|
|
96
99
|
previewFeatures = ['clientExtensions']
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
plugin
|
|
100
|
-
provider = '@core/
|
|
101
|
-
|
|
102
|
+
plugin zod {
|
|
103
|
+
provider = '@core/zod'
|
|
104
|
+
modelOnly = true
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
const MODEL_PRELUDE_FULL_ZOD = `
|
|
108
|
+
datasource db {
|
|
109
|
+
provider = 'sqlite'
|
|
110
|
+
url = 'file:./test.db'
|
|
102
111
|
}
|
|
103
112
|
|
|
104
|
-
|
|
105
|
-
provider = '
|
|
106
|
-
|
|
113
|
+
generator js {
|
|
114
|
+
provider = 'prisma-client-js'
|
|
115
|
+
previewFeatures = ['clientExtensions']
|
|
107
116
|
}
|
|
108
117
|
|
|
109
118
|
plugin zod {
|
|
110
119
|
provider = '@core/zod'
|
|
111
|
-
|
|
120
|
+
modelOnly = false
|
|
112
121
|
}
|
|
113
122
|
`;
|
|
114
|
-
|
|
123
|
+
const defaultOptions = {
|
|
124
|
+
addPrelude: true,
|
|
125
|
+
pushDb: true,
|
|
126
|
+
fullZod: false,
|
|
127
|
+
extraDependencies: [],
|
|
128
|
+
compile: false,
|
|
129
|
+
logPrismaQuery: false,
|
|
130
|
+
};
|
|
131
|
+
function loadSchemaFromFile(schemaFile, options) {
|
|
115
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
116
133
|
const content = fs.readFileSync(schemaFile, { encoding: 'utf-8' });
|
|
117
|
-
return loadSchema(content,
|
|
134
|
+
return loadSchema(content, options);
|
|
118
135
|
});
|
|
119
136
|
}
|
|
120
137
|
exports.loadSchemaFromFile = loadSchemaFromFile;
|
|
121
|
-
function loadSchema(schema,
|
|
138
|
+
function loadSchema(schema, options) {
|
|
139
|
+
var _a;
|
|
122
140
|
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const opt = Object.assign(Object.assign({}, defaultOptions), options);
|
|
123
142
|
const { name: projectRoot } = tmp_1.default.dirSync({ unsafeCleanup: true });
|
|
124
143
|
const root = getWorkspaceRoot(__dirname);
|
|
125
144
|
if (!root) {
|
|
@@ -143,9 +162,9 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
143
162
|
if (index === 0) {
|
|
144
163
|
// The first file is the main schema file
|
|
145
164
|
zmodelPath = path.join(projectRoot, fileName);
|
|
146
|
-
if (addPrelude) {
|
|
165
|
+
if (opt.addPrelude) {
|
|
147
166
|
// plugin need to be added after import statement
|
|
148
|
-
fileContent = `${fileContent}\n${MODEL_PRELUDE}`;
|
|
167
|
+
fileContent = `${fileContent}\n${opt.fullZod ? MODEL_PRELUDE_FULL_ZOD : MODEL_PRELUDE}`;
|
|
149
168
|
}
|
|
150
169
|
}
|
|
151
170
|
fileContent = fileContent.replaceAll('$projectRoot', projectRoot);
|
|
@@ -155,9 +174,9 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
155
174
|
}
|
|
156
175
|
else {
|
|
157
176
|
schema = schema.replaceAll('$projectRoot', projectRoot);
|
|
158
|
-
const content = addPrelude ? `${MODEL_PRELUDE}\n${schema}` : schema;
|
|
159
|
-
if (customSchemaFilePath) {
|
|
160
|
-
zmodelPath = path.join(projectRoot, customSchemaFilePath);
|
|
177
|
+
const content = opt.addPrelude ? `${opt.fullZod ? MODEL_PRELUDE_FULL_ZOD : MODEL_PRELUDE}\n${schema}` : schema;
|
|
178
|
+
if (opt.customSchemaFilePath) {
|
|
179
|
+
zmodelPath = path.join(projectRoot, opt.customSchemaFilePath);
|
|
161
180
|
fs.mkdirSync(path.dirname(zmodelPath), { recursive: true });
|
|
162
181
|
fs.writeFileSync(zmodelPath, content);
|
|
163
182
|
}
|
|
@@ -166,7 +185,7 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
166
185
|
}
|
|
167
186
|
}
|
|
168
187
|
run('npm install');
|
|
169
|
-
if (customSchemaFilePath) {
|
|
188
|
+
if (opt.customSchemaFilePath) {
|
|
170
189
|
run(`npx zenstack generate --schema ${zmodelPath} --no-dependency-check`, {
|
|
171
190
|
NODE_PATH: './node_modules',
|
|
172
191
|
});
|
|
@@ -174,30 +193,56 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
174
193
|
else {
|
|
175
194
|
run('npx zenstack generate --no-dependency-check', { NODE_PATH: './node_modules' });
|
|
176
195
|
}
|
|
177
|
-
if (pushDb) {
|
|
196
|
+
if (opt.pushDb) {
|
|
178
197
|
run('npx prisma db push');
|
|
179
198
|
}
|
|
180
199
|
const PrismaClient = require(path.join(projectRoot, 'node_modules/.prisma/client')).PrismaClient;
|
|
181
200
|
const prisma = new PrismaClient({ log: ['info', 'warn', 'error'] });
|
|
182
|
-
extraDependencies.forEach((dep) => {
|
|
201
|
+
(_a = opt.extraDependencies) === null || _a === void 0 ? void 0 : _a.forEach((dep) => {
|
|
183
202
|
console.log(`Installing dependency ${dep}`);
|
|
184
203
|
run(`npm install ${dep}`);
|
|
185
204
|
});
|
|
186
|
-
if (compile) {
|
|
205
|
+
if (opt.compile) {
|
|
187
206
|
console.log('Compiling...');
|
|
188
207
|
run('npx tsc --init');
|
|
208
|
+
// add genetated '.zenstack/zod' folder to typescript's search path,
|
|
209
|
+
// so that it can be resolved from symbolic-linked files
|
|
210
|
+
const tsconfig = json5_1.default.parse(fs.readFileSync(path.join(projectRoot, './tsconfig.json'), 'utf-8'));
|
|
211
|
+
tsconfig.compilerOptions.paths = {
|
|
212
|
+
'.zenstack/zod/input': ['./node_modules/.zenstack/zod/input/index.d.ts'],
|
|
213
|
+
};
|
|
214
|
+
fs.writeFileSync(path.join(projectRoot, './tsconfig.json'), JSON.stringify(tsconfig, null, 2));
|
|
189
215
|
run('npx tsc --project tsconfig.json');
|
|
190
216
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
217
|
+
let policy;
|
|
218
|
+
let modelMeta;
|
|
219
|
+
let zodSchemas;
|
|
220
|
+
const outputPath = path.join(projectRoot, 'node_modules');
|
|
221
|
+
try {
|
|
222
|
+
policy = require(path.join(outputPath, '.zenstack/policy')).default;
|
|
223
|
+
}
|
|
224
|
+
catch (_b) {
|
|
225
|
+
/* noop */
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
modelMeta = require(path.join(outputPath, '.zenstack/model-meta')).default;
|
|
229
|
+
}
|
|
230
|
+
catch (_c) {
|
|
231
|
+
/* noop */
|
|
232
|
+
}
|
|
233
|
+
try {
|
|
234
|
+
zodSchemas = require(path.join(outputPath, '.zenstack/zod'));
|
|
235
|
+
}
|
|
236
|
+
catch (_d) {
|
|
237
|
+
/* noop */
|
|
238
|
+
}
|
|
194
239
|
return {
|
|
195
240
|
projectDir: projectRoot,
|
|
196
241
|
prisma,
|
|
197
|
-
withPolicy: (user) => (0, runtime_1.withPolicy)(prisma, { user }, { policy, modelMeta, logPrismaQuery }),
|
|
242
|
+
withPolicy: (user) => (0, runtime_1.withPolicy)(prisma, { user }, { policy, modelMeta, zodSchemas, logPrismaQuery: opt.logPrismaQuery }),
|
|
198
243
|
withOmit: () => (0, runtime_1.withOmit)(prisma, { modelMeta }),
|
|
199
244
|
withPassword: () => (0, runtime_1.withPassword)(prisma, { modelMeta }),
|
|
200
|
-
withPresets: (user) => (0, runtime_1.withPresets)(prisma, { user }, { policy, modelMeta, logPrismaQuery }),
|
|
245
|
+
withPresets: (user) => (0, runtime_1.withPresets)(prisma, { user }, { policy, modelMeta, zodSchemas, logPrismaQuery: opt.logPrismaQuery }),
|
|
201
246
|
policy,
|
|
202
247
|
modelMeta,
|
|
203
248
|
zodSchemas,
|
|
@@ -224,7 +269,7 @@ function loadZModelAndDmmf(content) {
|
|
|
224
269
|
const { name: prismaFile } = tmp_1.default.fileSync({ postfix: '.prisma' });
|
|
225
270
|
yield (0, prisma_1.default)(model, { schemaPath: modelFile, name: 'Prisma', output: prismaFile, generateClient: false });
|
|
226
271
|
const prismaContent = fs.readFileSync(prismaFile, { encoding: 'utf-8' });
|
|
227
|
-
const dmmf = yield (0,
|
|
272
|
+
const dmmf = yield (0, sdk_1.getDMMF)({ datamodel: prismaContent });
|
|
228
273
|
return { model, dmmf, modelFile };
|
|
229
274
|
});
|
|
230
275
|
}
|
package/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|