on-zero 0.4.29 → 0.4.31

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.
Files changed (63) hide show
  1. package/dist/cjs/cli.native.js.map +1 -1
  2. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  3. package/dist/cjs/createPermissions.native.js.map +1 -1
  4. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  5. package/dist/cjs/createUseQuery.native.js.map +1 -1
  6. package/dist/cjs/createZeroClient.native.js.map +1 -1
  7. package/dist/cjs/createZeroServer.cjs +35 -33
  8. package/dist/cjs/createZeroServer.native.js +36 -34
  9. package/dist/cjs/createZeroServer.native.js.map +1 -1
  10. package/dist/cjs/generate-helpers.native.js.map +1 -1
  11. package/dist/cjs/generate-lite.native.js.map +1 -1
  12. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  13. package/dist/cjs/generate.native.js.map +1 -1
  14. package/dist/cjs/generate.test.native.js.map +1 -1
  15. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  16. package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
  17. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  18. package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -1
  19. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  20. package/dist/cjs/helpers/getAuth.native.js.map +1 -1
  21. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  22. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  23. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  24. package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
  25. package/dist/cjs/helpers/useMutation.native.js.map +1 -1
  26. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
  27. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  28. package/dist/cjs/httpPull/auth.test.native.js.map +1 -1
  29. package/dist/cjs/httpPull/churn.test.native.js.map +1 -1
  30. package/dist/cjs/httpPull/fixtureSchema.native.js.map +1 -1
  31. package/dist/cjs/httpPull/fixtureServer.native.js.map +1 -1
  32. package/dist/cjs/httpPull/integration.test.native.js.map +1 -1
  33. package/dist/cjs/httpPull/rebase.test.native.js.map +1 -1
  34. package/dist/cjs/httpPull/relations.test.native.js.map +1 -1
  35. package/dist/cjs/httpPull/testHarness.native.js.map +1 -1
  36. package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
  37. package/dist/cjs/httpPullTransport.native.js.map +1 -1
  38. package/dist/cjs/index.native.js.map +1 -1
  39. package/dist/cjs/instanceRegistry.native.js.map +1 -1
  40. package/dist/cjs/modelRegistry.native.js.map +1 -1
  41. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  42. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  43. package/dist/cjs/mutations.native.js.map +1 -1
  44. package/dist/cjs/queryRegistry.native.js.map +1 -1
  45. package/dist/cjs/resolveQuery.native.js.map +1 -1
  46. package/dist/cjs/run.native.js.map +1 -1
  47. package/dist/cjs/serverWhere.native.js.map +1 -1
  48. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  49. package/dist/cjs/state.native.js.map +1 -1
  50. package/dist/cjs/types.native.js.map +1 -1
  51. package/dist/cjs/usePermission.test.native.js.map +1 -1
  52. package/dist/cjs/vite-plugin.native.js.map +1 -1
  53. package/dist/cjs/where.native.js.map +1 -1
  54. package/dist/cjs/zeroRunner.native.js.map +1 -1
  55. package/dist/cjs/zql.native.js.map +1 -1
  56. package/dist/esm/createZeroServer.mjs +35 -33
  57. package/dist/esm/createZeroServer.mjs.map +1 -1
  58. package/dist/esm/createZeroServer.native.js +36 -34
  59. package/dist/esm/createZeroServer.native.js.map +1 -1
  60. package/package.json +4 -4
  61. package/src/createZeroServer.ts +48 -44
  62. package/types/createZeroClient.d.ts +1 -1
  63. package/types/createZeroServer.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.4.29",
3
+ "version": "0.4.31",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -77,7 +77,7 @@
77
77
  }
78
78
  },
79
79
  "dependencies": {
80
- "@take-out/helpers": "0.4.29",
80
+ "@take-out/helpers": "0.4.31",
81
81
  "chokidar": "^4.0.3",
82
82
  "citty": "^0.1.6",
83
83
  "valibot": "^1.1.0"
@@ -85,7 +85,7 @@
85
85
  "peerDependencies": {
86
86
  "pg": ">=8.0.0",
87
87
  "@rocicorp/zero": ">=1.5.0",
88
- "drizzle-orm": ">=1.0.0 <2",
88
+ "drizzle-orm": ">=1.0.0-beta.0 <2",
89
89
  "drizzle-zero": ">=1.0.0-beta.0",
90
90
  "react": "*",
91
91
  "react-native": "*"
@@ -105,7 +105,7 @@
105
105
  }
106
106
  },
107
107
  "devDependencies": {
108
- "@tamagui/build": "2.1.0-1780964419737",
108
+ "@tamagui/build": "2.3.0",
109
109
  "@types/node": "25.2.0",
110
110
  "@types/pg": "^8.11.10",
111
111
  "@types/react": "^19.0.0",
@@ -223,53 +223,57 @@ export function createZeroServer<
223
223
  )
224
224
  }
225
225
 
226
+ const handler = (name: string, args: unknown) => {
227
+ // per-model permission queries registered by on-zero at runtime
228
+ if (name.startsWith('permission.')) {
229
+ const table = name.slice('permission.'.length)
230
+ const { objOrId } = args as {
231
+ objOrId: string | Record<string, any>
232
+ }
233
+ const perm = getMutationsPermissions(table)
234
+ if (!perm) {
235
+ throw new Error(`[permission] no permission defined for table: ${table}`)
236
+ }
237
+ // wrap with setEvaluatingPermission so serverWhere evaluates
238
+ // even when environment is 'client' (SSR hydration)
239
+ setEvaluatingPermission(true)
240
+ try {
241
+ return (getZQL() as any)[table]
242
+ .where((eb: any) => {
243
+ return permissions.buildPermissionQuery(authData, eb, perm, objOrId, table)
244
+ })
245
+ .one()
246
+ } finally {
247
+ setEvaluatingPermission(false)
248
+ }
249
+ }
250
+
251
+ // run validation hook if provided (must be sync - throw to reject)
252
+ if (validateQuery) {
253
+ validateQuery({ authData, queryName: name, params: args })
254
+ }
255
+
256
+ const query = (mustGetQuery as any)(queries, name)
257
+ return query.fn({ args, ctx: authData })
258
+ }
259
+
260
+ // when there is an authenticated user, pin the connection to its id so zero
261
+ // server-validates it (a client cannot claim another user's id). when logged
262
+ // out there is no server identity to validate against, so use zero's
263
+ // client-fallback path (the legacy call signature) which trusts whatever id
264
+ // the client declared — "anon", "guest", a per-device id, etc. on-zero stays
265
+ // un-prescriptive about the anon convention; permissions still gate access by
266
+ // authData. passing userID:null to the object form instead would make zero
267
+ // server-validate against null and reject every anon client, since a string
268
+ // connection userID can never equal null.
269
+ const userID = typeof authData?.id === 'string' ? authData.id : undefined
270
+
226
271
  const response = await runWithQueryContext(
227
272
  { authData: authData || ({} as AuthData) },
228
273
  () =>
229
- zeroHandleQueryRequest({
230
- handler: (name, args) => {
231
- // per-model permission queries registered by on-zero at runtime
232
- if (name.startsWith('permission.')) {
233
- const table = name.slice('permission.'.length)
234
- const { objOrId } = args as {
235
- objOrId: string | Record<string, any>
236
- }
237
- const perm = getMutationsPermissions(table)
238
- if (!perm) {
239
- throw new Error(`[permission] no permission defined for table: ${table}`)
240
- }
241
- // wrap with setEvaluatingPermission so serverWhere evaluates
242
- // even when environment is 'client' (SSR hydration)
243
- setEvaluatingPermission(true)
244
- try {
245
- return (getZQL() as any)[table]
246
- .where((eb: any) => {
247
- return permissions.buildPermissionQuery(
248
- authData,
249
- eb,
250
- perm,
251
- objOrId,
252
- table,
253
- )
254
- })
255
- .one()
256
- } finally {
257
- setEvaluatingPermission(false)
258
- }
259
- }
260
-
261
- // run validation hook if provided (must be sync - throw to reject)
262
- if (validateQuery) {
263
- validateQuery({ authData, queryName: name, params: args })
264
- }
265
-
266
- const query = (mustGetQuery as any)(queries, name)
267
- return query.fn({ args, ctx: authData })
268
- },
269
- schema,
270
- request,
271
- userID: typeof authData?.id === 'string' ? authData.id : null,
272
- }),
274
+ userID === undefined
275
+ ? zeroHandleQueryRequest(handler as any, schema, request)
276
+ : zeroHandleQueryRequest({ handler: handler as any, schema, request, userID }),
273
277
  )
274
278
 
275
279
  return {
@@ -24,7 +24,7 @@ export declare function createZeroClient<Schema extends ZeroSchema, Models exten
24
24
  disable?: boolean;
25
25
  transport?: "http-pull";
26
26
  pullIntervalMs?: number;
27
- }) => string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
27
+ }) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
28
28
  ControlQueries: ({ children, action, whenDisabled, }: {
29
29
  children: ReactNode;
30
30
  action?: "enable" | "disable";
@@ -1 +1 @@
1
- {"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"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"}