on-zero 0.0.1
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/LICENSE +21 -0
- package/cli.cjs +3 -0
- package/dist/cjs/cli.cjs +405 -0
- package/dist/cjs/cli.js +397 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/cli.native.js +505 -0
- package/dist/cjs/cli.native.js.map +1 -0
- package/dist/cjs/constants.cjs +28 -0
- package/dist/cjs/constants.js +22 -0
- package/dist/cjs/constants.js.map +6 -0
- package/dist/cjs/constants.native.js +31 -0
- package/dist/cjs/constants.native.js.map +1 -0
- package/dist/cjs/createPermissions.cjs +82 -0
- package/dist/cjs/createPermissions.js +77 -0
- package/dist/cjs/createPermissions.js.map +6 -0
- package/dist/cjs/createPermissions.native.js +107 -0
- package/dist/cjs/createPermissions.native.js.map +1 -0
- package/dist/cjs/createUseQuery.cjs +59 -0
- package/dist/cjs/createUseQuery.js +34 -0
- package/dist/cjs/createUseQuery.js.map +6 -0
- package/dist/cjs/createUseQuery.native.js +70 -0
- package/dist/cjs/createUseQuery.native.js.map +1 -0
- package/dist/cjs/createZeroClient.cjs +162 -0
- package/dist/cjs/createZeroClient.js +126 -0
- package/dist/cjs/createZeroClient.js.map +6 -0
- package/dist/cjs/createZeroClient.native.js +214 -0
- package/dist/cjs/createZeroClient.native.js.map +1 -0
- package/dist/cjs/createZeroServer.cjs +148 -0
- package/dist/cjs/createZeroServer.js +126 -0
- package/dist/cjs/createZeroServer.js.map +6 -0
- package/dist/cjs/createZeroServer.native.js +170 -0
- package/dist/cjs/createZeroServer.native.js.map +1 -0
- package/dist/cjs/helpers/batchQuery.cjs +49 -0
- package/dist/cjs/helpers/batchQuery.js +38 -0
- package/dist/cjs/helpers/batchQuery.js.map +6 -0
- package/dist/cjs/helpers/batchQuery.native.js +49 -0
- package/dist/cjs/helpers/batchQuery.native.js.map +1 -0
- package/dist/cjs/helpers/createMutators.cjs +90 -0
- package/dist/cjs/helpers/createMutators.js +85 -0
- package/dist/cjs/helpers/createMutators.js.map +6 -0
- package/dist/cjs/helpers/createMutators.native.js +132 -0
- package/dist/cjs/helpers/createMutators.native.js.map +1 -0
- package/dist/cjs/helpers/didRunPermissionCheck.cjs +30 -0
- package/dist/cjs/helpers/didRunPermissionCheck.js +26 -0
- package/dist/cjs/helpers/didRunPermissionCheck.js.map +6 -0
- package/dist/cjs/helpers/didRunPermissionCheck.native.js +39 -0
- package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -0
- package/dist/cjs/helpers/ensureLoggedIn.cjs +33 -0
- package/dist/cjs/helpers/ensureLoggedIn.js +25 -0
- package/dist/cjs/helpers/ensureLoggedIn.js.map +6 -0
- package/dist/cjs/helpers/ensureLoggedIn.native.js +36 -0
- package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -0
- package/dist/cjs/helpers/getQueryOrMutatorAuthData.cjs +30 -0
- package/dist/cjs/helpers/getQueryOrMutatorAuthData.js +24 -0
- package/dist/cjs/helpers/getQueryOrMutatorAuthData.js.map +6 -0
- package/dist/cjs/helpers/getQueryOrMutatorAuthData.native.js +33 -0
- package/dist/cjs/helpers/getQueryOrMutatorAuthData.native.js.map +1 -0
- package/dist/cjs/helpers/mutatorContext.cjs +40 -0
- package/dist/cjs/helpers/mutatorContext.js +36 -0
- package/dist/cjs/helpers/mutatorContext.js.map +6 -0
- package/dist/cjs/helpers/mutatorContext.native.js +43 -0
- package/dist/cjs/helpers/mutatorContext.native.js.map +1 -0
- package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +107 -0
- package/dist/cjs/helpers/prettyFormatZeroQuery.js +92 -0
- package/dist/cjs/helpers/prettyFormatZeroQuery.js.map +6 -0
- package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +119 -0
- package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -0
- package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
- package/dist/cjs/helpers/useZeroDebug.js +49 -0
- package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
- package/dist/cjs/helpers/useZeroDebug.native.js +81 -0
- package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -0
- package/dist/cjs/index.cjs +42 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +45 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/mutations.cjs +51 -0
- package/dist/cjs/mutations.js +44 -0
- package/dist/cjs/mutations.js.map +6 -0
- package/dist/cjs/mutations.native.js +56 -0
- package/dist/cjs/mutations.native.js.map +1 -0
- package/dist/cjs/queryRegistry.cjs +33 -0
- package/dist/cjs/queryRegistry.js +28 -0
- package/dist/cjs/queryRegistry.js.map +6 -0
- package/dist/cjs/queryRegistry.native.js +36 -0
- package/dist/cjs/queryRegistry.native.js.map +1 -0
- package/dist/cjs/resolveQuery.cjs +41 -0
- package/dist/cjs/resolveQuery.js +40 -0
- package/dist/cjs/resolveQuery.js.map +6 -0
- package/dist/cjs/resolveQuery.native.js +46 -0
- package/dist/cjs/resolveQuery.native.js.map +1 -0
- package/dist/cjs/run.cjs +48 -0
- package/dist/cjs/run.js +37 -0
- package/dist/cjs/run.js.map +6 -0
- package/dist/cjs/run.native.js +52 -0
- package/dist/cjs/run.native.js.map +1 -0
- package/dist/cjs/server.cjs +18 -0
- package/dist/cjs/server.js +15 -0
- package/dist/cjs/server.js.map +6 -0
- package/dist/cjs/server.native.js +21 -0
- package/dist/cjs/server.native.js.map +1 -0
- package/dist/cjs/serverWhere.cjs +29 -0
- package/dist/cjs/serverWhere.js +24 -0
- package/dist/cjs/serverWhere.js.map +6 -0
- package/dist/cjs/serverWhere.native.js +32 -0
- package/dist/cjs/serverWhere.native.js.map +1 -0
- package/dist/cjs/state.cjs +49 -0
- package/dist/cjs/state.js +37 -0
- package/dist/cjs/state.js.map +6 -0
- package/dist/cjs/state.native.js +54 -0
- package/dist/cjs/state.native.js.map +1 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/types.js.map +6 -0
- package/dist/cjs/types.native.js +19 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/where.cjs +41 -0
- package/dist/cjs/where.js +35 -0
- package/dist/cjs/where.js.map +6 -0
- package/dist/cjs/where.native.js +46 -0
- package/dist/cjs/where.native.js.map +1 -0
- package/dist/cjs/zeroRunner.cjs +34 -0
- package/dist/cjs/zeroRunner.js +32 -0
- package/dist/cjs/zeroRunner.js.map +6 -0
- package/dist/cjs/zeroRunner.native.js +37 -0
- package/dist/cjs/zeroRunner.native.js.map +1 -0
- package/dist/cjs/zql.cjs +31 -0
- package/dist/cjs/zql.js +26 -0
- package/dist/cjs/zql.js.map +6 -0
- package/dist/cjs/zql.native.js +35 -0
- package/dist/cjs/zql.native.js.map +1 -0
- package/dist/esm/cli.js +383 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/cli.mjs +384 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/cli.native.js +481 -0
- package/dist/esm/cli.native.js.map +1 -0
- package/dist/esm/constants.js +6 -0
- package/dist/esm/constants.js.map +6 -0
- package/dist/esm/constants.mjs +4 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/constants.native.js +4 -0
- package/dist/esm/constants.native.js.map +1 -0
- package/dist/esm/createPermissions.js +66 -0
- package/dist/esm/createPermissions.js.map +6 -0
- package/dist/esm/createPermissions.mjs +59 -0
- package/dist/esm/createPermissions.mjs.map +1 -0
- package/dist/esm/createPermissions.native.js +81 -0
- package/dist/esm/createPermissions.native.js.map +1 -0
- package/dist/esm/createUseQuery.js +21 -0
- package/dist/esm/createUseQuery.js.map +6 -0
- package/dist/esm/createUseQuery.mjs +36 -0
- package/dist/esm/createUseQuery.mjs.map +1 -0
- package/dist/esm/createUseQuery.native.js +44 -0
- package/dist/esm/createUseQuery.native.js.map +1 -0
- package/dist/esm/createZeroClient.js +135 -0
- package/dist/esm/createZeroClient.js.map +6 -0
- package/dist/esm/createZeroClient.mjs +139 -0
- package/dist/esm/createZeroClient.mjs.map +1 -0
- package/dist/esm/createZeroClient.native.js +188 -0
- package/dist/esm/createZeroClient.native.js.map +1 -0
- package/dist/esm/createZeroServer.js +121 -0
- package/dist/esm/createZeroServer.js.map +6 -0
- package/dist/esm/createZeroServer.mjs +125 -0
- package/dist/esm/createZeroServer.mjs.map +1 -0
- package/dist/esm/createZeroServer.native.js +144 -0
- package/dist/esm/createZeroServer.native.js.map +1 -0
- package/dist/esm/helpers/batchQuery.js +22 -0
- package/dist/esm/helpers/batchQuery.js.map +6 -0
- package/dist/esm/helpers/batchQuery.mjs +26 -0
- package/dist/esm/helpers/batchQuery.mjs.map +1 -0
- package/dist/esm/helpers/batchQuery.native.js +23 -0
- package/dist/esm/helpers/batchQuery.native.js.map +1 -0
- package/dist/esm/helpers/createMutators.js +71 -0
- package/dist/esm/helpers/createMutators.js.map +6 -0
- package/dist/esm/helpers/createMutators.mjs +67 -0
- package/dist/esm/helpers/createMutators.mjs.map +1 -0
- package/dist/esm/helpers/createMutators.native.js +106 -0
- package/dist/esm/helpers/createMutators.native.js.map +1 -0
- package/dist/esm/helpers/didRunPermissionCheck.js +10 -0
- package/dist/esm/helpers/didRunPermissionCheck.js.map +6 -0
- package/dist/esm/helpers/didRunPermissionCheck.mjs +6 -0
- package/dist/esm/helpers/didRunPermissionCheck.mjs.map +1 -0
- package/dist/esm/helpers/didRunPermissionCheck.native.js +12 -0
- package/dist/esm/helpers/didRunPermissionCheck.native.js.map +1 -0
- package/dist/esm/helpers/ensureLoggedIn.js +10 -0
- package/dist/esm/helpers/ensureLoggedIn.js.map +6 -0
- package/dist/esm/helpers/ensureLoggedIn.mjs +10 -0
- package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -0
- package/dist/esm/helpers/ensureLoggedIn.native.js +10 -0
- package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.js +9 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.js.map +6 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.mjs +7 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.mjs.map +1 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.native.js +7 -0
- package/dist/esm/helpers/getQueryOrMutatorAuthData.native.js.map +1 -0
- package/dist/esm/helpers/mutatorContext.js +20 -0
- package/dist/esm/helpers/mutatorContext.js.map +6 -0
- package/dist/esm/helpers/mutatorContext.mjs +15 -0
- package/dist/esm/helpers/mutatorContext.mjs.map +1 -0
- package/dist/esm/helpers/mutatorContext.native.js +15 -0
- package/dist/esm/helpers/mutatorContext.native.js.map +1 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.js +76 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.js.map +6 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.mjs +84 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.mjs.map +1 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.native.js +93 -0
- package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -0
- package/dist/esm/helpers/useZeroDebug.js +35 -0
- package/dist/esm/helpers/useZeroDebug.js.map +6 -0
- package/dist/esm/helpers/useZeroDebug.mjs +45 -0
- package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
- package/dist/esm/helpers/useZeroDebug.native.js +55 -0
- package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +17 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +17 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/mutations.js +28 -0
- package/dist/esm/mutations.js.map +6 -0
- package/dist/esm/mutations.mjs +28 -0
- package/dist/esm/mutations.mjs.map +1 -0
- package/dist/esm/mutations.native.js +30 -0
- package/dist/esm/mutations.native.js.map +1 -0
- package/dist/esm/queryRegistry.js +12 -0
- package/dist/esm/queryRegistry.js.map +6 -0
- package/dist/esm/queryRegistry.mjs +9 -0
- package/dist/esm/queryRegistry.mjs.map +1 -0
- package/dist/esm/queryRegistry.native.js +9 -0
- package/dist/esm/queryRegistry.native.js.map +1 -0
- package/dist/esm/resolveQuery.js +24 -0
- package/dist/esm/resolveQuery.js.map +6 -0
- package/dist/esm/resolveQuery.mjs +18 -0
- package/dist/esm/resolveQuery.mjs.map +1 -0
- package/dist/esm/resolveQuery.native.js +20 -0
- package/dist/esm/resolveQuery.native.js.map +1 -0
- package/dist/esm/run.js +22 -0
- package/dist/esm/run.js.map +6 -0
- package/dist/esm/run.mjs +24 -0
- package/dist/esm/run.mjs.map +1 -0
- package/dist/esm/run.native.js +25 -0
- package/dist/esm/run.native.js.map +1 -0
- package/dist/esm/server.js +2 -0
- package/dist/esm/server.js.map +6 -0
- package/dist/esm/server.mjs +2 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/server.native.js +2 -0
- package/dist/esm/server.native.js.map +1 -0
- package/dist/esm/serverWhere.js +8 -0
- package/dist/esm/serverWhere.js.map +6 -0
- package/dist/esm/serverWhere.mjs +6 -0
- package/dist/esm/serverWhere.mjs.map +1 -0
- package/dist/esm/serverWhere.native.js +6 -0
- package/dist/esm/serverWhere.native.js.map +1 -0
- package/dist/esm/state.js +21 -0
- package/dist/esm/state.js.map +6 -0
- package/dist/esm/state.mjs +22 -0
- package/dist/esm/state.mjs.map +1 -0
- package/dist/esm/state.native.js +24 -0
- package/dist/esm/state.native.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +6 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/where.js +20 -0
- package/dist/esm/where.js.map +6 -0
- package/dist/esm/where.mjs +17 -0
- package/dist/esm/where.mjs.map +1 -0
- package/dist/esm/where.native.js +19 -0
- package/dist/esm/where.native.js.map +1 -0
- package/dist/esm/zeroRunner.js +16 -0
- package/dist/esm/zeroRunner.js.map +6 -0
- package/dist/esm/zeroRunner.mjs +10 -0
- package/dist/esm/zeroRunner.mjs.map +1 -0
- package/dist/esm/zeroRunner.native.js +10 -0
- package/dist/esm/zeroRunner.native.js.map +1 -0
- package/dist/esm/zql.js +10 -0
- package/dist/esm/zql.js.map +6 -0
- package/dist/esm/zql.mjs +8 -0
- package/dist/esm/zql.mjs.map +1 -0
- package/dist/esm/zql.native.js +9 -0
- package/dist/esm/zql.native.js.map +1 -0
- package/package.json +98 -0
- package/readme.md +594 -0
- package/src/cli.ts +626 -0
- package/src/constants.native.ts +3 -0
- package/src/constants.ts +3 -0
- package/src/createPermissions.ts +131 -0
- package/src/createUseQuery.tsx +82 -0
- package/src/createZeroClient.tsx +301 -0
- package/src/createZeroServer.ts +226 -0
- package/src/helpers/batchQuery.ts +46 -0
- package/src/helpers/createMutators.ts +138 -0
- package/src/helpers/didRunPermissionCheck.ts +16 -0
- package/src/helpers/ensureLoggedIn.ts +11 -0
- package/src/helpers/getQueryOrMutatorAuthData.ts +12 -0
- package/src/helpers/mutatorContext.ts +25 -0
- package/src/helpers/prettyFormatZeroQuery.ts +167 -0
- package/src/helpers/useZeroDebug.ts +102 -0
- package/src/index.ts +18 -0
- package/src/mutations.ts +133 -0
- package/src/queryRegistry.ts +12 -0
- package/src/resolveQuery.ts +44 -0
- package/src/run.ts +62 -0
- package/src/server.ts +1 -0
- package/src/serverWhere.ts +21 -0
- package/src/state.ts +32 -0
- package/src/types.ts +136 -0
- package/src/where.ts +58 -0
- package/src/zeroRunner.ts +28 -0
- package/src/zql.ts +10 -0
- package/types/cli.d.ts +3 -0
- package/types/cli.d.ts.map +1 -0
- package/types/constants.d.ts +3 -0
- package/types/constants.d.ts.map +1 -0
- package/types/constants.native.d.ts +3 -0
- package/types/constants.native.d.ts.map +1 -0
- package/types/createPermissions.d.ts +10 -0
- package/types/createPermissions.d.ts.map +1 -0
- package/types/createUseQuery.d.ts +20 -0
- package/types/createUseQuery.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +35 -0
- package/types/createZeroClient.d.ts.map +1 -0
- package/types/createZeroServer.d.ts +146 -0
- package/types/createZeroServer.d.ts.map +1 -0
- package/types/helpers/batchQuery.d.ts +7 -0
- package/types/helpers/batchQuery.d.ts.map +1 -0
- package/types/helpers/createMutators.d.ts +10 -0
- package/types/helpers/createMutators.d.ts.map +1 -0
- package/types/helpers/didRunPermissionCheck.d.ts +4 -0
- package/types/helpers/didRunPermissionCheck.d.ts.map +1 -0
- package/types/helpers/ensureLoggedIn.d.ts +3 -0
- package/types/helpers/ensureLoggedIn.d.ts.map +1 -0
- package/types/helpers/getQueryOrMutatorAuthData.d.ts +3 -0
- package/types/helpers/getQueryOrMutatorAuthData.d.ts.map +1 -0
- package/types/helpers/mutatorContext.d.ts +5 -0
- package/types/helpers/mutatorContext.d.ts.map +1 -0
- package/types/helpers/prettyFormatZeroQuery.d.ts +3 -0
- package/types/helpers/prettyFormatZeroQuery.d.ts.map +1 -0
- package/types/helpers/useZeroDebug.d.ts +3 -0
- package/types/helpers/useZeroDebug.d.ts.map +1 -0
- package/types/index.d.ts +17 -0
- package/types/index.d.ts.map +1 -0
- package/types/mutations.d.ts +20 -0
- package/types/mutations.d.ts.map +1 -0
- package/types/queryRegistry.d.ts +3 -0
- package/types/queryRegistry.d.ts.map +1 -0
- package/types/resolveQuery.d.ts +11 -0
- package/types/resolveQuery.d.ts.map +1 -0
- package/types/run.d.ts +7 -0
- package/types/run.d.ts.map +1 -0
- package/types/server.d.ts +2 -0
- package/types/server.d.ts.map +1 -0
- package/types/serverWhere.d.ts +5 -0
- package/types/serverWhere.d.ts.map +1 -0
- package/types/state.d.ts +8 -0
- package/types/state.d.ts.map +1 -0
- package/types/types.d.ts +78 -0
- package/types/types.d.ts.map +1 -0
- package/types/where.d.ts +6 -0
- package/types/where.d.ts.map +1 -0
- package/types/zeroRunner.d.ts +6 -0
- package/types/zeroRunner.d.ts.map +1 -0
- package/types/zql.d.ts +3 -0
- package/types/zql.d.ts.map +1 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ensure, EnsureError } from "@take-out/helpers";
|
|
2
|
+
import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck.mjs";
|
|
3
|
+
import { mutatorContext } from "./helpers/mutatorContext.mjs";
|
|
4
|
+
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.mjs";
|
|
5
|
+
import { getZQL } from "./state.mjs";
|
|
6
|
+
import { getWhereTableName } from "./where.mjs";
|
|
7
|
+
function createPermissions({
|
|
8
|
+
environment,
|
|
9
|
+
schema
|
|
10
|
+
}) {
|
|
11
|
+
function buildPermissionQuery(authData, eb, permissionWhere, objOrId) {
|
|
12
|
+
const tableName = getWhereTableName(permissionWhere);
|
|
13
|
+
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
14
|
+
const tableSchema = schema.tables[tableName];
|
|
15
|
+
if (!tableSchema) throw new Error("No schema?");
|
|
16
|
+
const primaryKeys = tableSchema.primaryKey,
|
|
17
|
+
permissionReturn = permissionWhere(eb, authData);
|
|
18
|
+
if (permissionReturn == null) throw new Error(`No permission defined for ${tableName}`);
|
|
19
|
+
if (permissionReturn === !0) return eb.cmpLit(!0, "=", !0);
|
|
20
|
+
if (permissionReturn === !1) return eb.cmpLit(!0, "=", !1);
|
|
21
|
+
const primaryKeyWheres = [];
|
|
22
|
+
for (const key of primaryKeys) {
|
|
23
|
+
const value = typeof objOrId == "string" ? objOrId : objOrId[key];
|
|
24
|
+
primaryKeyWheres.push(eb.cmp(key, value));
|
|
25
|
+
}
|
|
26
|
+
return eb.and(permissionReturn, ...primaryKeyWheres);
|
|
27
|
+
}
|
|
28
|
+
const can = async (where, obj) => {
|
|
29
|
+
if (environment === "server") {
|
|
30
|
+
const ctx = mutatorContext(),
|
|
31
|
+
tableName = getWhereTableName(where);
|
|
32
|
+
if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
|
|
33
|
+
await ensurePermission(ctx.tx, ctx.authData, tableName, where, obj), setDidRunPermissionCheck(ctx);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
37
|
+
if (authData?.role === "admin") return;
|
|
38
|
+
const queryBase = getZQL()[tableName];
|
|
39
|
+
let query = null;
|
|
40
|
+
try {
|
|
41
|
+
query = queryBase.where(eb => buildPermissionQuery(authData, eb, where, obj)).one(), ensure(await tx.run(query));
|
|
42
|
+
} catch (err) {
|
|
43
|
+
const errorTitle = `${tableName} with auth id: ${authData?.id}`;
|
|
44
|
+
if (err instanceof EnsureError) {
|
|
45
|
+
let msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
|
|
46
|
+
throw process.env.NODE_ENV === "development" && query && (msg += `
|
|
47
|
+
${prettyFormatZeroQuery(query)}`), new Error(msg);
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`Error running permission ${errorTitle}
|
|
50
|
+
${err}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
can,
|
|
55
|
+
buildPermissionQuery
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export { createPermissions };
|
|
59
|
+
//# sourceMappingURL=createPermissions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","createPermissions","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","key","value","push","cmp","and","can","where","obj","ctx","ensurePermission","tx","role","queryBase","query","one","run","err","errorTitle","id","msg","process","env","NODE_ENV"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ensure, EnsureError } from "@take-out/helpers";
|
|
2
|
+
import { setDidRunPermissionCheck } from "./helpers/didRunPermissionCheck.native.js";
|
|
3
|
+
import { mutatorContext } from "./helpers/mutatorContext.native.js";
|
|
4
|
+
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.native.js";
|
|
5
|
+
import { getZQL } from "./state.native.js";
|
|
6
|
+
import { getWhereTableName } from "./where.native.js";
|
|
7
|
+
function _instanceof(left, right) {
|
|
8
|
+
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
9
|
+
}
|
|
10
|
+
function createPermissions(param) {
|
|
11
|
+
var {
|
|
12
|
+
environment,
|
|
13
|
+
schema
|
|
14
|
+
} = param;
|
|
15
|
+
function buildPermissionQuery(authData, eb, permissionWhere, objOrId) {
|
|
16
|
+
var tableName = getWhereTableName(permissionWhere);
|
|
17
|
+
if (!tableName) throw new Error("Must use PermissionWhere for buildPermissionQuery");
|
|
18
|
+
var tableSchema = schema.tables[tableName];
|
|
19
|
+
if (!tableSchema) throw new Error("No schema?");
|
|
20
|
+
var primaryKeys = tableSchema.primaryKey,
|
|
21
|
+
permissionReturn = permissionWhere(eb, authData);
|
|
22
|
+
if (permissionReturn == null) throw new Error(`No permission defined for ${tableName}`);
|
|
23
|
+
if (permissionReturn === !0) return eb.cmpLit(!0, "=", !0);
|
|
24
|
+
if (permissionReturn === !1) return eb.cmpLit(!0, "=", !1);
|
|
25
|
+
var primaryKeyWheres = [],
|
|
26
|
+
_iteratorNormalCompletion = !0,
|
|
27
|
+
_didIteratorError = !1,
|
|
28
|
+
_iteratorError = void 0;
|
|
29
|
+
try {
|
|
30
|
+
for (var _iterator = primaryKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
31
|
+
var key = _step.value,
|
|
32
|
+
value = typeof objOrId == "string" ? objOrId : objOrId[key];
|
|
33
|
+
primaryKeyWheres.push(eb.cmp(key, value));
|
|
34
|
+
}
|
|
35
|
+
} catch (err) {
|
|
36
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
37
|
+
} finally {
|
|
38
|
+
try {
|
|
39
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
40
|
+
} finally {
|
|
41
|
+
if (_didIteratorError) throw _iteratorError;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return eb.and(permissionReturn, ...primaryKeyWheres);
|
|
45
|
+
}
|
|
46
|
+
var can = async function (where, obj) {
|
|
47
|
+
if (environment === "server") {
|
|
48
|
+
var ctx = mutatorContext(),
|
|
49
|
+
tableName = getWhereTableName(where);
|
|
50
|
+
if (!tableName) throw new Error("Must use where('table') style where to pass to can()");
|
|
51
|
+
await ensurePermission(ctx.tx, ctx.authData, tableName, where, obj), setDidRunPermissionCheck(ctx);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
async function ensurePermission(tx, authData, tableName, where, obj) {
|
|
55
|
+
if (authData?.role !== "admin") {
|
|
56
|
+
var zqlBuilder = getZQL(),
|
|
57
|
+
queryBase = zqlBuilder[tableName],
|
|
58
|
+
query = null;
|
|
59
|
+
try {
|
|
60
|
+
query = queryBase.where(function (eb) {
|
|
61
|
+
return buildPermissionQuery(authData, eb, where, obj);
|
|
62
|
+
}).one(), ensure(await tx.run(query));
|
|
63
|
+
} catch (err) {
|
|
64
|
+
var errorTitle = `${tableName} with auth id: ${authData?.id}`;
|
|
65
|
+
if (_instanceof(err, EnsureError)) {
|
|
66
|
+
var msg = `[permission] \u{1F6AB} Not Allowed: ${errorTitle}`;
|
|
67
|
+
throw process.env.NODE_ENV === "development" && query && (msg += `
|
|
68
|
+
${prettyFormatZeroQuery(query)}`), new Error(msg);
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Error running permission ${errorTitle}
|
|
71
|
+
${err}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
can,
|
|
77
|
+
buildPermissionQuery
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export { createPermissions };
|
|
81
|
+
//# sourceMappingURL=createPermissions.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ensure","EnsureError","setDidRunPermissionCheck","mutatorContext","prettyFormatZeroQuery","getZQL","getWhereTableName","_instanceof","left","right","Symbol","hasInstance","createPermissions","param","environment","schema","buildPermissionQuery","authData","eb","permissionWhere","objOrId","tableName","Error","tableSchema","tables","primaryKeys","primaryKey","permissionReturn","cmpLit","primaryKeyWheres","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","value","push","cmp","err","return","and","can","where","obj","ctx","ensurePermission","tx","role","zqlBuilder","queryBase","query","one","run","errorTitle","id","msg"],"sources":["../../src/createPermissions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
+
import { use, useMemo } from "react";
|
|
3
|
+
import { useZeroDebug } from "./helpers/useZeroDebug";
|
|
4
|
+
import { resolveQuery } from "./resolveQuery";
|
|
5
|
+
function createUseQuery({
|
|
6
|
+
DisabledContext,
|
|
7
|
+
customQueries
|
|
8
|
+
}) {
|
|
9
|
+
function useQuery(...args) {
|
|
10
|
+
const disabled = use(DisabledContext), [fn, paramsOrOptions, optionsArg] = args, { queryRequest, options } = useMemo(() => {
|
|
11
|
+
const hasParams = optionsArg !== void 0 || paramsOrOptions && typeof paramsOrOptions == "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions), params = hasParams ? paramsOrOptions : void 0, opts = hasParams ? optionsArg : paramsOrOptions;
|
|
12
|
+
return { queryRequest: resolveQuery({ customQueries, fn, params }), options: opts };
|
|
13
|
+
}, [fn, paramsOrOptions, optionsArg]), out = zeroUseQuery(queryRequest, options);
|
|
14
|
+
return process.env.NODE_ENV === "development" && useZeroDebug(queryRequest, options, out), disabled ? [null, { type: "unknown" }] : out;
|
|
15
|
+
}
|
|
16
|
+
return useQuery;
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
createUseQuery
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=createUseQuery.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/createUseQuery.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,YAAY,oBAAoB;AACzC,SAAS,KAAK,eAA6B;AAE3C,SAAS,oBAAoB;AAC7B,SAAS,oBAAuC;AAkCzC,SAAS,eAA0C;AAAA,EACxD;AAAA,EACA;AACF,GAGyB;AACvB,WAAS,YAAY,MAAkB;AACrC,UAAM,WAAW,IAAI,eAAe,GAC9B,CAAC,IAAI,iBAAiB,UAAU,IAAI,MAEpC,EAAE,cAAc,QAAQ,IAAI,QAAQ,MAAM;AAE9C,YAAM,YACJ,eAAe,UACd,mBACC,OAAO,mBAAoB,YAC3B,EAAE,aAAa,oBACf,EAAE,SAAS,kBAET,SAAS,YAAY,kBAAkB,QACvC,OAAO,YAAY,aAAa;AAItC,aAAO,EAAE,cAFY,aAAa,EAAE,eAAe,IAAI,OAAO,CAAC,GAExC,SAAS,KAAK;AAAA,IACvC,GAAG,CAAC,IAAI,iBAAiB,UAAU,CAAC,GAE9B,MAAM,aAAa,cAAqB,OAAO;AAOrD,WALI,QAAQ,IAAI,aAAa,iBAE3B,aAAa,cAAqB,SAAS,GAAG,GAG5C,WACK,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,IAG5B;AAAA,EACT;AAEA,SAAO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
+
import { use, useMemo } from "react";
|
|
3
|
+
import { useZeroDebug } from "./helpers/useZeroDebug.mjs";
|
|
4
|
+
import { resolveQuery } from "./resolveQuery.mjs";
|
|
5
|
+
function createUseQuery({
|
|
6
|
+
DisabledContext,
|
|
7
|
+
customQueries
|
|
8
|
+
}) {
|
|
9
|
+
function useQuery(...args) {
|
|
10
|
+
const disabled = use(DisabledContext),
|
|
11
|
+
[fn, paramsOrOptions, optionsArg] = args,
|
|
12
|
+
{
|
|
13
|
+
queryRequest,
|
|
14
|
+
options
|
|
15
|
+
} = useMemo(() => {
|
|
16
|
+
const hasParams = optionsArg !== void 0 || paramsOrOptions && typeof paramsOrOptions == "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions),
|
|
17
|
+
params = hasParams ? paramsOrOptions : void 0,
|
|
18
|
+
opts = hasParams ? optionsArg : paramsOrOptions;
|
|
19
|
+
return {
|
|
20
|
+
queryRequest: resolveQuery({
|
|
21
|
+
customQueries,
|
|
22
|
+
fn,
|
|
23
|
+
params
|
|
24
|
+
}),
|
|
25
|
+
options: opts
|
|
26
|
+
};
|
|
27
|
+
}, [fn, paramsOrOptions, optionsArg]),
|
|
28
|
+
out = zeroUseQuery(queryRequest, options);
|
|
29
|
+
return process.env.NODE_ENV === "development" && useZeroDebug(queryRequest, options, out), disabled ? [null, {
|
|
30
|
+
type: "unknown"
|
|
31
|
+
}] : out;
|
|
32
|
+
}
|
|
33
|
+
return useQuery;
|
|
34
|
+
}
|
|
35
|
+
export { createUseQuery };
|
|
36
|
+
//# sourceMappingURL=createUseQuery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useQuery","zeroUseQuery","use","useMemo","useZeroDebug","resolveQuery","createUseQuery","DisabledContext","customQueries","args","disabled","fn","paramsOrOptions","optionsArg","queryRequest","options","hasParams","params","opts","out","process","env","NODE_ENV","type"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,IAAYC,YAAA,QAAoB;AACzC,SAASC,GAAA,EAAKC,OAAA,QAA6B;AAE3C,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAuC;AAkCzC,SAASC,eAA0C;EACxDC,eAAA;EACAC;AACF,GAGyB;EACvB,SAASR,SAAA,GAAYS,IAAA,EAAkB;IACrC,MAAMC,QAAA,GAAWR,GAAA,CAAIK,eAAe;MAC9B,CAACI,EAAA,EAAIC,eAAA,EAAiBC,UAAU,IAAIJ,IAAA;MAEpC;QAAEK,YAAA;QAAcC;MAAQ,IAAIZ,OAAA,CAAQ,MAAM;QAE9C,MAAMa,SAAA,GACJH,UAAA,KAAe,UACdD,eAAA,IACC,OAAOA,eAAA,IAAoB,YAC3B,EAAE,aAAaA,eAAA,KACf,EAAE,SAASA,eAAA;UAETK,MAAA,GAASD,SAAA,GAAYJ,eAAA,GAAkB;UACvCM,IAAA,GAAOF,SAAA,GAAYH,UAAA,GAAaD,eAAA;QAItC,OAAO;UAAEE,YAAA,EAFYT,YAAA,CAAa;YAAEG,aAAA;YAAeG,EAAA;YAAIM;UAAO,CAAC;UAExCF,OAAA,EAASG;QAAK;MACvC,GAAG,CAACP,EAAA,EAAIC,eAAA,EAAiBC,UAAU,CAAC;MAE9BM,GAAA,GAAMlB,YAAA,CAAaa,YAAA,EAAqBC,OAAO;IAOrD,OALIK,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBAE3BlB,YAAA,CAAaU,YAAA,EAAqBC,OAAA,EAASI,GAAG,GAG5CT,QAAA,GACK,CAAC,MAAM;MAAEa,IAAA,EAAM;IAAU,CAAC,IAG5BJ,GAAA;EACT;EAEA,OAAOnB,QAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
+
import { use, useMemo } from "react";
|
|
3
|
+
import { useZeroDebug } from "./helpers/useZeroDebug.native.js";
|
|
4
|
+
import { resolveQuery } from "./resolveQuery.native.js";
|
|
5
|
+
function _type_of(obj) {
|
|
6
|
+
"@swc/helpers - typeof";
|
|
7
|
+
|
|
8
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
9
|
+
}
|
|
10
|
+
function createUseQuery(param) {
|
|
11
|
+
var {
|
|
12
|
+
DisabledContext,
|
|
13
|
+
customQueries
|
|
14
|
+
} = param;
|
|
15
|
+
function useQuery() {
|
|
16
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
|
|
17
|
+
var disabled = use(DisabledContext),
|
|
18
|
+
[fn, paramsOrOptions, optionsArg] = args,
|
|
19
|
+
{
|
|
20
|
+
queryRequest,
|
|
21
|
+
options
|
|
22
|
+
} = useMemo(function () {
|
|
23
|
+
var hasParams = optionsArg !== void 0 || paramsOrOptions && (typeof paramsOrOptions > "u" ? "undefined" : _type_of(paramsOrOptions)) === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions),
|
|
24
|
+
params = hasParams ? paramsOrOptions : void 0,
|
|
25
|
+
opts = hasParams ? optionsArg : paramsOrOptions,
|
|
26
|
+
queryRequest2 = resolveQuery({
|
|
27
|
+
customQueries,
|
|
28
|
+
fn,
|
|
29
|
+
params
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
queryRequest: queryRequest2,
|
|
33
|
+
options: opts
|
|
34
|
+
};
|
|
35
|
+
}, [fn, paramsOrOptions, optionsArg]),
|
|
36
|
+
out = zeroUseQuery(queryRequest, options);
|
|
37
|
+
return process.env.NODE_ENV === "development" && useZeroDebug(queryRequest, options, out), disabled ? [null, {
|
|
38
|
+
type: "unknown"
|
|
39
|
+
}] : out;
|
|
40
|
+
}
|
|
41
|
+
return useQuery;
|
|
42
|
+
}
|
|
43
|
+
export { createUseQuery };
|
|
44
|
+
//# sourceMappingURL=createUseQuery.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useQuery","zeroUseQuery","use","useMemo","useZeroDebug","resolveQuery","_type_of","obj","Symbol","constructor","createUseQuery","param","DisabledContext","customQueries","_len","arguments","length","args","Array","_key","disabled","fn","paramsOrOptions","optionsArg","queryRequest","options","hasParams","params","opts","queryRequest2"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,IAAYC,YAAA,QAAoB;AACzC,SAASC,GAAA,EAAKC,OAAA,QAA6B;AAE3C,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAuC;AAkCzC,SAASC,SAAAC,GAAA;EACd;;EACA,OAAAA,GAAA,WAAAC,MAAA,UAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACF;AAIE,SAAAG,cAAqBA,CAAAC,KAAkB;EACrC;IAAAC,eAAiB;IAAIC;EAAA,CAAe,GAC9BF,KAAK;EAIT,SAAAX,QAAMA,CAAA;IAYN,SAAOc,IAAE,GAAAC,SAFY,CAAAC,MAAA,EAAAC,IAAa,GAAE,IAAAC,KAAA,CAAAJ,IAAe,GAAAK,IAAI,IAAO,EAACA,IAExC,GAAAL,IAAS,EAAAK,IAAK,IACvCF,IAAI,CAAAE,IAAI,IAAAJ,SAAA,CAAiBI,IAAA;IASzB,IAAAC,QALI,GAAQlB,GAAA,CAAIU,eAAa;MAAA,CAAAS,EAAA,EAAAC,eAE3B,EAAAC,UAAa,IAAAN,IAAqB;MAAA;QAAAO,YAGhC;QAAAC;MACM,IAAAtB,OAAQ,aAAM;QAI1B,IAAAuB,SAAA,GAAAH,UAAA,eAAAD,eAAA,YAAAA,eAAA,uBAAAhB,QAAA,CAAAgB,eAAA,kCAAAA,eAAA,gBAAAA,eAAA;UAAAK,MAAA,GAAAD,SAAA,GAAAJ,eAAA;UAAAM,IAAA,GAAAF,SAAA,GAAAH,UAAA,GAAAD,eAAA;UAAAO,aAAA,GAAAxB,YAAA;YAEAQ,aAAO;YACTQ,EAAA","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { defineQueries, defineQuery } from "@rocicorp/zero";
|
|
2
|
+
import {
|
|
3
|
+
useConnectionState,
|
|
4
|
+
useZero,
|
|
5
|
+
ZeroProvider,
|
|
6
|
+
useQuery as zeroUseQuery
|
|
7
|
+
} from "@rocicorp/zero/react";
|
|
8
|
+
import { createEmitter, mapObject } from "@take-out/helpers";
|
|
9
|
+
import {
|
|
10
|
+
createContext,
|
|
11
|
+
memo,
|
|
12
|
+
use,
|
|
13
|
+
useEffect,
|
|
14
|
+
useMemo,
|
|
15
|
+
useRef
|
|
16
|
+
} from "react";
|
|
17
|
+
import { createPermissions } from "./createPermissions";
|
|
18
|
+
import { createUseQuery } from "./createUseQuery";
|
|
19
|
+
import { createMutators } from "./helpers/createMutators";
|
|
20
|
+
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery";
|
|
21
|
+
import { registerQuery } from "./queryRegistry";
|
|
22
|
+
import { resolveQuery } from "./resolveQuery";
|
|
23
|
+
import { setCustomQueries } from "./run";
|
|
24
|
+
import { setAuthData, setSchema } from "./state";
|
|
25
|
+
import { setRunner } from "./zeroRunner";
|
|
26
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
27
|
+
function createZeroClient({
|
|
28
|
+
schema,
|
|
29
|
+
models,
|
|
30
|
+
groupedQueries
|
|
31
|
+
}) {
|
|
32
|
+
setSchema(schema);
|
|
33
|
+
const wrappedNamespaces = {};
|
|
34
|
+
for (const [namespace, queries] of Object.entries(groupedQueries)) {
|
|
35
|
+
wrappedNamespaces[namespace] = {};
|
|
36
|
+
for (const [name, fn] of Object.entries(queries))
|
|
37
|
+
registerQuery(fn, `${namespace}.${name}`), wrappedNamespaces[namespace][name] = defineQuery(
|
|
38
|
+
({ args }) => fn(args)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
const customQueries = defineQueries(wrappedNamespaces);
|
|
42
|
+
setCustomQueries(customQueries);
|
|
43
|
+
const DisabledContext = createContext(!1), modelWritePermissions = mapObject(models, (val) => val.permissions);
|
|
44
|
+
let latestZeroInstance = null;
|
|
45
|
+
const zero = new Proxy({}, {
|
|
46
|
+
get(_, key) {
|
|
47
|
+
if (latestZeroInstance === null)
|
|
48
|
+
throw new Error(
|
|
49
|
+
"Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'."
|
|
50
|
+
);
|
|
51
|
+
return Reflect.get(latestZeroInstance, key, latestZeroInstance);
|
|
52
|
+
}
|
|
53
|
+
}), permissionsHelpers = createPermissions({
|
|
54
|
+
schema,
|
|
55
|
+
environment: "client"
|
|
56
|
+
}), zeroEvents = createEmitter("zero", null), AuthDataContext = createContext({}), useAuthData = () => use(AuthDataContext), useQuery = createUseQuery({
|
|
57
|
+
DisabledContext,
|
|
58
|
+
customQueries
|
|
59
|
+
});
|
|
60
|
+
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
61
|
+
const disabled = use(DisabledContext), authData = useAuthData(), permission = modelWritePermissions[table], query = (() => {
|
|
62
|
+
let baseQuery = zero.query[table].one();
|
|
63
|
+
return disabled || !enabled || !permission ? baseQuery : baseQuery.where((eb) => permissionsHelpers.buildPermissionQuery(
|
|
64
|
+
authData,
|
|
65
|
+
eb,
|
|
66
|
+
permission,
|
|
67
|
+
objOrId
|
|
68
|
+
));
|
|
69
|
+
})(), [data, status] = zeroUseQuery(query, {
|
|
70
|
+
enabled: !!(enabled && permission && authData && objOrId)
|
|
71
|
+
});
|
|
72
|
+
debug && console.info(
|
|
73
|
+
"usePermission()",
|
|
74
|
+
{ data, status, authData, permission },
|
|
75
|
+
prettyFormatZeroQuery(query)
|
|
76
|
+
);
|
|
77
|
+
const allowed = !!data;
|
|
78
|
+
return objOrId ? allowed : !1;
|
|
79
|
+
}
|
|
80
|
+
const ProvideZero = ({
|
|
81
|
+
children,
|
|
82
|
+
authData: authDataIn,
|
|
83
|
+
disable,
|
|
84
|
+
...props
|
|
85
|
+
}) => {
|
|
86
|
+
const authData = authDataIn ?? null, mutators = useMemo(() => (setAuthData(authData), createMutators({
|
|
87
|
+
models,
|
|
88
|
+
environment: "client",
|
|
89
|
+
authData,
|
|
90
|
+
can: permissionsHelpers.can
|
|
91
|
+
})), [authData]);
|
|
92
|
+
return disable ? children : /* @__PURE__ */ jsx(AuthDataContext.Provider, { value: authData, children: /* @__PURE__ */ jsxs(ZeroProvider, { schema, kvStore: "mem", mutators, ...props, children: [
|
|
93
|
+
/* @__PURE__ */ jsx(SetZeroInstance, {}),
|
|
94
|
+
/* @__PURE__ */ jsx(ConnectionMonitor, { zeroEvents }),
|
|
95
|
+
children
|
|
96
|
+
] }) });
|
|
97
|
+
}, SetZeroInstance = () => {
|
|
98
|
+
const zeroInstance = useZero();
|
|
99
|
+
return zeroInstance !== latestZeroInstance && (latestZeroInstance = zeroInstance, setRunner((query, options) => zeroInstance.run(query, options))), null;
|
|
100
|
+
}, ConnectionMonitor = memo(
|
|
101
|
+
({
|
|
102
|
+
zeroEvents: zeroEvents2
|
|
103
|
+
}) => {
|
|
104
|
+
const state = useConnectionState(), prevState = useRef(state.name);
|
|
105
|
+
return useEffect(() => {
|
|
106
|
+
if (state.name !== prevState.current) {
|
|
107
|
+
const reason = "reason" in state ? state.reason : "";
|
|
108
|
+
if (prevState.current = state.name, state.name === "error" || state.name === "needs-auth") {
|
|
109
|
+
const message = typeof reason == "string" ? reason : state.name;
|
|
110
|
+
zeroEvents2.emit({
|
|
111
|
+
type: "error",
|
|
112
|
+
message
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}, [state, zeroEvents2]), null;
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
function preload(fnArg, paramsOrOptions, optionsArg) {
|
|
120
|
+
const hasParams = optionsArg !== void 0 || paramsOrOptions && !("ttl" in paramsOrOptions), params = hasParams ? paramsOrOptions : void 0, options = hasParams ? optionsArg : paramsOrOptions, queryRequest = resolveQuery({ customQueries, fn: fnArg, params });
|
|
121
|
+
return zero.preload(queryRequest, options);
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
zeroEvents,
|
|
125
|
+
ProvideZero,
|
|
126
|
+
useQuery,
|
|
127
|
+
usePermission,
|
|
128
|
+
zero,
|
|
129
|
+
preload
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export {
|
|
133
|
+
createZeroClient
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=createZeroClient.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/createZeroClient.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["zeroEvents"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { defineQueries, defineQuery } from "@rocicorp/zero";
|
|
2
|
+
import { useConnectionState, useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
3
|
+
import { createEmitter, mapObject } from "@take-out/helpers";
|
|
4
|
+
import { createContext, memo, use, useEffect, useMemo, useRef } from "react";
|
|
5
|
+
import { createPermissions } from "./createPermissions.mjs";
|
|
6
|
+
import { createUseQuery } from "./createUseQuery.mjs";
|
|
7
|
+
import { createMutators } from "./helpers/createMutators.mjs";
|
|
8
|
+
import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.mjs";
|
|
9
|
+
import { registerQuery } from "./queryRegistry.mjs";
|
|
10
|
+
import { resolveQuery } from "./resolveQuery.mjs";
|
|
11
|
+
import { setCustomQueries } from "./run.mjs";
|
|
12
|
+
import { setAuthData, setSchema } from "./state.mjs";
|
|
13
|
+
import { setRunner } from "./zeroRunner.mjs";
|
|
14
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
function createZeroClient({
|
|
16
|
+
schema,
|
|
17
|
+
models,
|
|
18
|
+
groupedQueries
|
|
19
|
+
}) {
|
|
20
|
+
setSchema(schema);
|
|
21
|
+
const wrappedNamespaces = {};
|
|
22
|
+
for (const [namespace, queries] of Object.entries(groupedQueries)) {
|
|
23
|
+
wrappedNamespaces[namespace] = {};
|
|
24
|
+
for (const [name, fn] of Object.entries(queries)) registerQuery(fn, `${namespace}.${name}`), wrappedNamespaces[namespace][name] = defineQuery(({
|
|
25
|
+
args
|
|
26
|
+
}) => fn(args));
|
|
27
|
+
}
|
|
28
|
+
const customQueries = defineQueries(wrappedNamespaces);
|
|
29
|
+
setCustomQueries(customQueries);
|
|
30
|
+
const DisabledContext = createContext(!1),
|
|
31
|
+
modelWritePermissions = mapObject(models, val => val.permissions);
|
|
32
|
+
let latestZeroInstance = null;
|
|
33
|
+
const zero = new Proxy({}, {
|
|
34
|
+
get(_, key) {
|
|
35
|
+
if (latestZeroInstance === null) throw new Error("Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'.");
|
|
36
|
+
return Reflect.get(latestZeroInstance, key, latestZeroInstance);
|
|
37
|
+
}
|
|
38
|
+
}),
|
|
39
|
+
permissionsHelpers = createPermissions({
|
|
40
|
+
schema,
|
|
41
|
+
environment: "client"
|
|
42
|
+
}),
|
|
43
|
+
zeroEvents = createEmitter("zero", null),
|
|
44
|
+
AuthDataContext = createContext({}),
|
|
45
|
+
useAuthData = () => use(AuthDataContext),
|
|
46
|
+
useQuery = createUseQuery({
|
|
47
|
+
DisabledContext,
|
|
48
|
+
customQueries
|
|
49
|
+
});
|
|
50
|
+
function usePermission(table, objOrId, enabled = typeof objOrId < "u", debug = !1) {
|
|
51
|
+
const disabled = use(DisabledContext),
|
|
52
|
+
authData = useAuthData(),
|
|
53
|
+
permission = modelWritePermissions[table],
|
|
54
|
+
query = (() => {
|
|
55
|
+
let baseQuery = zero.query[table].one();
|
|
56
|
+
return disabled || !enabled || !permission ? baseQuery : baseQuery.where(eb => permissionsHelpers.buildPermissionQuery(authData, eb, permission, objOrId));
|
|
57
|
+
})(),
|
|
58
|
+
[data, status] = zeroUseQuery(query, {
|
|
59
|
+
enabled: !!(enabled && permission && authData && objOrId)
|
|
60
|
+
});
|
|
61
|
+
debug && console.info("usePermission()", {
|
|
62
|
+
data,
|
|
63
|
+
status,
|
|
64
|
+
authData,
|
|
65
|
+
permission
|
|
66
|
+
}, prettyFormatZeroQuery(query));
|
|
67
|
+
const allowed = !!data;
|
|
68
|
+
return objOrId ? allowed : !1;
|
|
69
|
+
}
|
|
70
|
+
const ProvideZero = ({
|
|
71
|
+
children,
|
|
72
|
+
authData: authDataIn,
|
|
73
|
+
disable,
|
|
74
|
+
...props
|
|
75
|
+
}) => {
|
|
76
|
+
const authData = authDataIn ?? null,
|
|
77
|
+
mutators = useMemo(() => (setAuthData(authData), createMutators({
|
|
78
|
+
models,
|
|
79
|
+
environment: "client",
|
|
80
|
+
authData,
|
|
81
|
+
can: permissionsHelpers.can
|
|
82
|
+
})), [authData]);
|
|
83
|
+
return disable ? children : /* @__PURE__ */jsx(AuthDataContext.Provider, {
|
|
84
|
+
value: authData,
|
|
85
|
+
children: /* @__PURE__ */jsxs(ZeroProvider, {
|
|
86
|
+
schema,
|
|
87
|
+
kvStore: "mem",
|
|
88
|
+
mutators,
|
|
89
|
+
...props,
|
|
90
|
+
children: [/* @__PURE__ */jsx(SetZeroInstance, {}), /* @__PURE__ */jsx(ConnectionMonitor, {
|
|
91
|
+
zeroEvents
|
|
92
|
+
}), children]
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
SetZeroInstance = () => {
|
|
97
|
+
const zeroInstance = useZero();
|
|
98
|
+
return zeroInstance !== latestZeroInstance && (latestZeroInstance = zeroInstance, setRunner((query, options) => zeroInstance.run(query, options))), null;
|
|
99
|
+
},
|
|
100
|
+
ConnectionMonitor = memo(({
|
|
101
|
+
zeroEvents: zeroEvents2
|
|
102
|
+
}) => {
|
|
103
|
+
const state = useConnectionState(),
|
|
104
|
+
prevState = useRef(state.name);
|
|
105
|
+
return useEffect(() => {
|
|
106
|
+
if (state.name !== prevState.current) {
|
|
107
|
+
const reason = "reason" in state ? state.reason : "";
|
|
108
|
+
if (prevState.current = state.name, state.name === "error" || state.name === "needs-auth") {
|
|
109
|
+
const message = typeof reason == "string" ? reason : state.name;
|
|
110
|
+
zeroEvents2.emit({
|
|
111
|
+
type: "error",
|
|
112
|
+
message
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}, [state, zeroEvents2]), null;
|
|
117
|
+
});
|
|
118
|
+
function preload(fnArg, paramsOrOptions, optionsArg) {
|
|
119
|
+
const hasParams = optionsArg !== void 0 || paramsOrOptions && !("ttl" in paramsOrOptions),
|
|
120
|
+
params = hasParams ? paramsOrOptions : void 0,
|
|
121
|
+
options = hasParams ? optionsArg : paramsOrOptions,
|
|
122
|
+
queryRequest = resolveQuery({
|
|
123
|
+
customQueries,
|
|
124
|
+
fn: fnArg,
|
|
125
|
+
params
|
|
126
|
+
});
|
|
127
|
+
return zero.preload(queryRequest, options);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
zeroEvents,
|
|
131
|
+
ProvideZero,
|
|
132
|
+
useQuery,
|
|
133
|
+
usePermission,
|
|
134
|
+
zero,
|
|
135
|
+
preload
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export { createZeroClient };
|
|
139
|
+
//# sourceMappingURL=createZeroClient.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","useQuery","zeroUseQuery","createEmitter","mapObject","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","prettyFormatZeroQuery","registerQuery","resolveQuery","setCustomQueries","setAuthData","setSchema","setRunner","jsx","jsxs","createZeroClient","schema","models","groupedQueries","wrappedNamespaces","namespace","queries","Object","entries","name","fn","args","customQueries","DisabledContext","modelWritePermissions","val","permissions","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","permissionsHelpers","environment","zeroEvents","AuthDataContext","useAuthData","usePermission","table","objOrId","enabled","debug","disabled","authData","permission","query","baseQuery","one","where","eb","buildPermissionQuery","data","status","console","info","allowed","ProvideZero","children","authDataIn","disable","props","mutators","can","Provider","value","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","options","run","zeroEvents2","state","prevState","current","reason","message","emit","type","preload","fnArg","paramsOrOptions","optionsArg","hasParams","params","queryRequest"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|