on-zero 0.6.15 → 0.6.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/asyncTasks.cjs +51 -0
- package/dist/cjs/asyncTasks.native.js +84 -0
- package/dist/cjs/asyncTasks.native.js.map +1 -0
- package/dist/cjs/cli.cjs +8 -1
- package/dist/cjs/cli.native.js +8 -1
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/createZeroDirectServer.cjs +20 -30
- package/dist/cjs/createZeroDirectServer.native.js +28 -33
- package/dist/cjs/createZeroDirectServer.native.js.map +1 -1
- package/dist/cjs/createZeroSQLiteServer.test.cjs +6 -6
- package/dist/cjs/createZeroSQLiteServer.test.native.js +6 -6
- package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/cjs/createZeroServer.test.cjs +177 -1
- package/dist/cjs/createZeroServer.test.native.js +189 -1
- package/dist/cjs/createZeroServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServerCore.cjs +9 -3
- package/dist/cjs/createZeroServerCore.native.js +13 -5
- package/dist/cjs/createZeroServerCore.native.js.map +1 -1
- package/dist/cjs/generate.cjs +5 -2
- package/dist/cjs/generate.native.js +5 -2
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +16 -0
- package/dist/cjs/generate.test.native.js +16 -0
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +2 -2
- package/dist/cjs/helpers/createMutators.native.js +2 -2
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/server.cjs +2 -1
- package/dist/cjs/syncHost.cjs +10 -3
- package/dist/cjs/syncHost.native.js +11 -4
- package/dist/cjs/syncHost.native.js.map +1 -1
- package/dist/cjs/syncHost.test.cjs +2 -2
- package/dist/cjs/syncHost.test.native.js +2 -2
- package/dist/cjs/syncHost.test.native.js.map +1 -1
- package/dist/cjs/vite-plugin.cjs +2 -1
- package/dist/cjs/vite-plugin.native.js +2 -1
- package/dist/cjs/vite-plugin.native.js.map +1 -1
- package/dist/esm/asyncTasks.mjs +26 -0
- package/dist/esm/asyncTasks.mjs.map +1 -0
- package/dist/esm/asyncTasks.native.js +56 -0
- package/dist/esm/asyncTasks.native.js.map +1 -0
- package/dist/esm/cli.mjs +8 -1
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +8 -1
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/createZeroDirectServer.mjs +20 -30
- package/dist/esm/createZeroDirectServer.mjs.map +1 -1
- package/dist/esm/createZeroDirectServer.native.js +28 -33
- package/dist/esm/createZeroDirectServer.native.js.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.mjs +6 -6
- package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.native.js +6 -6
- package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/createZeroServer.native.js.map +1 -1
- package/dist/esm/createZeroServer.test.mjs +178 -2
- package/dist/esm/createZeroServer.test.mjs.map +1 -1
- package/dist/esm/createZeroServer.test.native.js +190 -2
- package/dist/esm/createZeroServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServerCore.mjs +9 -3
- package/dist/esm/createZeroServerCore.mjs.map +1 -1
- package/dist/esm/createZeroServerCore.native.js +13 -5
- package/dist/esm/createZeroServerCore.native.js.map +1 -1
- package/dist/esm/generate.mjs +5 -2
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +5 -2
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +16 -0
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +16 -0
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +2 -2
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +2 -2
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/server.mjs +1 -0
- package/dist/esm/server.mjs.map +1 -1
- package/dist/esm/syncHost.mjs +10 -3
- package/dist/esm/syncHost.mjs.map +1 -1
- package/dist/esm/syncHost.native.js +11 -4
- package/dist/esm/syncHost.native.js.map +1 -1
- package/dist/esm/syncHost.test.mjs +2 -2
- package/dist/esm/syncHost.test.mjs.map +1 -1
- package/dist/esm/syncHost.test.native.js +2 -2
- package/dist/esm/syncHost.test.native.js.map +1 -1
- package/dist/esm/vite-plugin.mjs +2 -1
- package/dist/esm/vite-plugin.mjs.map +1 -1
- package/dist/esm/vite-plugin.native.js +2 -1
- package/dist/esm/vite-plugin.native.js.map +1 -1
- package/lint/ssr-guards.js +8 -7
- package/package.json +2 -2
- package/readme.md +21 -5
- package/src/asyncTasks.ts +33 -0
- package/src/cli.ts +7 -1
- package/src/createZeroDirectServer.ts +20 -36
- package/src/createZeroSQLiteServer.test.ts +8 -7
- package/src/createZeroServer.test.ts +192 -2
- package/src/createZeroServer.ts +2 -0
- package/src/createZeroServerCore.ts +18 -11
- package/src/generate.test.ts +18 -0
- package/src/generate.ts +7 -1
- package/src/helpers/createMutators.ts +3 -3
- package/src/helpers/mutatorContext.ts +1 -1
- package/src/index.ts +1 -0
- package/src/server.ts +2 -0
- package/src/syncHost.test.ts +2 -2
- package/src/syncHost.ts +6 -4
- package/src/types.ts +21 -3
- package/src/vite-plugin.ts +1 -0
- package/test-fixtures/server-return-types.ts +24 -1
- package/types/asyncTasks.d.ts +7 -0
- package/types/asyncTasks.d.ts.map +1 -0
- package/types/createZeroDirectServer.d.ts +3 -3
- package/types/createZeroDirectServer.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +1 -1
- package/types/createZeroServer.d.ts.map +1 -1
- package/types/createZeroServerCore.d.ts +9 -6
- package/types/createZeroServerCore.d.ts.map +1 -1
- package/types/generate.d.ts +2 -0
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/createMutators.d.ts +3 -3
- package/types/helpers/createMutators.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/server.d.ts +2 -0
- package/types/server.d.ts.map +1 -1
- package/types/syncHost.d.ts.map +1 -1
- package/types/types.d.ts +18 -2
- package/types/types.d.ts.map +1 -1
- package/types/vite-plugin.d.ts.map +1 -1
|
@@ -100,7 +100,7 @@ function pushRequest(mutationIDs) {
|
|
|
100
100
|
touch: async ({
|
|
101
101
|
server
|
|
102
102
|
}) => {
|
|
103
|
-
server?.
|
|
103
|
+
server?.enqueueTask(async () => {
|
|
104
104
|
effectRuns++;
|
|
105
105
|
});
|
|
106
106
|
throw new Error("rejected");
|
|
@@ -123,6 +123,182 @@ function pushRequest(mutationIDs) {
|
|
|
123
123
|
(0, import_vitest.expect)(result.asyncTasks).toEqual([]);
|
|
124
124
|
(0, import_vitest.expect)(effectRuns).toBe(0);
|
|
125
125
|
});
|
|
126
|
+
(0, import_vitest.test)("awaits barrier tasks before resolving the push response", async () => {
|
|
127
|
+
const pg = new FakePgClient();
|
|
128
|
+
let releaseBarrier;
|
|
129
|
+
let markBarrierStarted;
|
|
130
|
+
const barrierStarted = new Promise(resolve => {
|
|
131
|
+
markBarrierStarted = resolve;
|
|
132
|
+
});
|
|
133
|
+
const barrier = new Promise(resolve => {
|
|
134
|
+
releaseBarrier = resolve;
|
|
135
|
+
});
|
|
136
|
+
const zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
137
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
138
|
+
models: {
|
|
139
|
+
project: {
|
|
140
|
+
mutate: {
|
|
141
|
+
touch: async ({
|
|
142
|
+
server
|
|
143
|
+
}) => {
|
|
144
|
+
server?.enqueueTask(async () => {
|
|
145
|
+
markBarrierStarted();
|
|
146
|
+
await barrier;
|
|
147
|
+
}, {
|
|
148
|
+
barrier: true
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
createServerActions: () => ({}),
|
|
155
|
+
pool: pg
|
|
156
|
+
});
|
|
157
|
+
let responseResolved = false;
|
|
158
|
+
const resultPromise = zeroServer.handleMutationRequest({
|
|
159
|
+
authData: null,
|
|
160
|
+
request: pushRequest(1)
|
|
161
|
+
}).then(result2 => {
|
|
162
|
+
responseResolved = true;
|
|
163
|
+
return result2;
|
|
164
|
+
});
|
|
165
|
+
await barrierStarted;
|
|
166
|
+
await Promise.resolve();
|
|
167
|
+
(0, import_vitest.expect)(responseResolved).toBe(false);
|
|
168
|
+
releaseBarrier();
|
|
169
|
+
const result = await resultPromise;
|
|
170
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
171
|
+
});
|
|
172
|
+
(0, import_vitest.test)("does not fail the push when a background task rejects", async () => {
|
|
173
|
+
const pg = new FakePgClient();
|
|
174
|
+
const error = new Error("background failed");
|
|
175
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
176
|
+
const zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
177
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
178
|
+
models: {
|
|
179
|
+
project: {
|
|
180
|
+
mutate: {
|
|
181
|
+
touch: async ({
|
|
182
|
+
server
|
|
183
|
+
}) => {
|
|
184
|
+
server?.enqueueTask(async () => {
|
|
185
|
+
throw error;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
createServerActions: () => ({}),
|
|
192
|
+
pool: pg
|
|
193
|
+
});
|
|
194
|
+
const result = await zeroServer.handleMutationRequest({
|
|
195
|
+
authData: null,
|
|
196
|
+
request: pushRequest(1)
|
|
197
|
+
});
|
|
198
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
199
|
+
await import_vitest.vi.waitFor(() => {
|
|
200
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledWith("[on-zero] async task failed", error);
|
|
201
|
+
});
|
|
202
|
+
consoleError.mockRestore();
|
|
203
|
+
});
|
|
204
|
+
(0, import_vitest.test)("registers a promise that settles every background task with the request scheduler", async () => {
|
|
205
|
+
const pg = new FakePgClient();
|
|
206
|
+
const error = new Error("background failed");
|
|
207
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
208
|
+
let releaseSibling;
|
|
209
|
+
const siblingGate = new Promise(resolve => {
|
|
210
|
+
releaseSibling = resolve;
|
|
211
|
+
});
|
|
212
|
+
let siblingFinished = false;
|
|
213
|
+
let scheduled;
|
|
214
|
+
const zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
215
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
216
|
+
models: {
|
|
217
|
+
project: {
|
|
218
|
+
mutate: {
|
|
219
|
+
touch: async ({
|
|
220
|
+
server
|
|
221
|
+
}) => {
|
|
222
|
+
server?.enqueueTask(async () => {
|
|
223
|
+
throw error;
|
|
224
|
+
});
|
|
225
|
+
server?.enqueueTask(async () => {
|
|
226
|
+
await siblingGate;
|
|
227
|
+
siblingFinished = true;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
createServerActions: () => ({}),
|
|
234
|
+
pool: pg
|
|
235
|
+
});
|
|
236
|
+
const result = await zeroServer.handleMutationRequest({
|
|
237
|
+
authData: null,
|
|
238
|
+
request: pushRequest(1),
|
|
239
|
+
scheduleBackgroundTask: promise => {
|
|
240
|
+
scheduled = promise;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
244
|
+
(0, import_vitest.expect)(scheduled).toBeInstanceOf(Promise);
|
|
245
|
+
(0, import_vitest.expect)(siblingFinished).toBe(false);
|
|
246
|
+
let scheduledSettled = false;
|
|
247
|
+
void scheduled.then(() => {
|
|
248
|
+
scheduledSettled = true;
|
|
249
|
+
});
|
|
250
|
+
await Promise.resolve();
|
|
251
|
+
(0, import_vitest.expect)(scheduledSettled).toBe(false);
|
|
252
|
+
releaseSibling();
|
|
253
|
+
await scheduled;
|
|
254
|
+
(0, import_vitest.expect)(siblingFinished).toBe(true);
|
|
255
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledWith("[on-zero] async task failed", error);
|
|
256
|
+
consoleError.mockRestore();
|
|
257
|
+
});
|
|
258
|
+
(0, import_vitest.test)("awaits background tasks when the request has no scheduler", async () => {
|
|
259
|
+
const pg = new FakePgClient();
|
|
260
|
+
let markTaskStarted;
|
|
261
|
+
const taskStarted = new Promise(resolve => {
|
|
262
|
+
markTaskStarted = resolve;
|
|
263
|
+
});
|
|
264
|
+
let releaseTask;
|
|
265
|
+
const taskGate = new Promise(resolve => {
|
|
266
|
+
releaseTask = resolve;
|
|
267
|
+
});
|
|
268
|
+
const zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
269
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
270
|
+
models: {
|
|
271
|
+
project: {
|
|
272
|
+
mutate: {
|
|
273
|
+
touch: async ({
|
|
274
|
+
server
|
|
275
|
+
}) => {
|
|
276
|
+
server?.enqueueTask(async () => {
|
|
277
|
+
markTaskStarted();
|
|
278
|
+
await taskGate;
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
createServerActions: () => ({}),
|
|
285
|
+
pool: pg
|
|
286
|
+
});
|
|
287
|
+
let responseResolved = false;
|
|
288
|
+
const resultPromise = zeroServer.handleMutationRequest({
|
|
289
|
+
authData: null,
|
|
290
|
+
request: pushRequest(1)
|
|
291
|
+
}).then(result2 => {
|
|
292
|
+
responseResolved = true;
|
|
293
|
+
return result2;
|
|
294
|
+
});
|
|
295
|
+
await taskStarted;
|
|
296
|
+
await Promise.resolve();
|
|
297
|
+
(0, import_vitest.expect)(responseResolved).toBe(false);
|
|
298
|
+
releaseTask();
|
|
299
|
+
const result = await resultPromise;
|
|
300
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
301
|
+
});
|
|
126
302
|
(0, import_vitest.test)("persists alreadyProcessed duplicate results for zero-cache recovery rows", async () => {
|
|
127
303
|
const pg = new FakePgClient();
|
|
128
304
|
const zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
@@ -149,7 +149,7 @@ function pushRequest(mutationIDs) {
|
|
|
149
149
|
var {
|
|
150
150
|
server
|
|
151
151
|
} = param;
|
|
152
|
-
server === null || server === void 0 ? void 0 : server.
|
|
152
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
153
153
|
effectRuns++;
|
|
154
154
|
});
|
|
155
155
|
throw new Error("rejected");
|
|
@@ -174,6 +174,194 @@ function pushRequest(mutationIDs) {
|
|
|
174
174
|
(0, import_vitest.expect)(result.asyncTasks).toEqual([]);
|
|
175
175
|
(0, import_vitest.expect)(effectRuns).toBe(0);
|
|
176
176
|
});
|
|
177
|
+
(0, import_vitest.test)("awaits barrier tasks before resolving the push response", async function () {
|
|
178
|
+
var pg = new FakePgClient();
|
|
179
|
+
var releaseBarrier;
|
|
180
|
+
var markBarrierStarted;
|
|
181
|
+
var barrierStarted = new Promise(function (resolve) {
|
|
182
|
+
markBarrierStarted = resolve;
|
|
183
|
+
});
|
|
184
|
+
var barrier = new Promise(function (resolve) {
|
|
185
|
+
releaseBarrier = resolve;
|
|
186
|
+
});
|
|
187
|
+
var zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
188
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
189
|
+
models: {
|
|
190
|
+
project: {
|
|
191
|
+
mutate: {
|
|
192
|
+
touch: async function (param) {
|
|
193
|
+
var {
|
|
194
|
+
server
|
|
195
|
+
} = param;
|
|
196
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
197
|
+
markBarrierStarted();
|
|
198
|
+
await barrier;
|
|
199
|
+
}, {
|
|
200
|
+
barrier: true
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
createServerActions: function () {
|
|
207
|
+
return {};
|
|
208
|
+
},
|
|
209
|
+
pool: pg
|
|
210
|
+
});
|
|
211
|
+
var responseResolved = false;
|
|
212
|
+
var resultPromise = zeroServer.handleMutationRequest({
|
|
213
|
+
authData: null,
|
|
214
|
+
request: pushRequest(1)
|
|
215
|
+
}).then(function (result2) {
|
|
216
|
+
responseResolved = true;
|
|
217
|
+
return result2;
|
|
218
|
+
});
|
|
219
|
+
await barrierStarted;
|
|
220
|
+
await Promise.resolve();
|
|
221
|
+
(0, import_vitest.expect)(responseResolved).toBe(false);
|
|
222
|
+
releaseBarrier();
|
|
223
|
+
var result = await resultPromise;
|
|
224
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
225
|
+
});
|
|
226
|
+
(0, import_vitest.test)("does not fail the push when a background task rejects", async function () {
|
|
227
|
+
var pg = new FakePgClient();
|
|
228
|
+
var error = new Error("background failed");
|
|
229
|
+
var consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(function () {});
|
|
230
|
+
var zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
231
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
232
|
+
models: {
|
|
233
|
+
project: {
|
|
234
|
+
mutate: {
|
|
235
|
+
touch: async function (param) {
|
|
236
|
+
var {
|
|
237
|
+
server
|
|
238
|
+
} = param;
|
|
239
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
240
|
+
throw error;
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
createServerActions: function () {
|
|
247
|
+
return {};
|
|
248
|
+
},
|
|
249
|
+
pool: pg
|
|
250
|
+
});
|
|
251
|
+
var result = await zeroServer.handleMutationRequest({
|
|
252
|
+
authData: null,
|
|
253
|
+
request: pushRequest(1)
|
|
254
|
+
});
|
|
255
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
256
|
+
await import_vitest.vi.waitFor(function () {
|
|
257
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledWith("[on-zero] async task failed", error);
|
|
258
|
+
});
|
|
259
|
+
consoleError.mockRestore();
|
|
260
|
+
});
|
|
261
|
+
(0, import_vitest.test)("registers a promise that settles every background task with the request scheduler", async function () {
|
|
262
|
+
var pg = new FakePgClient();
|
|
263
|
+
var error = new Error("background failed");
|
|
264
|
+
var consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(function () {});
|
|
265
|
+
var releaseSibling;
|
|
266
|
+
var siblingGate = new Promise(function (resolve) {
|
|
267
|
+
releaseSibling = resolve;
|
|
268
|
+
});
|
|
269
|
+
var siblingFinished = false;
|
|
270
|
+
var scheduled;
|
|
271
|
+
var zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
272
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
273
|
+
models: {
|
|
274
|
+
project: {
|
|
275
|
+
mutate: {
|
|
276
|
+
touch: async function (param) {
|
|
277
|
+
var {
|
|
278
|
+
server
|
|
279
|
+
} = param;
|
|
280
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
281
|
+
throw error;
|
|
282
|
+
});
|
|
283
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
284
|
+
await siblingGate;
|
|
285
|
+
siblingFinished = true;
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
createServerActions: function () {
|
|
292
|
+
return {};
|
|
293
|
+
},
|
|
294
|
+
pool: pg
|
|
295
|
+
});
|
|
296
|
+
var result = await zeroServer.handleMutationRequest({
|
|
297
|
+
authData: null,
|
|
298
|
+
request: pushRequest(1),
|
|
299
|
+
scheduleBackgroundTask: function (promise) {
|
|
300
|
+
scheduled = promise;
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
304
|
+
(0, import_vitest.expect)(scheduled).toBeInstanceOf(Promise);
|
|
305
|
+
(0, import_vitest.expect)(siblingFinished).toBe(false);
|
|
306
|
+
var scheduledSettled = false;
|
|
307
|
+
void scheduled.then(function () {
|
|
308
|
+
scheduledSettled = true;
|
|
309
|
+
});
|
|
310
|
+
await Promise.resolve();
|
|
311
|
+
(0, import_vitest.expect)(scheduledSettled).toBe(false);
|
|
312
|
+
releaseSibling();
|
|
313
|
+
await scheduled;
|
|
314
|
+
(0, import_vitest.expect)(siblingFinished).toBe(true);
|
|
315
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledWith("[on-zero] async task failed", error);
|
|
316
|
+
consoleError.mockRestore();
|
|
317
|
+
});
|
|
318
|
+
(0, import_vitest.test)("awaits background tasks when the request has no scheduler", async function () {
|
|
319
|
+
var pg = new FakePgClient();
|
|
320
|
+
var markTaskStarted;
|
|
321
|
+
var taskStarted = new Promise(function (resolve) {
|
|
322
|
+
markTaskStarted = resolve;
|
|
323
|
+
});
|
|
324
|
+
var releaseTask;
|
|
325
|
+
var taskGate = new Promise(function (resolve) {
|
|
326
|
+
releaseTask = resolve;
|
|
327
|
+
});
|
|
328
|
+
var zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
329
|
+
schema: import_fixtureSchema.zeroHttpFixtureSchema,
|
|
330
|
+
models: {
|
|
331
|
+
project: {
|
|
332
|
+
mutate: {
|
|
333
|
+
touch: async function (param) {
|
|
334
|
+
var {
|
|
335
|
+
server
|
|
336
|
+
} = param;
|
|
337
|
+
server === null || server === void 0 ? void 0 : server.enqueueTask(async function () {
|
|
338
|
+
markTaskStarted();
|
|
339
|
+
await taskGate;
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
createServerActions: function () {
|
|
346
|
+
return {};
|
|
347
|
+
},
|
|
348
|
+
pool: pg
|
|
349
|
+
});
|
|
350
|
+
var responseResolved = false;
|
|
351
|
+
var resultPromise = zeroServer.handleMutationRequest({
|
|
352
|
+
authData: null,
|
|
353
|
+
request: pushRequest(1)
|
|
354
|
+
}).then(function (result2) {
|
|
355
|
+
responseResolved = true;
|
|
356
|
+
return result2;
|
|
357
|
+
});
|
|
358
|
+
await taskStarted;
|
|
359
|
+
await Promise.resolve();
|
|
360
|
+
(0, import_vitest.expect)(responseResolved).toBe(false);
|
|
361
|
+
releaseTask();
|
|
362
|
+
var result = await resultPromise;
|
|
363
|
+
(0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
|
|
364
|
+
});
|
|
177
365
|
(0, import_vitest.test)("persists alreadyProcessed duplicate results for zero-cache recovery rows", async function () {
|
|
178
366
|
var pg = new FakePgClient();
|
|
179
367
|
var zeroServer = (0, import_createZeroServer.createZeroServer)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_vitest","require","import_createZeroServer","import_fixtureSchema","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","FakePgClient","FakePgClient2","query","sql","params","arguments","pendingLastMutationID","rows","lastMutationID","includes","nextMutationID","schemaRows","mutationResultInserts","push","Error","table","columns","map","column","schema","dataType","precision","scale","typtype","typename","elemTyptype","elemTypname","pushRequest","mutationIDs","ids","Array","isArray","Request","method","headers","body","JSON","stringify","clientGroupID","mutations","mutationID","type","id","clientID","name","args","timestamp","pushVersion","requestID","join","describe","test","pg","effectRuns","zeroServer","createZeroServer","zeroHttpFixtureSchema","models","project","mutate","touch","param","server","
|
|
1
|
+
{"version":3,"names":["import_vitest","require","import_createZeroServer","import_fixtureSchema","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","FakePgClient","FakePgClient2","query","sql","params","arguments","pendingLastMutationID","rows","lastMutationID","includes","nextMutationID","schemaRows","mutationResultInserts","push","Error","table","columns","map","column","schema","dataType","precision","scale","typtype","typename","elemTyptype","elemTypname","pushRequest","mutationIDs","ids","Array","isArray","Request","method","headers","body","JSON","stringify","clientGroupID","mutations","mutationID","type","id","clientID","name","args","timestamp","pushVersion","requestID","join","describe","test","pg","effectRuns","zeroServer","createZeroServer","zeroHttpFixtureSchema","models","project","mutate","touch","param","server","enqueueTask","createServerActions","pool","result","handleMutationRequest","authData","request","skipAsyncTasks","expect","response","toMatchObject","error","message","asyncTasks","toEqual","toBe","releaseBarrier","markBarrierStarted","barrierStarted","Promise","resolve","barrier","responseResolved","resultPromise","then","result2","consoleError","vi","spyOn","console","mockImplementation","waitFor","toHaveBeenCalledWith","mockRestore","releaseSibling","siblingGate","siblingFinished","scheduled","scheduleBackgroundTask","promise","toBeInstanceOf","scheduledSettled","markTaskStarted","taskStarted","releaseTask","taskGate"],"sources":["../../src/createZeroServer.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -26,6 +26,7 @@ __export(createZeroServerCore_exports, {
|
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(createZeroServerCore_exports);
|
|
28
28
|
var import_server = require("@rocicorp/zero/server");
|
|
29
|
+
var import_asyncTasks = require("./asyncTasks.cjs");
|
|
29
30
|
var import_createZeroDirectServer = require("./createZeroDirectServer.cjs");
|
|
30
31
|
var import_createMutators = require("./helpers/createMutators.cjs");
|
|
31
32
|
var import_mutatorContext = require("./helpers/mutatorContext.cjs");
|
|
@@ -61,12 +62,13 @@ function createZeroServerCore({
|
|
|
61
62
|
const handleMutationRequest = async ({
|
|
62
63
|
authData,
|
|
63
64
|
request,
|
|
65
|
+
scheduleBackgroundTask,
|
|
64
66
|
skipAsyncTasks
|
|
65
67
|
}) => {
|
|
66
68
|
const tasks = (0, import_createZeroDirectServer.createAsyncTaskCollector)();
|
|
67
69
|
const recoveryRequest = request.clone();
|
|
68
70
|
const mutators = (0, import_createMutators.createMutators)({
|
|
69
|
-
|
|
71
|
+
enqueueTask: tasks.enqueueTask,
|
|
70
72
|
can: permissions.can,
|
|
71
73
|
createServerActions,
|
|
72
74
|
environment: "server",
|
|
@@ -82,8 +84,12 @@ function createZeroServerCore({
|
|
|
82
84
|
if (parsed) await persistAlreadyProcessed(parsed);
|
|
83
85
|
}
|
|
84
86
|
if (!skipAsyncTasks && tasks.committed.length) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
const entries = tasks.committed.map(entry => ({
|
|
88
|
+
...entry,
|
|
89
|
+
task: () => (0, import_mutatorContext.runWithAuthScope)(authData, entry.task)
|
|
90
|
+
}));
|
|
91
|
+
await (0, import_asyncTasks.runAsyncTaskEntries)(entries, {
|
|
92
|
+
background: scheduleBackgroundTask
|
|
87
93
|
});
|
|
88
94
|
}
|
|
89
95
|
return {
|
|
@@ -28,6 +28,7 @@ __export(createZeroServerCore_exports, {
|
|
|
28
28
|
});
|
|
29
29
|
module.exports = __toCommonJS(createZeroServerCore_exports);
|
|
30
30
|
var import_server = require("@rocicorp/zero/server");
|
|
31
|
+
var import_asyncTasks = require("./asyncTasks.native.js");
|
|
31
32
|
var import_createZeroDirectServer = require("./createZeroDirectServer.native.js");
|
|
32
33
|
var import_createMutators = require("./helpers/createMutators.native.js");
|
|
33
34
|
var import_mutatorContext = require("./helpers/mutatorContext.native.js");
|
|
@@ -70,12 +71,13 @@ function createZeroServerCore(param) {
|
|
|
70
71
|
var {
|
|
71
72
|
authData,
|
|
72
73
|
request,
|
|
74
|
+
scheduleBackgroundTask,
|
|
73
75
|
skipAsyncTasks
|
|
74
76
|
} = param2;
|
|
75
77
|
var tasks = (0, import_createZeroDirectServer.createAsyncTaskCollector)();
|
|
76
78
|
var recoveryRequest = request.clone();
|
|
77
79
|
var mutators = (0, import_createMutators.createMutators)({
|
|
78
|
-
|
|
80
|
+
enqueueTask: tasks.enqueueTask,
|
|
79
81
|
can: permissions.can,
|
|
80
82
|
createServerActions,
|
|
81
83
|
environment: "server",
|
|
@@ -91,10 +93,16 @@ function createZeroServerCore(param) {
|
|
|
91
93
|
if (parsed) await persistAlreadyProcessed(parsed);
|
|
92
94
|
}
|
|
93
95
|
if (!skipAsyncTasks && tasks.committed.length) {
|
|
94
|
-
|
|
95
|
-
return
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
var entries = tasks.committed.map(function (entry) {
|
|
97
|
+
return {
|
|
98
|
+
...entry,
|
|
99
|
+
task: function () {
|
|
100
|
+
return (0, import_mutatorContext.runWithAuthScope)(authData, entry.task);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
await (0, import_asyncTasks.runAsyncTaskEntries)(entries, {
|
|
105
|
+
background: scheduleBackgroundTask
|
|
98
106
|
});
|
|
99
107
|
}
|
|
100
108
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroServerCore_exports","__export","createZeroServerCore","module","exports","import_server","require","import_createZeroDirectServer","import_createMutators","import_mutatorContext","import_queryContext","_type_of","obj","Symbol","constructor","param","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","persistAlreadyProcessed","queries","schema","validateMutation","validateQuery","permissions","server","createZeroDirectServerRuntime","handleMutationRequest","param2","authData","request","skipAsyncTasks","tasks","createAsyncTaskCollector","recoveryRequest","clone","mutators","createMutators","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroServerCore_exports","__export","createZeroServerCore","module","exports","import_server","require","import_asyncTasks","import_createZeroDirectServer","import_createMutators","import_mutatorContext","import_queryContext","_type_of","obj","Symbol","constructor","param","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","persistAlreadyProcessed","queries","schema","validateMutation","validateQuery","permissions","server","createZeroDirectServerRuntime","handleMutationRequest","param2","authData","request","scheduleBackgroundTask","skipAsyncTasks","tasks","createAsyncTaskCollector","recoveryRequest","clone","mutators","createMutators","enqueueTask","can","environment","processor","PushProcessor","withTransactionLifecycle","lifecycle","response","process","parsed","parseAlreadyProcessed","committed","length","entries","map","entry","task","runWithAuthScope","runAsyncTaskEntries","background","asyncTasks","handleQueryRequest","Error","handler","name","args","resolveServerQuery","userID","id","runWithQueryContext","database","transaction","callback","input","tx","hooks","beginAttempt","result","completeAttempt","error","rollbackAttempt","commitTransaction","rollbackTransaction","alreadyProcessedMutations","upstreamSchema","URL","url","searchParams","get","body","json","clientGroupID","Array","isArray","filter","mutation","clientID"],"sources":["../../src/createZeroServerCore.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/generate.cjs
CHANGED
|
@@ -43,6 +43,7 @@ var import_node_fs = require("node:fs");
|
|
|
43
43
|
var import_node_path = require("node:path");
|
|
44
44
|
var import_generate_helpers = require("./generate-helpers.cjs");
|
|
45
45
|
const hash = s => (0, import_node_crypto.createHash)("sha256").update(s).digest("hex");
|
|
46
|
+
const GENERATOR_CACHE_VERSION = "1";
|
|
46
47
|
const isGeneratorSourceFile = name => name.endsWith(".ts") && !name.endsWith(".d.ts") && !name.endsWith(".test.ts") && !name.endsWith(".spec.ts");
|
|
47
48
|
function hashInputTree(baseDir, generatedDir) {
|
|
48
49
|
const parts = [];
|
|
@@ -553,7 +554,8 @@ async function generate(options) {
|
|
|
553
554
|
const {
|
|
554
555
|
dir,
|
|
555
556
|
after,
|
|
556
|
-
silent
|
|
557
|
+
silent,
|
|
558
|
+
force
|
|
557
559
|
} = options;
|
|
558
560
|
const baseDir = (0, import_node_path.resolve)(dir);
|
|
559
561
|
const mutationsDir = (0, import_node_path.resolve)(baseDir, "mutations");
|
|
@@ -569,7 +571,7 @@ async function generate(options) {
|
|
|
569
571
|
}
|
|
570
572
|
loadCache();
|
|
571
573
|
const inputHash = hashInputTree(baseDir, generatedDir);
|
|
572
|
-
if (generateCache.__inputHash === inputHash && (0, import_node_fs.existsSync)((0, import_node_path.resolve)(generatedDir, "models.ts"))) {
|
|
574
|
+
if (!force && generateCache.__generatorVersion === GENERATOR_CACHE_VERSION && generateCache.__inputHash === inputHash && (0, import_node_fs.existsSync)((0, import_node_path.resolve)(generatedDir, "models.ts"))) {
|
|
573
575
|
let counts = {};
|
|
574
576
|
try {
|
|
575
577
|
counts = JSON.parse(generateCache.__counts || "{}");
|
|
@@ -766,6 +768,7 @@ async function generate(options) {
|
|
|
766
768
|
if (!silent) console.error(`Error running after command: ${err}`);
|
|
767
769
|
}
|
|
768
770
|
}
|
|
771
|
+
generateCache.__generatorVersion = GENERATOR_CACHE_VERSION;
|
|
769
772
|
generateCache.__inputHash = inputHash;
|
|
770
773
|
generateCache.__counts = JSON.stringify({
|
|
771
774
|
modelCount: allModelFiles.length,
|
|
@@ -47,6 +47,7 @@ var import_generate_helpers = require("./generate-helpers.native.js");
|
|
|
47
47
|
var hash = function (s) {
|
|
48
48
|
return (0, import_crypto.createHash)("sha256").update(s).digest("hex");
|
|
49
49
|
};
|
|
50
|
+
var GENERATOR_CACHE_VERSION = "1";
|
|
50
51
|
var isGeneratorSourceFile = function (name) {
|
|
51
52
|
return name.endsWith(".ts") && !name.endsWith(".d.ts") && !name.endsWith(".test.ts") && !name.endsWith(".spec.ts");
|
|
52
53
|
};
|
|
@@ -813,7 +814,8 @@ async function generate(options) {
|
|
|
813
814
|
var {
|
|
814
815
|
dir,
|
|
815
816
|
after,
|
|
816
|
-
silent
|
|
817
|
+
silent,
|
|
818
|
+
force
|
|
817
819
|
} = options;
|
|
818
820
|
var baseDir = (0, import_path.resolve)(dir);
|
|
819
821
|
var mutationsDir = (0, import_path.resolve)(baseDir, "mutations");
|
|
@@ -829,7 +831,7 @@ async function generate(options) {
|
|
|
829
831
|
}
|
|
830
832
|
loadCache();
|
|
831
833
|
var inputHash = hashInputTree(baseDir, generatedDir);
|
|
832
|
-
if (generateCache.__inputHash === inputHash && (0, import_fs.existsSync)((0, import_path.resolve)(generatedDir, "models.ts"))) {
|
|
834
|
+
if (!force && generateCache.__generatorVersion === GENERATOR_CACHE_VERSION && generateCache.__inputHash === inputHash && (0, import_fs.existsSync)((0, import_path.resolve)(generatedDir, "models.ts"))) {
|
|
833
835
|
var counts = {};
|
|
834
836
|
try {
|
|
835
837
|
counts = JSON.parse(generateCache.__counts || "{}");
|
|
@@ -1143,6 +1145,7 @@ async function generate(options) {
|
|
|
1143
1145
|
if (!silent) console.error(`Error running after command: ${err}`);
|
|
1144
1146
|
}
|
|
1145
1147
|
}
|
|
1148
|
+
generateCache.__generatorVersion = GENERATOR_CACHE_VERSION;
|
|
1146
1149
|
generateCache.__inputHash = inputHash;
|
|
1147
1150
|
generateCache.__counts = JSON.stringify({
|
|
1148
1151
|
modelCount: allModelFiles.length,
|