on-zero 0.4.13 → 0.4.14

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 (33) hide show
  1. package/dist/cjs/helpers/useMutation.cjs +114 -0
  2. package/dist/cjs/helpers/useMutation.native.js +166 -0
  3. package/dist/cjs/helpers/useMutation.native.js.map +1 -0
  4. package/dist/cjs/helpers/useMutation.test.cjs +139 -0
  5. package/dist/cjs/helpers/useMutation.test.native.js +156 -0
  6. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -0
  7. package/dist/cjs/index.cjs +1 -0
  8. package/dist/cjs/index.native.js +1 -0
  9. package/dist/cjs/index.native.js.map +1 -1
  10. package/dist/esm/helpers/useMutation.mjs +87 -0
  11. package/dist/esm/helpers/useMutation.mjs.map +1 -0
  12. package/dist/esm/helpers/useMutation.native.js +136 -0
  13. package/dist/esm/helpers/useMutation.native.js.map +1 -0
  14. package/dist/esm/helpers/useMutation.test.mjs +140 -0
  15. package/dist/esm/helpers/useMutation.test.mjs.map +1 -0
  16. package/dist/esm/helpers/useMutation.test.native.js +154 -0
  17. package/dist/esm/helpers/useMutation.test.native.js.map +1 -0
  18. package/dist/esm/index.js +1 -0
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/index.mjs +1 -0
  21. package/dist/esm/index.mjs.map +1 -1
  22. package/dist/esm/index.native.js +1 -0
  23. package/dist/esm/index.native.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/helpers/useMutation.test.ts +117 -0
  26. package/src/helpers/useMutation.tsx +170 -0
  27. package/src/index.ts +1 -0
  28. package/types/helpers/useMutation.d.ts +47 -0
  29. package/types/helpers/useMutation.d.ts.map +1 -0
  30. package/types/helpers/useMutation.test.d.ts +2 -0
  31. package/types/helpers/useMutation.test.d.ts.map +1 -0
  32. package/types/index.d.ts +1 -0
  33. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,87 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ const mutationErrorListeners = /* @__PURE__ */new Set();
3
+ function onMutationError(cb) {
4
+ mutationErrorListeners.add(cb);
5
+ return () => {
6
+ mutationErrorListeners.delete(cb);
7
+ };
8
+ }
9
+ function emitMutationError(error) {
10
+ if (mutationErrorListeners.size === 0) {
11
+ if (process.env.NODE_ENV !== "production") {
12
+ console.error("[on-zero] unhandled mutation error", error);
13
+ }
14
+ return;
15
+ }
16
+ for (const cb of mutationErrorListeners) cb(error);
17
+ }
18
+ function toMutationError(scope, details) {
19
+ if (!details || typeof details !== "object") return null;
20
+ const d = details;
21
+ if (d.type !== "error") return null;
22
+ return {
23
+ scope,
24
+ kind: d.error?.type === "app" ? "app" : "zero",
25
+ message: d.error?.message || "Mutation failed",
26
+ details: d.error?.details
27
+ };
28
+ }
29
+ function rejectionToError(scope, e) {
30
+ return {
31
+ scope,
32
+ kind: "zero",
33
+ message: e instanceof Error ? e.message : String(e)
34
+ };
35
+ }
36
+ function observeMutation(result, onError) {
37
+ let reportedGlobal = false;
38
+ const report = err => {
39
+ if (!err) return;
40
+ onError?.(err);
41
+ if (!reportedGlobal) {
42
+ reportedGlobal = true;
43
+ emitMutationError(err);
44
+ }
45
+ };
46
+ const client = result.client.then(d => report(toMutationError("client", d))).catch(e => report(rejectionToError("client", e)));
47
+ const server = result.server.then(d => report(toMutationError("server", d))).catch(e => report(rejectionToError("server", e)));
48
+ return Promise.all([client, server]).then(() => void 0);
49
+ }
50
+ function useMutation(mutator) {
51
+ const [pending, setPending] = useState(false);
52
+ const [error, setError] = useState(null);
53
+ const seqRef = useRef(0);
54
+ const mountedRef = useRef(true);
55
+ const mutatorRef = useRef(mutator);
56
+ mutatorRef.current = mutator;
57
+ useEffect(() => {
58
+ mountedRef.current = true;
59
+ return () => {
60
+ mountedRef.current = false;
61
+ };
62
+ }, []);
63
+ const reset = useCallback(() => {
64
+ setError(null);
65
+ setPending(false);
66
+ }, []);
67
+ const run = useCallback((...args) => {
68
+ const result = mutatorRef.current(...args);
69
+ const seq = ++seqRef.current;
70
+ setPending(true);
71
+ setError(null);
72
+ const isCurrent = () => mountedRef.current && seq === seqRef.current;
73
+ observeMutation(result, err => {
74
+ if (isCurrent()) setError(err);
75
+ }).finally(() => {
76
+ if (isCurrent()) setPending(false);
77
+ });
78
+ return result;
79
+ }, []);
80
+ return [run, {
81
+ pending,
82
+ error,
83
+ reset
84
+ }];
85
+ }
86
+ export { observeMutation, onMutationError, useMutation };
87
+ //# sourceMappingURL=useMutation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","mutationErrorListeners","Set","onMutationError","cb","add","delete","emitMutationError","error","size","process","env","NODE_ENV","console","toMutationError","scope","details","d","type","kind","message","rejectionToError","e","Error","String","observeMutation","result","onError","reportedGlobal","report","err","client","then","catch","server","Promise","all","useMutation","mutator","pending","setPending","setError","seqRef","mountedRef","mutatorRef","current","reset","run","args","seq","isCurrent","finally"],"sources":["../../../src/helpers/useMutation.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,136 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ function _instanceof(left, right) {
3
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
4
+ return !!right[Symbol.hasInstance](left);
5
+ } else {
6
+ return left instanceof right;
7
+ }
8
+ }
9
+ function _type_of(obj) {
10
+ "@swc/helpers - typeof";
11
+
12
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
13
+ }
14
+ var mutationErrorListeners = /* @__PURE__ */new Set();
15
+ function onMutationError(cb) {
16
+ mutationErrorListeners.add(cb);
17
+ return function () {
18
+ mutationErrorListeners.delete(cb);
19
+ };
20
+ }
21
+ function emitMutationError(error) {
22
+ if (mutationErrorListeners.size === 0) {
23
+ if (process.env.NODE_ENV !== "production") {
24
+ console.error("[on-zero] unhandled mutation error", error);
25
+ }
26
+ return;
27
+ }
28
+ var _iteratorNormalCompletion = true,
29
+ _didIteratorError = false,
30
+ _iteratorError = void 0;
31
+ try {
32
+ for (var _iterator = mutationErrorListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
33
+ var cb = _step.value;
34
+ cb(error);
35
+ }
36
+ } catch (err) {
37
+ _didIteratorError = true;
38
+ _iteratorError = err;
39
+ } finally {
40
+ try {
41
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
42
+ _iterator.return();
43
+ }
44
+ } finally {
45
+ if (_didIteratorError) {
46
+ throw _iteratorError;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ function toMutationError(scope, details) {
52
+ var _d_error, _d_error1, _d_error2;
53
+ if (!details || (typeof details === "undefined" ? "undefined" : _type_of(details)) !== "object") return null;
54
+ var d = details;
55
+ if (d.type !== "error") return null;
56
+ return {
57
+ scope,
58
+ kind: ((_d_error = d.error) === null || _d_error === void 0 ? void 0 : _d_error.type) === "app" ? "app" : "zero",
59
+ message: ((_d_error1 = d.error) === null || _d_error1 === void 0 ? void 0 : _d_error1.message) || "Mutation failed",
60
+ details: (_d_error2 = d.error) === null || _d_error2 === void 0 ? void 0 : _d_error2.details
61
+ };
62
+ }
63
+ function rejectionToError(scope, e) {
64
+ return {
65
+ scope,
66
+ kind: "zero",
67
+ message: _instanceof(e, Error) ? e.message : String(e)
68
+ };
69
+ }
70
+ function observeMutation(result, onError) {
71
+ var reportedGlobal = false;
72
+ var report = function (err) {
73
+ if (!err) return;
74
+ onError === null || onError === void 0 ? void 0 : onError(err);
75
+ if (!reportedGlobal) {
76
+ reportedGlobal = true;
77
+ emitMutationError(err);
78
+ }
79
+ };
80
+ var client = result.client.then(function (d) {
81
+ return report(toMutationError("client", d));
82
+ }).catch(function (e) {
83
+ return report(rejectionToError("client", e));
84
+ });
85
+ var server = result.server.then(function (d) {
86
+ return report(toMutationError("server", d));
87
+ }).catch(function (e) {
88
+ return report(rejectionToError("server", e));
89
+ });
90
+ return Promise.all([client, server]).then(function () {
91
+ return void 0;
92
+ });
93
+ }
94
+ function useMutation(mutator) {
95
+ var [pending, setPending] = useState(false);
96
+ var [error, setError] = useState(null);
97
+ var seqRef = useRef(0);
98
+ var mountedRef = useRef(true);
99
+ var mutatorRef = useRef(mutator);
100
+ mutatorRef.current = mutator;
101
+ useEffect(function () {
102
+ mountedRef.current = true;
103
+ return function () {
104
+ mountedRef.current = false;
105
+ };
106
+ }, []);
107
+ var reset = useCallback(function () {
108
+ setError(null);
109
+ setPending(false);
110
+ }, []);
111
+ var run = useCallback(function () {
112
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
113
+ args[_key] = arguments[_key];
114
+ }
115
+ var result = mutatorRef.current(...args);
116
+ var seq = ++seqRef.current;
117
+ setPending(true);
118
+ setError(null);
119
+ var isCurrent = function () {
120
+ return mountedRef.current && seq === seqRef.current;
121
+ };
122
+ observeMutation(result, function (err) {
123
+ if (isCurrent()) setError(err);
124
+ }).finally(function () {
125
+ if (isCurrent()) setPending(false);
126
+ });
127
+ return result;
128
+ }, []);
129
+ return [run, {
130
+ pending,
131
+ error,
132
+ reset
133
+ }];
134
+ }
135
+ export { observeMutation, onMutationError, useMutation };
136
+ //# sourceMappingURL=useMutation.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","mutationErrorListeners","Set","onMutationError","cb","add","delete","emitMutationError","error","size","process","env","NODE_ENV","console","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","value","err","return","toMutationError","scope","details","_d_error","_d_error1","_d_error2","d","type","kind","message","rejectionToError","e","Error","String","observeMutation","result","onError","reportedGlobal","report","client","then","catch"],"sources":["../../../src/helpers/useMutation.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,140 @@
1
+ import { afterEach, describe, expect, test, vi } from "vitest";
2
+ import { observeMutation, onMutationError } from "./useMutation.mjs";
3
+ function deferred() {
4
+ let resolve;
5
+ let reject;
6
+ const promise = new Promise((res, rej) => {
7
+ resolve = res;
8
+ reject = rej;
9
+ });
10
+ return {
11
+ promise,
12
+ resolve,
13
+ reject
14
+ };
15
+ }
16
+ function fakeResult() {
17
+ const client = deferred();
18
+ const server = deferred();
19
+ return {
20
+ result: {
21
+ client: client.promise,
22
+ server: server.promise
23
+ },
24
+ client,
25
+ server
26
+ };
27
+ }
28
+ const SUCCESS = {
29
+ type: "success"
30
+ };
31
+ const appError = message => ({
32
+ type: "error",
33
+ error: {
34
+ type: "app",
35
+ message
36
+ }
37
+ });
38
+ afterEach(() => {
39
+ vi.restoreAllMocks();
40
+ });
41
+ describe("observeMutation", () => {
42
+ test("success on both phases reports nothing", async () => {
43
+ const {
44
+ result,
45
+ client,
46
+ server
47
+ } = fakeResult();
48
+ const errors = [];
49
+ const dispose = onMutationError(e => errors.push(e));
50
+ const done = observeMutation(result, e => errors.push(e));
51
+ client.resolve(SUCCESS);
52
+ server.resolve(SUCCESS);
53
+ await done;
54
+ expect(errors).toEqual([]);
55
+ dispose();
56
+ });
57
+ test("a server rejection surfaces a normalized error locally and globally", async () => {
58
+ const {
59
+ result,
60
+ client,
61
+ server
62
+ } = fakeResult();
63
+ const local = [];
64
+ const global = [];
65
+ const dispose = onMutationError(e => global.push(e));
66
+ const done = observeMutation(result, e => local.push(e));
67
+ client.resolve(SUCCESS);
68
+ server.resolve(appError("Could not create post."));
69
+ await done;
70
+ expect(local).toEqual([{
71
+ scope: "server",
72
+ kind: "app",
73
+ message: "Could not create post.",
74
+ details: void 0
75
+ }]);
76
+ expect(global).toEqual(local);
77
+ dispose();
78
+ });
79
+ test("client + server both failing emits to the global catch only once", async () => {
80
+ const {
81
+ result,
82
+ client,
83
+ server
84
+ } = fakeResult();
85
+ const global = [];
86
+ const dispose = onMutationError(e => global.push(e));
87
+ const done = observeMutation(result);
88
+ client.reject(new Error("boom"));
89
+ server.reject(new Error("boom"));
90
+ await done;
91
+ expect(global).toHaveLength(1);
92
+ expect(global[0]).toMatchObject({
93
+ scope: "client",
94
+ kind: "zero",
95
+ message: "boom"
96
+ });
97
+ dispose();
98
+ });
99
+ test("never rejects even when both phases reject", async () => {
100
+ const {
101
+ result,
102
+ client,
103
+ server
104
+ } = fakeResult();
105
+ client.reject(new Error("x"));
106
+ server.reject(new Error("x"));
107
+ await expect(observeMutation(result)).resolves.toBeUndefined();
108
+ });
109
+ test("with no listener registered it falls back to console.error in dev", async () => {
110
+ const spy = vi.spyOn(console, "error").mockImplementation(() => {});
111
+ const {
112
+ result,
113
+ client,
114
+ server
115
+ } = fakeResult();
116
+ const done = observeMutation(result);
117
+ client.resolve(SUCCESS);
118
+ server.resolve(appError("denied"));
119
+ await done;
120
+ expect(spy).toHaveBeenCalledTimes(1);
121
+ });
122
+ });
123
+ describe("onMutationError", () => {
124
+ test("dispose stops delivery", async () => {
125
+ const seen = [];
126
+ const dispose = onMutationError(e => seen.push(e));
127
+ dispose();
128
+ const {
129
+ result,
130
+ client,
131
+ server
132
+ } = fakeResult();
133
+ const done = observeMutation(result);
134
+ client.resolve(SUCCESS);
135
+ server.resolve(appError("denied"));
136
+ await done;
137
+ expect(seen).toEqual([]);
138
+ });
139
+ });
140
+ //# sourceMappingURL=useMutation.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","describe","expect","test","vi","observeMutation","onMutationError","deferred","resolve","reject","promise","Promise","res","rej","fakeResult","client","server","result","SUCCESS","type","appError","message","error","restoreAllMocks","errors","dispose","e","push","done","toEqual","local","global","scope","kind","details","Error","toHaveLength","toMatchObject","resolves","toBeUndefined","spy","spyOn","console","mockImplementation","toHaveBeenCalledTimes","seen"],"sources":["../../../src/helpers/useMutation.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ import { afterEach, describe, expect, test, vi } from "vitest";
2
+ import { observeMutation, onMutationError } from "./useMutation.native.js";
3
+ function deferred() {
4
+ var resolve;
5
+ var reject;
6
+ var promise = new Promise(function (res, rej) {
7
+ resolve = res;
8
+ reject = rej;
9
+ });
10
+ return {
11
+ promise,
12
+ resolve,
13
+ reject
14
+ };
15
+ }
16
+ function fakeResult() {
17
+ var client = deferred();
18
+ var server = deferred();
19
+ return {
20
+ result: {
21
+ client: client.promise,
22
+ server: server.promise
23
+ },
24
+ client,
25
+ server
26
+ };
27
+ }
28
+ var SUCCESS = {
29
+ type: "success"
30
+ };
31
+ var appError = function (message) {
32
+ return {
33
+ type: "error",
34
+ error: {
35
+ type: "app",
36
+ message
37
+ }
38
+ };
39
+ };
40
+ afterEach(function () {
41
+ vi.restoreAllMocks();
42
+ });
43
+ describe("observeMutation", function () {
44
+ test("success on both phases reports nothing", async function () {
45
+ var {
46
+ result,
47
+ client,
48
+ server
49
+ } = fakeResult();
50
+ var errors = [];
51
+ var dispose = onMutationError(function (e) {
52
+ return errors.push(e);
53
+ });
54
+ var done = observeMutation(result, function (e) {
55
+ return errors.push(e);
56
+ });
57
+ client.resolve(SUCCESS);
58
+ server.resolve(SUCCESS);
59
+ await done;
60
+ expect(errors).toEqual([]);
61
+ dispose();
62
+ });
63
+ test("a server rejection surfaces a normalized error locally and globally", async function () {
64
+ var {
65
+ result,
66
+ client,
67
+ server
68
+ } = fakeResult();
69
+ var local = [];
70
+ var global = [];
71
+ var dispose = onMutationError(function (e) {
72
+ return global.push(e);
73
+ });
74
+ var done = observeMutation(result, function (e) {
75
+ return local.push(e);
76
+ });
77
+ client.resolve(SUCCESS);
78
+ server.resolve(appError("Could not create post."));
79
+ await done;
80
+ expect(local).toEqual([{
81
+ scope: "server",
82
+ kind: "app",
83
+ message: "Could not create post.",
84
+ details: void 0
85
+ }]);
86
+ expect(global).toEqual(local);
87
+ dispose();
88
+ });
89
+ test("client + server both failing emits to the global catch only once", async function () {
90
+ var {
91
+ result,
92
+ client,
93
+ server
94
+ } = fakeResult();
95
+ var global = [];
96
+ var dispose = onMutationError(function (e) {
97
+ return global.push(e);
98
+ });
99
+ var done = observeMutation(result);
100
+ client.reject(new Error("boom"));
101
+ server.reject(new Error("boom"));
102
+ await done;
103
+ expect(global).toHaveLength(1);
104
+ expect(global[0]).toMatchObject({
105
+ scope: "client",
106
+ kind: "zero",
107
+ message: "boom"
108
+ });
109
+ dispose();
110
+ });
111
+ test("never rejects even when both phases reject", async function () {
112
+ var {
113
+ result,
114
+ client,
115
+ server
116
+ } = fakeResult();
117
+ client.reject(new Error("x"));
118
+ server.reject(new Error("x"));
119
+ await expect(observeMutation(result)).resolves.toBeUndefined();
120
+ });
121
+ test("with no listener registered it falls back to console.error in dev", async function () {
122
+ var spy = vi.spyOn(console, "error").mockImplementation(function () {});
123
+ var {
124
+ result,
125
+ client,
126
+ server
127
+ } = fakeResult();
128
+ var done = observeMutation(result);
129
+ client.resolve(SUCCESS);
130
+ server.resolve(appError("denied"));
131
+ await done;
132
+ expect(spy).toHaveBeenCalledTimes(1);
133
+ });
134
+ });
135
+ describe("onMutationError", function () {
136
+ test("dispose stops delivery", async function () {
137
+ var seen = [];
138
+ var dispose = onMutationError(function (e) {
139
+ return seen.push(e);
140
+ });
141
+ dispose();
142
+ var {
143
+ result,
144
+ client,
145
+ server
146
+ } = fakeResult();
147
+ var done = observeMutation(result);
148
+ client.resolve(SUCCESS);
149
+ server.resolve(appError("denied"));
150
+ await done;
151
+ expect(seen).toEqual([]);
152
+ });
153
+ });
154
+ //# sourceMappingURL=useMutation.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","describe","expect","test","vi","observeMutation","onMutationError","deferred","resolve","reject","promise","Promise","res","rej","fakeResult","client","server","result","SUCCESS","type","appError","message","error","restoreAllMocks","errors","dispose","e","push","done","toEqual","local","global","scope","kind","details","Error","toHaveLength","toMatchObject"],"sources":["../../../src/helpers/useMutation.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -4,6 +4,7 @@ export * from "./helpers/batchQuery.mjs";
4
4
  export * from "./helpers/createMutators.mjs";
5
5
  export * from "./helpers/ensureLoggedIn.mjs";
6
6
  export * from "./helpers/mutatorContext.mjs";
7
+ export * from "./helpers/useMutation.mjs";
7
8
  import { ensureAuth, getAuth } from "./helpers/getAuth.mjs";
8
9
  import { setAuthData, setEnvironment } from "./state.mjs";
9
10
  export * from "./createZeroClient.mjs";
@@ -1 +1 @@
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":[]}
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,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":[]}
@@ -4,6 +4,7 @@ export * from "./helpers/batchQuery.mjs";
4
4
  export * from "./helpers/createMutators.mjs";
5
5
  export * from "./helpers/ensureLoggedIn.mjs";
6
6
  export * from "./helpers/mutatorContext.mjs";
7
+ export * from "./helpers/useMutation.mjs";
7
8
  import { ensureAuth, getAuth } from "./helpers/getAuth.mjs";
8
9
  import { setAuthData, setEnvironment } from "./state.mjs";
9
10
  export * from "./createZeroClient.mjs";
@@ -1 +1 @@
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":[]}
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,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":[]}
@@ -4,6 +4,7 @@ export * from "./helpers/batchQuery.native.js";
4
4
  export * from "./helpers/createMutators.native.js";
5
5
  export * from "./helpers/ensureLoggedIn.native.js";
6
6
  export * from "./helpers/mutatorContext.native.js";
7
+ export * from "./helpers/useMutation.native.js";
7
8
  import { ensureAuth, getAuth } from "./helpers/getAuth.native.js";
8
9
  import { setAuthData, setEnvironment } from "./state.native.js";
9
10
  export * from "./createZeroClient.native.js";
@@ -1 +1 @@
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
+ {"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,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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.4.13",
3
+ "version": "0.4.14",
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.13",
80
+ "@take-out/helpers": "0.4.14",
81
81
  "chokidar": "^4.0.3",
82
82
  "citty": "^0.1.6",
83
83
  "valibot": "^1.1.0"