zenstack 1.0.0-beta.9 → 1.0.1
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/README.md +4 -4
- package/cli/actions/generate.d.ts +13 -0
- package/cli/actions/generate.js +71 -0
- package/cli/actions/generate.js.map +1 -0
- package/cli/actions/index.d.ts +3 -0
- package/cli/actions/index.js +20 -0
- package/cli/actions/index.js.map +1 -0
- package/cli/actions/info.d.ts +4 -0
- package/cli/actions/info.js +63 -0
- package/cli/actions/info.js.map +1 -0
- package/cli/actions/init.d.ts +12 -0
- package/cli/actions/init.js +83 -0
- package/cli/actions/init.js.map +1 -0
- package/cli/cli-util.d.ts +7 -10
- package/cli/cli-util.js +48 -130
- package/cli/cli-util.js.map +1 -1
- package/cli/config.d.ts +1 -10
- package/cli/config.js +2 -7
- package/cli/config.js.map +1 -1
- package/cli/index.d.ts +3 -12
- package/cli/index.js +12 -30
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.d.ts +11 -2
- package/cli/plugin-runner.js +66 -41
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/utils.d.ts +1 -10
- package/language-server/utils.js +1 -20
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-application-validator.d.ts +15 -0
- package/language-server/validator/attribute-application-validator.js +246 -0
- package/language-server/validator/attribute-application-validator.js.map +1 -0
- package/language-server/validator/attribute-validator.d.ts +1 -1
- package/language-server/validator/attribute-validator.js +4 -1
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +5 -6
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +3 -6
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.d.ts +0 -1
- package/language-server/validator/expression-validator.js +48 -7
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/function-decl-validator.js +2 -4
- package/language-server/validator/function-decl-validator.js.map +1 -1
- package/language-server/validator/function-invocation-validator.js +5 -6
- package/language-server/validator/function-invocation-validator.js.map +1 -1
- package/language-server/validator/utils.d.ts +0 -1
- package/language-server/validator/utils.js +3 -119
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/zmodel-linker.js +33 -25
- package/language-server/zmodel-linker.js.map +1 -1
- package/package.json +8 -5
- package/plugins/access-policy/expression-writer.d.ts +5 -0
- package/plugins/access-policy/expression-writer.js +123 -64
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.d.ts +3 -3
- package/plugins/access-policy/index.js +3 -5
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.d.ts +10 -3
- package/plugins/access-policy/policy-guard-generator.js +321 -71
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/model-meta/index.d.ts +3 -3
- package/plugins/model-meta/index.js +90 -34
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.d.ts +5 -3
- package/plugins/plugin-utils.js +22 -5
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/index.d.ts +3 -4
- package/plugins/prisma/index.js +3 -5
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.d.ts +4 -14
- package/plugins/prisma/prisma-builder.js +16 -42
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.d.ts +5 -4
- package/plugins/prisma/schema-generator.js +77 -164
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +4 -2
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/plugins/zod/generator.d.ts +2 -2
- package/plugins/zod/generator.js +36 -33
- package/plugins/zod/generator.js.map +1 -1
- package/plugins/zod/index.d.ts +3 -4
- package/plugins/zod/index.js +8 -5
- package/plugins/zod/index.js.map +1 -1
- package/plugins/zod/transformer.d.ts +6 -5
- package/plugins/zod/transformer.js +123 -81
- package/plugins/zod/transformer.js.map +1 -1
- package/plugins/zod/types.d.ts +2 -1
- package/plugins/zod/utils/schema-gen.js +14 -4
- package/plugins/zod/utils/schema-gen.js.map +1 -1
- package/res/stdlib.zmodel +19 -3
- package/telemetry.js +1 -1
- package/telemetry.js.map +1 -1
- package/utils/ast-utils.d.ts +2 -1
- package/utils/ast-utils.js +7 -3
- package/utils/ast-utils.js.map +1 -1
- package/utils/typescript-expression-transformer.d.ts +3 -2
- package/utils/typescript-expression-transformer.js +48 -17
- package/utils/typescript-expression-transformer.js.map +1 -1
- package/utils/version-utils.js +7 -2
- package/utils/version-utils.js.map +1 -1
- package/plugins/access-policy/utils.d.ts +0 -5
- package/plugins/access-policy/utils.js +0 -14
- package/plugins/access-policy/utils.js.map +0 -1
- package/types.d.ts +0 -12
- package/types.js +0 -3
- package/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -62,14 +62,14 @@ The `zenstack` CLI transpiles the ZModel into a standard Prisma schema, which yo
|
|
|
62
62
|
At runtime, transparent proxies are created around Prisma clients for intercepting queries and mutations to enforce access policies.
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
|
-
import {
|
|
65
|
+
import { enhance } from '@zenstackhq/runtime';
|
|
66
66
|
|
|
67
67
|
// a regular Prisma client
|
|
68
68
|
const prisma = new PrismaClient();
|
|
69
69
|
|
|
70
70
|
async function getPosts(userId: string) {
|
|
71
71
|
// create an enhanced Prisma client that has access control enabled
|
|
72
|
-
const enhanced =
|
|
72
|
+
const enhanced = enhance(prisma, { user: userId });
|
|
73
73
|
|
|
74
74
|
// only posts that're visible to the user will be returned
|
|
75
75
|
return enhanced.post.findMany();
|
|
@@ -84,14 +84,14 @@ Server adapter packages help you wrap an access-control-enabled Prisma client in
|
|
|
84
84
|
// pages/api/model/[...path].ts
|
|
85
85
|
|
|
86
86
|
import { requestHandler } from '@zenstackhq/next';
|
|
87
|
-
import {
|
|
87
|
+
import { enhance } from '@zenstackhq/runtime';
|
|
88
88
|
import { getSessionUser } from '@lib/auth';
|
|
89
89
|
import { prisma } from '@lib/db';
|
|
90
90
|
|
|
91
91
|
// Mount Prisma-style APIs: "/api/model/post/findMany", "/api/model/post/create", etc.
|
|
92
92
|
// Can be configured to provide standard RESTful APIs (using JSON:API) instead.
|
|
93
93
|
export default requestHandler({
|
|
94
|
-
getPrisma: (req, res) =>
|
|
94
|
+
getPrisma: (req, res) => enhance(prisma, { user: getSessionUser(req, res) }),
|
|
95
95
|
});
|
|
96
96
|
```
|
|
97
97
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare type Options = {
|
|
2
|
+
schema: string;
|
|
3
|
+
output?: string;
|
|
4
|
+
dependencyCheck: boolean;
|
|
5
|
+
versionCheck: boolean;
|
|
6
|
+
compile: boolean;
|
|
7
|
+
defaultPlugins: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* CLI action for generating code from schema
|
|
11
|
+
*/
|
|
12
|
+
export declare function generate(projectPath: string, options: Options): Promise<void>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.generate = void 0;
|
|
16
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
|
+
const colors_1 = __importDefault(require("colors"));
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const cli_error_1 = require("../cli-error");
|
|
20
|
+
const cli_util_1 = require("../cli-util");
|
|
21
|
+
const plugin_runner_1 = require("../plugin-runner");
|
|
22
|
+
/**
|
|
23
|
+
* CLI action for generating code from schema
|
|
24
|
+
*/
|
|
25
|
+
function generate(projectPath, options) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
if (options.dependencyCheck) {
|
|
28
|
+
(0, cli_util_1.checkRequiredPackage)('prisma', cli_util_1.requiredPrismaVersion);
|
|
29
|
+
(0, cli_util_1.checkRequiredPackage)('@prisma/client', cli_util_1.requiredPrismaVersion);
|
|
30
|
+
}
|
|
31
|
+
// check for multiple versions of Zenstack packages
|
|
32
|
+
const packages = (0, cli_util_1.getZenStackPackages)(projectPath);
|
|
33
|
+
if (packages) {
|
|
34
|
+
const versions = new Set(packages.map((p) => p.version));
|
|
35
|
+
if (versions.size > 1) {
|
|
36
|
+
console.warn(colors_1.default.yellow('WARNING: Multiple versions of Zenstack packages detected. Run "zenstack info" to see details.'));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const tasks = [runPlugins(options)];
|
|
40
|
+
if (options.versionCheck) {
|
|
41
|
+
tasks.push((0, cli_util_1.checkNewVersion)());
|
|
42
|
+
}
|
|
43
|
+
yield Promise.all(tasks);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
exports.generate = generate;
|
|
47
|
+
function runPlugins(options) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const model = yield (0, cli_util_1.loadDocument)(options.schema);
|
|
50
|
+
const runnerOpts = {
|
|
51
|
+
schema: model,
|
|
52
|
+
schemaPath: path_1.default.resolve(options.schema),
|
|
53
|
+
defaultPlugins: options.defaultPlugins,
|
|
54
|
+
output: options.output,
|
|
55
|
+
compile: options.compile,
|
|
56
|
+
};
|
|
57
|
+
try {
|
|
58
|
+
yield new plugin_runner_1.PluginRunner().run(runnerOpts);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
if (err instanceof sdk_1.PluginError) {
|
|
62
|
+
console.error(colors_1.default.red(`${err.plugin}: ${err.message}`));
|
|
63
|
+
throw new cli_error_1.CliError(err.message);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw err;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/actions/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA8C;AAC9C,oDAA4B;AAC5B,gDAAwB;AACxB,4CAAwC;AACxC,0CAMqB;AACrB,oDAAqE;AAWrE;;GAEG;AACH,SAAsB,QAAQ,CAAC,WAAmB,EAAE,OAAgB;;QAChE,IAAI,OAAO,CAAC,eAAe,EAAE;YACzB,IAAA,+BAAoB,EAAC,QAAQ,EAAE,gCAAqB,CAAC,CAAC;YACtD,IAAA,+BAAoB,EAAC,gBAAgB,EAAE,gCAAqB,CAAC,CAAC;SACjE;QAED,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAA,8BAAmB,EAAC,WAAW,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE;YACV,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;gBACnB,OAAO,CAAC,IAAI,CACR,gBAAM,CAAC,MAAM,CACT,+FAA+F,CAClG,CACJ,CAAC;aACL;SACJ;QAED,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAEpC,IAAI,OAAO,CAAC,YAAY,EAAE;YACtB,KAAK,CAAC,IAAI,CAAC,IAAA,0BAAe,GAAE,CAAC,CAAC;SACjC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CAAA;AA1BD,4BA0BC;AAED,SAAe,UAAU,CAAC,OAAgB;;QACtC,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAwB;YACpC,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YACxC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC;QAEF,IAAI;YACA,MAAM,IAAI,4BAAY,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC5C;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,YAAY,iBAAW,EAAE;gBAC5B,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC3D,MAAM,IAAI,oBAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACnC;iBAAM;gBACH,MAAM,GAAG,CAAC;aACb;SACJ;IACL,CAAC;CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generate"), exports);
|
|
18
|
+
__exportStar(require("./info"), exports);
|
|
19
|
+
__exportStar(require("./init"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/actions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,yCAAuB;AACvB,yCAAuB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.info = void 0;
|
|
16
|
+
const colors_1 = __importDefault(require("colors"));
|
|
17
|
+
const get_latest_version_1 = __importDefault(require("get-latest-version"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const semver_1 = __importDefault(require("semver"));
|
|
20
|
+
const cli_util_1 = require("../cli-util");
|
|
21
|
+
/**
|
|
22
|
+
* CLI action for getting information about installed ZenStack packages
|
|
23
|
+
*/
|
|
24
|
+
function info(projectPath) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const packages = (0, cli_util_1.getZenStackPackages)(projectPath);
|
|
27
|
+
if (!packages) {
|
|
28
|
+
console.error('Unable to locate package.json. Are you in a valid project directory?');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log('Installed ZenStack Packages:');
|
|
32
|
+
const versions = new Set();
|
|
33
|
+
for (const { pkg, version } of packages) {
|
|
34
|
+
versions.add(version);
|
|
35
|
+
console.log(` ${colors_1.default.green(pkg.padEnd(20))}\t${version}`);
|
|
36
|
+
}
|
|
37
|
+
if (versions.size > 1) {
|
|
38
|
+
console.warn(colors_1.default.yellow('WARNING: Multiple versions of Zenstack packages detected. This may cause issues.'));
|
|
39
|
+
}
|
|
40
|
+
else if (versions.size > 0) {
|
|
41
|
+
const spinner = (0, ora_1.default)('Checking npm registry').start();
|
|
42
|
+
const latest = yield (0, get_latest_version_1.default)('zenstack');
|
|
43
|
+
if (!latest) {
|
|
44
|
+
spinner.fail('unable to check for latest version');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
spinner.succeed();
|
|
48
|
+
const version = [...versions][0];
|
|
49
|
+
if (semver_1.default.gt(latest, version)) {
|
|
50
|
+
console.log(`A newer version of Zenstack is available: ${latest}.`);
|
|
51
|
+
}
|
|
52
|
+
else if (semver_1.default.gt(version, latest)) {
|
|
53
|
+
console.log('You are using a pre-release version of Zenstack.');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log('You are using the latest version of Zenstack.');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.info = info;
|
|
63
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/actions/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,4EAAkD;AAClD,8CAAsB;AACtB,oDAA4B;AAC5B,0CAAkD;AAElD;;GAEG;AACH,SAAsB,IAAI,CAAC,WAAmB;;QAC1C,MAAM,QAAQ,GAAG,IAAA,8BAAmB,EAAC,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACtF,OAAO;SACV;QAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE;YACrC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,OAAO,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;SAClE;QAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,gBAAM,CAAC,MAAM,CAAC,kFAAkF,CAAC,CAAC,CAAC;SACnH;aAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAgB,EAAC,UAAU,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;aACtD;iBAAM;gBACH,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,gBAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,6CAA6C,MAAM,GAAG,CAAC,CAAC;iBACvE;qBAAM,IAAI,gBAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;iBACnE;qBAAM;oBACH,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;iBAChE;aACJ;SACJ;IACL,CAAC;CAAA;AAlCD,oBAkCC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PackageManagers } from '../../utils/pkg-utils';
|
|
2
|
+
declare type Options = {
|
|
3
|
+
prisma: string | undefined;
|
|
4
|
+
packageManager: PackageManagers | undefined;
|
|
5
|
+
versionCheck: boolean;
|
|
6
|
+
tag?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* CLI action for initializing an existing project
|
|
10
|
+
*/
|
|
11
|
+
export declare function init(projectPath: string, options: Options): Promise<void>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.init = void 0;
|
|
16
|
+
const colors_1 = __importDefault(require("colors"));
|
|
17
|
+
const fs_1 = __importDefault(require("fs"));
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const pkg_utils_1 = require("../../utils/pkg-utils");
|
|
20
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
21
|
+
const cli_error_1 = require("../cli-error");
|
|
22
|
+
const cli_util_1 = require("../cli-util");
|
|
23
|
+
/**
|
|
24
|
+
* CLI action for initializing an existing project
|
|
25
|
+
*/
|
|
26
|
+
function init(projectPath, options) {
|
|
27
|
+
var _a;
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (!fs_1.default.existsSync(projectPath)) {
|
|
30
|
+
console.error(`Path does not exist: ${projectPath}`);
|
|
31
|
+
throw new cli_error_1.CliError('project path does not exist');
|
|
32
|
+
}
|
|
33
|
+
const defaultPrismaSchemaLocation = './prisma/schema.prisma';
|
|
34
|
+
let prismaSchema = options.prisma;
|
|
35
|
+
if (prismaSchema) {
|
|
36
|
+
if (!fs_1.default.existsSync(prismaSchema)) {
|
|
37
|
+
console.error(`Prisma schema file does not exist: ${prismaSchema}`);
|
|
38
|
+
throw new cli_error_1.CliError('prisma schema does not exist');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (fs_1.default.existsSync(defaultPrismaSchemaLocation)) {
|
|
42
|
+
prismaSchema = defaultPrismaSchemaLocation;
|
|
43
|
+
}
|
|
44
|
+
const zmodelFile = path_1.default.join(projectPath, './schema.zmodel');
|
|
45
|
+
let sampleModelGenerated = false;
|
|
46
|
+
if (fs_1.default.existsSync(zmodelFile)) {
|
|
47
|
+
console.warn(`ZenStack model already exists at ${zmodelFile}, not generating a new one.`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (prismaSchema) {
|
|
51
|
+
// copy over schema.prisma
|
|
52
|
+
fs_1.default.copyFileSync(prismaSchema, zmodelFile);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// create a new model
|
|
56
|
+
const starterContent = fs_1.default.readFileSync(path_1.default.join(__dirname, '../../res/starter.zmodel'), 'utf-8');
|
|
57
|
+
fs_1.default.writeFileSync(zmodelFile, starterContent);
|
|
58
|
+
sampleModelGenerated = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
(0, pkg_utils_1.ensurePackage)('prisma', true, options.packageManager, 'latest', projectPath);
|
|
62
|
+
(0, pkg_utils_1.ensurePackage)('@prisma/client', false, options.packageManager, 'latest', projectPath);
|
|
63
|
+
const tag = (_a = options.tag) !== null && _a !== void 0 ? _a : (0, version_utils_1.getVersion)();
|
|
64
|
+
(0, pkg_utils_1.installPackage)('zenstack', true, options.packageManager, tag, projectPath);
|
|
65
|
+
(0, pkg_utils_1.installPackage)('@zenstackhq/runtime', false, options.packageManager, tag, projectPath);
|
|
66
|
+
if (sampleModelGenerated) {
|
|
67
|
+
console.log(`Sample model generated at: ${colors_1.default.blue(zmodelFile)}
|
|
68
|
+
|
|
69
|
+
Please check the following guide on how to model your app:
|
|
70
|
+
https://zenstack.dev/#/modeling-your-app.`);
|
|
71
|
+
}
|
|
72
|
+
else if (prismaSchema) {
|
|
73
|
+
console.log(`Your current Prisma schema "${prismaSchema}" has been copied to "${zmodelFile}".
|
|
74
|
+
Moving forward please edit this file and run "zenstack generate" to regenerate Prisma schema.`);
|
|
75
|
+
}
|
|
76
|
+
console.log(colors_1.default.green('\nProject initialized successfully!'));
|
|
77
|
+
if (options.versionCheck) {
|
|
78
|
+
yield (0, cli_util_1.checkNewVersion)();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
exports.init = init;
|
|
83
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/actions/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,qDAAuF;AACvF,6DAAuD;AACvD,4CAAwC;AACxC,0CAA8C;AAS9C;;GAEG;AACH,SAAsB,IAAI,CAAC,WAAmB,EAAE,OAAgB;;;QAC5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,oBAAQ,CAAC,6BAA6B,CAAC,CAAC;SACrD;QAED,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;QAC7D,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBAC9B,OAAO,CAAC,KAAK,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;gBACpE,MAAM,IAAI,oBAAQ,CAAC,8BAA8B,CAAC,CAAC;aACtD;SACJ;aAAM,IAAI,YAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE;YACnD,YAAY,GAAG,2BAA2B,CAAC;SAC9C;QAED,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,oBAAoB,GAAG,KAAK,CAAC;QAEjC,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,oCAAoC,UAAU,6BAA6B,CAAC,CAAC;SAC7F;aAAM;YACH,IAAI,YAAY,EAAE;gBACd,0BAA0B;gBAC1B,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;aAC7C;iBAAM;gBACH,qBAAqB;gBACrB,MAAM,cAAc,GAAG,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;gBAClG,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBAC7C,oBAAoB,GAAG,IAAI,CAAC;aAC/B;SACJ;QAED,IAAA,yBAAa,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAA,yBAAa,EAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEtF,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,GAAG,mCAAI,IAAA,0BAAU,GAAE,CAAC;QACxC,IAAA,0BAAc,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAA,0BAAc,EAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAEvF,IAAI,oBAAoB,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,8BAA8B,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;;8CAG3B,CAAC,CAAC;SAC3C;aAAM,IAAI,YAAY,EAAE;YACrB,OAAO,CAAC,GAAG,CACP,+BAA+B,YAAY,yBAAyB,UAAU;8FACI,CACrF,CAAC;SACL;QAED,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,YAAY,EAAE;YACtB,MAAM,IAAA,0BAAe,GAAE,CAAC;SAC3B;;CACJ;AA1DD,oBA0DC"}
|
package/cli/cli-util.d.ts
CHANGED
|
@@ -2,11 +2,7 @@ import { Model } from '@zenstackhq/language/ast';
|
|
|
2
2
|
import { LangiumDocument, LangiumDocuments } from 'langium';
|
|
3
3
|
import { URI } from 'vscode-uri';
|
|
4
4
|
import { ZModelServices } from '../language-server/zmodel-module';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Initializes an existing project for ZenStack
|
|
8
|
-
*/
|
|
9
|
-
export declare function initProject(projectPath: string, prismaSchema: string | undefined, packageManager: PackageManagers | undefined, tag?: string): Promise<void>;
|
|
5
|
+
export declare const requiredPrismaVersion = "4.8.0";
|
|
10
6
|
/**
|
|
11
7
|
* Loads a zmodel document from a file.
|
|
12
8
|
* @param fileName File name
|
|
@@ -17,8 +13,9 @@ export declare function loadDocument(fileName: string): Promise<Model>;
|
|
|
17
13
|
export declare function eagerLoadAllImports(document: LangiumDocument, documents: LangiumDocuments, uris?: Set<string>): URI[];
|
|
18
14
|
export declare function mergeImportsDeclarations(documents: LangiumDocuments, model: Model): void;
|
|
19
15
|
export declare function getPluginDocuments(services: ZModelServices, fileName: string): Promise<LangiumDocument[]>;
|
|
20
|
-
export declare function
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
export declare function
|
|
16
|
+
export declare function getZenStackPackages(projectPath: string): {
|
|
17
|
+
pkg: string;
|
|
18
|
+
version: any;
|
|
19
|
+
}[] | undefined;
|
|
20
|
+
export declare function checkRequiredPackage(packageName: string, minVersion?: string): void;
|
|
21
|
+
export declare function checkNewVersion(): Promise<void>;
|
package/cli/cli-util.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.checkNewVersion = exports.checkRequiredPackage = exports.getZenStackPackages = exports.getPluginDocuments = exports.mergeImportsDeclarations = exports.eagerLoadAllImports = exports.loadDocument = exports.requiredPrismaVersion = void 0;
|
|
16
16
|
const ast_1 = require("@zenstackhq/language/ast");
|
|
17
17
|
const sdk_1 = require("@zenstackhq/sdk");
|
|
18
18
|
const colors_1 = __importDefault(require("colors"));
|
|
@@ -20,72 +20,16 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
20
20
|
const get_latest_version_1 = __importDefault(require("get-latest-version"));
|
|
21
21
|
const langium_1 = require("langium");
|
|
22
22
|
const node_1 = require("langium/node");
|
|
23
|
-
const ora_1 = __importDefault(require("ora"));
|
|
24
23
|
const path_1 = __importDefault(require("path"));
|
|
25
24
|
const semver_1 = __importDefault(require("semver"));
|
|
26
25
|
const vscode_uri_1 = require("vscode-uri");
|
|
27
26
|
const constants_1 = require("../language-server/constants");
|
|
28
27
|
const zmodel_module_1 = require("../language-server/zmodel-module");
|
|
29
28
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
30
|
-
const pkg_utils_1 = require("../utils/pkg-utils");
|
|
31
29
|
const version_utils_1 = require("../utils/version-utils");
|
|
32
30
|
const cli_error_1 = require("./cli-error");
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* Initializes an existing project for ZenStack
|
|
36
|
-
*/
|
|
37
|
-
function initProject(projectPath, prismaSchema, packageManager, tag) {
|
|
38
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
if (!fs_1.default.existsSync(projectPath)) {
|
|
40
|
-
console.error(`Path does not exist: ${projectPath}`);
|
|
41
|
-
throw new cli_error_1.CliError('project path does not exist');
|
|
42
|
-
}
|
|
43
|
-
const defaultPrismaSchemaLocation = './prisma/schema.prisma';
|
|
44
|
-
if (prismaSchema) {
|
|
45
|
-
if (!fs_1.default.existsSync(prismaSchema)) {
|
|
46
|
-
console.error(`Prisma schema file does not exist: ${prismaSchema}`);
|
|
47
|
-
throw new cli_error_1.CliError('prisma schema does not exist');
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else if (fs_1.default.existsSync(defaultPrismaSchemaLocation)) {
|
|
51
|
-
prismaSchema = defaultPrismaSchemaLocation;
|
|
52
|
-
}
|
|
53
|
-
const zmodelFile = path_1.default.join(projectPath, './schema.zmodel');
|
|
54
|
-
let sampleModelGenerated = false;
|
|
55
|
-
if (fs_1.default.existsSync(zmodelFile)) {
|
|
56
|
-
console.warn(`ZenStack model already exists at ${zmodelFile}, not generating a new one.`);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
if (prismaSchema) {
|
|
60
|
-
// copy over schema.prisma
|
|
61
|
-
fs_1.default.copyFileSync(prismaSchema, zmodelFile);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
// create a new model
|
|
65
|
-
const starterContent = fs_1.default.readFileSync(path_1.default.join(__dirname, '../res/starter.zmodel'), 'utf-8');
|
|
66
|
-
fs_1.default.writeFileSync(zmodelFile, starterContent);
|
|
67
|
-
sampleModelGenerated = true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
(0, pkg_utils_1.ensurePackage)('prisma', true, packageManager, 'latest', projectPath);
|
|
71
|
-
(0, pkg_utils_1.ensurePackage)('@prisma/client', false, packageManager, 'latest', projectPath);
|
|
72
|
-
tag = tag !== null && tag !== void 0 ? tag : (0, version_utils_1.getVersion)();
|
|
73
|
-
(0, pkg_utils_1.installPackage)('zenstack', true, packageManager, tag, projectPath);
|
|
74
|
-
(0, pkg_utils_1.installPackage)('@zenstackhq/runtime', false, packageManager, tag, projectPath);
|
|
75
|
-
if (sampleModelGenerated) {
|
|
76
|
-
console.log(`Sample model generated at: ${colors_1.default.blue(zmodelFile)}
|
|
77
|
-
|
|
78
|
-
Please check the following guide on how to model your app:
|
|
79
|
-
https://zenstack.dev/#/modeling-your-app.`);
|
|
80
|
-
}
|
|
81
|
-
else if (prismaSchema) {
|
|
82
|
-
console.log(`Your current Prisma schema "${prismaSchema}" has been copied to "${zmodelFile}".
|
|
83
|
-
Moving forward please edit this file and run "zenstack generate" to regenerate Prisma schema.`);
|
|
84
|
-
}
|
|
85
|
-
console.log(colors_1.default.green('\nProject initialized successfully!'));
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
exports.initProject = initProject;
|
|
31
|
+
// required minimal version of Prisma
|
|
32
|
+
exports.requiredPrismaVersion = '4.8.0';
|
|
89
33
|
/**
|
|
90
34
|
* Loads a zmodel document from a file.
|
|
91
35
|
* @param fileName File name
|
|
@@ -210,84 +154,58 @@ function getPluginDocuments(services, fileName) {
|
|
|
210
154
|
});
|
|
211
155
|
}
|
|
212
156
|
exports.getPluginDocuments = getPluginDocuments;
|
|
213
|
-
function
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
157
|
+
function getZenStackPackages(projectPath) {
|
|
158
|
+
var _a, _b;
|
|
159
|
+
let pkgJson;
|
|
160
|
+
const resolvedPath = path_1.default.resolve(projectPath);
|
|
161
|
+
try {
|
|
162
|
+
pkgJson = require(path_1.default.join(resolvedPath, 'package.json'));
|
|
163
|
+
}
|
|
164
|
+
catch (_c) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
const packages = [
|
|
168
|
+
...Object.keys((_a = pkgJson.dependencies) !== null && _a !== void 0 ? _a : {}).filter((p) => p.startsWith('@zenstackhq/')),
|
|
169
|
+
...Object.keys((_b = pkgJson.devDependencies) !== null && _b !== void 0 ? _b : {}).filter((p) => p.startsWith('@zenstackhq/')),
|
|
170
|
+
];
|
|
171
|
+
const result = packages.map((pkg) => {
|
|
221
172
|
try {
|
|
222
|
-
|
|
173
|
+
const resolved = require.resolve(`${pkg}/package.json`, { paths: [resolvedPath] });
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
175
|
+
return { pkg, version: require(resolved).version };
|
|
223
176
|
}
|
|
224
|
-
catch (
|
|
225
|
-
|
|
226
|
-
console.error(colors_1.default.red(`${err.plugin}: ${err.message}`));
|
|
227
|
-
throw new cli_error_1.CliError(err.message);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
throw err;
|
|
231
|
-
}
|
|
177
|
+
catch (_a) {
|
|
178
|
+
return { pkg, version: undefined };
|
|
232
179
|
}
|
|
233
180
|
});
|
|
181
|
+
result.splice(0, 0, { pkg: 'zenstack', version: (0, version_utils_1.getVersion)() });
|
|
182
|
+
return result;
|
|
234
183
|
}
|
|
235
|
-
exports.
|
|
236
|
-
function
|
|
237
|
-
|
|
184
|
+
exports.getZenStackPackages = getZenStackPackages;
|
|
185
|
+
function checkRequiredPackage(packageName, minVersion) {
|
|
186
|
+
let packageVersion;
|
|
187
|
+
try {
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
189
|
+
packageVersion = require(`${packageName}/package.json`).version;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
console.error(colors_1.default.red(`${packageName} not found, please install it`));
|
|
193
|
+
throw new cli_error_1.CliError(`${packageName} not found`);
|
|
194
|
+
}
|
|
195
|
+
if (minVersion && semver_1.default.lt(packageVersion, minVersion)) {
|
|
196
|
+
console.error(colors_1.default.red(`${packageName} needs to be above ${minVersion}, the installed version is ${packageVersion}, please upgrade it`));
|
|
197
|
+
throw new cli_error_1.CliError(`${packageName} version is too low`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.checkRequiredPackage = checkRequiredPackage;
|
|
201
|
+
function checkNewVersion() {
|
|
238
202
|
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
pkgJson = require(path_1.default.join(resolvedPath, 'package.json'));
|
|
244
|
-
}
|
|
245
|
-
catch (_c) {
|
|
246
|
-
console.error('Unable to locate package.json. Are you in a valid project directory?');
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
const packages = [
|
|
250
|
-
'zenstack',
|
|
251
|
-
...Object.keys((_a = pkgJson.dependencies) !== null && _a !== void 0 ? _a : {}).filter((p) => p.startsWith('@zenstackhq/')),
|
|
252
|
-
...Object.keys((_b = pkgJson.devDependencies) !== null && _b !== void 0 ? _b : {}).filter((p) => p.startsWith('@zenstackhq/')),
|
|
253
|
-
];
|
|
254
|
-
const versions = new Set();
|
|
255
|
-
for (const pkg of packages) {
|
|
256
|
-
try {
|
|
257
|
-
const resolved = require.resolve(`${pkg}/package.json`, { paths: [resolvedPath] });
|
|
258
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
259
|
-
const version = require(resolved).version;
|
|
260
|
-
versions.add(version);
|
|
261
|
-
console.log(` ${colors_1.default.green(pkg.padEnd(20))}\t${version}`);
|
|
262
|
-
}
|
|
263
|
-
catch (_d) {
|
|
264
|
-
// noop
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (versions.size > 1) {
|
|
268
|
-
console.warn(colors_1.default.yellow('WARNING: Multiple versions of Zenstack packages detected. This may cause issues.'));
|
|
269
|
-
}
|
|
270
|
-
else if (versions.size > 0) {
|
|
271
|
-
const spinner = (0, ora_1.default)('Checking npm registry').start();
|
|
272
|
-
const latest = yield (0, get_latest_version_1.default)('zenstack');
|
|
273
|
-
if (!latest) {
|
|
274
|
-
spinner.fail('unable to check for latest version');
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
spinner.succeed();
|
|
278
|
-
const version = [...versions][0];
|
|
279
|
-
if (semver_1.default.gt(latest, version)) {
|
|
280
|
-
console.log(`A newer version of Zenstack is available: ${latest}.`);
|
|
281
|
-
}
|
|
282
|
-
else if (semver_1.default.gt(version, latest)) {
|
|
283
|
-
console.log('You are using a pre-release version of Zenstack.');
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
console.log('You are using the latest version of Zenstack.');
|
|
287
|
-
}
|
|
288
|
-
}
|
|
203
|
+
const currVersion = (0, version_utils_1.getVersion)();
|
|
204
|
+
const latestVersion = yield (0, get_latest_version_1.default)('zenstack');
|
|
205
|
+
if (latestVersion && semver_1.default.gt(latestVersion, currVersion)) {
|
|
206
|
+
console.log(`A newer version ${colors_1.default.cyan(latestVersion)} is available.`);
|
|
289
207
|
}
|
|
290
208
|
});
|
|
291
209
|
}
|
|
292
|
-
exports.
|
|
210
|
+
exports.checkNewVersion = checkNewVersion;
|
|
293
211
|
//# sourceMappingURL=cli-util.js.map
|
package/cli/cli-util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":"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"}
|
package/cli/config.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
declare const schema: z.ZodObject<{
|
|
3
|
-
guardFieldName: z.ZodDefault<z.ZodString>;
|
|
4
|
-
transactionFieldName: z.ZodDefault<z.ZodString>;
|
|
5
|
-
}, "strict", z.ZodTypeAny, {
|
|
6
|
-
guardFieldName: string;
|
|
7
|
-
transactionFieldName: string;
|
|
8
|
-
}, {
|
|
9
|
-
guardFieldName?: string | undefined;
|
|
10
|
-
transactionFieldName?: string | undefined;
|
|
11
|
-
}>;
|
|
2
|
+
declare const schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
12
3
|
export declare type ConfigType = z.infer<typeof schema>;
|
|
13
4
|
export declare let config: ConfigType;
|
|
14
5
|
/**
|