From a517e1a5d0744ff204a37774cd23fe5e13585e73 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Sun, 20 Nov 2022 23:16:50 +0800 Subject: [PATCH 1/3] feat: add options for disabling data fetching in hooks --- packages/internal/src/client.ts | 2 +- packages/internal/src/request.ts | 7 +++-- packages/internal/src/types.ts | 8 ++++++ .../schema/src/generator/react-hooks/index.ts | 15 ++++++++--- samples/todo/components/BreadCrumb.tsx | 9 +++---- samples/todo/components/ManageMembers.tsx | 3 +++ samples/todo/components/SpaceMembers.tsx | 23 +++++++++------- samples/todo/lib/context.ts | 17 ++++++------ samples/todo/pages/space/[slug]/index.tsx | 27 +++++++++++-------- 9 files changed, 70 insertions(+), 41 deletions(-) diff --git a/packages/internal/src/client.ts b/packages/internal/src/client.ts index 249754104..a27d2b4dc 100644 --- a/packages/internal/src/client.ts +++ b/packages/internal/src/client.ts @@ -1,3 +1,3 @@ -export { ServerErrorCode } from './types'; +export { ServerErrorCode, RequestOptions } from './types'; export * as request from './request'; export * from './validation'; diff --git a/packages/internal/src/request.ts b/packages/internal/src/request.ts index 59de775d0..0d234b3ed 100644 --- a/packages/internal/src/request.ts +++ b/packages/internal/src/request.ts @@ -5,6 +5,7 @@ import type { MutatorOptions, SWRResponse, } from 'swr/dist/types'; +import { RequestOptions } from './types'; type BufferShape = { type: 'Buffer'; data: number[] }; function isBuffer(value: unknown): value is BufferShape { @@ -101,9 +102,11 @@ function makeUrl(url: string, args: unknown) { // eslint-disable-next-line @typescript-eslint/no-explicit-any export function get( url: string | null, - args?: unknown + args?: unknown, + options?: RequestOptions ): SWRResponse { - return useSWR(url && makeUrl(url, args), fetcher); + const reqUrl = options?.disabled ? null : url ? makeUrl(url, args) : null; + return useSWR(reqUrl, fetcher); } export async function post( diff --git a/packages/internal/src/types.ts b/packages/internal/src/types.ts index 53d798a97..14a7cff07 100644 --- a/packages/internal/src/types.ts +++ b/packages/internal/src/types.ts @@ -213,3 +213,11 @@ export type LogEvent = { target?: string; message?: string; }; + +/** + * Client request options + */ +export type RequestOptions = { + // disable data fetching + disabled: boolean; +}; diff --git a/packages/schema/src/generator/react-hooks/index.ts b/packages/schema/src/generator/react-hooks/index.ts index f731589a2..fe42d6057 100644 --- a/packages/schema/src/generator/react-hooks/index.ts +++ b/packages/schema/src/generator/react-hooks/index.ts @@ -51,8 +51,7 @@ export default class ReactHooksGenerator implements Generator { moduleSpecifier: '../../.prisma', }); sf.addStatements([ - `import { request, validate } from '${INTERNAL_PACKAGE}/lib/client';`, - `import { ServerErrorCode } from '@zenstackhq/runtime/client';`, + `import { request, validate, ServerErrorCode, RequestOptions } from '@zenstackhq/runtime/client';`, `import { type SWRResponse } from 'swr';`, `import { ${this.getValidator( model, @@ -119,11 +118,15 @@ export default class ReactHooksGenerator implements Generator { name: 'args?', type: `P.SelectSubset`, }, + { + name: 'options?', + type: 'RequestOptions', + }, ], }) .addBody() .addStatements([ - `return request.get, Array>>>(endpoint, args);`, + `return request.get, Array>>>(endpoint, args, options);`, ]); // get @@ -141,11 +144,15 @@ export default class ReactHooksGenerator implements Generator { name: 'args?', type: `P.SelectSubset>`, }, + { + name: 'options?', + type: 'RequestOptions', + }, ], }) .addBody() .addStatements([ - `return request.get>>(id ? \`\${endpoint}/\${id}\`: null, args);`, + `return request.get>>(id ? \`\${endpoint}/\${id}\`: null, args, options);`, ]); // update diff --git a/samples/todo/components/BreadCrumb.tsx b/samples/todo/components/BreadCrumb.tsx index 98e233c4e..0214719f9 100644 --- a/samples/todo/components/BreadCrumb.tsx +++ b/samples/todo/components/BreadCrumb.tsx @@ -1,20 +1,19 @@ +import { useCurrentSpace } from '@lib/context'; import { useList } from '@zenstackhq/runtime/hooks'; import Link from 'next/link'; import { useRouter } from 'next/router'; -import { useCurrentSpace } from '@lib/context'; export default function BreadCrumb() { const router = useRouter(); - const space = useCurrentSpace(); - const { get: getList } = useList(); - const parts = router.asPath.split('/').filter((p) => p); - const [base, slug, listId] = parts; if (base !== 'space') { return <>; } + const space = useCurrentSpace(); + const { get: getList } = useList(); + const items: Array<{ text: string; link: string }> = []; items.push({ text: 'Home', link: '/' }); diff --git a/samples/todo/components/ManageMembers.tsx b/samples/todo/components/ManageMembers.tsx index f9134c498..37209c1f3 100644 --- a/samples/todo/components/ManageMembers.tsx +++ b/samples/todo/components/ManageMembers.tsx @@ -24,6 +24,9 @@ export default function ManageMembers({ space }: Props) { include: { user: true, }, + orderBy: { + role: 'desc', + }, }); const inviteUser = async () => { diff --git a/samples/todo/components/SpaceMembers.tsx b/samples/todo/components/SpaceMembers.tsx index 92dbad08f..16ecc7e82 100644 --- a/samples/todo/components/SpaceMembers.tsx +++ b/samples/todo/components/SpaceMembers.tsx @@ -46,17 +46,20 @@ export default function SpaceMembers() { const space = useCurrentSpace(); const { find: findMembers } = useSpaceUser(); - const { data: members } = findMembers({ - where: { - spaceId: space?.id, + const { data: members } = findMembers( + { + where: { + spaceId: space?.id, + }, + include: { + user: true, + }, + orderBy: { + role: 'desc', + }, }, - include: { - user: true, - }, - orderBy: { - role: 'desc', - }, - }); + { disabled: !space } + ); return (
diff --git a/samples/todo/lib/context.ts b/samples/todo/lib/context.ts index 0fa24e751..33220359b 100644 --- a/samples/todo/lib/context.ts +++ b/samples/todo/lib/context.ts @@ -17,15 +17,16 @@ export const SpaceContext = createContext(undefined); export function useCurrentSpace() { const router = useRouter(); const { find } = useSpace(); - const spaces = find({ - where: { - slug: router.query.slug as string, + const spaces = find( + { + where: { + slug: router.query.slug as string, + }, }, - }); - - if (!router.query.slug) { - return undefined; - } + { + disabled: !router.query.slug, + } + ); return spaces.data?.[0]; } diff --git a/samples/todo/pages/space/[slug]/index.tsx b/samples/todo/pages/space/[slug]/index.tsx index a29c2652d..773f20a3e 100644 --- a/samples/todo/pages/space/[slug]/index.tsx +++ b/samples/todo/pages/space/[slug]/index.tsx @@ -121,19 +121,24 @@ export default function SpaceHome() { const space = useContext(SpaceContext); const { find } = useList(); - const { data: lists, mutate: invalidateLists } = find({ - where: { - space: { - id: space?.id, + const { data: lists, mutate: invalidateLists } = find( + { + where: { + space: { + id: space?.id, + }, + }, + include: { + owner: true, + }, + orderBy: { + updatedAt: 'desc', }, }, - include: { - owner: true, - }, - orderBy: { - updatedAt: 'desc', - }, - }); + { + disabled: !space, + } + ); return ( <> From ad4dd29055964db8efb191eeb36d57b3110b7627 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Sun, 20 Nov 2022 23:20:35 +0800 Subject: [PATCH 2/3] fix lint --- samples/todo/components/BreadCrumb.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/todo/components/BreadCrumb.tsx b/samples/todo/components/BreadCrumb.tsx index 0214719f9..cfc973d1d 100644 --- a/samples/todo/components/BreadCrumb.tsx +++ b/samples/todo/components/BreadCrumb.tsx @@ -5,15 +5,15 @@ import { useRouter } from 'next/router'; export default function BreadCrumb() { const router = useRouter(); + const space = useCurrentSpace(); + const { get: getList } = useList(); + const parts = router.asPath.split('/').filter((p) => p); const [base, slug, listId] = parts; if (base !== 'space') { return <>; } - const space = useCurrentSpace(); - const { get: getList } = useList(); - const items: Array<{ text: string; link: string }> = []; items.push({ text: 'Home', link: '/' }); From 74de95a17dfd1d78e37b857230ee06272fc70970 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Sun, 20 Nov 2022 23:25:18 +0800 Subject: [PATCH 3/3] bump version & fix lint --- package.json | 2 +- packages/internal/package.json | 2 +- packages/runtime/package.json | 2 +- packages/schema/package.json | 2 +- .../schema/src/generator/react-hooks/index.ts | 2 +- samples/todo/package-lock.json | 164 +++++++++++++++--- samples/todo/package.json | 8 +- 7 files changed, 148 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 29ea676ca..f56011ede 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zenstack-monorepo", - "version": "0.3.7", + "version": "0.3.8", "description": "", "scripts": { "build": "pnpm -r build", diff --git a/packages/internal/package.json b/packages/internal/package.json index 1d70c87f6..3081d4d44 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/internal", - "version": "0.3.7", + "version": "0.3.8", "displayName": "ZenStack Internal Library", "description": "ZenStack internal runtime library. This package is for supporting runtime functionality of ZenStack and not supposed to be used directly.", "repository": { diff --git a/packages/runtime/package.json b/packages/runtime/package.json index e505b919b..d54ad6719 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/runtime", "displayName": "ZenStack Runtime Library", - "version": "0.3.7", + "version": "0.3.8", "description": "This package contains runtime library for consuming client and server side code generated by ZenStack.", "repository": { "type": "git", diff --git a/packages/schema/package.json b/packages/schema/package.json index 10299ff74..80d82d272 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack Language Tools", "description": "A toolkit for modeling data and access policies in full-stack development with Next.js and Typescript", - "version": "0.3.7", + "version": "0.3.8", "author": { "name": "ZenStack Team" }, diff --git a/packages/schema/src/generator/react-hooks/index.ts b/packages/schema/src/generator/react-hooks/index.ts index fe42d6057..e2df73bfa 100644 --- a/packages/schema/src/generator/react-hooks/index.ts +++ b/packages/schema/src/generator/react-hooks/index.ts @@ -5,7 +5,7 @@ import { paramCase } from 'change-case'; import { DataModel } from '@lang/generated/ast'; import colors from 'colors'; import { extractDataModelsWithAllowRules } from '../ast-utils'; -import { API_ROUTE_NAME, INTERNAL_PACKAGE } from '../constants'; +import { API_ROUTE_NAME } from '../constants'; /** * Generate react data query hooks code diff --git a/samples/todo/package-lock.json b/samples/todo/package-lock.json index a67305e3e..f7130ad13 100644 --- a/samples/todo/package-lock.json +++ b/samples/todo/package-lock.json @@ -1,17 +1,17 @@ { "name": "todo", - "version": "0.3.4", + "version": "0.3.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "todo", - "version": "0.3.4", + "version": "0.3.8", "dependencies": { "@heroicons/react": "^2.0.12", "@prisma/client": "^4.4.0", - "@zenstackhq/internal": "^0.3.4", - "@zenstackhq/runtime": "^0.3.4", + "@zenstackhq/internal": "^0.3.8", + "@zenstackhq/runtime": "^0.3.8", "bcryptjs": "^2.4.3", "daisyui": "^2.31.0", "moment": "^2.29.4", @@ -36,7 +36,7 @@ "postcss": "^8.4.16", "tailwindcss": "^3.1.8", "typescript": "^4.6.2", - "zenstack": "^0.3.4" + "zenstack": "^0.3.8" } }, "node_modules/@babel/code-frame": { @@ -723,9 +723,9 @@ } }, "node_modules/@zenstackhq/internal": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@zenstackhq/internal/-/internal-0.3.4.tgz", - "integrity": "sha512-fBRbVC/AGmBX1l0U66lP/d1AaEY2rmxoPa2g1xMIeeoPnnTetymxZloUKdC2+J54/sV6q4TWfN6g5UC11SCthQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@zenstackhq/internal/-/internal-0.3.8.tgz", + "integrity": "sha512-h99TnZuYruHRdVSJ253o9cRxpY6QUa6Dkoi+hxhw43toaGkJ4I2HVH3iCpkGhKgyvihfl6cj9mvIU+DHJ67mJA==", "dependencies": { "bcryptjs": "^2.4.3", "colors": "1.4.0", @@ -744,9 +744,9 @@ } }, "node_modules/@zenstackhq/runtime": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@zenstackhq/runtime/-/runtime-0.3.4.tgz", - "integrity": "sha512-AH6FnHeWQ18NQmEjL3NH3zwKrrKuQ5xga3sDA5MmWyiOwnAzDI7btXfr/mpo4iCycxyDfcwSFKIAan+ddlPgGQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@zenstackhq/runtime/-/runtime-0.3.8.tgz", + "integrity": "sha512-EuWPBSUrWxhnncVLECSLBXLvHTwRrL5tWU+r6dp1bG1yWduj0kG9V4YIqzAyqV8EWk2BnGKKRBHCARoOtNWT/Q==", "dependencies": { "@zenstackhq/internal": "latest" }, @@ -793,6 +793,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -960,6 +972,15 @@ "node": ">=8" } }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.12", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", @@ -2419,6 +2440,19 @@ "tslib": "^2.0.3" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -2901,6 +2935,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mixpanel": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/mixpanel/-/mixpanel-0.17.0.tgz", + "integrity": "sha512-DY5WeOy/hmkPrNiiZugJpWR0iMuOwuj1a3u0bgwB2eUFRV6oIew/pIahhpawdbNjb+Bye4a8ID3gefeNPvL81g==", + "dev": true, + "dependencies": { + "https-proxy-agent": "5.0.0" + }, + "engines": { + "node": ">=10.0" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -3070,6 +3116,12 @@ "tslib": "^2.0.3" } }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -3901,6 +3953,12 @@ "node": ">=8" } }, + "node_modules/sleep-promise": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-9.1.0.tgz", + "integrity": "sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==", + "dev": true + }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -4529,20 +4587,25 @@ } }, "node_modules/zenstack": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.3.4.tgz", - "integrity": "sha512-kUqBrO6/j0PRBMbKiUvM/J6F7IWsYEkmozc3TgppJGC88LuvLDmjEZnIq7TRCCQebTPxgFu/mhYjiMUVC8fdAA==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.3.8.tgz", + "integrity": "sha512-ratdTBrswZgUem+vuQbclBf7OV1Ww0CRFvrlZmnTfeI4ObRgIfi+DanYl8zBjys9qKyZ7SoLXmcbu9lBGTcxdw==", "dev": true, "dependencies": { - "@zenstackhq/internal": "0.3.4", + "@zenstackhq/internal": "0.3.8", + "async-exit-hook": "^2.0.1", "change-case": "^4.1.2", "chevrotain": "^9.1.0", "colors": "1.4.0", "commander": "^8.3.0", + "cuid": "^2.1.8", "langium": "^0.5.0", + "mixpanel": "^0.17.0", + "node-machine-id": "^1.1.12", "pluralize": "^8.0.0", "prisma": "^4.5.0", "promisify": "^0.0.3", + "sleep-promise": "^9.1.0", "ts-morph": "^16.0.0", "uuid": "^9.0.0", "vscode-jsonrpc": "^8.0.2", @@ -5048,9 +5111,9 @@ } }, "@zenstackhq/internal": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@zenstackhq/internal/-/internal-0.3.4.tgz", - "integrity": "sha512-fBRbVC/AGmBX1l0U66lP/d1AaEY2rmxoPa2g1xMIeeoPnnTetymxZloUKdC2+J54/sV6q4TWfN6g5UC11SCthQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@zenstackhq/internal/-/internal-0.3.8.tgz", + "integrity": "sha512-h99TnZuYruHRdVSJ253o9cRxpY6QUa6Dkoi+hxhw43toaGkJ4I2HVH3iCpkGhKgyvihfl6cj9mvIU+DHJ67mJA==", "requires": { "bcryptjs": "^2.4.3", "colors": "1.4.0", @@ -5063,9 +5126,9 @@ } }, "@zenstackhq/runtime": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@zenstackhq/runtime/-/runtime-0.3.4.tgz", - "integrity": "sha512-AH6FnHeWQ18NQmEjL3NH3zwKrrKuQ5xga3sDA5MmWyiOwnAzDI7btXfr/mpo4iCycxyDfcwSFKIAan+ddlPgGQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@zenstackhq/runtime/-/runtime-0.3.8.tgz", + "integrity": "sha512-EuWPBSUrWxhnncVLECSLBXLvHTwRrL5tWU+r6dp1bG1yWduj0kG9V4YIqzAyqV8EWk2BnGKKRBHCARoOtNWT/Q==", "requires": { "@zenstackhq/internal": "latest" } @@ -5097,6 +5160,15 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -5218,6 +5290,12 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, "autoprefixer": { "version": "10.4.12", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", @@ -6313,6 +6391,16 @@ "tslib": "^2.0.3" } }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -6666,6 +6754,15 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, + "mixpanel": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/mixpanel/-/mixpanel-0.17.0.tgz", + "integrity": "sha512-DY5WeOy/hmkPrNiiZugJpWR0iMuOwuj1a3u0bgwB2eUFRV6oIew/pIahhpawdbNjb+Bye4a8ID3gefeNPvL81g==", + "dev": true, + "requires": { + "https-proxy-agent": "5.0.0" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -6763,6 +6860,12 @@ "tslib": "^2.0.3" } }, + "node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -7328,6 +7431,12 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "sleep-promise": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-9.1.0.tgz", + "integrity": "sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==", + "dev": true + }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -7805,20 +7914,25 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "zenstack": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.3.4.tgz", - "integrity": "sha512-kUqBrO6/j0PRBMbKiUvM/J6F7IWsYEkmozc3TgppJGC88LuvLDmjEZnIq7TRCCQebTPxgFu/mhYjiMUVC8fdAA==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.3.8.tgz", + "integrity": "sha512-ratdTBrswZgUem+vuQbclBf7OV1Ww0CRFvrlZmnTfeI4ObRgIfi+DanYl8zBjys9qKyZ7SoLXmcbu9lBGTcxdw==", "dev": true, "requires": { - "@zenstackhq/internal": "0.3.4", + "@zenstackhq/internal": "0.3.8", + "async-exit-hook": "^2.0.1", "change-case": "^4.1.2", "chevrotain": "^9.1.0", "colors": "1.4.0", "commander": "^8.3.0", + "cuid": "^2.1.8", "langium": "^0.5.0", + "mixpanel": "^0.17.0", + "node-machine-id": "^1.1.12", "pluralize": "^8.0.0", "prisma": "^4.5.0", "promisify": "^0.0.3", + "sleep-promise": "^9.1.0", "ts-morph": "^16.0.0", "uuid": "^9.0.0", "vscode-jsonrpc": "^8.0.2", diff --git a/samples/todo/package.json b/samples/todo/package.json index 15d5e2965..3a7c3d855 100644 --- a/samples/todo/package.json +++ b/samples/todo/package.json @@ -1,6 +1,6 @@ { "name": "todo", - "version": "0.3.7", + "version": "0.3.8", "private": true, "scripts": { "dev": "next dev", @@ -20,8 +20,8 @@ "dependencies": { "@heroicons/react": "^2.0.12", "@prisma/client": "^4.4.0", - "@zenstackhq/internal": "^0.3.4", - "@zenstackhq/runtime": "^0.3.4", + "@zenstackhq/internal": "^0.3.8", + "@zenstackhq/runtime": "^0.3.8", "bcryptjs": "^2.4.3", "daisyui": "^2.31.0", "moment": "^2.29.4", @@ -46,6 +46,6 @@ "postcss": "^8.4.16", "tailwindcss": "^3.1.8", "typescript": "^4.6.2", - "zenstack": "^0.3.4" + "zenstack": "^0.3.8" } }