on-zero 0.4.5 → 0.4.6

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 (35) hide show
  1. package/dist/cjs/generate-helpers.cjs +1 -1
  2. package/dist/cjs/generate-helpers.native.js +1 -1
  3. package/dist/cjs/index.cjs +3 -0
  4. package/dist/cjs/index.native.js +3 -0
  5. package/dist/cjs/index.native.js.map +1 -1
  6. package/dist/cjs/queryRegistry.cjs +12 -1
  7. package/dist/cjs/queryRegistry.native.js +12 -1
  8. package/dist/cjs/queryRegistry.native.js.map +1 -1
  9. package/dist/cjs/usePermission.test.cjs +14 -0
  10. package/dist/cjs/usePermission.test.native.js +14 -0
  11. package/dist/cjs/usePermission.test.native.js.map +1 -1
  12. package/dist/esm/generate-helpers.mjs +1 -1
  13. package/dist/esm/generate-helpers.native.js +1 -1
  14. package/dist/esm/index.js +2 -1
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/index.mjs +2 -1
  17. package/dist/esm/index.mjs.map +1 -1
  18. package/dist/esm/index.native.js +2 -1
  19. package/dist/esm/index.native.js.map +1 -1
  20. package/dist/esm/queryRegistry.mjs +12 -1
  21. package/dist/esm/queryRegistry.mjs.map +1 -1
  22. package/dist/esm/queryRegistry.native.js +12 -1
  23. package/dist/esm/queryRegistry.native.js.map +1 -1
  24. package/dist/esm/usePermission.test.mjs +14 -0
  25. package/dist/esm/usePermission.test.mjs.map +1 -1
  26. package/dist/esm/usePermission.test.native.js +14 -0
  27. package/dist/esm/usePermission.test.native.js.map +1 -1
  28. package/package.json +3 -3
  29. package/src/generate-helpers.ts +1 -1
  30. package/src/index.ts +1 -0
  31. package/src/queryRegistry.ts +15 -1
  32. package/src/usePermission.test.ts +20 -0
  33. package/types/index.d.ts +1 -0
  34. package/types/index.d.ts.map +1 -1
  35. package/types/queryRegistry.d.ts.map +1 -1
@@ -203,7 +203,7 @@ function generateSyncedQueriesFile(queries) {
203
203
  const sortedFiles = Array.from(queryByFile.keys()).sort();
204
204
  const imports = `// auto-generated by: on-zero generate
205
205
  // server-side query definitions with validators
206
- import { defineQuery, defineQueries } from '@rocicorp/zero'
206
+ import { defineQuery, defineQueries } from 'on-zero'
207
207
  import * as v from 'valibot'
208
208
  import * as Queries from './groupedQueries'
209
209
  `;
@@ -255,7 +255,7 @@ function generateSyncedQueriesFile(queries) {
255
255
  var sortedFiles = Array.from(queryByFile.keys()).sort();
256
256
  var imports = `// auto-generated by: on-zero generate
257
257
  // server-side query definitions with validators
258
- import { defineQuery, defineQueries } from '@rocicorp/zero'
258
+ import { defineQuery, defineQueries } from 'on-zero'
259
259
  import * as v from 'valibot'
260
260
  import * as Queries from './groupedQueries'
261
261
  `;
@@ -24,6 +24,8 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
24
24
  var index_exports = {};
25
25
  __export(index_exports, {
26
26
  clearZeroClientData: () => import_clearZeroClientData.clearZeroClientData,
27
+ defineQueries: () => import_zero.defineQueries,
28
+ defineQuery: () => import_zero.defineQuery,
27
29
  ensureAuth: () => import_getAuth.ensureAuth,
28
30
  getAuth: () => import_getAuth.getAuth,
29
31
  resetShownZeroClientError: () => import_showZeroClientError.resetShownZeroClientError,
@@ -50,5 +52,6 @@ __reExport(index_exports, require("./mutations.cjs"), module.exports);
50
52
  __reExport(index_exports, require("./where.cjs"), module.exports);
51
53
  __reExport(index_exports, require("./serverWhere.cjs"), module.exports);
52
54
  __reExport(index_exports, require("./zql.cjs"), module.exports);
55
+ var import_zero = require("@rocicorp/zero");
53
56
  var import_clearZeroClientData = require("./helpers/clearZeroClientData.cjs");
54
57
  var import_showZeroClientError = require("./helpers/showZeroClientError.cjs");
@@ -26,6 +26,8 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
26
26
  var index_exports = {};
27
27
  __export(index_exports, {
28
28
  clearZeroClientData: () => import_clearZeroClientData.clearZeroClientData,
29
+ defineQueries: () => import_zero.defineQueries,
30
+ defineQuery: () => import_zero.defineQuery,
29
31
  ensureAuth: () => import_getAuth.ensureAuth,
30
32
  getAuth: () => import_getAuth.getAuth,
31
33
  resetShownZeroClientError: () => import_showZeroClientError.resetShownZeroClientError,
@@ -52,6 +54,7 @@ __reExport(index_exports, require("./mutations.native.js"), module.exports);
52
54
  __reExport(index_exports, require("./where.native.js"), module.exports);
53
55
  __reExport(index_exports, require("./serverWhere.native.js"), module.exports);
54
56
  __reExport(index_exports, require("./zql.native.js"), module.exports);
57
+ var import_zero = require("@rocicorp/zero");
55
58
  var import_clearZeroClientData = require("./helpers/clearZeroClientData.native.js");
56
59
  var import_showZeroClientError = require("./helpers/showZeroClientError.native.js");
57
60
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","clearZeroClientData","import_clearZeroClientData","ensureAuth","import_getAuth","getAuth","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,mBAAA;EAAAE,UAAA,EAAAA,CAAA,KAAAC,cAAA,CAAAD,UAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAD,cAAA,CAAAC,OAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,yBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAC,YAAA,CAAAD,WAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAD,YAAA,CAAAC,cAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAC,iBAAA,CAAAD,SAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAN,0BAAA,CAAAM;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAArB,YAAc,CAAAK,aAAA;AACdiB,UAAA,CAAAjB,aAAA,EAAckB,OAAA,gCADd,GAAAH,MAAA,CAAAC,OAAA;AAEAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,+BAAAH,MAFd,CAAAC,OAAA;AAGAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,oCAAAH,MAHd,CAAAC,OAAA;AAIAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,wCAJdH,MAAA,CAAAC,OAAA;AAKAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,wCALdH,MAAA,CAAAC,OAAA;AAMAC,UAAA,CAAAjB,aAAoC,EAAAkB,OAAA,wCAAAH,MAAA,CAAAC,OAAA;AACpC,IAAAX,cAAA,GAA4Ca,OAAA;AAE5C,IAAAR,YAAA,GAAAQ,OAAc;AACdD,UAAA,CAAAjB,aAAA,EAAckB,OAAA,gCAVd,EAAAH,MAAA,CAAAC,OAAA;AAWAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,8BAXd,EAAAH,MAAA,CAAAC,OAAA;AAYAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,2BAZd,GAAAH,MAAA,CAAAC,OAAA;AAaAC,UAAA,CAAAjB,aAA2C,EAAAkB,OAAA,qBAAAH,MAAA,CAAAC,OAAA;AAC3C,IAAAH,iBAAA,GAAAK,OAAc;AACdD,UAAA,CAAAjB,aAAA,EAAckB,OAAA,wBAfd,GAAAH,MAAA,CAAAC,OAAA;AAgBAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,uBAAAH,MAhBd,CAAAC,OAAA;AAiBAC,UAAA,CAAAjB,aAAA,EAAckB,OAAA,0BAjBd,GAAAH,MAAA,CAAAC,OAAA;AAyBAC,UAAA,CAAAjB,aAAA,EAAAkB,OAGO,qBAAAH,MAAA,CAAAC,OAAA;AACP,IAAAb,0BAAA,GAKOe,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","clearZeroClientData","import_clearZeroClientData","defineQueries","import_zero","defineQuery","ensureAuth","import_getAuth","getAuth","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,mBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,WAAA,CAAAD,aAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAD,WAAA,CAAAC,WAAA;EAAAC,UAAA,EAAAA,CAAA,KAAAC,cAAA,CAAAD,UAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAD,cAAA,CAAAC,OAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,yBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAC,YAAA,CAAAD,WAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAD,YAAA,CAAAC,cAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAC,iBAAA,CAAAD,SAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAN,0BAAA,CAAAM;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAxB,YAAc,CAAAK,aAAA;AACdoB,UAAA,CAAApB,aAAA,EAAcqB,OAAA,gCADd,GAAAH,MAAA,CAAAC,OAAA;AAEAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,+BAAAH,MAFd,CAAAC,OAAA;AAGAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,oCAAAH,MAHd,CAAAC,OAAA;AAIAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,wCAJdH,MAAA,CAAAC,OAAA;AAKAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,wCALdH,MAAA,CAAAC,OAAA;AAMAC,UAAA,CAAApB,aAAoC,EAAAqB,OAAA,wCAAAH,MAAA,CAAAC,OAAA;AACpC,IAAAX,cAAA,GAA4Ca,OAAA;AAE5C,IAAAR,YAAA,GAAAQ,OAAc;AACdD,UAAA,CAAApB,aAAA,EAAcqB,OAAA,gCAVd,EAAAH,MAAA,CAAAC,OAAA;AAWAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,8BAXd,EAAAH,MAAA,CAAAC,OAAA;AAYAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,2BAZd,GAAAH,MAAA,CAAAC,OAAA;AAaAC,UAAA,CAAApB,aAA2C,EAAAqB,OAAA,qBAAAH,MAAA,CAAAC,OAAA;AAC3C,IAAAH,iBAAA,GAAAK,OAAc;AACdD,UAAA,CAAApB,aAAA,EAAcqB,OAAA,wBAfd,GAAAH,MAAA,CAAAC,OAAA;AAgBAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,uBAAAH,MAhBd,CAAAC,OAAA;AAiBAC,UAAA,CAAApB,aAAA,EAAcqB,OAAA,0BAjBd,GAAAH,MAAA,CAAAC,OAAA;AAkBAC,UAAA,CAAApB,aAA2C,EAAAqB,OAAA,qBAAAH,MAAA,CAAAC,OAAA;AAQ3C,IAAAd,WAAA,GAAAgB,OAAA,iBAGO;AACP,IAAAlB,0BAAA,GAKOkB,OAAA","ignoreList":[]}
@@ -27,10 +27,21 @@ __export(queryRegistry_exports, {
27
27
  });
28
28
  module.exports = __toCommonJS(queryRegistry_exports);
29
29
  const QUERY_NAME_KEY = "__onZeroQueryName";
30
+ const queryNamesByFunctionName = /* @__PURE__ */new Map();
30
31
  function registerQuery(fn, name) {
31
32
  ;
32
33
  fn[QUERY_NAME_KEY] = name;
34
+ if (!fn.name) return;
35
+ const existing = queryNamesByFunctionName.get(fn.name);
36
+ if (existing === void 0 || existing === name) {
37
+ queryNamesByFunctionName.set(fn.name, name);
38
+ } else {
39
+ queryNamesByFunctionName.set(fn.name, null);
40
+ }
33
41
  }
34
42
  function getQueryName(fn) {
35
- return fn?.[QUERY_NAME_KEY];
43
+ const stampedName = fn?.[QUERY_NAME_KEY];
44
+ if (stampedName) return stampedName;
45
+ const namedQuery = queryNamesByFunctionName.get(fn?.name);
46
+ return namedQuery ?? void 0;
36
47
  }
@@ -29,11 +29,22 @@ __export(queryRegistry_exports, {
29
29
  });
30
30
  module.exports = __toCommonJS(queryRegistry_exports);
31
31
  var QUERY_NAME_KEY = "__onZeroQueryName";
32
+ var queryNamesByFunctionName = /* @__PURE__ */new Map();
32
33
  function registerQuery(fn, name) {
33
34
  ;
34
35
  fn[QUERY_NAME_KEY] = name;
36
+ if (!fn.name) return;
37
+ var existing = queryNamesByFunctionName.get(fn.name);
38
+ if (existing === void 0 || existing === name) {
39
+ queryNamesByFunctionName.set(fn.name, name);
40
+ } else {
41
+ queryNamesByFunctionName.set(fn.name, null);
42
+ }
35
43
  }
36
44
  function getQueryName(fn) {
37
- return fn === null || fn === void 0 ? void 0 : fn[QUERY_NAME_KEY];
45
+ var stampedName = fn === null || fn === void 0 ? void 0 : fn[QUERY_NAME_KEY];
46
+ if (stampedName) return stampedName;
47
+ var namedQuery = queryNamesByFunctionName.get(fn === null || fn === void 0 ? void 0 : fn.name);
48
+ return namedQuery !== null && namedQuery !== void 0 ? namedQuery : void 0;
38
49
  }
39
50
  //# sourceMappingURL=queryRegistry.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","queryRegistry_exports","__export","getQueryName","registerQuery","module","exports","QUERY_NAME_KEY","fn","name"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAA,YAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA;AAAA;AASAC,MAAM,CAAAC,OAAA,GAAAV,YAAiB,CAAAK,qBAAA;AAEhB,IAAAM,cAAS,sBAA0C;AACxD,SAAAH,cAAAI,EAAA,EAAAC,IAAA;EAAE;EACJD,EAAA,CAAAD,cAAA,IAAAE,IAAA;AAEO;AACL,SAAQN,YAAaA,CAAAK,EAAA;EACvB,OAAAA,EAAA,aAAAA,EAAA,uBAAAA,EAAA,CAAAD,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","queryRegistry_exports","__export","getQueryName","registerQuery","module","exports","QUERY_NAME_KEY","queryNamesByFunctionName","Map","fn","name","existing","get","set","stampedName","namedQuery"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAA,YAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA;AAAA;AASAC,MAAM,CAAAC,OAAA,GAAAV,YAAiB,CAAAK,qBAAA;AACvB,IAAAM,cAAM,sBAA2B;AAE1B,IAAAC,wBAAqC,kBAAc,IAAAC,GAAA;AACxD,SAAAL,cAAAM,EAAA,EAAAC,IAAA;EAAE;EAEFD,EAAA,CAAAH,cAAc,IAAAI,IAAA;EAEd,KAAAD,EAAM,CAAAC,IAAA;EACN,IAAIC,QAAA,GAAAJ,wBAA0B,CAAaK,GAAA,CAAAH,EAAM,CAAAC,IAAA;EAC/C,IAAAC,QAAA,eAAyBA,QAAO,KAAMD,IAAI;IAC5CH,wBAAO,CAAAM,GAAA,CAAAJ,EAAA,CAAAC,IAAA,EAAAA,IAAA;EACL;IACFH,wBAAA,CAAAM,GAAA,CAAAJ,EAAA,CAAAC,IAAA;EACF;AAEO;AACL,SAAMR,aAAeO,EAAA;EACrB,IAAIK,WAAA,GAAaL,EAAA,KAAO,QAAAA,EAAA,uBAAAA,EAAA,CAAAH,cAAA;EAExB,IAAAQ,WAAM,SAAaA,WAAA;EACnB,IAAAC,UAAO,GAAAR,wBAAc,CAAAK,GAAA,CAAAH,EAAA,aAAAA,EAAA,uBAAAA,EAAA,CAAAC,IAAA;EACvB,OAAAK,UAAA,aAAAA,UAAA,cAAAA,UAAA","ignoreList":[]}
@@ -77,4 +77,18 @@ var import_state = require("./state.cjs");
77
77
  (0, import_queryRegistry.registerQuery)(fn, "permission.testEntity");
78
78
  (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(fn)).toBe("permission.testEntity");
79
79
  });
80
+ (0, import_vitest.test)("query lookup survives hot-reloaded function identity", () => {
81
+ const original = function activeProjects() {};
82
+ const hotReloaded = function activeProjects() {};
83
+ (0, import_queryRegistry.registerQuery)(original, "project.activeProjects");
84
+ (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(hotReloaded)).toBe("project.activeProjects");
85
+ });
86
+ (0, import_vitest.test)("query lookup does not guess when names are ambiguous", () => {
87
+ const first = function byId() {};
88
+ const second = function byId() {};
89
+ const hotReloaded = function byId() {};
90
+ (0, import_queryRegistry.registerQuery)(first, "project.byId");
91
+ (0, import_queryRegistry.registerQuery)(second, "user.byId");
92
+ (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(hotReloaded)).toBeUndefined();
93
+ });
80
94
  });
@@ -81,5 +81,19 @@ var import_state = require("./state.native.js");
81
81
  (0, import_queryRegistry.registerQuery)(fn, "permission.testEntity");
82
82
  (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(fn)).toBe("permission.testEntity");
83
83
  });
84
+ (0, import_vitest.test)("query lookup survives hot-reloaded function identity", function () {
85
+ var original = function activeProjects() {};
86
+ var hotReloaded = function activeProjects() {};
87
+ (0, import_queryRegistry.registerQuery)(original, "project.activeProjects");
88
+ (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(hotReloaded)).toBe("project.activeProjects");
89
+ });
90
+ (0, import_vitest.test)("query lookup does not guess when names are ambiguous", function () {
91
+ var first = function byId() {};
92
+ var second = function byId() {};
93
+ var hotReloaded = function byId() {};
94
+ (0, import_queryRegistry.registerQuery)(first, "project.byId");
95
+ (0, import_queryRegistry.registerQuery)(second, "user.byId");
96
+ (0, import_vitest.expect)((0, import_queryRegistry.getQueryName)(hotReloaded)).toBeUndefined();
97
+ });
84
98
  });
85
99
  //# sourceMappingURL=usePermission.test.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["import_zero","require","import_vitest","import_modelRegistry","import_queryRegistry","import_state","describe","test","testTable","table","columns","id","string","ownerId","active","boolean","primaryKey","setSchema","tables","testEntity","version","setEnvironment","fn","args","objOrId","result1","_uid","result2","result3","expect","toBe","args1","JSON","stringify","args2","args3"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,WAAA,GAAAC,OAAuC;AAEvC,IAAAC,aAAA,GAAAD,OAAiE;AACjE,IAAAE,oBAAA,GAA4CF,OAAA;AAC5C,IAAAG,oBAA0C,GAAAH,OAAA;AAAA,IAE1CI,YAAA,GAAAJ,OAAA,oBAAS;AAUP,IAAAC,aAAA,CAAAI,QAAK,mDAAkD;EAErD,IAAAJ,aAAM,CAAAK,IAAA,EAAY,gDACP;IAAA,IACPC,SAAI,OAAAR,WAAO,CAAAS,KAAA,gBAAAC,OAAA;MACXC,EAAA,MAAAX,WAAS,CAAAY,MAAA;MACTC,OAAA,MAAQb,WAAA,CAAAY,MAAA,EAAQ;MACjBE,MACA,MAAWd,WAAI,CAAAe,OAAA;IAElB,GAAAC,UAAA;IACA,IAAAX,YAAA,CAAAY,SAAA;MAIAC,MAAM;QAEJC,UAAS,EAAAX;MACX;MAEAY,OAAM;IACN;IACA,IAAAf,YAAgB,CAAAgB,cAAc,UAAW;IAGzC,IAAAC,EAAA,YAAAA,CAAAC,IAAA;MACA;QACAC,OAAA,EAAAD,IAAA,CAAAC;MACD;IAED;IAGE,IAAAC,OAAM,GAAQH,EAAA;MACdE,OAAM,WAAa;MACnBE,IAAM;IAEN;IACA,IAAAC,OAAA,GAAAL,EAAA;MACAE,OAAA;MACDE,IAAA;IAED;IAEE,IAAAE,OAAM,GAAQN,EAAA;MACdE,OAAM;IAEN;IACD,IAAAtB,aAAA,CAAA2B,MAAA,EAAAJ,OAAA,CAAAD,OAAA,EAAAM,IAAA;IAED,IAAA5B,aAAA,CAAA2B,MAAK,EAAAF,OAAA,CAAAH,OAAA,EAAAM,IAAA;IAEH,IAAA5B,aAAM,CAAY2B,MAAU,EAAAD,OAAc,CAAAJ,OAAO,EAAAM,IAAA,UAAiB;EAClE;EAEA,IAAA5B,aAAM,CAAAK,IAAO,2DAAoC;IACjD,IAAAwB,KAAA,GAAAC,IAAA,CAAAC,SAAO;MACPT,OAAA;MACDE,IAAA;IAED;IACE,IAAAQ,KAAM,GAAKF,IAAA,CAAMC,SAAA;MAACT,OAAA;MAClBE,IAAA;IAEA;IACD,IAAAS,KAAA,GAAAH,IAAA,CAAAC,SAAA;MACFT,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["import_zero","require","import_vitest","import_modelRegistry","import_queryRegistry","import_state","describe","test","testTable","table","columns","id","string","ownerId","active","boolean","primaryKey","setSchema","tables","testEntity","version","setEnvironment","fn","args","objOrId","result1","_uid","result2","result3","expect","toBe","args1","JSON","stringify","args2","args3","not","mockWhere","eb","auth"],"sources":["../../src/usePermission.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,WAAA,GAAAC,OAAuC;AAEvC,IAAAC,aAAA,GAAAD,OAAiE;AACjE,IAAAE,oBAAA,GAA4CF,OAAA;AAC5C,IAAAG,oBAA0C,GAAAH,OAAA;AAAA,IAE1CI,YAAA,GAAAJ,OAAA,oBAAS;AAUP,IAAAC,aAAA,CAAAI,QAAK,mDAAkD;EAErD,IAAAJ,aAAM,CAAAK,IAAA,EAAY,gDACP;IAAA,IACPC,SAAI,OAAAR,WAAO,CAAAS,KAAA,gBAAAC,OAAA;MACXC,EAAA,MAAAX,WAAS,CAAAY,MAAA;MACTC,OAAA,MAAQb,WAAA,CAAAY,MAAA,EAAQ;MACjBE,MACA,MAAWd,WAAI,CAAAe,OAAA;IAElB,GAAAC,UAAA;IACA,IAAAX,YAAA,CAAAY,SAAA;MAIAC,MAAM;QAEJC,UAAS,EAAAX;MACX;MAEAY,OAAM;IACN;IACA,IAAAf,YAAgB,CAAAgB,cAAc,UAAW;IAGzC,IAAAC,EAAA,YAAAA,CAAAC,IAAA;MACA;QACAC,OAAA,EAAAD,IAAA,CAAAC;MACD;IAED;IAGE,IAAAC,OAAM,GAAQH,EAAA;MACdE,OAAM,WAAa;MACnBE,IAAM;IAEN;IACA,IAAAC,OAAA,GAAAL,EAAA;MACAE,OAAA;MACDE,IAAA;IAED;IAEE,IAAAE,OAAM,GAAQN,EAAA;MACdE,OAAM;IAEN;IACD,IAAAtB,aAAA,CAAA2B,MAAA,EAAAJ,OAAA,CAAAD,OAAA,EAAAM,IAAA;IAED,IAAA5B,aAAA,CAAA2B,MAAK,EAAAF,OAAA,CAAAH,OAAA,EAAAM,IAAA;IAEH,IAAA5B,aAAM,CAAY2B,MAAU,EAAAD,OAAc,CAAAJ,OAAO,EAAAM,IAAA,UAAiB;EAClE;EAEA,IAAA5B,aAAM,CAAAK,IAAO,2DAAoC;IACjD,IAAAwB,KAAA,GAAAC,IAAA,CAAAC,SAAO;MACPT,OAAA;MACDE,IAAA;IAED;IACE,IAAAQ,KAAM,GAAKF,IAAA,CAAMC,SAAA;MAACT,OAAA;MAClBE,IAAA;IAEA;IACD,IAAAS,KAAA,GAAAH,IAAA,CAAAC,SAAA;MAEDT,OAAA;MACEE,IAAM;IAAsC;IAC5C,IAAAxB,aAAM,CAAA2B,MAAc,EAAAE,KAAS,EAAAK,GAAA,CAAAN,IAAA,CAAAI,KAAiB;IAAC,IAAAhC,aAAA,CAAA2B,MAAA,EAAAE,KAAA,EAAAK,GAAA,CAAAN,IAAA,CAAAK,KAAA;IAE/C,IAAAjC,aAAA,CAAA2B,MAAA,EAAAK,KAAA,EAAAE,GAAA,CAAAN,IAAc,CAAAK,KAAA;EAEd;EACF,CAAC,GAAAjC,aAAA,CAAAK,IAAA;IAED,IAAAwB,KAAA,GAAAC,IAAA,CAAAC,SAAK;MACHT,OAAM,YAAQ;MAAiBE,IAAA;IAC/B;IAAgC,IAAAQ,KAAA,GAAAF,IAAA,CAAAC,SAAA;MAChCT,OAAM,YAAc;MAAiBE,IAAA;IAErC;IACA,IAAAxB,aAAA,CAAA2B,MAAA,EAAAE,KAAA,EAAAD,IAAA,CAAAI,KAAc;EAEd;EACF,CAAC,GAAAhC,aAAA,CAAAK,IAAA;IACF,IAAA8B,SAAA,YAAAA,CAAAC,EAAA,EAAAC,IAAA","ignoreList":[]}
@@ -162,7 +162,7 @@ function generateSyncedQueriesFile(queries) {
162
162
  const sortedFiles = Array.from(queryByFile.keys()).sort();
163
163
  const imports = `// auto-generated by: on-zero generate
164
164
  // server-side query definitions with validators
165
- import { defineQuery, defineQueries } from '@rocicorp/zero'
165
+ import { defineQuery, defineQueries } from 'on-zero'
166
166
  import * as v from 'valibot'
167
167
  import * as Queries from './groupedQueries'
168
168
  `;
@@ -212,7 +212,7 @@ function generateSyncedQueriesFile(queries) {
212
212
  var sortedFiles = Array.from(queryByFile.keys()).sort();
213
213
  var imports = `// auto-generated by: on-zero generate
214
214
  // server-side query definitions with validators
215
- import { defineQuery, defineQueries } from '@rocicorp/zero'
215
+ import { defineQuery, defineQueries } from 'on-zero'
216
216
  import * as v from 'valibot'
217
217
  import * as Queries from './groupedQueries'
218
218
  `;
package/dist/esm/index.js CHANGED
@@ -15,7 +15,8 @@ export * from "./mutations.mjs";
15
15
  export * from "./where.mjs";
16
16
  export * from "./serverWhere.mjs";
17
17
  export * from "./zql.mjs";
18
+ import { defineQuery, defineQueries } from "@rocicorp/zero";
18
19
  import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
19
20
  import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
20
- export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
+ export { clearZeroClientData, defineQueries, defineQuery, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
@@ -15,7 +15,8 @@ export * from "./mutations.mjs";
15
15
  export * from "./where.mjs";
16
16
  export * from "./serverWhere.mjs";
17
17
  export * from "./zql.mjs";
18
+ import { defineQuery, defineQueries } from "@rocicorp/zero";
18
19
  import { clearZeroClientData } from "./helpers/clearZeroClientData.mjs";
19
20
  import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.mjs";
20
- export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
+ export { clearZeroClientData, defineQueries, defineQuery, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
22
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK","ignoreList":[]}
@@ -15,7 +15,8 @@ export * from "./mutations.native.js";
15
15
  export * from "./where.native.js";
16
16
  export * from "./serverWhere.native.js";
17
17
  export * from "./zql.native.js";
18
+ import { defineQuery, defineQueries } from "@rocicorp/zero";
18
19
  import { clearZeroClientData } from "./helpers/clearZeroClientData.native.js";
19
20
  import { showZeroClientErrorOnce, resetShownZeroClientError } from "./helpers/showZeroClientError.native.js";
20
- export { clearZeroClientData, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
+ export { clearZeroClientData, defineQueries, defineQuery, ensureAuth, getAuth, resetShownZeroClientError, setAuthData, setEnvironment, setRunner, showZeroClientErrorOnce };
21
22
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAQd,SAAAC,mBAAA;AAAA,SACEC,uBAAA,EAAAC,yBAAA;AAAA,SAGFF,mBAAA,EACEL,UAAA,EACAC,OAAA,EAAAM,yBAGK,E","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","setRunner","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SAAAC,mBAAA;AAAA,SACEC,uBAAA,EAAAC,yBAAA;AAAA,SAGFF,mBAAA,EACED,aAAA,EACAD,WAAA,EAAAL,UAGK,E","ignoreList":[]}
@@ -1,10 +1,21 @@
1
1
  const QUERY_NAME_KEY = "__onZeroQueryName";
2
+ const queryNamesByFunctionName = /* @__PURE__ */new Map();
2
3
  function registerQuery(fn, name) {
3
4
  ;
4
5
  fn[QUERY_NAME_KEY] = name;
6
+ if (!fn.name) return;
7
+ const existing = queryNamesByFunctionName.get(fn.name);
8
+ if (existing === void 0 || existing === name) {
9
+ queryNamesByFunctionName.set(fn.name, name);
10
+ } else {
11
+ queryNamesByFunctionName.set(fn.name, null);
12
+ }
5
13
  }
6
14
  function getQueryName(fn) {
7
- return fn?.[QUERY_NAME_KEY];
15
+ const stampedName = fn?.[QUERY_NAME_KEY];
16
+ if (stampedName) return stampedName;
17
+ const namedQuery = queryNamesByFunctionName.get(fn?.name);
18
+ return namedQuery ?? void 0;
8
19
  }
9
20
  export { getQueryName, registerQuery };
10
21
  //# sourceMappingURL=queryRegistry.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["QUERY_NAME_KEY","registerQuery","fn","name","getQueryName"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,MAAMA,cAAA,GAAiB;AAEhB,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACxD;EAAED,EAAA,CAAWF,cAAc,IAAIG,IAAA;AACjC;AAEO,SAASC,aAAaF,EAAA,EAAkC;EAC7D,OAAQA,EAAA,GAAaF,cAAc;AACrC","ignoreList":[]}
1
+ {"version":3,"names":["QUERY_NAME_KEY","queryNamesByFunctionName","Map","registerQuery","fn","name","existing","get","set","getQueryName","stampedName","namedQuery"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,MAAMA,cAAA,GAAiB;AACvB,MAAMC,wBAAA,GAA2B,mBAAIC,GAAA,CAA2B;AAEzD,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACxD;EAAED,EAAA,CAAWJ,cAAc,IAAIK,IAAA;EAE/B,IAAI,CAACD,EAAA,CAAGC,IAAA,EAAM;EAEd,MAAMC,QAAA,GAAWL,wBAAA,CAAyBM,GAAA,CAAIH,EAAA,CAAGC,IAAI;EACrD,IAAIC,QAAA,KAAa,UAAaA,QAAA,KAAaD,IAAA,EAAM;IAC/CJ,wBAAA,CAAyBO,GAAA,CAAIJ,EAAA,CAAGC,IAAA,EAAMA,IAAI;EAC5C,OAAO;IACLJ,wBAAA,CAAyBO,GAAA,CAAIJ,EAAA,CAAGC,IAAA,EAAM,IAAI;EAC5C;AACF;AAEO,SAASI,aAAaL,EAAA,EAAkC;EAC7D,MAAMM,WAAA,GAAeN,EAAA,GAAaJ,cAAc;EAChD,IAAIU,WAAA,EAAa,OAAOA,WAAA;EAExB,MAAMC,UAAA,GAAaV,wBAAA,CAAyBM,GAAA,CAAIH,EAAA,EAAIC,IAAI;EACxD,OAAOM,UAAA,IAAc;AACvB","ignoreList":[]}
@@ -1,10 +1,21 @@
1
1
  var QUERY_NAME_KEY = "__onZeroQueryName";
2
+ var queryNamesByFunctionName = /* @__PURE__ */new Map();
2
3
  function registerQuery(fn, name) {
3
4
  ;
4
5
  fn[QUERY_NAME_KEY] = name;
6
+ if (!fn.name) return;
7
+ var existing = queryNamesByFunctionName.get(fn.name);
8
+ if (existing === void 0 || existing === name) {
9
+ queryNamesByFunctionName.set(fn.name, name);
10
+ } else {
11
+ queryNamesByFunctionName.set(fn.name, null);
12
+ }
5
13
  }
6
14
  function getQueryName(fn) {
7
- return fn === null || fn === void 0 ? void 0 : fn[QUERY_NAME_KEY];
15
+ var stampedName = fn === null || fn === void 0 ? void 0 : fn[QUERY_NAME_KEY];
16
+ if (stampedName) return stampedName;
17
+ var namedQuery = queryNamesByFunctionName.get(fn === null || fn === void 0 ? void 0 : fn.name);
18
+ return namedQuery !== null && namedQuery !== void 0 ? namedQuery : void 0;
8
19
  }
9
20
  export { getQueryName, registerQuery };
10
21
  //# sourceMappingURL=queryRegistry.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["QUERY_NAME_KEY","registerQuery","fn","name","getQueryName"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,IAAAA,cAAM,sBAAiB;AAEhB,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACxD;EAAED,EAAA,CAAWF,cAAc,IAAIG,IAAA;AACjC;AAEO,SAASC,aAAaF,EAAA,EAAkC;EAC7D,OAAQA,EAAA,KAAa,QAAAA,EAAA,KAAc,kBAAAA,EAAA,CAAAF,cAAA;AACrC","ignoreList":[]}
1
+ {"version":3,"names":["QUERY_NAME_KEY","queryNamesByFunctionName","Map","registerQuery","fn","name","existing","get","set","getQueryName","stampedName","namedQuery"],"sources":["../../src/queryRegistry.ts"],"sourcesContent":[null],"mappings":"AASA,IAAAA,cAAM,sBAAiB;AACvB,IAAAC,wBAAM,kBAA2B,IAAAC,GAAI;AAE9B,SAASC,cAAcC,EAAA,EAAcC,IAAA,EAAc;EACxD;EAAED,EAAA,CAAWJ,cAAc,IAAIK,IAAA;EAE/B,IAAI,CAACD,EAAA,CAAGC,IAAA,EAAM;EAEd,IAAAC,QAAM,GAAAL,wBAAW,CAAAM,GAAyB,CAAAH,EAAI,CAAAC,IAAG;EACjD,IAAIC,QAAA,KAAa,UAAaA,QAAA,KAAaD,IAAA,EAAM;IAC/CJ,wBAAA,CAAyBO,GAAA,CAAIJ,EAAA,CAAGC,IAAA,EAAMA,IAAI;EAC5C,OAAO;IACLJ,wBAAA,CAAyBO,GAAA,CAAIJ,EAAA,CAAGC,IAAA,EAAM,IAAI;EAC5C;AACF;AAEO,SAASI,aAAaL,EAAA,EAAkC;EAC7D,IAAAM,WAAM,GAAAN,EAAe,KAAa,QAAAA,EAAA,KAAc,kBAAAA,EAAA,CAAAJ,cAAA;EAChD,IAAIU,WAAA,EAAa,OAAOA,WAAA;EAExB,IAAAC,UAAM,GAAAV,wBAAa,CAAAM,GAAyB,CAAAH,EAAI,KAAI,IAAI,IAAAA,EAAA,uBAAAA,EAAA,CAAAC,IAAA;EACxD,OAAOM,UAAA,KAAc,QAAAA,UAAA,cAAAA,UAAA;AACvB","ignoreList":[]}
@@ -77,5 +77,19 @@ describe("usePermission _uid query identity", () => {
77
77
  registerQuery(fn, "permission.testEntity");
78
78
  expect(getQueryName(fn)).toBe("permission.testEntity");
79
79
  });
80
+ test("query lookup survives hot-reloaded function identity", () => {
81
+ const original = function activeProjects() {};
82
+ const hotReloaded = function activeProjects() {};
83
+ registerQuery(original, "project.activeProjects");
84
+ expect(getQueryName(hotReloaded)).toBe("project.activeProjects");
85
+ });
86
+ test("query lookup does not guess when names are ambiguous", () => {
87
+ const first = function byId() {};
88
+ const second = function byId() {};
89
+ const hotReloaded = function byId() {};
90
+ registerQuery(first, "project.byId");
91
+ registerQuery(second, "user.byId");
92
+ expect(getQueryName(hotReloaded)).toBeUndefined();
93
+ });
80
94
  });
81
95
  //# sourceMappingURL=usePermission.test.mjs.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","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.6",
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.6",
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",
@@ -249,7 +249,7 @@ export function generateSyncedQueriesFile(
249
249
 
250
250
  const imports = `// auto-generated by: on-zero generate
251
251
  // server-side query definitions with validators
252
- import { defineQuery, defineQueries } from '@rocicorp/zero'
252
+ import { defineQuery, defineQueries } from 'on-zero'
253
253
  import * as v from 'valibot'
254
254
  import * as Queries from './groupedQueries'
255
255
  `
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
  })
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"}