zenstack 1.0.0-alpha.23 → 1.0.0-alpha.25
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 +79 -9
- package/cli/cli-error.js +3 -5
- package/cli/cli-error.js.map +1 -1
- package/cli/cli-util.js +123 -105
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +105 -63
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +130 -127
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.js +5 -13
- package/language-server/constants.js.map +1 -1
- package/language-server/main.js +8 -15
- package/language-server/main.js.map +1 -1
- package/language-server/types.js +3 -1
- package/language-server/types.js.map +1 -1
- package/language-server/utils.js +13 -16
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-validator.js +3 -7
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +293 -347
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +61 -71
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +6 -10
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +25 -31
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +18 -25
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.js +86 -85
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.js +55 -58
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-formatter.js +40 -21
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.js +328 -331
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +50 -59
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.js +35 -25
- package/language-server/zmodel-scope.js.map +1 -1
- package/language-server/zmodel-workspace-manager.js +30 -18
- package/language-server/zmodel-workspace-manager.js.map +1 -1
- package/package.json +8 -12
- package/plugins/access-policy/expression-writer.js +301 -292
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.js +20 -11
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +327 -321
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.js +94 -95
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.js +7 -9
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.js +143 -159
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +97 -102
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.js +34 -40
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/indent-string.js +4 -8
- package/plugins/prisma/indent-string.js.map +1 -1
- package/plugins/prisma/index.js +20 -11
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.js +235 -213
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.js +205 -192
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -114
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/telemetry.js +107 -90
- package/telemetry.js.map +1 -1
- package/types.js +3 -1
- package/types.js.map +1 -1
- package/utils/ast-utils.js +67 -67
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.js +6 -15
- package/utils/exec-utils.js.map +1 -1
- package/utils/pkg-utils.js +38 -35
- package/utils/pkg-utils.js.map +1 -1
- package/utils/version-utils.js +9 -10
- package/utils/version-utils.js.map +1 -1
- package/global.d.js +0 -1
- package/global.d.js.map +0 -1
package/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/cli/plugin-runner.js
CHANGED
|
@@ -1,142 +1,145 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
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 });
|
|
6
15
|
exports.PluginRunner = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
18
|
-
|
|
16
|
+
const internals_1 = require("@prisma/internals");
|
|
17
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
18
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
19
|
+
const colors_1 = __importDefault(require("colors"));
|
|
20
|
+
const fs_1 = __importDefault(require("fs"));
|
|
21
|
+
const ora_1 = __importDefault(require("ora"));
|
|
22
|
+
const path_1 = __importDefault(require("path"));
|
|
23
|
+
const telemetry_1 = __importDefault(require("../telemetry"));
|
|
24
|
+
const cli_error_1 = require("./cli-error");
|
|
19
25
|
/**
|
|
20
26
|
* ZenStack code generator
|
|
21
27
|
*/
|
|
22
28
|
class PluginRunner {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Runs a series of nested generators
|
|
31
|
+
*/
|
|
32
|
+
run(context) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const version = require('../package.json').version;
|
|
35
|
+
console.log(colors_1.default.bold(`⌛️ ZenStack CLI v${version}, running plugins`));
|
|
36
|
+
const plugins = [];
|
|
37
|
+
const pluginDecls = context.schema.declarations.filter((d) => (0, ast_1.isPlugin)(d));
|
|
38
|
+
const prereqPlugins = ['@zenstack/prisma', '@zenstack/model-meta', '@zenstack/access-policy'];
|
|
39
|
+
const allPluginProviders = prereqPlugins.concat(pluginDecls
|
|
40
|
+
.map((p) => this.getPluginProvider(p))
|
|
41
|
+
.filter((p) => !!p && !prereqPlugins.includes(p)));
|
|
42
|
+
let prismaOutput = './prisma/schema.prisma';
|
|
43
|
+
for (const pluginProvider of allPluginProviders) {
|
|
44
|
+
const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);
|
|
45
|
+
if (plugin) {
|
|
46
|
+
const options = { schemaPath: context.schemaPath };
|
|
47
|
+
plugin.fields.forEach((f) => {
|
|
48
|
+
const value = (0, sdk_1.getLiteral)(f.value) || (0, sdk_1.getLiteralArray)(f.value);
|
|
49
|
+
if (!value) {
|
|
50
|
+
throw new cli_error_1.CliError(`Invalid plugin value for ${f.name}`);
|
|
51
|
+
}
|
|
52
|
+
options[f.name] = value;
|
|
53
|
+
});
|
|
54
|
+
const pluginModulePath = this.getPluginModulePath(pluginProvider);
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
let pluginModule;
|
|
57
|
+
try {
|
|
58
|
+
pluginModule = require(pluginModulePath);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);
|
|
62
|
+
throw new cli_error_1.CliError(`Unable to load plugin module ${pluginProvider}`);
|
|
63
|
+
}
|
|
64
|
+
if (!pluginModule.default || typeof pluginModule.default !== 'function') {
|
|
65
|
+
console.error(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
66
|
+
throw new cli_error_1.CliError(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
67
|
+
}
|
|
68
|
+
plugins.push({
|
|
69
|
+
name: this.getPluginName(pluginModule, pluginProvider),
|
|
70
|
+
provider: pluginProvider,
|
|
71
|
+
run: pluginModule.default,
|
|
72
|
+
options,
|
|
73
|
+
});
|
|
74
|
+
if (pluginProvider === '@zenstack/prisma' && options.output) {
|
|
75
|
+
// record custom prisma output path
|
|
76
|
+
prismaOutput = options.output;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// synthesize a plugin
|
|
81
|
+
const pluginModule = require(this.getPluginModulePath(pluginProvider));
|
|
82
|
+
plugins.push({
|
|
83
|
+
name: this.getPluginName(pluginModule, pluginProvider),
|
|
84
|
+
provider: pluginProvider,
|
|
85
|
+
run: pluginModule.default,
|
|
86
|
+
options: { schemaPath: context.schemaPath },
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const warnings = [];
|
|
91
|
+
let dmmf = undefined;
|
|
92
|
+
for (const { name, provider, run, options } of plugins) {
|
|
93
|
+
yield this.runPlugin(name, run, context, options, dmmf, warnings);
|
|
94
|
+
if (provider === '@zenstack/prisma') {
|
|
95
|
+
// load prisma DMMF
|
|
96
|
+
dmmf = yield (0, internals_1.getDMMF)({
|
|
97
|
+
datamodel: fs_1.default.readFileSync(prismaOutput, { encoding: 'utf-8' }),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
console.log(colors_1.default.green(colors_1.default.bold('\n👻 All plugins completed successfully!')));
|
|
102
|
+
warnings.forEach((w) => console.warn(colors_1.default.yellow(w)));
|
|
46
103
|
});
|
|
47
|
-
const pluginModulePath = this.getPluginModulePath(pluginProvider);
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
-
let pluginModule;
|
|
50
|
-
try {
|
|
51
|
-
pluginModule = require(pluginModulePath);
|
|
52
|
-
} catch (err) {
|
|
53
|
-
console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);
|
|
54
|
-
throw new _cliError.CliError(`Unable to load plugin module ${pluginProvider}`);
|
|
55
|
-
}
|
|
56
|
-
if (!pluginModule.default || typeof pluginModule.default !== 'function') {
|
|
57
|
-
console.error(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
58
|
-
throw new _cliError.CliError(`Plugin provider ${pluginProvider} is missing a default function export`);
|
|
59
|
-
}
|
|
60
|
-
plugins.push({
|
|
61
|
-
name: this.getPluginName(pluginModule, pluginProvider),
|
|
62
|
-
provider: pluginProvider,
|
|
63
|
-
run: pluginModule.default,
|
|
64
|
-
options
|
|
65
|
-
});
|
|
66
|
-
if (pluginProvider === '@zenstack/prisma' && options.output) {
|
|
67
|
-
// record custom prisma output path
|
|
68
|
-
prismaOutput = options.output;
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
// synthesize a plugin
|
|
72
|
-
const pluginModule = require(this.getPluginModulePath(pluginProvider));
|
|
73
|
-
plugins.push({
|
|
74
|
-
name: this.getPluginName(pluginModule, pluginProvider),
|
|
75
|
-
provider: pluginProvider,
|
|
76
|
-
run: pluginModule.default,
|
|
77
|
-
options: {
|
|
78
|
-
schemaPath: context.schemaPath
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
104
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
+
getPluginName(pluginModule, pluginProvider) {
|
|
107
|
+
return typeof pluginModule.name === 'string' ? pluginModule.name : pluginProvider;
|
|
108
|
+
}
|
|
109
|
+
getPluginProvider(plugin) {
|
|
110
|
+
const providerField = plugin.fields.find((f) => f.name === 'provider');
|
|
111
|
+
return (0, sdk_1.getLiteral)(providerField === null || providerField === void 0 ? void 0 : providerField.value);
|
|
112
|
+
}
|
|
113
|
+
runPlugin(name, run, context, options, dmmf, warnings) {
|
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
const spinner = (0, ora_1.default)(`Running plugin ${colors_1.default.cyan(name)}`).start();
|
|
116
|
+
try {
|
|
117
|
+
yield telemetry_1.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
|
|
118
|
+
plugin: name,
|
|
119
|
+
}, () => __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
let result = run(context.schema, options, dmmf);
|
|
121
|
+
if (result instanceof Promise) {
|
|
122
|
+
result = yield result;
|
|
123
|
+
}
|
|
124
|
+
if (Array.isArray(result)) {
|
|
125
|
+
warnings.push(...result);
|
|
126
|
+
}
|
|
127
|
+
}));
|
|
128
|
+
spinner.succeed();
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
spinner.fail();
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
98
134
|
});
|
|
99
|
-
}
|
|
100
135
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
-
getPluginName(pluginModule, pluginProvider) {
|
|
107
|
-
return typeof pluginModule.name === 'string' ? pluginModule.name : pluginProvider;
|
|
108
|
-
}
|
|
109
|
-
getPluginProvider(plugin) {
|
|
110
|
-
const providerField = plugin.fields.find(f => f.name === 'provider');
|
|
111
|
-
return (0, _sdk.getLiteral)(providerField === null || providerField === void 0 ? void 0 : providerField.value);
|
|
112
|
-
}
|
|
113
|
-
async runPlugin(name, run, context, options, dmmf, warnings) {
|
|
114
|
-
const spinner = (0, _ora.default)(`Running plugin ${_colors.default.cyan(name)}`).start();
|
|
115
|
-
try {
|
|
116
|
-
await _telemetry.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
|
|
117
|
-
plugin: name
|
|
118
|
-
}, async () => {
|
|
119
|
-
let result = run(context.schema, options, dmmf);
|
|
120
|
-
if (result instanceof Promise) {
|
|
121
|
-
result = await result;
|
|
136
|
+
getPluginModulePath(provider) {
|
|
137
|
+
let pluginModulePath = provider;
|
|
138
|
+
if (pluginModulePath.startsWith('@zenstack/')) {
|
|
139
|
+
pluginModulePath = pluginModulePath.replace(/^@zenstack/, path_1.default.join(__dirname, '../plugins'));
|
|
122
140
|
}
|
|
123
|
-
|
|
124
|
-
warnings.push(...result);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
spinner.succeed();
|
|
128
|
-
} catch (err) {
|
|
129
|
-
spinner.fail();
|
|
130
|
-
throw err;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
getPluginModulePath(provider) {
|
|
134
|
-
let pluginModulePath = provider;
|
|
135
|
-
if (pluginModulePath.startsWith('@zenstack/')) {
|
|
136
|
-
pluginModulePath = pluginModulePath.replace(/^@zenstack/, _path.default.join(__dirname, '../plugins'));
|
|
141
|
+
return pluginModulePath;
|
|
137
142
|
}
|
|
138
|
-
return pluginModulePath;
|
|
139
|
-
}
|
|
140
143
|
}
|
|
141
144
|
exports.PluginRunner = PluginRunner;
|
|
142
145
|
//# sourceMappingURL=plugin-runner.js.map
|
package/cli/plugin-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runner.js","names":["PluginRunner","run","context","version","require","console","log","colors","bold","plugins","pluginDecls","schema","declarations","filter","d","isPlugin","prereqPlugins","allPluginProviders","concat","map","p","getPluginProvider","includes","prismaOutput","pluginProvider","plugin","find","options","schemaPath","fields","forEach","f","value","getLiteral","getLiteralArray","CliError","name","pluginModulePath","getPluginModulePath","pluginModule","err","error","default","push","getPluginName","provider","output","warnings","dmmf","undefined","runPlugin","getDMMF","datamodel","fs","readFileSync","encoding","green","w","warn","yellow","providerField","spinner","ora","cyan","start","telemetry","trackSpan","result","Promise","Array","isArray","succeed","fail","startsWith","replace","path","join","__dirname"],"sources":["../../src/cli/plugin-runner.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { DMMF } from '@prisma/generator-helper';\nimport { getDMMF } from '@prisma/internals';\nimport { Plugin, isPlugin } from '@zenstackhq/language/ast';\nimport { PluginFunction, PluginOptions, getLiteral, getLiteralArray } from '@zenstackhq/sdk';\nimport colors from 'colors';\nimport fs from 'fs';\nimport ora from 'ora';\nimport path from 'path';\nimport telemetry from '../telemetry';\nimport { Context } from '../types';\nimport { CliError } from './cli-error';\n\n/**\n * ZenStack code generator\n */\nexport class PluginRunner {\n /**\n * Runs a series of nested generators\n */\n async run(context: Context): Promise<void> {\n const version = require('../package.json').version;\n console.log(colors.bold(`⌛️ ZenStack CLI v${version}, running plugins`));\n\n const plugins: Array<{\n provider: string;\n name: string;\n run: PluginFunction;\n options: PluginOptions;\n }> = [];\n\n const pluginDecls = context.schema.declarations.filter((d): d is Plugin => isPlugin(d));\n const prereqPlugins = ['@zenstack/prisma', '@zenstack/model-meta', '@zenstack/access-policy'];\n const allPluginProviders = prereqPlugins.concat(\n pluginDecls\n .map((p) => this.getPluginProvider(p))\n .filter((p): p is string => !!p && !prereqPlugins.includes(p))\n );\n let prismaOutput = './prisma/schema.prisma';\n\n for (const pluginProvider of allPluginProviders) {\n const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);\n if (plugin) {\n const options: PluginOptions = { schemaPath: context.schemaPath };\n\n plugin.fields.forEach((f) => {\n const value = getLiteral(f.value) || getLiteralArray(f.value);\n if (!value) {\n throw new CliError(`Invalid plugin value for ${f.name}`);\n }\n options[f.name] = value;\n });\n\n const pluginModulePath = this.getPluginModulePath(pluginProvider);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let pluginModule: any;\n try {\n pluginModule = require(pluginModulePath);\n } catch (err) {\n console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);\n throw new CliError(`Unable to load plugin module ${pluginProvider}`);\n }\n\n if (!pluginModule.default || typeof pluginModule.default !== 'function') {\n console.error(`Plugin provider ${pluginProvider} is missing a default function export`);\n throw new CliError(`Plugin provider ${pluginProvider} is missing a default function export`);\n }\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default as PluginFunction,\n options,\n });\n\n if (pluginProvider === '@zenstack/prisma' && options.output) {\n // record custom prisma output path\n prismaOutput = options.output as string;\n }\n } else {\n // synthesize a plugin\n const pluginModule = require(this.getPluginModulePath(pluginProvider));\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default,\n options: { schemaPath: context.schemaPath },\n });\n }\n }\n\n const warnings: string[] = [];\n\n let dmmf: DMMF.Document | undefined = undefined;\n for (const { name, provider, run, options } of plugins) {\n await this.runPlugin(name, run, context, options, dmmf, warnings);\n if (provider === '@zenstack/prisma') {\n // load prisma DMMF\n dmmf = await getDMMF({\n datamodel: fs.readFileSync(prismaOutput, { encoding: 'utf-8' }),\n });\n }\n }\n\n console.log(colors.green(colors.bold('\\n👻 All plugins completed successfully!')));\n\n warnings.forEach((w) => console.warn(colors.yellow(w)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getPluginName(pluginModule: any, pluginProvider: string): string {\n return typeof pluginModule.name === 'string' ? (pluginModule.name as string) : pluginProvider;\n }\n\n private getPluginProvider(plugin: Plugin) {\n const providerField = plugin.fields.find((f) => f.name === 'provider');\n return getLiteral<string>(providerField?.value);\n }\n\n private async runPlugin(\n name: string,\n run: PluginFunction,\n context: Context,\n options: PluginOptions,\n dmmf: DMMF.Document | undefined,\n warnings: string[]\n ) {\n const spinner = ora(`Running plugin ${colors.cyan(name)}`).start();\n try {\n await telemetry.trackSpan(\n 'cli:plugin:start',\n 'cli:plugin:complete',\n 'cli:plugin:error',\n {\n plugin: name,\n },\n async () => {\n let result = run(context.schema, options, dmmf);\n if (result instanceof Promise) {\n result = await result;\n }\n if (Array.isArray(result)) {\n warnings.push(...result);\n }\n }\n );\n spinner.succeed();\n } catch (err) {\n spinner.fail();\n throw err;\n }\n }\n\n private getPluginModulePath(provider: string) {\n let pluginModulePath = provider;\n if (pluginModulePath.startsWith('@zenstack/')) {\n pluginModulePath = pluginModulePath.replace(/^@zenstack/, path.join(__dirname, '../plugins'));\n }\n return pluginModulePath;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-runner.js","sourceRoot":"","sources":["../../src/cli/plugin-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.SUPPORTED_PROVIDERS = exports.STD_LIB_MODULE_NAME = exports.SCALAR_TYPES = void 0;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STD_LIB_MODULE_NAME = exports.SCALAR_TYPES = exports.SUPPORTED_PROVIDERS = void 0;
|
|
7
4
|
/**
|
|
8
5
|
* Supported Prisma db providers
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
exports.SUPPORTED_PROVIDERS = ['sqlite', 'postgresql', 'mysql', 'sqlserver', 'cockroachdb'];
|
|
12
8
|
/**
|
|
13
9
|
* All scalar types
|
|
14
10
|
*/
|
|
15
|
-
exports.
|
|
16
|
-
const SCALAR_TYPES = ['String', 'Int', 'Float', 'Decimal', 'BigInt', 'Boolean', 'Bytes', 'DateTime'];
|
|
17
|
-
|
|
11
|
+
exports.SCALAR_TYPES = ['String', 'Int', 'Float', 'Decimal', 'BigInt', 'Boolean', 'Bytes', 'DateTime'];
|
|
18
12
|
/**
|
|
19
13
|
* Name of standard library module
|
|
20
14
|
*/
|
|
21
|
-
exports.
|
|
22
|
-
const STD_LIB_MODULE_NAME = 'stdlib.zmodel';
|
|
23
|
-
exports.STD_LIB_MODULE_NAME = STD_LIB_MODULE_NAME;
|
|
15
|
+
exports.STD_LIB_MODULE_NAME = 'stdlib.zmodel';
|
|
24
16
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/language-server/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAEjG;;GAEG;AACU,QAAA,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAE5G;;GAEG;AACU,QAAA,mBAAmB,GAAG,eAAe,CAAC"}
|
package/language-server/main.js
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const langium_1 = require("langium");
|
|
4
|
+
const node_1 = require("langium/node");
|
|
5
|
+
const node_2 = require("vscode-languageserver/node");
|
|
6
|
+
const zmodel_module_1 = require("./zmodel-module");
|
|
7
7
|
// Create a connection to the client
|
|
8
|
-
const connection = (0,
|
|
9
|
-
|
|
8
|
+
const connection = (0, node_2.createConnection)(node_2.ProposedFeatures.all);
|
|
10
9
|
// Inject the shared services and language-specific services
|
|
11
|
-
const {
|
|
12
|
-
shared
|
|
13
|
-
} = (0, _zmodelModule.createZModelServices)({
|
|
14
|
-
connection,
|
|
15
|
-
..._node.NodeFileSystem
|
|
16
|
-
});
|
|
17
|
-
|
|
10
|
+
const { shared } = (0, zmodel_module_1.createZModelServices)(Object.assign({ connection }, node_1.NodeFileSystem));
|
|
18
11
|
// Start the language server with the shared services
|
|
19
|
-
(0,
|
|
12
|
+
(0, langium_1.startLanguageServer)(shared);
|
|
20
13
|
//# sourceMappingURL=main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;AAAA,qCAA8C;AAC9C,uCAA8C;AAC9C,qDAAgF;AAChF,mDAAuD;AAEvD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,kBAAG,UAAU,IAAK,qBAAc,EAAG,CAAC;AAE3E,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
|
package/language-server/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/language-server/types.ts"],"names":[],"mappings":""}
|
package/language-server/utils.js
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.getContainingModel = getContainingModel;
|
|
7
|
-
exports.isFromStdlib = isFromStdlib;
|
|
8
|
-
var _constants = require("./constants");
|
|
9
|
-
var _ast = require("@zenstackhq/language/ast");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFromStdlib = exports.getContainingModel = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
10
6
|
/**
|
|
11
7
|
* Gets the toplevel Model containing the given node.
|
|
12
8
|
*/
|
|
13
9
|
function getContainingModel(node) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
if (!node) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return (0, ast_1.isModel)(node) ? node : getContainingModel(node.$container);
|
|
18
14
|
}
|
|
19
|
-
|
|
15
|
+
exports.getContainingModel = getContainingModel;
|
|
20
16
|
/**
|
|
21
17
|
* Returns if the given node is declared in stdlib.
|
|
22
18
|
*/
|
|
23
19
|
function isFromStdlib(node) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
var _a;
|
|
21
|
+
const model = getContainingModel(node);
|
|
22
|
+
return model && ((_a = model.$document) === null || _a === void 0 ? void 0 : _a.uri.path.endsWith(constants_1.STD_LIB_MODULE_NAME));
|
|
27
23
|
}
|
|
24
|
+
exports.isFromStdlib = isFromStdlib;
|
|
28
25
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/language-server/utils.ts"],"names":[],"mappings":";;;AACA,2CAAkD;AAClD,kDAA0D;AAE1D;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAyB;IACxD,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,IAAI,CAAC;KACf;IACD,OAAO,IAAA,aAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC;AALD,gDAKC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAa;;IACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,KAAI,MAAA,KAAK,CAAC,SAAS,0CAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAAmB,CAAC,CAAA,CAAC;AAC5E,CAAC;AAHD,oCAGC"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
3
|
/**
|
|
8
4
|
* Validates attribute declarations.
|
|
9
5
|
*/
|
|
10
6
|
class AttributeValidator {
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
|
|
8
|
+
validate(attr, accept) { }
|
|
13
9
|
}
|
|
14
10
|
exports.default = AttributeValidator;
|
|
15
11
|
//# sourceMappingURL=attribute-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-validator.js","
|
|
1
|
+
{"version":3,"file":"attribute-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/attribute-validator.ts"],"names":[],"mappings":";;AAIA;;GAEG;AACH,MAAqB,kBAAkB;IACnC,mGAAmG;IACnG,QAAQ,CAAC,IAAe,EAAE,MAA0B,IAAS,CAAC;CACjE;AAHD,qCAGC"}
|