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.
- package/dist/cjs/generate-helpers.cjs +86 -4
- package/dist/cjs/generate-helpers.native.js +95 -7
- package/dist/cjs/generate-helpers.native.js.map +1 -1
- package/dist/cjs/generate-lite.test.cjs +8 -1
- package/dist/cjs/generate-lite.test.native.js +8 -1
- package/dist/cjs/generate-lite.test.native.js.map +1 -1
- package/dist/cjs/index.cjs +3 -0
- package/dist/cjs/index.native.js +3 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/queryRegistry.cjs +12 -1
- package/dist/cjs/queryRegistry.native.js +12 -1
- package/dist/cjs/queryRegistry.native.js.map +1 -1
- package/dist/cjs/usePermission.test.cjs +14 -0
- package/dist/cjs/usePermission.test.native.js +14 -0
- package/dist/cjs/usePermission.test.native.js.map +1 -1
- package/dist/esm/generate-helpers.mjs +86 -4
- package/dist/esm/generate-helpers.mjs.map +1 -1
- package/dist/esm/generate-helpers.native.js +95 -7
- package/dist/esm/generate-helpers.native.js.map +1 -1
- package/dist/esm/generate-lite.test.mjs +8 -1
- package/dist/esm/generate-lite.test.mjs.map +1 -1
- package/dist/esm/generate-lite.test.native.js +8 -1
- package/dist/esm/generate-lite.test.native.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/queryRegistry.mjs +12 -1
- package/dist/esm/queryRegistry.mjs.map +1 -1
- package/dist/esm/queryRegistry.native.js +12 -1
- package/dist/esm/queryRegistry.native.js.map +1 -1
- package/dist/esm/usePermission.test.mjs +14 -0
- package/dist/esm/usePermission.test.mjs.map +1 -1
- package/dist/esm/usePermission.test.native.js +14 -0
- package/dist/esm/usePermission.test.native.js.map +1 -1
- package/package.json +3 -3
- package/src/generate-helpers.ts +97 -5
- package/src/generate-lite.test.ts +9 -1
- package/src/index.ts +1 -0
- package/src/queryRegistry.ts +15 -1
- package/src/usePermission.test.ts +20 -0
- package/types/generate-helpers.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- 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;
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|
package/src/generate-helpers.ts
CHANGED
|
@@ -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
|
|
75
|
-
const trimmed = part.trim().replace(
|
|
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 '
|
|
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(
|
|
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
|
package/src/queryRegistry.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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';
|
package/types/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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"}
|