zenstack 1.0.0-alpha.99 → 1.0.0-beta.2
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 +53 -20
- package/cli/cli-util.d.ts +4 -1
- package/cli/cli-util.js +62 -8
- package/cli/cli-util.js.map +1 -1
- package/cli/config.js +39 -13
- package/cli/config.js.map +1 -1
- package/cli/index.js +1 -6
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +22 -18
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/utils.d.ts +1 -5
- package/language-server/utils.js +3 -20
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/datamodel-validator.d.ts +7 -0
- package/language-server/validator/datamodel-validator.js +64 -19
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +7 -7
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.d.ts +4 -1
- package/language-server/validator/schema-validator.js +25 -5
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.d.ts +1 -1
- package/language-server/validator/utils.js +10 -1
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.d.ts +2 -0
- package/language-server/validator/zmodel-validator.js +5 -1
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-code-action.d.ts +2 -1
- package/language-server/zmodel-code-action.js +19 -10
- package/language-server/zmodel-code-action.js.map +1 -1
- package/language-server/zmodel-definition.d.ts +7 -0
- package/language-server/zmodel-definition.js +31 -0
- package/language-server/zmodel-definition.js.map +1 -0
- package/language-server/zmodel-formatter.js +2 -2
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.d.ts +1 -0
- package/language-server/zmodel-linker.js +28 -6
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +4 -1
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.d.ts +7 -1
- package/language-server/zmodel-scope.js +57 -1
- package/language-server/zmodel-scope.js.map +1 -1
- package/package.json +18 -13
- package/plugins/access-policy/expression-writer.js +37 -12
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +92 -69
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.d.ts +3 -3
- package/plugins/access-policy/typescript-expression-transformer.js +84 -25
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.d.ts +2 -2
- package/plugins/access-policy/utils.js +2 -2
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.d.ts +1 -1
- package/plugins/access-policy/zod-schema-generator.js +5 -2
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +17 -28
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.d.ts +0 -4
- package/plugins/plugin-utils.js +13 -18
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/index.d.ts +1 -1
- package/plugins/prisma/prisma-builder.d.ts +3 -2
- package/plugins/prisma/prisma-builder.js +20 -5
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.d.ts +4 -1
- package/plugins/prisma/schema-generator.js +118 -30
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/zod/generator.js +16 -6
- package/plugins/zod/generator.js.map +1 -1
- package/plugins/zod/transformer.d.ts +2 -2
- package/plugins/zod/transformer.js +56 -48
- package/plugins/zod/transformer.js.map +1 -1
- package/res/starter.zmodel +4 -4
- package/res/stdlib.zmodel +74 -61
- package/telemetry.d.ts +1 -1
- package/telemetry.js +2 -2
- package/telemetry.js.map +1 -1
- package/utils/ast-utils.d.ts +22 -2
- package/utils/ast-utils.js +157 -4
- package/utils/ast-utils.js.map +1 -1
- package/utils/version-utils.js +1 -0
- package/utils/version-utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -21,13 +21,17 @@
|
|
|
21
21
|
|
|
22
22
|
## What it is
|
|
23
23
|
|
|
24
|
-
ZenStack is a toolkit that simplifies the development of a web app's backend. It supercharges [Prisma ORM](https://prisma.io) with a powerful access control layer and unleashes its full potential for
|
|
24
|
+
ZenStack is a Node.js/TypeScript toolkit that simplifies the development of a web app's backend. It supercharges [Prisma ORM](https://prisma.io) with a powerful access control layer and unleashes its full potential for full-stack development.
|
|
25
25
|
|
|
26
26
|
Our goal is to let you save time writing boilerplate code and focus on building real features!
|
|
27
27
|
|
|
28
28
|
## How it works
|
|
29
29
|
|
|
30
|
-
ZenStack
|
|
30
|
+
ZenStack incrementally extends Prisma's power with the following four layers:
|
|
31
|
+
|
|
32
|
+
### 1. ZModel - an extended Prisma schema language
|
|
33
|
+
|
|
34
|
+
ZenStack introduces a data modeling language called "ZModel" - a superset of Prisma schema language. It extended Prisma schema with custom attributes and functions and, based on that, implemented a flexible access control layer around Prisma.
|
|
31
35
|
|
|
32
36
|
```prisma
|
|
33
37
|
// schema.zmodel
|
|
@@ -47,34 +51,58 @@ model Post {
|
|
|
47
51
|
}
|
|
48
52
|
```
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
The `zenstack` CLI transpiles the ZModel into a standard Prisma schema, which you can use with the regular Prisma workflows.
|
|
55
|
+
|
|
56
|
+
### 2. Runtime enhancements to Prisma client
|
|
57
|
+
|
|
58
|
+
At runtime, transparent proxies are created around Prisma clients for intercepting queries and mutations to enforce access policies.
|
|
51
59
|
|
|
52
60
|
```ts
|
|
53
|
-
|
|
61
|
+
import { withPolicy } from '@zenstackhq/runtime';
|
|
62
|
+
|
|
63
|
+
// a regular Prisma client
|
|
64
|
+
const prisma = new PrismaClient();
|
|
65
|
+
|
|
66
|
+
async function getPosts(userId: string) {
|
|
67
|
+
// create an enhanced Prisma client that has access control enabled
|
|
68
|
+
const enhanced = withPolicy(prisma, { user: userId });
|
|
69
|
+
|
|
70
|
+
// only posts that're visible to the user will be returned
|
|
71
|
+
return enhanced.post.findMany();
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 3. Automatic RESTful APIs through server adapters
|
|
76
|
+
|
|
77
|
+
Server adapter packages help you wrap an access-control-enabled Prisma client into backend CRUD APIs that can be safely called from the frontend. Here's an example for Next.js:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
// pages/api/model/[...path].ts
|
|
54
81
|
|
|
55
82
|
import { requestHandler } from '@zenstackhq/next';
|
|
56
83
|
import { withPolicy } from '@zenstackhq/runtime';
|
|
57
84
|
import { getSessionUser } from '@lib/auth';
|
|
58
85
|
import { prisma } from '@lib/db';
|
|
59
86
|
|
|
87
|
+
// Mount Prisma-style APIs: "/api/model/post/findMany", "/api/model/post/create", etc.
|
|
88
|
+
// Can be configured to provide standard RESTful APIs (using JSON:API) instead.
|
|
60
89
|
export default requestHandler({
|
|
61
90
|
getPrisma: (req, res) => withPolicy(prisma, { user: getSessionUser(req, res) }),
|
|
62
91
|
});
|
|
63
92
|
```
|
|
64
93
|
|
|
65
|
-
|
|
94
|
+
### 4. Generated client libraries (hooks) for data access
|
|
95
|
+
|
|
96
|
+
Plugins can generate strong-typed client libraries that talk to the aforementioned APIs. Here's an example for React:
|
|
66
97
|
|
|
67
98
|
```tsx
|
|
68
|
-
//
|
|
99
|
+
// components/MyPosts.tsx
|
|
69
100
|
|
|
70
|
-
import {
|
|
101
|
+
import { useFindManyPost } from '@lib/hooks';
|
|
71
102
|
|
|
72
103
|
const MyPosts = () => {
|
|
73
|
-
// Post CRUD hooks
|
|
74
|
-
const { findMany } = usePost();
|
|
75
|
-
|
|
76
104
|
// list all posts that're visible to the current user, together with their authors
|
|
77
|
-
const { data: posts } =
|
|
105
|
+
const { data: posts } = useFindManyPost({
|
|
78
106
|
include: { author: true },
|
|
79
107
|
orderBy: { createdAt: 'desc' },
|
|
80
108
|
});
|
|
@@ -91,7 +119,9 @@ const MyPosts = () => {
|
|
|
91
119
|
};
|
|
92
120
|
```
|
|
93
121
|
|
|
94
|
-
|
|
122
|
+
## Architecture
|
|
123
|
+
|
|
124
|
+
The following diagram gives a high-level architecture overview of ZenStack.
|
|
95
125
|
|
|
96
126
|

|
|
97
127
|
|
|
@@ -116,33 +146,36 @@ The following diagram gives a high-level overview of how it works.
|
|
|
116
146
|
|
|
117
147
|
- Prisma schema generator
|
|
118
148
|
- Zod schema generator
|
|
119
|
-
-
|
|
149
|
+
- [SWR](https://github.com/vercel/swr) and [TanStack Query](https://github.com/TanStack/query) hooks generator
|
|
120
150
|
- OpenAPI specification generator
|
|
121
151
|
- [tRPC](https://trpc.io) router generator
|
|
122
152
|
- 🙋🏻 [Request for a plugin](https://go.zenstack.dev/chat)
|
|
123
153
|
|
|
124
154
|
### Framework adapters
|
|
125
155
|
|
|
126
|
-
- [Next.js](https://zenstack.dev/docs/reference/server-adapters/next)
|
|
156
|
+
- [Next.js](https://zenstack.dev/docs/reference/server-adapters/next) (including support for the new "app directory" in Next.js 13)
|
|
157
|
+
- [SvelteKit](https://zenstack.dev/docs/reference/server-adapters/sveltekit)
|
|
127
158
|
- [Fastify](https://zenstack.dev/docs/reference/server-adapters/fastify)
|
|
128
159
|
- [ExpressJS](https://zenstack.dev/docs/reference/server-adapters/express)
|
|
129
160
|
- Nuxt.js (Future)
|
|
130
|
-
- SvelteKit (Future)
|
|
131
161
|
- 🙋🏻 [Request for an adapter](https://go.zenstack.dev/chat)
|
|
132
162
|
|
|
133
163
|
### Prisma schema extensions
|
|
134
164
|
|
|
135
165
|
- [Custom attributes and functions](https://zenstack.dev/docs/reference/zmodel-language#custom-attributes-and-functions)
|
|
136
|
-
- Multi-file schema (
|
|
137
|
-
-
|
|
166
|
+
- [Multi-file schema and model inheritance](https://zenstack.dev/docs/guides/multiple-schema)
|
|
167
|
+
- Strong-typed JSON field (coming soon)
|
|
168
|
+
- Polymorphism (future)
|
|
138
169
|
- 🙋🏻 [Request for an extension](https://go.zenstack.dev/chat)
|
|
139
170
|
|
|
140
171
|
## Examples
|
|
141
172
|
|
|
142
|
-
Check out the [Collaborative Todo App](https://zenstack-todo.vercel.app/) for a running example. You can find
|
|
173
|
+
Check out the [Collaborative Todo App](https://zenstack-todo.vercel.app/) for a running example. You can find different implementations below:
|
|
143
174
|
|
|
144
|
-
- [Next.js +
|
|
145
|
-
- [Next.js +
|
|
175
|
+
- [Next.js + SWR hooks](https://github.com/zenstackhq/sample-todo-nextjs)
|
|
176
|
+
- [Next.js + TanStack Query](https://github.com/zenstackhq/sample-todo-nextjs-tanstack)
|
|
177
|
+
- [Next.js + tRPC](https://github.com/zenstackhq/sample-todo-trpc)
|
|
178
|
+
- [SvelteKit + TanStack Query](https://github.com/zenstackhq/sample-todo-sveltekit)
|
|
146
179
|
|
|
147
180
|
## Community
|
|
148
181
|
|
package/cli/cli-util.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Model } from '@zenstackhq/language/ast';
|
|
2
|
-
import { LangiumDocument } from 'langium';
|
|
2
|
+
import { LangiumDocument, LangiumDocuments } from 'langium';
|
|
3
|
+
import { URI } from 'vscode-uri';
|
|
3
4
|
import { ZModelServices } from '../language-server/zmodel-module';
|
|
4
5
|
import { PackageManagers } from '../utils/pkg-utils';
|
|
5
6
|
/**
|
|
@@ -13,6 +14,8 @@ export declare function initProject(projectPath: string, prismaSchema: string |
|
|
|
13
14
|
* @returns Parsed and validated AST
|
|
14
15
|
*/
|
|
15
16
|
export declare function loadDocument(fileName: string): Promise<Model>;
|
|
17
|
+
export declare function eagerLoadAllImports(document: LangiumDocument, documents: LangiumDocuments, uris?: Set<string>): URI[];
|
|
18
|
+
export declare function mergeImportsDeclarations(documents: LangiumDocuments, model: Model): void;
|
|
16
19
|
export declare function getPluginDocuments(services: ZModelServices, fileName: string): Promise<LangiumDocument[]>;
|
|
17
20
|
export declare function runPlugins(options: {
|
|
18
21
|
schema: string;
|
package/cli/cli-util.js
CHANGED
|
@@ -12,12 +12,13 @@ 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.dumpInfo = exports.runPlugins = exports.getPluginDocuments = exports.loadDocument = exports.initProject = void 0;
|
|
15
|
+
exports.dumpInfo = exports.runPlugins = exports.getPluginDocuments = exports.mergeImportsDeclarations = exports.eagerLoadAllImports = exports.loadDocument = exports.initProject = 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"));
|
|
19
19
|
const fs_1 = __importDefault(require("fs"));
|
|
20
20
|
const get_latest_version_1 = __importDefault(require("get-latest-version"));
|
|
21
|
+
const langium_1 = require("langium");
|
|
21
22
|
const node_1 = require("langium/node");
|
|
22
23
|
const ora_1 = __importDefault(require("ora"));
|
|
23
24
|
const path_1 = __importDefault(require("path"));
|
|
@@ -25,6 +26,7 @@ const semver_1 = __importDefault(require("semver"));
|
|
|
25
26
|
const vscode_uri_1 = require("vscode-uri");
|
|
26
27
|
const constants_1 = require("../language-server/constants");
|
|
27
28
|
const zmodel_module_1 = require("../language-server/zmodel-module");
|
|
29
|
+
const ast_utils_1 = require("../utils/ast-utils");
|
|
28
30
|
const pkg_utils_1 = require("../utils/pkg-utils");
|
|
29
31
|
const version_utils_1 = require("../utils/version-utils");
|
|
30
32
|
const cli_error_1 = require("./cli-error");
|
|
@@ -91,7 +93,6 @@ exports.initProject = initProject;
|
|
|
91
93
|
* @returns Parsed and validated AST
|
|
92
94
|
*/
|
|
93
95
|
function loadDocument(fileName) {
|
|
94
|
-
var _a;
|
|
95
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
97
|
const services = (0, zmodel_module_1.createZModelServices)(node_1.NodeFileSystem).ZModel;
|
|
97
98
|
const extensions = services.LanguageMetaData.fileExtensions;
|
|
@@ -107,13 +108,20 @@ function loadDocument(fileName) {
|
|
|
107
108
|
const stdLib = services.shared.workspace.LangiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(path_1.default.resolve(path_1.default.join(__dirname, '../res', constants_1.STD_LIB_MODULE_NAME))));
|
|
108
109
|
// load documents provided by plugins
|
|
109
110
|
const pluginDocuments = yield getPluginDocuments(services, fileName);
|
|
111
|
+
const langiumDocuments = services.shared.workspace.LangiumDocuments;
|
|
110
112
|
// load the document
|
|
111
|
-
const document =
|
|
113
|
+
const document = langiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(path_1.default.resolve(fileName)));
|
|
114
|
+
// load all imports
|
|
115
|
+
const importedURIs = eagerLoadAllImports(document, langiumDocuments);
|
|
116
|
+
const importedDocuments = importedURIs.map((uri) => langiumDocuments.getOrCreateDocument(uri));
|
|
112
117
|
// build the document together with standard library and plugin modules
|
|
113
|
-
yield services.shared.workspace.DocumentBuilder.build([stdLib, ...pluginDocuments, document], {
|
|
118
|
+
yield services.shared.workspace.DocumentBuilder.build([stdLib, ...pluginDocuments, document, ...importedDocuments], {
|
|
114
119
|
validationChecks: 'all',
|
|
115
120
|
});
|
|
116
|
-
const validationErrors =
|
|
121
|
+
const validationErrors = langiumDocuments.all
|
|
122
|
+
.flatMap((d) => { var _a; return (_a = d.diagnostics) !== null && _a !== void 0 ? _a : []; })
|
|
123
|
+
.filter((e) => e.severity === 1)
|
|
124
|
+
.toArray();
|
|
117
125
|
if (validationErrors.length > 0) {
|
|
118
126
|
console.error(colors_1.default.red('Validation errors:'));
|
|
119
127
|
for (const validationError of validationErrors) {
|
|
@@ -121,10 +129,56 @@ function loadDocument(fileName) {
|
|
|
121
129
|
}
|
|
122
130
|
throw new cli_error_1.CliError('schema validation errors');
|
|
123
131
|
}
|
|
124
|
-
|
|
132
|
+
const model = document.parseResult.value;
|
|
133
|
+
mergeImportsDeclarations(langiumDocuments, model);
|
|
134
|
+
validationAfterMerge(model);
|
|
135
|
+
(0, ast_utils_1.mergeBaseModel)(model);
|
|
136
|
+
return model;
|
|
125
137
|
});
|
|
126
138
|
}
|
|
127
139
|
exports.loadDocument = loadDocument;
|
|
140
|
+
// check global unique thing after merge imports
|
|
141
|
+
function validationAfterMerge(model) {
|
|
142
|
+
const dataSources = model.declarations.filter((d) => (0, ast_1.isDataSource)(d));
|
|
143
|
+
if (dataSources.length == 0) {
|
|
144
|
+
console.error(colors_1.default.red('Validation errors: Model must define a datasource'));
|
|
145
|
+
throw new cli_error_1.CliError('schema validation errors');
|
|
146
|
+
}
|
|
147
|
+
else if (dataSources.length > 1) {
|
|
148
|
+
console.error(colors_1.default.red('Validation errors: Multiple datasource declarations are not allowed'));
|
|
149
|
+
throw new cli_error_1.CliError('schema validation errors');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function eagerLoadAllImports(document, documents, uris = new Set()) {
|
|
153
|
+
const uriString = document.uri.toString();
|
|
154
|
+
if (!uris.has(uriString)) {
|
|
155
|
+
uris.add(uriString);
|
|
156
|
+
const model = document.parseResult.value;
|
|
157
|
+
for (const imp of model.imports) {
|
|
158
|
+
const importedModel = (0, ast_utils_1.resolveImport)(documents, imp);
|
|
159
|
+
if (importedModel) {
|
|
160
|
+
const importedDoc = (0, langium_1.getDocument)(importedModel);
|
|
161
|
+
eagerLoadAllImports(importedDoc, documents, uris);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return Array.from(uris)
|
|
166
|
+
.filter((x) => uriString != x)
|
|
167
|
+
.map((e) => vscode_uri_1.URI.parse(e));
|
|
168
|
+
}
|
|
169
|
+
exports.eagerLoadAllImports = eagerLoadAllImports;
|
|
170
|
+
function mergeImportsDeclarations(documents, model) {
|
|
171
|
+
const importedModels = (0, ast_utils_1.resolveTransitiveImports)(documents, model);
|
|
172
|
+
const importedDeclarations = importedModels.flatMap((m) => m.declarations);
|
|
173
|
+
importedDeclarations.forEach((d) => {
|
|
174
|
+
const mutable = d;
|
|
175
|
+
// The plugin might use $container to access the model
|
|
176
|
+
// need to make sure it is always resolved to the main model
|
|
177
|
+
mutable.$container = model;
|
|
178
|
+
});
|
|
179
|
+
model.declarations.push(...importedDeclarations);
|
|
180
|
+
}
|
|
181
|
+
exports.mergeImportsDeclarations = mergeImportsDeclarations;
|
|
128
182
|
function getPluginDocuments(services, fileName) {
|
|
129
183
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
184
|
// parse the user document (without validation)
|
|
@@ -146,7 +200,7 @@ function getPluginDocuments(services, fileName) {
|
|
|
146
200
|
}
|
|
147
201
|
}
|
|
148
202
|
catch (_a) {
|
|
149
|
-
|
|
203
|
+
// noop
|
|
150
204
|
}
|
|
151
205
|
}
|
|
152
206
|
}
|
|
@@ -169,7 +223,7 @@ function runPlugins(options) {
|
|
|
169
223
|
}
|
|
170
224
|
catch (err) {
|
|
171
225
|
if (err instanceof sdk_1.PluginError) {
|
|
172
|
-
console.error(colors_1.default.red(err.message));
|
|
226
|
+
console.error(colors_1.default.red(`${err.plugin}: ${err.message}`));
|
|
173
227
|
throw new cli_error_1.CliError(err.message);
|
|
174
228
|
}
|
|
175
229
|
else {
|
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,
|
|
1
|
+
{"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":"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"}
|
package/cli/config.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -6,7 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
29
|
exports.loadConfig = exports.config = void 0;
|
|
7
30
|
const sdk_1 = require("@zenstackhq/sdk");
|
|
8
31
|
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const zod_1 =
|
|
32
|
+
const zod_1 = __importStar(require("zod"));
|
|
10
33
|
const zod_validation_error_1 = require("zod-validation-error");
|
|
11
34
|
const cli_error_1 = require("./cli-error");
|
|
12
35
|
const schema = zod_1.default
|
|
@@ -21,21 +44,24 @@ exports.config = schema.parse({});
|
|
|
21
44
|
* @returns
|
|
22
45
|
*/
|
|
23
46
|
function loadConfig(filename) {
|
|
24
|
-
if (!fs_1.default.existsSync(filename)) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
let content;
|
|
28
47
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
48
|
+
const fileData = fs_1.default.readFileSync(filename, `utf-8`);
|
|
49
|
+
const content = JSON.parse(fileData);
|
|
50
|
+
exports.config = schema.parse(content);
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
52
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
53
|
+
catch (err) {
|
|
54
|
+
if ((err === null || err === void 0 ? void 0 : err.code) === `ENOENT`) {
|
|
55
|
+
throw new cli_error_1.CliError(`Config file could not be found: ${filename}`);
|
|
56
|
+
}
|
|
57
|
+
if (err instanceof SyntaxError) {
|
|
58
|
+
throw new cli_error_1.CliError(`Config is not a valid JSON file: ${filename}`);
|
|
59
|
+
}
|
|
60
|
+
if (err instanceof zod_1.ZodError) {
|
|
61
|
+
throw new cli_error_1.CliError(`Config file ${filename} is not valid: ${(0, zod_validation_error_1.fromZodError)(err)}`);
|
|
62
|
+
}
|
|
63
|
+
throw new cli_error_1.CliError(`Error loading config: ${filename}`);
|
|
37
64
|
}
|
|
38
|
-
exports.config = parsed.data;
|
|
39
65
|
}
|
|
40
66
|
exports.loadConfig = loadConfig;
|
|
41
67
|
//# sourceMappingURL=config.js.map
|
package/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2E;AAC3E,4CAAoB;AACpB,2CAAkC;AAClC,+DAAoD;AACpD,2CAAuC;AAEvC,MAAM,MAAM,GAAG,aAAC;KACX,MAAM,CAAC;IACJ,cAAc,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAgB,CAAC;IACpD,oBAAoB,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,4BAAsB,CAAC;CACnE,CAAC;KACD,MAAM,EAAE,CAAC;AAIH,QAAA,MAAM,GAAe,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,IAAI;QACA,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,cAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,8DAA8D;KACjE;IAAC,OAAO,GAAQ,EAAE;QACf,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE;YACxB,MAAM,IAAI,oBAAQ,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;SACrE;QACD,IAAI,GAAG,YAAY,WAAW,EAAE;YAC5B,MAAM,IAAI,oBAAQ,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;SACtE;QACD,IAAI,GAAG,YAAY,cAAQ,EAAE;YACzB,MAAM,IAAI,oBAAQ,CAAC,eAAe,QAAQ,kBAAkB,IAAA,mCAAY,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpF;QACD,MAAM,IAAI,oBAAQ,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;KAC3D;AACL,CAAC;AAlBD,gCAkBC"}
|
package/cli/index.js
CHANGED
|
@@ -126,12 +126,7 @@ function createProgram() {
|
|
|
126
126
|
configFile = DEFAULT_CONFIG_FILE;
|
|
127
127
|
}
|
|
128
128
|
if (configFile) {
|
|
129
|
-
|
|
130
|
-
(0, config_1.loadConfig)(configFile);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
throw new cli_error_1.CliError(`Config file ${configFile} not found`);
|
|
134
|
-
}
|
|
129
|
+
(0, config_1.loadConfig)(configFile);
|
|
135
130
|
}
|
|
136
131
|
}));
|
|
137
132
|
return program;
|
package/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,wDAAqE;AACrE,oDAA4B;AAC5B,yCAA4C;AAC5C,4CAAoB;AACpB,+CAAiC;AACjC,6DAAqC;AAErC,0DAAoD;AACpD,2CAAuC;AACvC,yCAA+D;AAC/D,qCAAsC;AAEtC,qCAAqC;AACxB,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAE7C,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAE5C,MAAM,UAAU,GAAG,CACtB,WAAmB,EACnB,OAIC,EACY,EAAE;IACf,MAAM,mBAAS,CAAC,SAAS,CACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,CAAC,IAAA,sBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CACtF,CAAC;AACN,CAAC,CAAA,CAAC;AAfW,QAAA,UAAU,cAerB;AAEK,MAAM,UAAU,GAAG,CAAO,WAAmB,EAAiB,EAAE;IACnE,MAAM,mBAAS,CAAC,SAAS,CACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,CAAC,IAAA,mBAAQ,EAAC,WAAW,CAAC,CAC9B,CAAC;AACN,CAAC,CAAA,CAAC;AARW,QAAA,UAAU,cAQrB;AAEK,MAAM,cAAc,GAAG,CAAO,OAIpC,EAAiB,EAAE;IAChB,IAAI,OAAO,CAAC,eAAe,EAAE;QACzB,oBAAoB,CAAC,QAAQ,EAAE,6BAAqB,CAAC,CAAC;QACtD,oBAAoB,CAAC,gBAAgB,EAAE,6BAAqB,CAAC,CAAC;KACjE;IACD,MAAM,mBAAS,CAAC,SAAS,CACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,EAAE,OAAO,EAAE,UAAU,EAAE,EACvB,GAAG,EAAE,CAAC,IAAA,qBAAU,EAAC,OAAO,CAAC,CAC5B,CAAC;AACN,CAAC,CAAA,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,UAAmB,EAAE,EAAE;IACtE,IAAI,cAAsB,CAAC;IAC3B,IAAI;QACA,8DAA8D;QAC9D,cAAc,GAAG,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC,OAAO,CAAC;KACnE;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,WAAW,+BAA+B,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,oBAAQ,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC;KAClD;IAED,IAAI,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE;QACrD,OAAO,CAAC,KAAK,CACT,gBAAM,CAAC,GAAG,CACN,GAAG,WAAW,sBAAsB,UAAU,8BAA8B,cAAc,qBAAqB,CAClH,CACJ,CAAC;QACF,MAAM,IAAI,oBAAQ,CAAC,GAAG,WAAW,qBAAqB,CAAC,CAAC;KAC3D;AACL,CAAC,CAAC;AAEF,SAAgB,aAAa;IACzB,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,CAAC,OAAO,CAAC,IAAA,0BAAU,GAAE,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAErE,MAAM,gBAAgB,GAAG,+BAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1E,OAAO;SACF,WAAW,CACR,GAAG,gBAAM,CAAC,IAAI,CAAC,IAAI,CACf,GAAG,CACN,wGAAwG,CAC5G;SACA,kBAAkB,EAAE;SACpB,wBAAwB,EAAE,CAAC;IAEhC,MAAM,YAAY,GAAG,IAAI,kBAAM,CAAC,iBAAiB,EAAE,+BAA+B,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAC1G,iBAAiB,CACpB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,kBAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,IAAI,kBAAM,CAAC,4BAA4B,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC;QACxF,KAAK;QACL,MAAM;QACN,MAAM;KACT,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,IAAI,kBAAM,CAAC,uBAAuB,EAAE,4CAA4C,CAAC,CAAC;IAE5G,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6DAA6D,CAAC;SAC1E,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC;SACvC,MAAM,CAAC,kBAAU,CAAC,CAAC;IAExB,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8CAA8C,CAAC;SAC3D,SAAS,CAAC,YAAY,CAAC;SACvB,SAAS,CAAC,QAAQ,CAAC;SACnB,SAAS,CAAC,IAAI,kBAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;SAC5F,SAAS,CAAC,IAAI,kBAAM,CAAC,aAAa,EAAE,yDAAyD,CAAC,CAAC;SAC/F,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC;SACvC,MAAM,CAAC,kBAAU,CAAC,CAAC;IAExB,OAAO;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sBAAsB,CAAC;SACnC,SAAS,CAAC,YAAY,CAAC;SACvB,SAAS,CAAC,YAAY,CAAC;SACvB,SAAS,CAAC,QAAQ,CAAC;SACnB,SAAS,CAAC,iBAAiB,CAAC;SAC5B,MAAM,CAAC,sBAAc,CAAC,CAAC;IAE5B,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAO,CAAC,EAAE,aAAa,EAAE,EAAE;QACjD,IAAI,UAAU,GAAuB,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/cli/plugin-runner.js
CHANGED
|
@@ -21,6 +21,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
21
21
|
const ora_1 = __importDefault(require("ora"));
|
|
22
22
|
const path_1 = __importDefault(require("path"));
|
|
23
23
|
const telemetry_1 = __importDefault(require("../telemetry"));
|
|
24
|
+
const version_utils_1 = require("../utils/version-utils");
|
|
24
25
|
const config_1 = require("./config");
|
|
25
26
|
/**
|
|
26
27
|
* ZenStack code generator
|
|
@@ -31,7 +32,7 @@ class PluginRunner {
|
|
|
31
32
|
*/
|
|
32
33
|
run(context) {
|
|
33
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
const version =
|
|
35
|
+
const version = (0, version_utils_1.getVersion)();
|
|
35
36
|
console.log(colors_1.default.bold(`⌛️ ZenStack CLI v${version}, running plugins`));
|
|
36
37
|
const plugins = [];
|
|
37
38
|
const pluginDecls = context.schema.declarations.filter((d) => (0, ast_1.isPlugin)(d));
|
|
@@ -39,19 +40,10 @@ class PluginRunner {
|
|
|
39
40
|
const allPluginProviders = prereqPlugins.concat(pluginDecls
|
|
40
41
|
.map((p) => this.getPluginProvider(p))
|
|
41
42
|
.filter((p) => !!p && !prereqPlugins.includes(p)));
|
|
42
|
-
let prismaOutput = './prisma/schema.prisma';
|
|
43
|
+
let prismaOutput = (0, sdk_1.resolvePath)('./prisma/schema.prisma', { schemaPath: context.schemaPath, name: '' });
|
|
43
44
|
for (const pluginProvider of allPluginProviders) {
|
|
44
45
|
const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);
|
|
45
46
|
if (plugin) {
|
|
46
|
-
const options = { schemaPath: context.schemaPath };
|
|
47
|
-
plugin.fields.forEach((f) => {
|
|
48
|
-
var _a;
|
|
49
|
-
const value = (_a = (0, sdk_1.getLiteral)(f.value)) !== null && _a !== void 0 ? _a : (0, sdk_1.getLiteralArray)(f.value);
|
|
50
|
-
if (value === undefined) {
|
|
51
|
-
throw new sdk_1.PluginError(`Invalid plugin value for ${f.name}`);
|
|
52
|
-
}
|
|
53
|
-
options[f.name] = value;
|
|
54
|
-
});
|
|
55
47
|
const pluginModulePath = this.getPluginModulePath(pluginProvider);
|
|
56
48
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
49
|
let pluginModule;
|
|
@@ -60,31 +52,42 @@ class PluginRunner {
|
|
|
60
52
|
}
|
|
61
53
|
catch (err) {
|
|
62
54
|
console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);
|
|
63
|
-
throw new sdk_1.PluginError(`Unable to load plugin module ${pluginProvider}`);
|
|
55
|
+
throw new sdk_1.PluginError('', `Unable to load plugin module ${pluginProvider}`);
|
|
64
56
|
}
|
|
65
57
|
if (!pluginModule.default || typeof pluginModule.default !== 'function') {
|
|
66
58
|
console.error(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
67
|
-
throw new sdk_1.PluginError(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
59
|
+
throw new sdk_1.PluginError('', `Plugin provider ${pluginProvider} is missing a default function export`);
|
|
68
60
|
}
|
|
61
|
+
const pluginName = this.getPluginName(pluginModule, pluginProvider);
|
|
62
|
+
const options = { schemaPath: context.schemaPath, name: pluginName };
|
|
63
|
+
plugin.fields.forEach((f) => {
|
|
64
|
+
var _a;
|
|
65
|
+
const value = (_a = (0, sdk_1.getLiteral)(f.value)) !== null && _a !== void 0 ? _a : (0, sdk_1.getLiteralArray)(f.value);
|
|
66
|
+
if (value === undefined) {
|
|
67
|
+
throw new sdk_1.PluginError(pluginName, `Invalid option value for ${f.name}`);
|
|
68
|
+
}
|
|
69
|
+
options[f.name] = value;
|
|
70
|
+
});
|
|
69
71
|
plugins.push({
|
|
70
|
-
name:
|
|
72
|
+
name: pluginName,
|
|
71
73
|
provider: pluginProvider,
|
|
72
74
|
run: pluginModule.default,
|
|
73
75
|
options,
|
|
74
76
|
});
|
|
75
|
-
if (pluginProvider === '@core/prisma' && options.output) {
|
|
77
|
+
if (pluginProvider === '@core/prisma' && typeof options.output === 'string') {
|
|
76
78
|
// record custom prisma output path
|
|
77
|
-
prismaOutput = options.output;
|
|
79
|
+
prismaOutput = (0, sdk_1.resolvePath)(options.output, options);
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
else {
|
|
81
83
|
// synthesize a plugin
|
|
82
84
|
const pluginModule = require(this.getPluginModulePath(pluginProvider));
|
|
85
|
+
const pluginName = this.getPluginName(pluginModule, pluginProvider);
|
|
83
86
|
plugins.push({
|
|
84
|
-
name:
|
|
87
|
+
name: pluginName,
|
|
85
88
|
provider: pluginProvider,
|
|
86
89
|
run: pluginModule.default,
|
|
87
|
-
options: { schemaPath: context.schemaPath },
|
|
90
|
+
options: { schemaPath: context.schemaPath, name: pluginName },
|
|
88
91
|
});
|
|
89
92
|
}
|
|
90
93
|
}
|
|
@@ -117,6 +120,7 @@ class PluginRunner {
|
|
|
117
120
|
try {
|
|
118
121
|
yield telemetry_1.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
|
|
119
122
|
plugin: name,
|
|
123
|
+
options,
|
|
120
124
|
}, () => __awaiter(this, void 0, void 0, function* () {
|
|
121
125
|
let result = run(context.schema, options, dmmf, config_1.config);
|
|
122
126
|
if (result instanceof Promise) {
|
package/cli/plugin-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runner.js","sourceRoot":"","sources":["../../src/cli/plugin-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,iDAA4C;AAC5C,kDAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"plugin-runner.js","sourceRoot":"","sources":["../../src/cli/plugin-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,iDAA4C;AAC5C,kDAA4D;AAC5D,yCAAuH;AACvH,oDAA4B;AAC5B,4CAAoB;AACpB,8CAAsB;AACtB,gDAAwB;AACxB,6DAAqC;AAErC,0DAAoD;AACpD,qCAAkC;AAElC;;GAEG;AACH,MAAa,YAAY;IACrB;;OAEG;IACG,GAAG,CAAC,OAAgB;;YACtB,MAAM,OAAO,GAAG,IAAA,0BAAU,GAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,mBAAmB,CAAC,CAAC,CAAC;YAEzE,MAAM,OAAO,GAKR,EAAE,CAAC;YAER,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,IAAA,cAAQ,EAAC,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAClF,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAC3C,WAAW;iBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;YACF,IAAI,YAAY,GAAG,IAAA,iBAAW,EAAC,wBAAwB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvG,KAAK,MAAM,cAAc,IAAI,kBAAkB,EAAE;gBAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACR,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;oBAClE,8DAA8D;oBAC9D,IAAI,YAAiB,CAAC;oBACtB,IAAI;wBACA,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;qBAC5C;oBAAC,OAAO,GAAG,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,cAAc,KAAK,gBAAgB,KAAK,GAAG,EAAE,CAAC,CAAC;wBAC7F,MAAM,IAAI,iBAAW,CAAC,EAAE,EAAE,gCAAgC,cAAc,EAAE,CAAC,CAAC;qBAC/E;oBAED,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE;wBACrE,OAAO,CAAC,KAAK,CAAC,mBAAmB,cAAc,uCAAuC,CAAC,CAAC;wBACxF,MAAM,IAAI,iBAAW,CAAC,EAAE,EAAE,mBAAmB,cAAc,uCAAuC,CAAC,CAAC;qBACvG;oBAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;oBACpE,MAAM,OAAO,GAAkB,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;oBAEpF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;wBACxB,MAAM,KAAK,GAAG,MAAA,IAAA,gBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,mCAAI,IAAA,qBAAe,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC9D,IAAI,KAAK,KAAK,SAAS,EAAE;4BACrB,MAAM,IAAI,iBAAW,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;yBAC3E;wBACD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC5B,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,cAAc;wBACxB,GAAG,EAAE,YAAY,CAAC,OAAyB;wBAC3C,OAAO;qBACV,CAAC,CAAC;oBAEH,IAAI,cAAc,KAAK,cAAc,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;wBACzE,mCAAmC;wBACnC,YAAY,GAAG,IAAA,iBAAW,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;qBACvD;iBACJ;qBAAM;oBACH,sBAAsB;oBACtB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;oBACvE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;oBACpE,OAAO,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,cAAc;wBACxB,GAAG,EAAE,YAAY,CAAC,OAAO;wBACzB,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;qBAChE,CAAC,CAAC;iBACN;aACJ;YAED,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,IAAI,IAAI,GAA8B,SAAS,CAAC;YAChD,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE;gBACpD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAClE,IAAI,QAAQ,KAAK,cAAc,EAAE;oBAC7B,mBAAmB;oBACnB,IAAI,GAAG,MAAM,IAAA,mBAAO,EAAC;wBACjB,SAAS,EAAE,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;qBAClE,CAAC,CAAC;iBACN;aACJ;YAED,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,KAAK,CAAC,gBAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC;YAEnF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;KAAA;IAED,8DAA8D;IACtD,aAAa,CAAC,YAAiB,EAAE,cAAsB;QAC3D,OAAO,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,YAAY,CAAC,IAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IAClG,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACpC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACvE,OAAO,IAAA,gBAAU,EAAS,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEa,SAAS,CACnB,IAAY,EACZ,GAAmB,EACnB,OAAgB,EAChB,OAAsB,EACtB,IAA+B,EAC/B,QAAkB;;YAElB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,kBAAkB,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACnE,IAAI;gBACA,MAAM,mBAAS,CAAC,SAAS,CACrB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB;oBACI,MAAM,EAAE,IAAI;oBACZ,OAAO;iBACV,EACD,GAAS,EAAE;oBACP,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAM,CAAC,CAAC;oBACxD,IAAI,MAAM,YAAY,OAAO,EAAE;wBAC3B,MAAM,GAAG,MAAM,MAAM,CAAC;qBACzB;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;qBAC5B;gBACL,CAAC,CAAA,CACJ,CAAC;gBACF,OAAO,CAAC,OAAO,EAAE,CAAC;aACrB;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC;KAAA;IAEO,mBAAmB,CAAC,QAAgB;QACxC,IAAI,gBAAgB,GAAG,QAAQ,CAAC;QAChC,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACvC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;SAC7F;QACD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;CACJ;AAnJD,oCAmJC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AstNode } from 'langium';
|
|
2
1
|
import { DataModel, DataModelField, Model } from '@zenstackhq/language/ast';
|
|
2
|
+
import { AstNode } from 'langium';
|
|
3
3
|
/**
|
|
4
4
|
* Gets the toplevel Model containing the given node.
|
|
5
5
|
*/
|
|
@@ -8,10 +8,6 @@ export declare function getContainingModel(node: AstNode | undefined): Model | n
|
|
|
8
8
|
* Returns if the given node is declared in stdlib.
|
|
9
9
|
*/
|
|
10
10
|
export declare function isFromStdlib(node: AstNode): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Gets id fields declared at the data model level
|
|
13
|
-
*/
|
|
14
|
-
export declare function getIdFields(model: DataModel): DataModelField[];
|
|
15
11
|
/**
|
|
16
12
|
* Gets lists of unique fields declared at the data model level
|
|
17
13
|
*/
|