on-zero 0.4.23 → 0.4.25

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 (93) hide show
  1. package/dist/cjs/combineZeroClients.cjs +101 -0
  2. package/dist/cjs/combineZeroClients.native.js +150 -0
  3. package/dist/cjs/combineZeroClients.native.js.map +1 -0
  4. package/dist/cjs/createUseQuery.cjs +96 -4
  5. package/dist/cjs/createUseQuery.native.js +132 -4
  6. package/dist/cjs/createUseQuery.native.js.map +1 -1
  7. package/dist/cjs/createZeroClient.cjs +41 -13
  8. package/dist/cjs/createZeroClient.native.js +75 -43
  9. package/dist/cjs/createZeroClient.native.js.map +1 -1
  10. package/dist/cjs/index.cjs +1 -0
  11. package/dist/cjs/index.native.js +1 -0
  12. package/dist/cjs/index.native.js.map +1 -1
  13. package/dist/cjs/instanceRegistry.cjs +65 -0
  14. package/dist/cjs/instanceRegistry.native.js +111 -0
  15. package/dist/cjs/instanceRegistry.native.js.map +1 -0
  16. package/dist/cjs/multiInstance.test.cjs +322 -0
  17. package/dist/cjs/multiInstance.test.native.js +387 -0
  18. package/dist/cjs/multiInstance.test.native.js.map +1 -0
  19. package/dist/cjs/multiInstanceNested.test.cjs +206 -0
  20. package/dist/cjs/multiInstanceNested.test.native.js +254 -0
  21. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -0
  22. package/dist/cjs/run.cjs +5 -5
  23. package/dist/cjs/run.native.js +6 -5
  24. package/dist/cjs/run.native.js.map +1 -1
  25. package/dist/cjs/zeroRunner.cjs +4 -1
  26. package/dist/cjs/zeroRunner.native.js +4 -1
  27. package/dist/cjs/zeroRunner.native.js.map +1 -1
  28. package/dist/esm/combineZeroClients.mjs +76 -0
  29. package/dist/esm/combineZeroClients.mjs.map +1 -0
  30. package/dist/esm/combineZeroClients.native.js +122 -0
  31. package/dist/esm/combineZeroClients.native.js.map +1 -0
  32. package/dist/esm/createUseQuery.mjs +96 -5
  33. package/dist/esm/createUseQuery.mjs.map +1 -1
  34. package/dist/esm/createUseQuery.native.js +132 -5
  35. package/dist/esm/createUseQuery.native.js.map +1 -1
  36. package/dist/esm/createZeroClient.mjs +42 -14
  37. package/dist/esm/createZeroClient.mjs.map +1 -1
  38. package/dist/esm/createZeroClient.native.js +76 -44
  39. package/dist/esm/createZeroClient.native.js.map +1 -1
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/index.mjs +1 -0
  43. package/dist/esm/index.mjs.map +1 -1
  44. package/dist/esm/index.native.js +1 -0
  45. package/dist/esm/index.native.js.map +1 -1
  46. package/dist/esm/instanceRegistry.mjs +38 -0
  47. package/dist/esm/instanceRegistry.mjs.map +1 -0
  48. package/dist/esm/instanceRegistry.native.js +81 -0
  49. package/dist/esm/instanceRegistry.native.js.map +1 -0
  50. package/dist/esm/multiInstance.test.mjs +323 -0
  51. package/dist/esm/multiInstance.test.mjs.map +1 -0
  52. package/dist/esm/multiInstance.test.native.js +385 -0
  53. package/dist/esm/multiInstance.test.native.js.map +1 -0
  54. package/dist/esm/multiInstanceNested.test.mjs +207 -0
  55. package/dist/esm/multiInstanceNested.test.mjs.map +1 -0
  56. package/dist/esm/multiInstanceNested.test.native.js +252 -0
  57. package/dist/esm/multiInstanceNested.test.native.js.map +1 -0
  58. package/dist/esm/run.mjs +5 -5
  59. package/dist/esm/run.mjs.map +1 -1
  60. package/dist/esm/run.native.js +6 -5
  61. package/dist/esm/run.native.js.map +1 -1
  62. package/dist/esm/zeroRunner.mjs +4 -1
  63. package/dist/esm/zeroRunner.mjs.map +1 -1
  64. package/dist/esm/zeroRunner.native.js +4 -1
  65. package/dist/esm/zeroRunner.native.js.map +1 -1
  66. package/package.json +5 -3
  67. package/readme.md +59 -0
  68. package/src/combineZeroClients.tsx +186 -0
  69. package/src/createUseQuery.tsx +186 -12
  70. package/src/createZeroClient.tsx +107 -42
  71. package/src/index.ts +1 -0
  72. package/src/instanceRegistry.ts +75 -0
  73. package/src/multiInstance.test.tsx +284 -0
  74. package/src/multiInstanceNested.test.tsx +205 -0
  75. package/src/run.ts +7 -6
  76. package/src/zeroRunner.ts +7 -1
  77. package/types/combineZeroClients.d.ts +38 -0
  78. package/types/combineZeroClients.d.ts.map +1 -0
  79. package/types/createUseQuery.d.ts +15 -0
  80. package/types/createUseQuery.d.ts.map +1 -1
  81. package/types/createZeroClient.d.ts +7 -2
  82. package/types/createZeroClient.d.ts.map +1 -1
  83. package/types/index.d.ts +1 -0
  84. package/types/index.d.ts.map +1 -1
  85. package/types/instanceRegistry.d.ts +15 -0
  86. package/types/instanceRegistry.d.ts.map +1 -0
  87. package/types/multiInstance.test.d.ts +2 -0
  88. package/types/multiInstance.test.d.ts.map +1 -0
  89. package/types/multiInstanceNested.test.d.ts +5 -0
  90. package/types/multiInstanceNested.test.d.ts.map +1 -0
  91. package/types/run.d.ts.map +1 -1
  92. package/types/zeroRunner.d.ts +3 -1
  93. package/types/zeroRunner.d.ts.map +1 -1
@@ -0,0 +1,101 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var combineZeroClients_exports = {};
24
+ __export(combineZeroClients_exports, {
25
+ combineZeroClients: () => combineZeroClients
26
+ });
27
+ module.exports = __toCommonJS(combineZeroClients_exports);
28
+ var import_helpers = require("@take-out/helpers");
29
+ var import_instanceRegistry = require("./instanceRegistry.cjs");
30
+ var import_run = require("./run.cjs");
31
+ var import_jsx_runtime = require("react/jsx-runtime");
32
+ function combineZeroClients(...clientsAndOptions) {
33
+ const last = clientsAndOptions[clientsAndOptions.length - 1];
34
+ const hasOptions = typeof last.instanceName !== "string";
35
+ const clients = hasOptions ? clientsAndOptions.slice(0, -1) : clientsAndOptions;
36
+ const options = hasOptions ? last : {};
37
+ const primary = clients[0];
38
+ const innerName = options.inner ?? clients[clients.length - 1].instanceName;
39
+ const clientsByName = new Map(clients.map(client => [client.instanceName, client]));
40
+ if (!clientsByName.has(innerName)) {
41
+ throw new Error(`[on-zero] combineZeroClients inner instance '${innerName}' is not one of the passed clients`);
42
+ }
43
+ const ownerOfNamespace = namespace => {
44
+ const owner = (0, import_instanceRegistry.getInstanceForNamespace)(namespace);
45
+ return owner && clientsByName.get(owner.name) || primary;
46
+ };
47
+ const ownerOfQueryFn = fn => {
48
+ const owner = (0, import_instanceRegistry.getInstanceForQueryFn)(fn);
49
+ return owner && clientsByName.get(owner.name) || primary;
50
+ };
51
+ function useQuery(...args) {
52
+ const owner = ownerOfQueryFn(args[0]);
53
+ return owner.instanceName === innerName ? owner.useQuery(...args) : owner.useQueryDirect(...args);
54
+ }
55
+ function usePermission(...args) {
56
+ const owner = ownerOfNamespace(String(args[0]));
57
+ return owner.instanceName === innerName ? owner.usePermission(...args) : owner.usePermissionDirect(...args);
58
+ }
59
+ const mutate = new Proxy({}, {
60
+ get(_, key) {
61
+ if (typeof key !== "string") return void 0;
62
+ return ownerOfNamespace(key).zero.mutate[key];
63
+ }
64
+ });
65
+ const zero = new Proxy({}, {
66
+ get(_, key) {
67
+ if (key === "mutate") {
68
+ return mutate;
69
+ }
70
+ return primary.zero[key];
71
+ }
72
+ });
73
+ function preload(...args) {
74
+ return ownerOfQueryFn(args[0]).preload(...args);
75
+ }
76
+ function getQuery(...args) {
77
+ return ownerOfQueryFn(args[0]).getQuery(...args);
78
+ }
79
+ const zeroEvents = (0, import_helpers.createEmitter)(`zero:combined(${clients.map(client => client.instanceName).join("+")})`, null);
80
+ for (const client of clients) {
81
+ client.zeroEvents.listen(event => zeroEvents.emit(event));
82
+ }
83
+ const ControlQueries = ({
84
+ children,
85
+ ...props
86
+ }) => clients.reduceRight((inner, client) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ControlQueries, {
87
+ ...props,
88
+ children: inner
89
+ }), children);
90
+ const combined = {
91
+ useQuery,
92
+ usePermission,
93
+ zero,
94
+ preload,
95
+ getQuery,
96
+ run: import_run.run,
97
+ zeroEvents,
98
+ ControlQueries
99
+ };
100
+ return combined;
101
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var combineZeroClients_exports = {};
26
+ __export(combineZeroClients_exports, {
27
+ combineZeroClients: () => combineZeroClients
28
+ });
29
+ module.exports = __toCommonJS(combineZeroClients_exports);
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var import_helpers = require("@take-out/helpers");
32
+ var import_instanceRegistry = require("./instanceRegistry.native.js");
33
+ var import_run = require("./run.native.js");
34
+ function combineZeroClients() {
35
+ for (var _len = arguments.length, clientsAndOptions = new Array(_len), _key = 0; _key < _len; _key++) {
36
+ clientsAndOptions[_key] = arguments[_key];
37
+ }
38
+ var last = clientsAndOptions[clientsAndOptions.length - 1];
39
+ var hasOptions = typeof last.instanceName !== "string";
40
+ var clients = hasOptions ? clientsAndOptions.slice(0, -1) : clientsAndOptions;
41
+ var options = hasOptions ? last : {};
42
+ var primary = clients[0];
43
+ var _options_inner;
44
+ var innerName = (_options_inner = options.inner) !== null && _options_inner !== void 0 ? _options_inner : clients[clients.length - 1].instanceName;
45
+ var clientsByName = new Map(clients.map(function (client2) {
46
+ return [client2.instanceName, client2];
47
+ }));
48
+ if (!clientsByName.has(innerName)) {
49
+ throw new Error(`[on-zero] combineZeroClients inner instance '${innerName}' is not one of the passed clients`);
50
+ }
51
+ var ownerOfNamespace = function (namespace) {
52
+ var owner = (0, import_instanceRegistry.getInstanceForNamespace)(namespace);
53
+ return owner && clientsByName.get(owner.name) || primary;
54
+ };
55
+ var ownerOfQueryFn = function (fn) {
56
+ var owner = (0, import_instanceRegistry.getInstanceForQueryFn)(fn);
57
+ return owner && clientsByName.get(owner.name) || primary;
58
+ };
59
+ function useQuery() {
60
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
61
+ args[_key2] = arguments[_key2];
62
+ }
63
+ var owner = ownerOfQueryFn(args[0]);
64
+ return owner.instanceName === innerName ? owner.useQuery(...args) : owner.useQueryDirect(...args);
65
+ }
66
+ function usePermission() {
67
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
68
+ args[_key2] = arguments[_key2];
69
+ }
70
+ var owner = ownerOfNamespace(String(args[0]));
71
+ return owner.instanceName === innerName ? owner.usePermission(...args) : owner.usePermissionDirect(...args);
72
+ }
73
+ var mutate = new Proxy({}, {
74
+ get(_, key) {
75
+ if (typeof key !== "string") return void 0;
76
+ return ownerOfNamespace(key).zero.mutate[key];
77
+ }
78
+ });
79
+ var zero = new Proxy({}, {
80
+ get(_, key) {
81
+ if (key === "mutate") {
82
+ return mutate;
83
+ }
84
+ return primary.zero[key];
85
+ }
86
+ });
87
+ function preload() {
88
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
89
+ args[_key2] = arguments[_key2];
90
+ }
91
+ return ownerOfQueryFn(args[0]).preload(...args);
92
+ }
93
+ function getQuery() {
94
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
95
+ args[_key2] = arguments[_key2];
96
+ }
97
+ return ownerOfQueryFn(args[0]).getQuery(...args);
98
+ }
99
+ var zeroEvents = (0, import_helpers.createEmitter)(`zero:combined(${clients.map(function (client2) {
100
+ return client2.instanceName;
101
+ }).join("+")})`, null);
102
+ var _iteratorNormalCompletion = true,
103
+ _didIteratorError = false,
104
+ _iteratorError = void 0;
105
+ try {
106
+ for (var _iterator = clients[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
107
+ var client = _step.value;
108
+ client.zeroEvents.listen(function (event) {
109
+ return zeroEvents.emit(event);
110
+ });
111
+ }
112
+ } catch (err) {
113
+ _didIteratorError = true;
114
+ _iteratorError = err;
115
+ } finally {
116
+ try {
117
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
118
+ _iterator.return();
119
+ }
120
+ } finally {
121
+ if (_didIteratorError) {
122
+ throw _iteratorError;
123
+ }
124
+ }
125
+ }
126
+ var ControlQueries = function (param) {
127
+ var {
128
+ children,
129
+ ...props
130
+ } = param;
131
+ return clients.reduceRight(function (inner, client2) {
132
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(client2.ControlQueries, {
133
+ ...props,
134
+ children: inner
135
+ });
136
+ }, children);
137
+ };
138
+ var combined = {
139
+ useQuery,
140
+ usePermission,
141
+ zero,
142
+ preload,
143
+ getQuery,
144
+ run: import_run.run,
145
+ zeroEvents,
146
+ ControlQueries
147
+ };
148
+ return combined;
149
+ }
150
+ //# sourceMappingURL=combineZeroClients.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","combineZeroClients_exports","__export","combineZeroClients","module","exports","import_jsx_runtime","require","import_helpers","import_instanceRegistry","import_run","_len","arguments","length","clientsAndOptions","Array","_key","last","hasOptions","instanceName","clients","slice","options","primary","_options_inner","innerName","inner","clientsByName","Map","map","client2","has","Error","ownerOfNamespace","namespace","owner","getInstanceForNamespace","get","name","ownerOfQueryFn","fn","getInstanceForQueryFn","useQuery","_len2","args","_key2","useQueryDirect","usePermission","String","usePermissionDirect","mutate","Proxy","_","key","zero","preload","getQuery","zeroEvents","createEmitter","join"],"sources":["../../src/combineZeroClients.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -22,16 +22,25 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
22
  }), mod);
23
23
  var createUseQuery_exports = {};
24
24
  __export(createUseQuery_exports, {
25
- createUseQuery: () => createUseQuery
25
+ createUseQuery: () => createUseQuery,
26
+ createUseQueryDirect: () => createUseQueryDirect
26
27
  });
27
28
  module.exports = __toCommonJS(createUseQuery_exports);
28
29
  var import_react = require("@rocicorp/zero/react");
30
+ var import_helpers = require("@take-out/helpers");
29
31
  var import_react2 = require("react");
30
32
  var import_useZeroDebug = require("./helpers/useZeroDebug.cjs");
31
33
  var import_resolveQuery = require("./resolveQuery.cjs");
32
34
  const EMPTY_RESPONSE = [null, {
33
35
  type: "unknown"
34
36
  }];
37
+ function parseUseQueryArgs(paramsOrOptions, optionsArg) {
38
+ const hasParams = optionsArg !== void 0 || paramsOrOptions && typeof paramsOrOptions === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions);
39
+ return {
40
+ params: hasParams ? paramsOrOptions : void 0,
41
+ options: hasParams ? optionsArg : paramsOrOptions
42
+ };
43
+ }
35
44
  function createUseQuery({
36
45
  DisabledContext,
37
46
  customQueries
@@ -44,9 +53,10 @@ function createUseQuery({
44
53
  queryRequest,
45
54
  options
46
55
  } = (0, import_react2.useMemo)(() => {
47
- const hasParams = optionsArg !== void 0 || paramsOrOptions && typeof paramsOrOptions === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions);
48
- const params = hasParams ? paramsOrOptions : void 0;
49
- const opts = hasParams ? optionsArg : paramsOrOptions;
56
+ const {
57
+ params,
58
+ options: opts
59
+ } = parseUseQueryArgs(paramsOrOptions, optionsArg);
50
60
  const queryRequest2 = (0, import_resolveQuery.resolveQuery)({
51
61
  customQueries,
52
62
  fn,
@@ -71,4 +81,86 @@ function createUseQuery({
71
81
  return EMPTY_RESPONSE;
72
82
  }
73
83
  return useQuery;
84
+ }
85
+ const DISABLED_SUBSCRIBE = () => () => {};
86
+ const DISABLED_SNAPSHOT = [void 0, {
87
+ type: "unknown"
88
+ }];
89
+ const getDisabledSnapshot = () => DISABLED_SNAPSHOT;
90
+ function createDirectView(zero, queryRequest, ttl) {
91
+ let snapshot = DISABLED_SNAPSHOT;
92
+ const listeners = /* @__PURE__ */new Set();
93
+ const view = zero.materialize(queryRequest, ttl === void 0 ? void 0 : {
94
+ ttl
95
+ });
96
+ view.addListener((data, resultType) => {
97
+ snapshot = [data === void 0 ? void 0 : structuredClone(data), {
98
+ type: resultType
99
+ }];
100
+ for (const listener of listeners) {
101
+ listener();
102
+ }
103
+ });
104
+ return {
105
+ subscribe: notify => {
106
+ listeners.add(notify);
107
+ return () => listeners.delete(notify);
108
+ },
109
+ getSnapshot: () => snapshot,
110
+ destroy: () => {
111
+ try {
112
+ view.destroy();
113
+ } catch {}
114
+ }
115
+ };
116
+ }
117
+ function createUseQueryDirect({
118
+ DisabledContext,
119
+ customQueries,
120
+ getZero,
121
+ zeroVersion
122
+ }) {
123
+ function useQueryDirect(...args) {
124
+ const disableMode = (0, import_react2.useContext)(DisabledContext);
125
+ const lastRef = (0, import_react2.useRef)(EMPTY_RESPONSE);
126
+ const [fn, paramsOrOptions, optionsArg] = args;
127
+ const version = (0, import_helpers.useEmitterValue)(zeroVersion);
128
+ const {
129
+ params,
130
+ options
131
+ } = parseUseQueryArgs(paramsOrOptions, optionsArg);
132
+ let enabled = true;
133
+ let ttl;
134
+ if (typeof options === "boolean") {
135
+ enabled = options;
136
+ } else if (options) {
137
+ enabled = options.enabled !== false;
138
+ ttl = options.ttl;
139
+ }
140
+ const paramsKey = params === void 0 ? "" : JSON.stringify(params);
141
+ const view = (0, import_react2.useMemo)(() => {
142
+ const zero = getZero();
143
+ if (!enabled || !zero) return null;
144
+ const queryRequest = (0, import_resolveQuery.resolveQuery)({
145
+ customQueries,
146
+ fn,
147
+ params
148
+ });
149
+ return createDirectView(zero, queryRequest, ttl);
150
+ }, [fn, paramsKey, enabled, ttl, version]);
151
+ (0, import_react2.useEffect)(() => {
152
+ if (!view) return;
153
+ return () => view.destroy();
154
+ }, [view]);
155
+ const out = (0, import_react2.useSyncExternalStore)(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
156
+ if (!disableMode) {
157
+ lastRef.current = out;
158
+ return out;
159
+ }
160
+ if (disableMode === "last-value") {
161
+ return lastRef.current;
162
+ }
163
+ return EMPTY_RESPONSE;
164
+ }
165
+ return useQueryDirect;
74
166
  }
@@ -24,10 +24,12 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
24
24
  }), mod);
25
25
  var createUseQuery_exports = {};
26
26
  __export(createUseQuery_exports, {
27
- createUseQuery: () => createUseQuery
27
+ createUseQuery: () => createUseQuery,
28
+ createUseQueryDirect: () => createUseQueryDirect
28
29
  });
29
30
  module.exports = __toCommonJS(createUseQuery_exports);
30
31
  var import_react = require("@rocicorp/zero/react");
32
+ var import_helpers = require("@take-out/helpers");
31
33
  var import_react2 = require("react");
32
34
  var import_useZeroDebug = require("./helpers/useZeroDebug.native.js");
33
35
  var import_resolveQuery = require("./resolveQuery.native.js");
@@ -39,6 +41,13 @@ function _type_of(obj) {
39
41
  var EMPTY_RESPONSE = [null, {
40
42
  type: "unknown"
41
43
  }];
44
+ function parseUseQueryArgs(paramsOrOptions, optionsArg) {
45
+ var hasParams = optionsArg !== void 0 || paramsOrOptions && (typeof paramsOrOptions === "undefined" ? "undefined" : _type_of(paramsOrOptions)) === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions);
46
+ return {
47
+ params: hasParams ? paramsOrOptions : void 0,
48
+ options: hasParams ? optionsArg : paramsOrOptions
49
+ };
50
+ }
42
51
  function createUseQuery(param) {
43
52
  var {
44
53
  DisabledContext,
@@ -55,9 +64,10 @@ function createUseQuery(param) {
55
64
  queryRequest,
56
65
  options
57
66
  } = (0, import_react2.useMemo)(function () {
58
- var hasParams = optionsArg !== void 0 || paramsOrOptions && (typeof paramsOrOptions === "undefined" ? "undefined" : _type_of(paramsOrOptions)) === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions);
59
- var params = hasParams ? paramsOrOptions : void 0;
60
- var opts = hasParams ? optionsArg : paramsOrOptions;
67
+ var {
68
+ params,
69
+ options: opts
70
+ } = parseUseQueryArgs(paramsOrOptions, optionsArg);
61
71
  var queryRequest2 = (0, import_resolveQuery.resolveQuery)({
62
72
  customQueries,
63
73
  fn,
@@ -83,4 +93,122 @@ function createUseQuery(param) {
83
93
  }
84
94
  return useQuery;
85
95
  }
96
+ var DISABLED_SUBSCRIBE = function () {
97
+ return function () {};
98
+ };
99
+ var DISABLED_SNAPSHOT = [void 0, {
100
+ type: "unknown"
101
+ }];
102
+ var getDisabledSnapshot = function () {
103
+ return DISABLED_SNAPSHOT;
104
+ };
105
+ function createDirectView(zero, queryRequest, ttl) {
106
+ var snapshot = DISABLED_SNAPSHOT;
107
+ var listeners = /* @__PURE__ */new Set();
108
+ var view = zero.materialize(queryRequest, ttl === void 0 ? void 0 : {
109
+ ttl
110
+ });
111
+ view.addListener(function (data, resultType) {
112
+ snapshot = [data === void 0 ? void 0 : structuredClone(data), {
113
+ type: resultType
114
+ }];
115
+ var _iteratorNormalCompletion = true,
116
+ _didIteratorError = false,
117
+ _iteratorError = void 0;
118
+ try {
119
+ for (var _iterator = listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
120
+ var listener = _step.value;
121
+ listener();
122
+ }
123
+ } catch (err) {
124
+ _didIteratorError = true;
125
+ _iteratorError = err;
126
+ } finally {
127
+ try {
128
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
129
+ _iterator.return();
130
+ }
131
+ } finally {
132
+ if (_didIteratorError) {
133
+ throw _iteratorError;
134
+ }
135
+ }
136
+ }
137
+ });
138
+ return {
139
+ subscribe: function (notify) {
140
+ listeners.add(notify);
141
+ return function () {
142
+ return listeners.delete(notify);
143
+ };
144
+ },
145
+ getSnapshot: function () {
146
+ return snapshot;
147
+ },
148
+ destroy: function () {
149
+ try {
150
+ view.destroy();
151
+ } catch (e) {}
152
+ }
153
+ };
154
+ }
155
+ function createUseQueryDirect(param) {
156
+ var {
157
+ DisabledContext,
158
+ customQueries,
159
+ getZero,
160
+ zeroVersion
161
+ } = param;
162
+ function useQueryDirect() {
163
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
164
+ args[_key] = arguments[_key];
165
+ }
166
+ var disableMode = (0, import_react2.useContext)(DisabledContext);
167
+ var lastRef = (0, import_react2.useRef)(EMPTY_RESPONSE);
168
+ var [fn, paramsOrOptions, optionsArg] = args;
169
+ var version = (0, import_helpers.useEmitterValue)(zeroVersion);
170
+ var {
171
+ params,
172
+ options
173
+ } = parseUseQueryArgs(paramsOrOptions, optionsArg);
174
+ var enabled = true;
175
+ var ttl;
176
+ if (typeof options === "boolean") {
177
+ enabled = options;
178
+ } else if (options) {
179
+ enabled = options.enabled !== false;
180
+ ttl = options.ttl;
181
+ }
182
+ var paramsKey = params === void 0 ? "" : JSON.stringify(params);
183
+ var view = (0, import_react2.useMemo)(function () {
184
+ var zero = getZero();
185
+ if (!enabled || !zero) return null;
186
+ var queryRequest = (0, import_resolveQuery.resolveQuery)({
187
+ customQueries,
188
+ fn,
189
+ params
190
+ });
191
+ return createDirectView(zero, queryRequest, ttl);
192
+ },
193
+ // params is keyed by paramsKey; version re-materializes on a new zero
194
+ // eslint-disable-next-line react-hooks/exhaustive-deps
195
+ [fn, paramsKey, enabled, ttl, version]);
196
+ (0, import_react2.useEffect)(function () {
197
+ if (!view) return;
198
+ return function () {
199
+ return view.destroy();
200
+ };
201
+ }, [view]);
202
+ var out = (0, import_react2.useSyncExternalStore)(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
203
+ if (!disableMode) {
204
+ lastRef.current = out;
205
+ return out;
206
+ }
207
+ if (disableMode === "last-value") {
208
+ return lastRef.current;
209
+ }
210
+ return EMPTY_RESPONSE;
211
+ }
212
+ return useQueryDirect;
213
+ }
86
214
  //# sourceMappingURL=createUseQuery.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createUseQuery_exports","__export","createUseQuery","module","exports","import_react","require","import_react2","import_useZeroDebug","import_resolveQuery","_type_of","obj","Symbol","constructor","EMPTY_RESPONSE","type","param","DisabledContext","customQueries","useQuery","_len","arguments","length","args","Array","_key","disableMode","useContext","lastRef","useRef","fn","paramsOrOptions","optionsArg","queryRequest","options","useMemo","hasParams","params","opts","queryRequest2","resolveQuery"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,sBAAA;AAAAC,QAAA,CAAAD,sBAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAyC,CAAAK,sBAAA;AACzC,IAAAK,YAAA,GAAAC,OAA0D;AAE1D,IAAAC,aAAA,GAAAD,OAA6B;AAC7B,IAAAE,mBAAA,GAAgDF,OAAA;AAqChD,IAAAG,mBAAuB,GAACH,OAAQ,2BAAiB;AAE1C,SAASI,SAAAC,GAAA;EACd;;EACA,OAAAA,GAAA,WAAAC,MAAA,oBAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACF;AAIE,IAAAG,cAAS,IACP,MACA;EACAC,IAAA,EAAM;AAEN,EAEE;AAOA,SAAAb,cAAeA,CAAAc,KAAA;EACf;IAAAC,eAAa;IAAAC;EAAY,IAAAF,KAAa;EAEtC,SAAAG,QAAMA,CAAA;IAEN,SAAOC,IAAE,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,GAAc,IAAAC,KAAS,CAAAJ,IAAK,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MACvCF,IAAI,CAAAE,IAAI,IAAAJ,SAAA,CAAiBI,IAAA;IAEzB;IAEA,IAAIC,WAAQ,GAAI,IAAAnB,aAAa,CAAAoB,UAAe,EAAAV,eAAA;IAC1C,IAAAW,OAAI,GAAQ,IAAIrB,aAAA,CAAAsB,MAAA,EAAAf,cAAuB;IAErC,KAAAgB,EAAA,EAAAC,eAAA,EAAAC,UAAA,IAAAT,IAAa;IACjB;MAAAU,YAAA;MAAAC;IAAA,QAAA3B,aAAA,CAAA4B,OAAA;MAEA,IAAKC,SAAA,GAAaJ,UAAA,eAAAD,eAAA,YAAAA,eAAA,iCAAArB,QAAA,CAAAqB,eAAA,kCAAAA,eAAA,gBAAAA,eAAA;MAChB,IAAAM,MAAQ,GAAAD,SAAU,GAAAL,eAAA;MAClB,IAAAO,IAAO,GAAAF,SAAA,GAAAJ,UAAA,GAAAD,eAAA;MACT,IAAAQ,aAAA,OAAA9B,mBAAA,CAAA+B,YAAA;QAEItB,aAAA;QACFY,EAAA;QACFO;MAEA;MACF;QAEAJ,YAAO,EAAAM,aAAA;QACTL,OAAA,EAAAI","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createUseQuery_exports","__export","createUseQuery","createUseQueryDirect","module","exports","import_react","require","import_helpers","import_react2","import_useZeroDebug","import_resolveQuery","_type_of","obj","Symbol","constructor","EMPTY_RESPONSE","type","parseUseQueryArgs","paramsOrOptions","optionsArg","hasParams","params","options","param","DisabledContext","customQueries","useQuery","_len","arguments","length","args","Array","_key","disableMode","useContext","lastRef","useRef","fn","queryRequest","useMemo","opts","queryRequest2","resolveQuery","out","process","env","NODE_ENV","DEBUG_ZERO_QUERIES","useZeroDebug","current","DISABLED_SUBSCRIBE","DISABLED_SNAPSHOT","getDisabledSnapshot","createDirectView","zero","ttl","snapshot","listeners","Set","view","materialize","addListener","data","resultType","structuredClone","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","listener","err","return","subscribe","notify","add","delete","getSnapshot","destroy"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}