Skip to content

Commit 99eb798

Browse files
authored
Merge pull request #128 from zenstackhq/dev
merge dev to main (v3.0.0-alpha.15)
2 parents c9d5e1d + 043161b commit 99eb798

File tree

27 files changed

+420
-63
lines changed

27 files changed

+420
-63
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
on:
2+
release:
3+
types: [published]
4+
jobs:
5+
github-releases-to-discord:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- name: Checkout
9+
uses: actions/checkout@v3
10+
- name: Github Releases To Discord
11+
uses: SethCohen/[email protected]
12+
with:
13+
webhook_url: ${{ secrets.RELEASE_TO_DISCORD_WEBHOOK_URL }}
14+
avatar_url: 'https://cdn.discordapp.com/avatars/1297059323314176051/df91181b3f1cf0ef1592fbe18e0962d7.webp?size=160'

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-v3",
3-
"version": "3.0.0-alpha.14",
3+
"version": "3.0.0-alpha.15",
44
"description": "ZenStack",
55
"packageManager": "[email protected]",
66
"scripts": {

packages/cli/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"publisher": "zenstack",
44
"displayName": "ZenStack CLI",
55
"description": "FullStack database toolkit with built-in access control and automatic API generation.",
6-
"version": "3.0.0-alpha.14",
6+
"version": "3.0.0-alpha.15",
77
"type": "module",
88
"author": {
99
"name": "ZenStack Team"
@@ -44,12 +44,12 @@
4444
},
4545
"devDependencies": {
4646
"@types/better-sqlite3": "^7.6.13",
47-
"@types/tmp": "^0.2.6",
47+
"@types/tmp": "catalog:",
4848
"@zenstackhq/eslint-config": "workspace:*",
4949
"@zenstackhq/runtime": "workspace:*",
5050
"@zenstackhq/testtools": "workspace:*",
5151
"@zenstackhq/typescript-config": "workspace:*",
5252
"better-sqlite3": "^11.8.1",
53-
"tmp": "^0.2.3"
53+
"tmp": "catalog:"
5454
}
5555
}

packages/cli/src/actions/action-utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { loadDocument } from '@zenstackhq/language';
2+
import { isDataSource } from '@zenstackhq/language/ast';
23
import { PrismaSchemaGenerator } from '@zenstackhq/sdk';
34
import colors from 'colors';
45
import fs from 'node:fs';
@@ -41,6 +42,9 @@ export async function loadSchemaDocument(schemaFile: string) {
4142
});
4243
throw new CliError('Failed to load schema');
4344
}
45+
loadResult.warnings.forEach((warn) => {
46+
console.warn(colors.yellow(warn));
47+
});
4448
return loadResult.model;
4549
}
4650

@@ -54,6 +58,9 @@ export function handleSubProcessError(err: unknown) {
5458

5559
export async function generateTempPrismaSchema(zmodelPath: string, folder?: string) {
5660
const model = await loadSchemaDocument(zmodelPath);
61+
if (!model.declarations.some(isDataSource)) {
62+
throw new CliError('Schema must define a datasource');
63+
}
5764
const prismaSchema = await new PrismaSchemaGenerator(model).generate();
5865
if (!folder) {
5966
folder = path.dirname(zmodelPath);

packages/cli/test/ts-schema-gen.test.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { ExpressionUtils } from '@zenstackhq/runtime/schema';
2-
import { generateTsSchema } from '@zenstackhq/testtools';
2+
import { createTestProject, generateTsSchema, generateTsSchemaInPlace } from '@zenstackhq/testtools';
3+
import fs from 'node:fs';
4+
import path from 'node:path';
35
import { describe, expect, it } from 'vitest';
46

57
describe('TypeScript schema generation tests', () => {
@@ -325,4 +327,37 @@ model User extends Base {
325327
},
326328
});
327329
});
330+
331+
it('merges all declarations from imported modules', async () => {
332+
const workDir = createTestProject();
333+
fs.writeFileSync(
334+
path.join(workDir, 'a.zmodel'),
335+
`
336+
enum Role {
337+
Admin
338+
User
339+
}
340+
`,
341+
);
342+
fs.writeFileSync(
343+
path.join(workDir, 'b.zmodel'),
344+
`
345+
import './a'
346+
347+
datasource db {
348+
provider = 'sqlite'
349+
url = 'file:./test.db'
350+
}
351+
352+
model User {
353+
id Int @id
354+
role Role
355+
}
356+
`,
357+
);
358+
359+
const { schema } = await generateTsSchemaInPlace(path.join(workDir, 'b.zmodel'));
360+
expect(schema.enums).toMatchObject({ Role: expect.any(Object) });
361+
expect(schema.models).toMatchObject({ User: expect.any(Object) });
362+
});
328363
});

packages/common-helpers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/common-helpers",
3-
"version": "3.0.0-alpha.14",
3+
"version": "3.0.0-alpha.15",
44
"description": "ZenStack Common Helpers",
55
"type": "module",
66
"scripts": {

packages/create-zenstack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "create-zenstack",
3-
"version": "3.0.0-alpha.14",
3+
"version": "3.0.0-alpha.15",
44
"description": "Create a new ZenStack project",
55
"type": "module",
66
"scripts": {

packages/eslint-config/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/eslint-config",
3-
"version": "3.0.0-alpha.14",
3+
"version": "3.0.0-alpha.15",
44
"type": "module",
55
"private": true,
66
"license": "MIT"

packages/ide/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zenstack",
33
"publisher": "zenstack",
4-
"version": "3.0.0-alpha.14",
4+
"version": "3.0.0-alpha.15",
55
"displayName": "ZenStack Language Tools",
66
"description": "VSCode extension for ZenStack ZModel language",
77
"private": true,

packages/language/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/language",
33
"description": "ZenStack ZModel language specification",
4-
"version": "3.0.0-alpha.14",
4+
"version": "3.0.0-alpha.15",
55
"license": "MIT",
66
"author": "ZenStack Team",
77
"files": [
@@ -62,7 +62,9 @@
6262
"@zenstackhq/eslint-config": "workspace:*",
6363
"@zenstackhq/typescript-config": "workspace:*",
6464
"@zenstackhq/common-helpers": "workspace:*",
65-
"langium-cli": "catalog:"
65+
"langium-cli": "catalog:",
66+
"tmp": "catalog:",
67+
"@types/tmp": "catalog:"
6668
},
6769
"volta": {
6870
"node": "18.19.1",

0 commit comments

Comments
 (0)