Skip to content

Commit b9c7572

Browse files
authored
merge dev to main (v2.2.0) (#1497)
2 parents 71a389c + 28c2bc8 commit b9c7572

File tree

80 files changed

+5521
-1363
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+5521
-1363
lines changed

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
* text=auto eol=lf
2+
3+
*.bat text=auto eol=crlf

CONTRIBUTING.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,24 @@ I want to think you first for considering contributing to ZenStack 🙏🏻. It'
55
## Prerequisites
66

77
- [Node.js](https://nodejs.org/): v18 or above
8-
- [pnpm](https://pnpm.io/): latest version
8+
- [pnpm](https://pnpm.io/): v8.x
9+
10+
If you want to run the tests, you should be aware that some of the integration tests run against postgres. These tests will attempt to set up and subsequently their own database, so you'll need to provide a connection details for a postgres user with at least those permissions. To provide connection details, you can configure the following environment variables or provide them when executing `pnpm test` commands.
11+
12+
- `ZENSTACK_TEST_DB_USER`: The postgres username, for a user with permission to create/drop databases. Default: `postgres`.
13+
- `ZENSTACK_TEST_DB_PASS`: Password for said user. Default: `abc123`.
14+
- `ZENSTACK_TEST_DB_NAME`: Default database to connect onto. This database isn't used any further, so it's recommended to just use the default `postgres` database. Default: `postgres`.
15+
- `ZENSTACK_TEST_DB_HOST`: Hostname or IP to connect onto. Default: `localhost`.
16+
- `ZENSTACK_TEST_DB_PORT`: Port number to connect onto. Default: `5432`.
917

1018
## Get started
1119

20+
1. (Windows only) Your environment should support symlinks, by enabling "Developer mode" in `Settings => System => For developers` (Windows 10/11 only) and setting the `core.symlinks` setting in git to `true`. For more info [refer to this StackOverflow answer](https://stackoverflow.com/questions/5917249/git-symbolic-links-in-windows/59761201#59761201).
21+
22+
```pwsh
23+
git config --global core.symlinks true
24+
```
25+
1226
1. Make a fork of the repository
1327
1428
Make sure all branches are included.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-monorepo",
3-
"version": "2.1.2",
3+
"version": "2.2.0",
44
"description": "",
55
"scripts": {
66
"build": "pnpm -r build",

packages/ide/jetbrains/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group = "dev.zenstack"
12-
version = "2.1.2"
12+
version = "2.2.0"
1313

1414
repositories {
1515
mavenCentral()

packages/ide/jetbrains/package.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
{
22
"name": "jetbrains",
3-
"version": "2.1.2",
3+
"version": "2.2.0",
44
"displayName": "ZenStack JetBrains IDE Plugin",
55
"description": "ZenStack JetBrains IDE plugin",
66
"homepage": "https://zenstack.dev",
77
"private": true,
88
"scripts": {
9-
"build": "./gradlew buildPlugin"
9+
"build": "run-script-os",
10+
"build:win32": "gradlew.bat buildPlugin",
11+
"build:default": "./gradlew buildPlugin"
1012
},
1113
"author": "ZenStack Team",
1214
"license": "MIT",
1315
"devDependencies": {
14-
"zenstack": "workspace:*",
15-
"@zenstackhq/language": "workspace:*"
16+
"@zenstackhq/language": "workspace:*",
17+
"run-script-os": "^1.1.6",
18+
"zenstack": "workspace:*"
1619
}
1720
}

packages/language/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/language",
3-
"version": "2.1.2",
3+
"version": "2.2.0",
44
"displayName": "ZenStack modeling language compiler",
55
"description": "ZenStack modeling language compiler",
66
"homepage": "https://zenstack.dev",
@@ -9,7 +9,7 @@
99
"generate": "langium generate && npx ts-node script/generate-plist.ts",
1010
"watch": "concurrently \"langium generate --watch\" \"tsc --watch\"",
1111
"lint": "eslint src --ext ts",
12-
"build": "pnpm lint --max-warnings=0 && pnpm clean && pnpm generate && tsc && copyfiles -F ./README.md ./LICENSE ./package.json 'syntaxes/**/*' dist && pnpm pack dist --pack-destination ../../../.build",
12+
"build": "pnpm lint --max-warnings=0 && pnpm clean && pnpm generate && tsc && copyfiles -F ./README.md ./LICENSE ./package.json \"syntaxes/**/*\" dist && pnpm pack dist --pack-destination ../../../.build",
1313
"prepublishOnly": "pnpm build"
1414
},
1515
"publishConfig": {

packages/misc/redwood/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/redwood",
33
"displayName": "ZenStack RedwoodJS Integration",
4-
"version": "2.1.2",
4+
"version": "2.2.0",
55
"description": "CLI and runtime for integrating ZenStack with RedwoodJS projects.",
66
"repository": {
77
"type": "git",

packages/plugins/openapi/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/openapi",
33
"displayName": "ZenStack Plugin and Runtime for OpenAPI",
4-
"version": "2.1.2",
4+
"version": "2.2.0",
55
"description": "ZenStack plugin and runtime supporting OpenAPI",
66
"main": "index.js",
77
"repository": {

packages/plugins/swr/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/swr",
33
"displayName": "ZenStack plugin for generating SWR hooks",
4-
"version": "2.1.2",
4+
"version": "2.2.0",
55
"description": "ZenStack plugin for generating SWR hooks",
66
"main": "index.js",
77
"repository": {

packages/plugins/tanstack-query/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/tanstack-query",
33
"displayName": "ZenStack plugin for generating tanstack-query hooks",
4-
"version": "2.1.2",
4+
"version": "2.2.0",
55
"description": "ZenStack plugin for generating tanstack-query hooks",
66
"main": "index.js",
77
"exports": {
@@ -110,6 +110,7 @@
110110
"replace-in-file": "^7.0.1",
111111
"svelte": "^4.2.1",
112112
"swr": "^2.0.3",
113+
"tmp": "^0.2.3",
113114
"vue": "^3.3.4"
114115
}
115116
}

packages/plugins/tanstack-query/src/generator.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ function generateQueryHook(
136136
});
137137

138138
if (version === 'v5' && infinite && ['react', 'svelte'].includes(target)) {
139-
// initialPageParam and getNextPageParam options are required in v5
140-
func.addStatements([`options = options ?? { initialPageParam: undefined, getNextPageParam: () => null };`]);
139+
// getNextPageParam option is required in v5
140+
func.addStatements([`options = options ?? { getNextPageParam: () => null };`]);
141141
}
142142

143143
func.addStatements([
@@ -668,20 +668,20 @@ function makeQueryOptions(
668668
? `Omit<UseInfiniteQueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`
669669
: `Omit<Use${
670670
suspense ? 'Suspense' : ''
671-
}InfiniteQueryOptions<${returnType}, TError, InfiniteData<${dataType}>>, 'queryKey'>`
671+
}InfiniteQueryOptions<${returnType}, TError, InfiniteData<${dataType}>>, 'queryKey' | 'initialPageParam'>`
672672
: `Omit<Use${suspense ? 'Suspense' : ''}QueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`
673673
)
674674
.with('vue', () => {
675-
const baseOption = `Omit<Use${
676-
infinite ? 'Infinite' : ''
677-
}QueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`;
675+
const baseOption = infinite
676+
? `Omit<UseInfiniteQueryOptions<${returnType}, TError, InfiniteData<${dataType}>>, 'queryKey' | 'initialPageParam'>`
677+
: `Omit<UseQueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`;
678678
return `MaybeRefOrGetter<${baseOption}> | ComputedRef<${baseOption}>`;
679679
})
680680
.with('svelte', () =>
681681
infinite
682682
? version === 'v4'
683683
? `Omit<CreateInfiniteQueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`
684-
: `StoreOrVal<Omit<CreateInfiniteQueryOptions<${returnType}, TError, InfiniteData<${dataType}>>, 'queryKey'>>`
684+
: `StoreOrVal<Omit<CreateInfiniteQueryOptions<${returnType}, TError, InfiniteData<${dataType}>>, 'queryKey' | 'initialPageParam'>>`
685685
: version === 'v4'
686686
? `Omit<CreateQueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>`
687687
: `StoreOrVal<Omit<CreateQueryOptions<${returnType}, TError, ${dataType}>, 'queryKey'>>`

packages/plugins/tanstack-query/src/runtime-v5/react.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,15 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
120120
model: string,
121121
url: string,
122122
args: unknown,
123-
options: Omit<UseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey'>,
123+
options: Omit<UseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>,
124124
fetch?: FetchFn
125125
) {
126126
return useInfiniteQuery({
127127
queryKey: getQueryKey(model, url, args, { infinite: true, optimisticUpdate: false }),
128128
queryFn: ({ pageParam }) => {
129129
return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? args), undefined, fetch, false);
130130
},
131+
initialPageParam: args,
131132
...options,
132133
});
133134
}
@@ -146,14 +147,18 @@ export function useSuspenseInfiniteModelQuery<TQueryFnData, TData, TError>(
146147
model: string,
147148
url: string,
148149
args: unknown,
149-
options: Omit<UseSuspenseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey'>,
150+
options: Omit<
151+
UseSuspenseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>,
152+
'queryKey' | 'initialPageParam'
153+
>,
150154
fetch?: FetchFn
151155
) {
152156
return useSuspenseInfiniteQuery({
153157
queryKey: getQueryKey(model, url, args, { infinite: true, optimisticUpdate: false }),
154158
queryFn: ({ pageParam }) => {
155159
return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? args), undefined, fetch, false);
156160
},
161+
initialPageParam: args,
157162
...options,
158163
});
159164
}

packages/plugins/tanstack-query/src/runtime-v5/svelte.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export function useModelQuery<TQueryFnData, TData, TError>(
9191
...options,
9292
};
9393
}
94-
return createQuery(mergedOpt);
94+
return createQuery<TQueryFnData, TError, TData>(mergedOpt);
9595
}
9696

9797
/**
@@ -107,20 +107,27 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
107107
model: string,
108108
url: string,
109109
args: unknown,
110-
options: StoreOrVal<Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey'>>,
110+
options: StoreOrVal<
111+
Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>
112+
>,
111113
fetch?: FetchFn
112114
) {
113115
const queryKey = getQueryKey(model, url, args, { infinite: true, optimisticUpdate: false });
114116
const queryFn = ({ pageParam }: { pageParam: unknown }) =>
115117
fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? args), undefined, fetch, false);
116118

117119
let mergedOpt: StoreOrVal<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>>;
118-
if (isStore<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>>(options)) {
120+
if (
121+
isStore<
122+
Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>
123+
>(options)
124+
) {
119125
// options is store
120126
mergedOpt = derived([options], ([$opt]) => {
121127
return {
122128
queryKey,
123129
queryFn,
130+
initialPageParam: args,
124131
...$opt,
125132
};
126133
});
@@ -129,6 +136,7 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
129136
mergedOpt = {
130137
queryKey,
131138
queryFn,
139+
initialPageParam: args,
132140
...options,
133141
};
134142
}

packages/plugins/tanstack-query/src/runtime/vue.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint-disable @typescript-eslint/ban-types */
22
/* eslint-disable @typescript-eslint/no-explicit-any */
3+
import type { InfiniteData } from '@tanstack/react-query-v5';
34
import {
45
useInfiniteQuery,
56
useMutation,
@@ -103,8 +104,12 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
103104
url: string,
104105
args?: MaybeRefOrGetter<unknown> | ComputedRef<unknown>,
105106
options?:
106-
| MaybeRefOrGetter<Omit<UseInfiniteQueryOptions<TQueryFnData, TError, TData>, 'queryKey'>>
107-
| ComputedRef<Omit<UseInfiniteQueryOptions<TQueryFnData, TError, TData>, 'queryKey'>>,
107+
| MaybeRefOrGetter<
108+
Omit<UseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>
109+
>
110+
| ComputedRef<
111+
Omit<UseInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>
112+
>,
108113
fetch?: FetchFn
109114
) {
110115
// CHECKME: vue-query's `useInfiniteQuery`'s input typing seems wrong
@@ -115,10 +120,11 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
115120
const reqUrl = makeUrl(url, pageParam ?? toValue(args));
116121
return fetcher<TQueryFnData, false>(reqUrl, undefined, fetch, false);
117122
},
123+
initialPageParam: toValue(args),
118124
...toValue(options),
119125
}));
120126

121-
return useInfiniteQuery<TQueryFnData, TError, TData>(queryOptions);
127+
return useInfiniteQuery<TQueryFnData, TError, InfiniteData<TData>>(queryOptions);
122128
}
123129

124130
/**

0 commit comments

Comments
 (0)