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