on-zero 0.4.13 → 0.4.15

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 +122 -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.15",
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.15",
81
81
  "chokidar": "^4.0.3",
82
82
  "citty": "^0.1.6",
83
83
  "valibot": "^1.1.0"