on-zero 0.4.5 → 0.4.7

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 (47) hide show
  1. package/dist/cjs/generate-helpers.cjs +86 -4
  2. package/dist/cjs/generate-helpers.native.js +95 -7
  3. package/dist/cjs/generate-helpers.native.js.map +1 -1
  4. package/dist/cjs/generate-lite.test.cjs +8 -1
  5. package/dist/cjs/generate-lite.test.native.js +8 -1
  6. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  7. package/dist/cjs/index.cjs +3 -0
  8. package/dist/cjs/index.native.js +3 -0
  9. package/dist/cjs/index.native.js.map +1 -1
  10. package/dist/cjs/queryRegistry.cjs +12 -1
  11. package/dist/cjs/queryRegistry.native.js +12 -1
  12. package/dist/cjs/queryRegistry.native.js.map +1 -1
  13. package/dist/cjs/usePermission.test.cjs +14 -0
  14. package/dist/cjs/usePermission.test.native.js +14 -0
  15. package/dist/cjs/usePermission.test.native.js.map +1 -1
  16. package/dist/esm/generate-helpers.mjs +86 -4
  17. package/dist/esm/generate-helpers.mjs.map +1 -1
  18. package/dist/esm/generate-helpers.native.js +95 -7
  19. package/dist/esm/generate-helpers.native.js.map +1 -1
  20. package/dist/esm/generate-lite.test.mjs +8 -1
  21. package/dist/esm/generate-lite.test.mjs.map +1 -1
  22. package/dist/esm/generate-lite.test.native.js +8 -1
  23. package/dist/esm/generate-lite.test.native.js.map +1 -1
  24. package/dist/esm/index.js +2 -1
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/index.mjs +2 -1
  27. package/dist/esm/index.mjs.map +1 -1
  28. package/dist/esm/index.native.js +2 -1
  29. package/dist/esm/index.native.js.map +1 -1
  30. package/dist/esm/queryRegistry.mjs +12 -1
  31. package/dist/esm/queryRegistry.mjs.map +1 -1
  32. package/dist/esm/queryRegistry.native.js +12 -1
  33. package/dist/esm/queryRegistry.native.js.map +1 -1
  34. package/dist/esm/usePermission.test.mjs +14 -0
  35. package/dist/esm/usePermission.test.mjs.map +1 -1
  36. package/dist/esm/usePermission.test.native.js +14 -0
  37. package/dist/esm/usePermission.test.native.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/generate-helpers.ts +97 -5
  40. package/src/generate-lite.test.ts +9 -1
  41. package/src/index.ts +1 -0
  42. package/src/queryRegistry.ts +15 -1
  43. package/src/usePermission.test.ts +20 -0
  44. package/types/generate-helpers.d.ts.map +1 -1
  45. package/types/index.d.ts +1 -0
  46. package/types/index.d.ts.map +1 -1
  47. package/types/queryRegistry.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["boolean","string","table","describe","expect","test","getMutationsPermissions","setMutationsPermissions","registerQuery","getQueryName","setEnvironment","setSchema","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe","args1","JSON","stringify","args2","args3","not","mockWhere","eb","auth","cmp","perm","toBeDefined"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["boolean","string","table","describe","expect","test","getMutationsPermissions","setMutationsPermissions","registerQuery","getQueryName","setEnvironment","setSchema","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe","args1","JSON","stringify","args2","args3","not","mockWhere","eb","auth","cmp","perm","toBeDefined","original","activeProjects","hotReloaded","first","byId","second","toBeUndefined"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -79,5 +79,19 @@ describe("usePermission _uid query identity", function () {
79
79
  registerQuery(fn, "permission.testEntity");
80
80
  expect(getQueryName(fn)).toBe("permission.testEntity");
81
81
  });
82
+ test("query lookup survives hot-reloaded function identity", function () {
83
+ var original = function activeProjects() {};
84
+ var hotReloaded = function activeProjects() {};
85
+ registerQuery(original, "project.activeProjects");
86
+ expect(getQueryName(hotReloaded)).toBe("project.activeProjects");
87
+ });
88
+ test("query lookup does not guess when names are ambiguous", function () {
89
+ var first = function byId() {};
90
+ var second = function byId() {};
91
+ var hotReloaded = function byId() {};
92
+ registerQuery(first, "project.byId");
93
+ registerQuery(second, "user.byId");
94
+ expect(getQueryName(hotReloaded)).toBeUndefined();
95
+ });
82
96
  });
83
97
  //# sourceMappingURL=usePermission.test.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["boolean","string","table","describe","expect","test","getMutationsPermissions","setMutationsPermissions","registerQuery","getQueryName","setEnvironment","setSchema","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe","args1","JSON","stringify","args2","args3"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,EAASC,MAAA,EAAQC,KAAA,QAAa;AACvC,SAASC,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AAEvC,SAASC,uBAAA,EAAyBC,uBAAA,QAA+B;AACjE,SAASC,aAAA,EAAeC,YAAA,QAAoB;AAC5C,SAASC,cAAA,EAAgBC,SAAA,QAAiB;AAE1CR,QAAA,CAAS,qCAAqC,YAAM;EAUlDE,IAAA,CAAK,kDAAkD,YAAM;IAE3D,IAAAO,SAAM,GAAAV,KAAY,aAAM,EAAYW,OACjC;MACCC,EAAA,EAAIb,MAAA,CAAO;MACXc,OAAA,EAASd,MAAA,CAAO;MAChBe,MAAA,EAAQhB,OAAA,CAAQ;IAClB,CAAC,EACAiB,UAAA,CAAW,IAAI;IAElBN,SAAA,CAAU;MACVO,MAAA;QAIAC,UAAY,EAAAP;MAEV;MACFQ,OAAA;IAEA;IACAV,cAAM,SAAe;IACrB,IAAAW,EAAM,YAAAA,CAAUC,IAAK;MAGrB,OAAO;QACPC,OAAO,EAAAD,IAAQ,CAAAC;MACf;IACD;IAED,IAAKC,OAAA,GAAAH,EAAA;MAGHE,OAAM,WAAa;MACnBE,IAAM;IACN;IAEA,IAAAC,OAAO,GAAOL,EAAA;MACdE,OAAO,WAAW;MAClBE,IAAA,EAAO;IACR;IAED,IAAKE,OAAA,GAAAN,EAAA;MAEHE,OAAM;IACN;IAEAnB,MAAA,CAAOoB,OAAO,CAAAD,OAAK,EAAKK,IAAA;IACzBxB,MAAA,CAAAsB,OAAA,CAAAH,OAAA,EAAAK,IAAA;IAEDxB,MAAK,CAAAuB,OAAA,CAAAJ,OAAA,EAAAK,IAAA;EAEH;EACAvB,IAAA,0DAAsD;IAEtD,IAAAwB,KAAM,GAAAC,IAAO,CAAAC,SAAA;MACbR,OAAO,EAAI,UAAE;MACbE,IAAA,EAAO;IACR;IAED,IAAKO,KAAA,GAAAF,IAAA,CAAAC,SAAA;MACHR,OAAM,EAAK,UAAM;MAACE,IAAA;IAClB;IAEA,IAAAQ,KAAO,GAAAH,IAAA,CAAAC,SAAkB;MAC1BR,OAAA;MACFE,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["boolean","string","table","describe","expect","test","getMutationsPermissions","setMutationsPermissions","registerQuery","getQueryName","setEnvironment","setSchema","testTable","columns","id","ownerId","active","primaryKey","tables","testEntity","version","fn","args","objOrId","result1","_uid","result2","result3","toBe","args1","JSON","stringify","args2","args3","not","mockWhere","eb","auth","cmp"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,EAASC,MAAA,EAAQC,KAAA,QAAa;AACvC,SAASC,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AAEvC,SAASC,uBAAA,EAAyBC,uBAAA,QAA+B;AACjE,SAASC,aAAA,EAAeC,YAAA,QAAoB;AAC5C,SAASC,cAAA,EAAgBC,SAAA,QAAiB;AAE1CR,QAAA,CAAS,qCAAqC,YAAM;EAUlDE,IAAA,CAAK,kDAAkD,YAAM;IAE3D,IAAAO,SAAM,GAAAV,KAAY,aAAM,EAAYW,OACjC;MACCC,EAAA,EAAIb,MAAA,CAAO;MACXc,OAAA,EAASd,MAAA,CAAO;MAChBe,MAAA,EAAQhB,OAAA,CAAQ;IAClB,CAAC,EACAiB,UAAA,CAAW,IAAI;IAElBN,SAAA,CAAU;MACVO,MAAA;QAIAC,UAAY,EAAAP;MAEV;MACFQ,OAAA;IAEA;IACAV,cAAM,SAAe;IACrB,IAAAW,EAAM,YAAAA,CAAUC,IAAK;MAGrB,OAAO;QACPC,OAAO,EAAAD,IAAQ,CAAAC;MACf;IACD;IAED,IAAKC,OAAA,GAAAH,EAAA;MAGHE,OAAM,WAAa;MACnBE,IAAM;IACN;IAEA,IAAAC,OAAO,GAAOL,EAAA;MACdE,OAAO,WAAW;MAClBE,IAAA,EAAO;IACR;IAED,IAAKE,OAAA,GAAAN,EAAA;MAEHE,OAAM;IACN;IAEAnB,MAAA,CAAOoB,OAAO,CAAAD,OAAK,EAAKK,IAAA;IACzBxB,MAAA,CAAAsB,OAAA,CAAAH,OAAA,EAAAK,IAAA;IAEDxB,MAAK,CAAAuB,OAAA,CAAAJ,OAAA,EAAAK,IAAA;EAEH;EACAvB,IAAA,0DAAsD;IAEtD,IAAAwB,KAAM,GAAAC,IAAO,CAAAC,SAAA;MACbR,OAAO,EAAI,UAAE;MACbE,IAAA,EAAO;IACR;IAED,IAAKO,KAAA,GAAAF,IAAA,CAAAC,SAAA;MACHR,OAAM,EAAK,UAAM;MAACE,IAAA;IAClB;IAEA,IAAAQ,KAAO,GAAAH,IAAA,CAAAC,SAAkB;MAC1BR,OAAA;MAEDE,IAAK;IACH;IAA4CrB,MAAA,CAAAyB,KAAA,EAAAK,GAAA,CAAAN,IAAA,CAAAI,KAAA;IAC5C5B,MAAM,CAAAyB,KAAA,EAAAK,GAAA,CAAAN,IAAc,CAAAK,KAAA,CAAS;IAAkB7B,MAAA,CAAA4B,KAAA,EAAAE,GAAA,CAAAN,IAAA,CAAAK,KAAA;EAE/C;EAEA5B,IAAA,2CAAuC;IACxC,IAAAwB,KAAA,GAAAC,IAAA,CAAAC,SAAA;MAEDR,OAAK;MACHE,IAAM;IAAyB;IAC/B,IAAAO,KAAM,GAAAF,IAAS,CAAAC,SAAS;MAAQR,OAAA;MAChCE,IAAM;IAA+B;IAErCrB,MAAA,CAAAyB,KAAA,EAAcD,IAAA,CAAAI,KAAO;EACrB;EAEA3B,IAAA,iDAAgD;IACjD,IAAA8B,SAAA,YAAAA,CAAAC,EAAA,EAAAC,IAAA;MACF,OAAAD,EAAA,CAAAE,GAAA,aAAAD,IAAA,aAAAA,IAAA,uBAAAA,IAAA,CAAAvB,EAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
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.5",
80
+ "@take-out/helpers": "0.4.7",
81
81
  "chokidar": "^4.0.3",
82
82
  "citty": "^0.1.6",
83
83
  "valibot": "^1.1.0"
@@ -106,7 +106,7 @@
106
106
  },
107
107
  "devDependencies": {
108
108
  "drizzle-zero": "1.0.0-beta.0",
109
- "@tamagui/build": "2.0.0-rc.41",
109
+ "@tamagui/build": "2.0.0-rc.42",
110
110
  "@types/node": "25.2.0",
111
111
  "@types/pg": "^8.11.10",
112
112
  "@types/react": "^19.0.0",
@@ -49,6 +49,82 @@ export function getModelImportName(name: string): string {
49
49
 
50
50
  // string-based type parser
51
51
 
52
+ function splitTopLevelTypeUnion(type: string): string[] {
53
+ const parts: string[] = []
54
+ let depth = 0
55
+ let start = 0
56
+ let quote: string | null = null
57
+
58
+ for (let i = 0; i < type.length; i++) {
59
+ const char = type[i]
60
+ if (quote) {
61
+ if (char === '\\') {
62
+ i++
63
+ continue
64
+ }
65
+ if (char === quote) quote = null
66
+ continue
67
+ }
68
+ if (char === '"' || char === "'" || char === '`') {
69
+ quote = char
70
+ continue
71
+ }
72
+ if (char === '<' || char === '(' || char === '{' || char === '[') {
73
+ depth++
74
+ continue
75
+ }
76
+ if (char === '>' || char === ')' || char === '}' || char === ']') {
77
+ depth = Math.max(0, depth - 1)
78
+ continue
79
+ }
80
+ if (char === '|' && depth === 0) {
81
+ parts.push(type.slice(start, i).trim())
82
+ start = i + 1
83
+ }
84
+ }
85
+
86
+ parts.push(type.slice(start).trim())
87
+ return parts.filter(Boolean)
88
+ }
89
+
90
+ function splitTopLevelObjectEntries(type: string): string[] {
91
+ const parts: string[] = []
92
+ let depth = 0
93
+ let start = 0
94
+ let quote: string | null = null
95
+
96
+ for (let i = 0; i < type.length; i++) {
97
+ const char = type[i]
98
+ if (quote) {
99
+ if (char === '\\') {
100
+ i++
101
+ continue
102
+ }
103
+ if (char === quote) quote = null
104
+ continue
105
+ }
106
+ if (char === '"' || char === "'" || char === '`') {
107
+ quote = char
108
+ continue
109
+ }
110
+ if (char === '<' || char === '(' || char === '{' || char === '[') {
111
+ depth++
112
+ continue
113
+ }
114
+ if (char === '>' || char === ')' || char === '}' || char === ']') {
115
+ depth = Math.max(0, depth - 1)
116
+ continue
117
+ }
118
+ if ((char === ';' || char === ',') && depth === 0) {
119
+ parts.push(type.slice(start, i).trim())
120
+ start = i + 1
121
+ }
122
+ }
123
+
124
+ parts.push(type.slice(start).trim())
125
+ return parts.filter(Boolean)
126
+ }
127
+
52
128
  // simple string-based type parser for inline type annotations from source text.
53
129
  // handles: primitives, inline objects { ... }, arrays, void/null/unknown.
54
130
  // returns null for type references that cannot be resolved without a type
@@ -56,6 +132,24 @@ export function getModelImportName(name: string): string {
56
132
  export function parseTypeString(type: string): string | null {
57
133
  type = type.trim()
58
134
 
135
+ const unionParts = splitTopLevelTypeUnion(type)
136
+ if (unionParts.length > 1) {
137
+ const hasNull = unionParts.includes('null')
138
+ const hasUndefined = unionParts.includes('undefined') || unionParts.includes('void')
139
+ const valueParts = unionParts.filter(
140
+ (part) => part !== 'null' && part !== 'undefined' && part !== 'void',
141
+ )
142
+ if (valueParts.length === 0) return hasNull ? 'v.null_()' : 'v.void_()'
143
+
144
+ const parsedParts = valueParts.map((part) => parseTypeString(part))
145
+ if (parsedParts.some((part) => !part)) return null
146
+ let val =
147
+ parsedParts.length === 1 ? parsedParts[0]! : `v.union([${parsedParts.join(', ')}])`
148
+ if (hasNull) val = `v.nullable(${val})`
149
+ if (hasUndefined) val = `v.optional(${val})`
150
+ return val
151
+ }
152
+
59
153
  // primitives
60
154
  if (type === 'string') return 'v.string()'
61
155
  if (type === 'number') return 'v.number()'
@@ -68,11 +162,9 @@ export function parseTypeString(type: string): string | null {
68
162
  if (type.startsWith('{') && type.endsWith('}')) {
69
163
  const inner = type.slice(1, -1).trim()
70
164
  if (!inner) return 'v.object({})'
71
- // normalize newlines/commas to semicolons for splitting
72
- const normalized = inner.replace(/\n/g, '; ').replace(/;\s*;/g, ';')
73
165
  const entries: string[] = []
74
- for (const part of normalized.split(';')) {
75
- const trimmed = part.trim().replace(/,\s*$/, '')
166
+ for (const part of splitTopLevelObjectEntries(inner)) {
167
+ const trimmed = part.trim().replace(/[;,]\s*$/, '')
76
168
  if (!trimmed) continue
77
169
  const match = trimmed.match(/^(?:readonly\s+)?(\w+)(\?)?:\s*(.+)$/)
78
170
  if (!match) continue
@@ -249,7 +341,7 @@ export function generateSyncedQueriesFile(
249
341
 
250
342
  const imports = `// auto-generated by: on-zero generate
251
343
  // server-side query definitions with validators
252
- import { defineQuery, defineQueries } from '@rocicorp/zero'
344
+ import { defineQuery, defineQueries } from 'on-zero'
253
345
  import * as v from 'valibot'
254
346
  import * as Queries from './groupedQueries'
255
347
  `
@@ -161,6 +161,12 @@ describe('generateLite', () => {
161
161
  { name: 'postById', paramTypeText: '{ id: string }' },
162
162
  // primitive
163
163
  { name: 'byAuthorId', paramTypeText: 'string' },
164
+ // optional nullable inline object
165
+ {
166
+ name: 'paged',
167
+ paramTypeText:
168
+ '{ pageSize: number; cursor?: { id: string; createdAt: number } | null }',
169
+ },
164
170
  // type reference → fallback
165
171
  { name: 'filtered', paramTypeText: 'PostFilter' },
166
172
  // permission should be skipped
@@ -189,13 +195,15 @@ describe('generateLite', () => {
189
195
  expect(synced).toContain('byAuthorId: defineQuery(')
190
196
  // primitive string param shows up as v.string() validator
191
197
  expect(synced).toMatch(/byAuthorId: defineQuery\(\s*v\.string\(\)/)
198
+ expect(synced).toContain('paged: defineQuery(')
199
+ expect(synced).toContain('cursor: v.optional(v.nullable(v.object({')
192
200
  // type reference fallback
193
201
  expect(synced).toContain('filtered: defineQuery(')
194
202
  expect(synced).toMatch(/filtered: defineQuery\(\s*v\.unknown\(\)/)
195
203
  // permission export skipped
196
204
  expect(synced).not.toContain('permission: defineQuery')
197
205
 
198
- expect(result.queryCount).toBe(4) // permission excluded
206
+ expect(result.queryCount).toBe(5) // permission excluded
199
207
  })
200
208
 
201
209
  test('emits types.ts and tables.ts when a model declares a schema inline', () => {
package/src/index.ts CHANGED
@@ -16,6 +16,7 @@ export * from './mutations'
16
16
  export * from './where'
17
17
  export * from './serverWhere'
18
18
  export * from './zql'
19
+ export { defineQuery, defineQueries } from '@rocicorp/zero'
19
20
 
20
21
  // drizzle-zero re-exports moved to 'on-zero/drizzle' to avoid pulling
21
22
  // drizzle-zero + drizzle-orm/_relations into the main bundle
@@ -8,11 +8,25 @@
8
8
  // context).
9
9
 
10
10
  const QUERY_NAME_KEY = '__onZeroQueryName'
11
+ const queryNamesByFunctionName = new Map<string, string | null>()
11
12
 
12
13
  export function registerQuery(fn: Function, name: string) {
13
14
  ;(fn as any)[QUERY_NAME_KEY] = name
15
+
16
+ if (!fn.name) return
17
+
18
+ const existing = queryNamesByFunctionName.get(fn.name)
19
+ if (existing === undefined || existing === name) {
20
+ queryNamesByFunctionName.set(fn.name, name)
21
+ } else {
22
+ queryNamesByFunctionName.set(fn.name, null)
23
+ }
14
24
  }
15
25
 
16
26
  export function getQueryName(fn: Function): string | undefined {
17
- return (fn as any)?.[QUERY_NAME_KEY]
27
+ const stampedName = (fn as any)?.[QUERY_NAME_KEY]
28
+ if (stampedName) return stampedName
29
+
30
+ const namedQuery = queryNamesByFunctionName.get(fn?.name)
31
+ return namedQuery ?? undefined
18
32
  }
@@ -81,4 +81,24 @@ describe('usePermission _uid query identity', () => {
81
81
 
82
82
  expect(getQueryName(fn)).toBe('permission.testEntity')
83
83
  })
84
+
85
+ test('query lookup survives hot-reloaded function identity', () => {
86
+ const original = function activeProjects() {}
87
+ const hotReloaded = function activeProjects() {}
88
+
89
+ registerQuery(original, 'project.activeProjects')
90
+
91
+ expect(getQueryName(hotReloaded)).toBe('project.activeProjects')
92
+ })
93
+
94
+ test('query lookup does not guess when names are ambiguous', () => {
95
+ const first = function byId() {}
96
+ const second = function byId() {}
97
+ const hotReloaded = function byId() {}
98
+
99
+ registerQuery(first, 'project.byId')
100
+ registerQuery(second, 'user.byId')
101
+
102
+ expect(getQueryName(hotReloaded)).toBeUndefined()
103
+ })
84
104
  })
@@ -1 +1 @@
1
- {"version":3,"file":"generate-helpers.d.ts","sourceRoot":"","sources":["../src/generate-helpers.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IAEZ,SAAS,EAAE,MAAM,CAAA;IAEjB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAEhB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACrC,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAQD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0C3D;AAMD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAkBtF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAY9D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAWtF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CA2D3C;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAgBR;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,GACD,MAAM,CAyDR;AAID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAoB7D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACnC,MAAM,CAkCR;AAGD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpE;AAKD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAU9D;AAED,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,CA0DpF"}
1
+ {"version":3,"file":"generate-helpers.d.ts","sourceRoot":"","sources":["../src/generate-helpers.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IAEZ,SAAS,EAAE,MAAM,CAAA;IAEjB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAEhB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACrC,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAoFD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0D3D;AAMD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAkBtF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAY9D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAWtF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CA2D3C;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAgBR;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,GACD,MAAM,CAyDR;AAID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAoB7D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACnC,MAAM,CAkCR;AAGD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpE;AAKD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAU9D;AAED,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,CA0DpF"}
package/types/index.d.ts CHANGED
@@ -15,6 +15,7 @@ export * from './mutations';
15
15
  export * from './where';
16
16
  export * from './serverWhere';
17
17
  export * from './zql';
18
+ export { defineQuery, defineQueries } from '@rocicorp/zero';
18
19
  export type * from './types';
19
20
  export { clearZeroClientData, type ClearZeroClientDataOptions, } from './helpers/clearZeroClientData';
20
21
  export { showZeroClientErrorOnce, resetShownZeroClientError, type ShowZeroClientErrorOptions, type ZeroClientErrorInfo, } from './helpers/showZeroClientError';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AAMrB,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryRegistry.d.ts","sourceRoot":"","sources":["../src/queryRegistry.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAEvD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE7D"}
1
+ {"version":3,"file":"queryRegistry.d.ts","sourceRoot":"","sources":["../src/queryRegistry.ts"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAWvD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM7D"}