on-zero 0.6.12 → 0.6.13

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 (131) hide show
  1. package/dist/cjs/createZeroSQLiteServer.cjs +319 -0
  2. package/dist/cjs/createZeroSQLiteServer.native.js +440 -0
  3. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -0
  4. package/dist/cjs/createZeroSQLiteServer.test.cjs +429 -0
  5. package/dist/cjs/createZeroSQLiteServer.test.native.js +466 -0
  6. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -0
  7. package/dist/cjs/createZeroServer.cjs +20 -234
  8. package/dist/cjs/createZeroServer.native.js +24 -250
  9. package/dist/cjs/createZeroServer.native.js.map +1 -1
  10. package/dist/cjs/createZeroServer.test.cjs +35 -1
  11. package/dist/cjs/createZeroServer.test.native.js +38 -1
  12. package/dist/cjs/createZeroServer.test.native.js.map +1 -1
  13. package/dist/cjs/createZeroServerCore.cjs +362 -0
  14. package/dist/cjs/createZeroServerCore.native.js +389 -0
  15. package/dist/cjs/createZeroServerCore.native.js.map +1 -0
  16. package/dist/cjs/generate-lite.cjs +1 -0
  17. package/dist/cjs/generate-lite.native.js +1 -0
  18. package/dist/cjs/generate-lite.native.js.map +1 -1
  19. package/dist/cjs/generate-lite.test.cjs +5 -1
  20. package/dist/cjs/generate-lite.test.native.js +5 -1
  21. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  22. package/dist/cjs/generate.cjs +20 -11
  23. package/dist/cjs/generate.native.js +29 -21
  24. package/dist/cjs/generate.native.js.map +1 -1
  25. package/dist/cjs/generate.test.cjs +110 -0
  26. package/dist/cjs/generate.test.native.js +110 -0
  27. package/dist/cjs/generate.test.native.js.map +1 -1
  28. package/dist/cjs/httpPull/transport.test.cjs +5 -4
  29. package/dist/cjs/httpPull/transport.test.native.js +6 -5
  30. package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
  31. package/dist/cjs/httpPullTransport.cjs +2 -1
  32. package/dist/cjs/httpPullTransport.native.js +3 -2
  33. package/dist/cjs/httpPullTransport.native.js.map +1 -1
  34. package/dist/cjs/server.cjs +2 -1
  35. package/dist/cjs/syncHost.cjs +164 -0
  36. package/dist/cjs/syncHost.native.js +371 -0
  37. package/dist/cjs/syncHost.native.js.map +1 -0
  38. package/dist/cjs/syncHost.test.cjs +229 -0
  39. package/dist/cjs/syncHost.test.native.js +278 -0
  40. package/dist/cjs/syncHost.test.native.js.map +1 -0
  41. package/dist/esm/createZeroSQLiteServer.mjs +293 -0
  42. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -0
  43. package/dist/esm/createZeroSQLiteServer.native.js +411 -0
  44. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -0
  45. package/dist/esm/createZeroSQLiteServer.test.mjs +430 -0
  46. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -0
  47. package/dist/esm/createZeroSQLiteServer.test.native.js +464 -0
  48. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -0
  49. package/dist/esm/createZeroServer.mjs +17 -231
  50. package/dist/esm/createZeroServer.mjs.map +1 -1
  51. package/dist/esm/createZeroServer.native.js +21 -247
  52. package/dist/esm/createZeroServer.native.js.map +1 -1
  53. package/dist/esm/createZeroServer.test.mjs +35 -1
  54. package/dist/esm/createZeroServer.test.mjs.map +1 -1
  55. package/dist/esm/createZeroServer.test.native.js +38 -1
  56. package/dist/esm/createZeroServer.test.native.js.map +1 -1
  57. package/dist/esm/createZeroServerCore.mjs +336 -0
  58. package/dist/esm/createZeroServerCore.mjs.map +1 -0
  59. package/dist/esm/createZeroServerCore.native.js +360 -0
  60. package/dist/esm/createZeroServerCore.native.js.map +1 -0
  61. package/dist/esm/generate-lite.mjs +1 -0
  62. package/dist/esm/generate-lite.mjs.map +1 -1
  63. package/dist/esm/generate-lite.native.js +1 -0
  64. package/dist/esm/generate-lite.native.js.map +1 -1
  65. package/dist/esm/generate-lite.test.mjs +5 -1
  66. package/dist/esm/generate-lite.test.mjs.map +1 -1
  67. package/dist/esm/generate-lite.test.native.js +5 -1
  68. package/dist/esm/generate-lite.test.native.js.map +1 -1
  69. package/dist/esm/generate.mjs +20 -11
  70. package/dist/esm/generate.mjs.map +1 -1
  71. package/dist/esm/generate.native.js +29 -21
  72. package/dist/esm/generate.native.js.map +1 -1
  73. package/dist/esm/generate.test.mjs +87 -1
  74. package/dist/esm/generate.test.mjs.map +1 -1
  75. package/dist/esm/generate.test.native.js +87 -1
  76. package/dist/esm/generate.test.native.js.map +1 -1
  77. package/dist/esm/httpPull/transport.test.mjs +5 -4
  78. package/dist/esm/httpPull/transport.test.mjs.map +1 -1
  79. package/dist/esm/httpPull/transport.test.native.js +6 -5
  80. package/dist/esm/httpPull/transport.test.native.js.map +1 -1
  81. package/dist/esm/httpPullTransport.mjs +2 -1
  82. package/dist/esm/httpPullTransport.mjs.map +1 -1
  83. package/dist/esm/httpPullTransport.native.js +3 -2
  84. package/dist/esm/httpPullTransport.native.js.map +1 -1
  85. package/dist/esm/server.mjs +1 -0
  86. package/dist/esm/server.mjs.map +1 -1
  87. package/dist/esm/syncHost.mjs +138 -0
  88. package/dist/esm/syncHost.mjs.map +1 -0
  89. package/dist/esm/syncHost.native.js +342 -0
  90. package/dist/esm/syncHost.native.js.map +1 -0
  91. package/dist/esm/syncHost.test.mjs +206 -0
  92. package/dist/esm/syncHost.test.mjs.map +1 -0
  93. package/dist/esm/syncHost.test.native.js +252 -0
  94. package/dist/esm/syncHost.test.native.js.map +1 -0
  95. package/package.json +19 -3
  96. package/readme.md +26 -0
  97. package/src/createZeroSQLiteServer.test.ts +461 -0
  98. package/src/createZeroSQLiteServer.ts +523 -0
  99. package/src/createZeroServer.test.ts +39 -1
  100. package/src/createZeroServer.ts +35 -428
  101. package/src/createZeroServerCore.ts +557 -0
  102. package/src/generate-lite.test.ts +4 -0
  103. package/src/generate-lite.ts +1 -0
  104. package/src/generate.test.ts +87 -1
  105. package/src/generate.ts +29 -20
  106. package/src/httpPull/transport.test.ts +6 -5
  107. package/src/httpPullTransport.ts +9 -4
  108. package/src/server.ts +1 -0
  109. package/src/syncHost.test.ts +216 -0
  110. package/src/syncHost.ts +255 -0
  111. package/test-fixtures/server-return-types.ts +50 -0
  112. package/test-fixtures/tsconfig.json +13 -0
  113. package/types/createZeroSQLiteServer.d.ts +37 -0
  114. package/types/createZeroSQLiteServer.d.ts.map +1 -0
  115. package/types/createZeroSQLiteServer.test.d.ts +2 -0
  116. package/types/createZeroSQLiteServer.test.d.ts.map +1 -0
  117. package/types/createZeroServer.d.ts +11 -293
  118. package/types/createZeroServer.d.ts.map +1 -1
  119. package/types/createZeroServerCore.d.ts +310 -0
  120. package/types/createZeroServerCore.d.ts.map +1 -0
  121. package/types/generate-lite.d.ts.map +1 -1
  122. package/types/generate.d.ts +2 -1
  123. package/types/generate.d.ts.map +1 -1
  124. package/types/httpPullTransport.d.ts +1 -0
  125. package/types/httpPullTransport.d.ts.map +1 -1
  126. package/types/server.d.ts +1 -0
  127. package/types/server.d.ts.map +1 -1
  128. package/types/syncHost.d.ts +51 -0
  129. package/types/syncHost.d.ts.map +1 -0
  130. package/types/syncHost.test.d.ts +2 -0
  131. package/types/syncHost.test.d.ts.map +1 -0
@@ -41,7 +41,7 @@ class FakePgClient {
41
41
  rows: [...schemaRows("user", ["id", "name"]), ...schemaRows("project", ["id", "ownerId", "name"]), ...schemaRows("member", ["id", "projectId", "userId"])]
42
42
  };
43
43
  }
44
- if (sql.includes('INSERT INTO "zero_0"."mutations"')) {
44
+ if (sql.includes('INSERT INTO "zero_0"."mutations"') || sql.includes('INSERT INTO "zero_0".mutations')) {
45
45
  this.mutationResultInserts.push(params);
46
46
  return {
47
47
  rows: []
@@ -89,6 +89,40 @@ function pushRequest(mutationIDs) {
89
89
  });
90
90
  }
91
91
  describe("createZeroServer mutation recovery", () => {
92
+ test("discards async tasks from a rolled-back PostgreSQL mutation", async () => {
93
+ const pg = new FakePgClient();
94
+ let effectRuns = 0;
95
+ const zeroServer = createZeroServer({
96
+ schema: zeroHttpFixtureSchema,
97
+ models: {
98
+ project: {
99
+ mutate: {
100
+ touch: async ({
101
+ server
102
+ }) => {
103
+ server?.asyncTasks.push(async () => {
104
+ effectRuns++;
105
+ });
106
+ throw new Error("rejected");
107
+ }
108
+ }
109
+ }
110
+ },
111
+ createServerActions: () => ({}),
112
+ pool: pg
113
+ });
114
+ const result = await zeroServer.handleMutationRequest({
115
+ authData: null,
116
+ request: pushRequest(1),
117
+ skipAsyncTasks: true
118
+ });
119
+ expect(result.response.mutations[0].result).toMatchObject({
120
+ error: "app",
121
+ message: "rejected"
122
+ });
123
+ expect(result.asyncTasks).toEqual([]);
124
+ expect(effectRuns).toBe(0);
125
+ });
92
126
  test("persists alreadyProcessed duplicate results for zero-cache recovery rows", async () => {
93
127
  const pg = new FakePgClient();
94
128
  const zeroServer = createZeroServer({
@@ -1 +1 @@
1
- {"version":3,"names":["describe","expect","test","createZeroServer","zeroHttpFixtureSchema","FakePgClient","lastMutationID","pendingLastMutationID","mutationResultInserts","query","sql","params","rows","includes","nextMutationID","schemaRows","push","Error","table","columns","map","column","schema","dataType","length","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","pg","zeroServer","models","project","mutate","touch","createServerActions","pool","first","handleMutationRequest","authData","request","response","result","toEqual","toBe","duplicate","duplicateResult","error","details","mixed","results","mutation"],"sources":["../../src/createZeroServer.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["describe","expect","test","createZeroServer","zeroHttpFixtureSchema","FakePgClient","lastMutationID","pendingLastMutationID","mutationResultInserts","query","sql","params","rows","includes","nextMutationID","schemaRows","push","Error","table","columns","map","column","schema","dataType","length","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","pg","effectRuns","zeroServer","models","project","mutate","touch","server","asyncTasks","createServerActions","pool","result","handleMutationRequest","authData","request","skipAsyncTasks","response","toMatchObject","error","message","toEqual","toBe","first","duplicate","duplicateResult","details","mixed","results","mutation"],"sources":["../../src/createZeroServer.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -81,7 +81,7 @@ var FakePgClient = /* @__PURE__ */function () {
81
81
  rows: [...schemaRows("user", ["id", "name"]), ...schemaRows("project", ["id", "ownerId", "name"]), ...schemaRows("member", ["id", "projectId", "userId"])]
82
82
  };
83
83
  }
84
- if (sql.includes('INSERT INTO "zero_0"."mutations"')) {
84
+ if (sql.includes('INSERT INTO "zero_0"."mutations"') || sql.includes('INSERT INTO "zero_0".mutations')) {
85
85
  this.mutationResultInserts.push(params);
86
86
  return {
87
87
  rows: []
@@ -135,6 +135,43 @@ function pushRequest(mutationIDs) {
135
135
  });
136
136
  }
137
137
  describe("createZeroServer mutation recovery", function () {
138
+ test("discards async tasks from a rolled-back PostgreSQL mutation", async function () {
139
+ var pg = new FakePgClient();
140
+ var effectRuns = 0;
141
+ var zeroServer = createZeroServer({
142
+ schema: zeroHttpFixtureSchema,
143
+ models: {
144
+ project: {
145
+ mutate: {
146
+ touch: async function (param) {
147
+ var {
148
+ server
149
+ } = param;
150
+ server === null || server === void 0 ? void 0 : server.asyncTasks.push(async function () {
151
+ effectRuns++;
152
+ });
153
+ throw new Error("rejected");
154
+ }
155
+ }
156
+ }
157
+ },
158
+ createServerActions: function () {
159
+ return {};
160
+ },
161
+ pool: pg
162
+ });
163
+ var result = await zeroServer.handleMutationRequest({
164
+ authData: null,
165
+ request: pushRequest(1),
166
+ skipAsyncTasks: true
167
+ });
168
+ expect(result.response.mutations[0].result).toMatchObject({
169
+ error: "app",
170
+ message: "rejected"
171
+ });
172
+ expect(result.asyncTasks).toEqual([]);
173
+ expect(effectRuns).toBe(0);
174
+ });
138
175
  test("persists alreadyProcessed duplicate results for zero-cache recovery rows", async function () {
139
176
  var pg = new FakePgClient();
140
177
  var zeroServer = createZeroServer({
@@ -1 +1 @@
1
- {"version":3,"names":["describe","expect","test","createZeroServer","zeroHttpFixtureSchema","_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","pg","zeroServer","models","project"],"sources":["../../src/createZeroServer.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AAEvC,SAASC,gBAAA,QAAwB;AACjC,SAASC,qBAAA,QAA6B;AAEtC,SAAMC,iBAAaA,CAAAC,QAAA,EAAAC,WAAA;EACjB,MAAAD,QAAA,YAAiBC,WAAA;IACjB,UAAAC,SAAA;EACA;AAAsC;AAGpC,SAAIC,iBAAiBA,CAAAC,MAAA,EAAAC,KAAA;EACnB,SAAKC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAwBD,CAAA;IAC7B,IAAAE,UAAS,GAAMH,KAAG,CAAAC,CAAA;IACpBE,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA;IAEAD,UAAI,CAAAE,YAAkB;IACpB,WAAS,IAAAF,UAAA,EAAAA,UAA0B,CAAAG,QAAW;IAC5CC,MAAA,CAAAC,cAAK,CAAAT,MAAiB,EAAAI,UAAK,CAAAM,GAAA,EAAAN,UAAA;EAAA;AAE7B;AACA,SAAAO,aAAgBA,CAAAd,WAAE,EAAAe,UAAA,EAAAC,WAAA;EAAA,IACpBD,UAAA,EAAAb,iBAAA,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA;EAEA,IAAAC,WAAY,EAAAd,iBAAY,CAAAF,WAAA,EAAAgB,WAAA;EACtB,OAAAhB,WAAK;AACL;AAAkB,SACpBkB,iBAAAC,GAAA,EAAAN,GAAA,EAAAO,KAAA;EAEA,IAAAP,GAAI,IAAIM,GAAA;IACNR,MAAA,CAAAC,cAAM,CAAAO,GAAiB,EAAAN,GAAK;MAC5BO,KAAK;MACLZ,UAAS,MAAO;MAClBC,YAAA;MAEAC,QAAQ;IACN;EAAO,OACL;IAAMS,GAAA,CAAAN,GACJ,IAAGO,KAAA;EAAiC;EACc,OAAAD,GAClD;AAAqD;AACvD,IAAAE,YACF;EAAA,YACF;;EAEA,SAAIC,aAAaA,CAAA;IACfxB,iBAAK,OAAAwB,aAA2B;IAChCJ,gBAAS,CAAM,IAAG;IACpBA,gBAAA;IAEAA,gBAAgB,8BAA6B,EAAG,EAAE;EACpD;EACFJ,aAAA,CAAAQ,aAAA,GAEA;IACET,GAAO,SAAQ;IACbO,KAAA,EAAQ,eAAAG,MAAAC,GAAA;MACR,IAAAC,MAAA,GAAAC,SAAA,CAAApB,MAAA,QAAAoB,SAAA,iBAAAA,SAAA;MACA,IAAAF,GAAA;QACA,IAAU,CAAAG,qBAAA;QACV,OAAQ;UACRC,IAAW;QACX,CAAO;MACP;MACA,IAAAJ,GAAU;QACV,QAAa,CAAAG,qBAAA;UACb,KAAaE,cAAA,QAAAF,qBAAA;QACb;QACJ,KAAAA,qBAAA;QAES;UACDC,IAAM;QACL;MACL;MACA,IAAAJ,GAAW,iBAAgB;QACrB,KAAKG,qBAAU;QACnB;UACAC,IAAA,EAAW;QACT;MACA;MACA,IAAAJ,GAAA,CAAAM,QAAU,gBAAAN,GAAA,CAAAM,QAAA;QACV,IAAMC,cAAA,QAAAF,cAAA;QACN,IAAM,CAACF,qBAAE,GAAAI,cAAA;QACT;UACAH,IAAA,GACF;YACAC,cAAW,EAAAE;UACX;QAEH;MACH;MAEA,IAASP,GAAA,CAAAM,QAAA,6BAA4C;QAC9C;UACGF,IAAK,GACL,GAAAI,UAAa,UACT,MACA,OACN,GACE,GAAAA,UAAQ,aACN,IAAO,EAAa,WACtB,OACF,GACF,GAAAA,UAAA,YACA,MACM,aACP,SAEK;QAEJ;MACD;MAED,IAAQR,GAAA,CAAAM,QAAM,mCAAgD;QAC9D,IAAU,CAAAG,qBAAsB,CAAAC,IAAA,CAAAT,MAAA;QAChC,OAAU;UAEJG,IAAA;QACJ;MACA;MACD,UAAAO,KAAA,8BAAAX,GAAA;IAED;EACA,EACA;EACA,OAAAF,aAAU;AAA+B;AACvC,SACEU,WAAAI,KAAA,EAAAC,OAAA;EAAA,OACAA,OAAA,CAAAC,GAAA,WAAAC,MAAA;IAAA,OACA;MAAAC,MACA,EAAK;MAAUJ,KACb;MAAOG,MACP;MAAyBE,QAC1B;MACHnC,MAAA;MACDoC,SAAA;MACFC,KAAA;MAEDC,OAAK;MACHC,QAAM,EAAK,MAAI;MACfC,WAAM,MAAa;MACjBC,WAAQ;IAAA;EACA;AACG;AACC,SAAAC,WACCA,CAAAC,WAAY;EAAA,IAAAC,GAAA,GAACC,KAAA,CAAAC,OAAA,CAAAH,WAAA,IAAAA,WAAA,IAAAA,WACtB;EACF,OACF,IAAAI,OAAA;IAAAC,MACA;IAA6BC,OAC7B,EAAM;MACP;IAED;IAAuCC,IACrC,EAAAC,IAAA,CAAAC,SAAU;MACVC,aAAS;MACVC,SAAA,EAAAV,GAAA,CAAAZ,GAAA,WAAAuB,UAAA;QAED,OAAM;UACJC,IAAA,EAAU;UACVC,EAAA,EAAAF,UAAS;UACVG,QAAA;UAEKC,IAAA,iBAAiB;UACjBC,IAAA,GACJ,EAAQ,CACR;UACFC,SAAe,EAAC;QAChB;MACA;MACAC,WAAU;MACRD,SAAA;MAAAE,SACE,SAAAnB,GAAA,CAAAoB,IAAA;IAAA;EACA;AACA;AACe7E,QAAA,qCACN;EAAAE,IAAA,2EACoB;IAAA,IAC7B4E,EAAC,OAAAlD,YAAA;IAAA,IACHmD,UAAA,GAAA5E,gBAAA;MACD4C,MAAA,EAAA3C,qBAAA;MACF4E,MAAA;QACFC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["describe","expect","test","createZeroServer","zeroHttpFixtureSchema","_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","pg","effectRuns","zeroServer","models","project","mutate","touch","param","server","asyncTasks","createServerActions","pool","result","handleMutationRequest","authData","request","skipAsyncTasks","response","toMatchObject","error","message","toEqual","toBe"],"sources":["../../src/createZeroServer.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,336 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { PushProcessor, handleQueryRequest as zeroHandleQueryRequest } from "@rocicorp/zero/server";
3
+ import { createPermissions } from "./createPermissions.mjs";
4
+ import { createMutators } from "./helpers/createMutators.mjs";
5
+ import { getScopedAuthData, isInZeroMutation, mutatorContext, runWithAuthScope } from "./helpers/mutatorContext.mjs";
6
+ import { runWithQueryContext } from "./helpers/queryContext.mjs";
7
+ import { getMutationsPermissions } from "./modelRegistry.mjs";
8
+ import { setCustomQueries } from "./run.mjs";
9
+ import { getZQL, setEnvironment, setSchema } from "./state.mjs";
10
+ import { setEvaluatingPermission } from "./where.mjs";
11
+ import { setRunner } from "./zeroRunner.mjs";
12
+ function resolveServerQuery({
13
+ authData,
14
+ name,
15
+ args,
16
+ queries,
17
+ permissions,
18
+ validateQuery
19
+ }) {
20
+ if (name.startsWith("permission.")) {
21
+ const table = name.slice("permission.".length);
22
+ const {
23
+ objOrId
24
+ } = args;
25
+ const permission = getMutationsPermissions(table);
26
+ if (!permission) {
27
+ throw new Error(`[permission] no permission defined for table: ${table}`);
28
+ }
29
+ setEvaluatingPermission(true);
30
+ try {
31
+ return getZQL()[table].where(eb => {
32
+ return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
33
+ }).one();
34
+ } finally {
35
+ setEvaluatingPermission(false);
36
+ }
37
+ }
38
+ if (validateQuery) {
39
+ validateQuery({
40
+ authData,
41
+ queryName: name,
42
+ params: args
43
+ });
44
+ }
45
+ const query = mustGetQuery(queries, name);
46
+ return query.fn({
47
+ args,
48
+ ctx: authData
49
+ });
50
+ }
51
+ function createAsyncTaskCollector() {
52
+ const committed = [];
53
+ let attempt;
54
+ let completedAttempt;
55
+ const current = () => attempt ?? committed;
56
+ const queue = new Proxy([], {
57
+ deleteProperty(_target, property) {
58
+ return Reflect.deleteProperty(current(), property);
59
+ },
60
+ get(_target, property) {
61
+ const target = current();
62
+ const value = Reflect.get(target, property, target);
63
+ return typeof value === "function" ? value.bind(target) : value;
64
+ },
65
+ getOwnPropertyDescriptor(_target, property) {
66
+ return Reflect.getOwnPropertyDescriptor(current(), property);
67
+ },
68
+ has(_target, property) {
69
+ return Reflect.has(current(), property);
70
+ },
71
+ ownKeys() {
72
+ return Reflect.ownKeys(current());
73
+ },
74
+ set(_target, property, value) {
75
+ return Reflect.set(current(), property, value);
76
+ }
77
+ });
78
+ const lifecycle = {
79
+ beginAttempt() {
80
+ attempt = [];
81
+ completedAttempt = void 0;
82
+ },
83
+ completeAttempt() {
84
+ completedAttempt = attempt;
85
+ attempt = void 0;
86
+ },
87
+ rollbackAttempt() {
88
+ attempt = void 0;
89
+ completedAttempt = void 0;
90
+ },
91
+ commitTransaction() {
92
+ if (completedAttempt) committed.push(...completedAttempt);
93
+ completedAttempt = void 0;
94
+ },
95
+ rollbackTransaction() {
96
+ attempt = void 0;
97
+ completedAttempt = void 0;
98
+ }
99
+ };
100
+ return {
101
+ committed,
102
+ lifecycle,
103
+ queue
104
+ };
105
+ }
106
+ function createZeroServerCore({
107
+ createDatabase,
108
+ createServerActions,
109
+ defaultAllowAdminRole = "all",
110
+ defaultMutateAuthData = {},
111
+ models,
112
+ mutations: mutationValidators,
113
+ persistAlreadyProcessed,
114
+ queries,
115
+ schema,
116
+ validateMutation,
117
+ validateQuery
118
+ }) {
119
+ setSchema(schema);
120
+ setEnvironment("server");
121
+ const permissions = createPermissions({
122
+ environment: "server",
123
+ schema,
124
+ adminRoleMode: defaultAllowAdminRole
125
+ });
126
+ const handleMutationRequest = async ({
127
+ authData,
128
+ request,
129
+ skipAsyncTasks
130
+ }) => {
131
+ const tasks = createAsyncTaskCollector();
132
+ const recoveryRequest = request.clone();
133
+ const mutators = createMutators({
134
+ asyncTasks: tasks.queue,
135
+ can: permissions.can,
136
+ createServerActions,
137
+ environment: "server",
138
+ models,
139
+ authData,
140
+ validateMutation,
141
+ mutationValidators
142
+ });
143
+ const processor = new PushProcessor(withTransactionLifecycle(createDatabase(), tasks.lifecycle));
144
+ const response = await processor.process(mutators, request);
145
+ if (persistAlreadyProcessed) {
146
+ const parsed = await parseAlreadyProcessed(recoveryRequest, response);
147
+ if (parsed) await persistAlreadyProcessed(parsed);
148
+ }
149
+ if (!skipAsyncTasks && tasks.committed.length) {
150
+ Promise.all(tasks.committed.map(task => runWithAuthScope(authData, task))).catch(err => {
151
+ console.error("[push] async tasks failed", err);
152
+ });
153
+ }
154
+ return {
155
+ response,
156
+ asyncTasks: tasks.committed
157
+ };
158
+ };
159
+ const handleQueryRequest = async ({
160
+ authData,
161
+ request
162
+ }) => {
163
+ if (!queries) {
164
+ throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
165
+ }
166
+ const handler = (name, args) => resolveServerQuery({
167
+ authData,
168
+ name,
169
+ args,
170
+ queries,
171
+ permissions,
172
+ validateQuery
173
+ });
174
+ const userID = typeof authData?.id === "string" ? authData.id : void 0;
175
+ const response = await runWithQueryContext({
176
+ authData: authData || {}
177
+ }, () =>
178
+ // the legacy overload omits userID when auth does not identify a user.
179
+ userID === void 0 ? zeroHandleQueryRequest(handler, schema, request) : zeroHandleQueryRequest({
180
+ handler,
181
+ schema,
182
+ request,
183
+ userID
184
+ }));
185
+ return {
186
+ response
187
+ };
188
+ };
189
+ async function runTransaction(database, query2) {
190
+ try {
191
+ if (isInZeroMutation()) {
192
+ const {
193
+ tx
194
+ } = mutatorContext();
195
+ return await query2(tx);
196
+ }
197
+ return await database.transaction(query2, dummyTransactionInput);
198
+ } catch (err) {
199
+ if (err?.name !== "PermissionError") {
200
+ console.error(`Error running transaction(): ${err}`);
201
+ }
202
+ throw err;
203
+ }
204
+ }
205
+ async function transaction(query2) {
206
+ return runTransaction(createDatabase(), query2);
207
+ }
208
+ async function runMutate(modelName, mutatorName, mutatorArg, options) {
209
+ let authData = options?.authData;
210
+ if (!authData) {
211
+ const scoped = getScopedAuthData();
212
+ if (scoped) authData = scoped;
213
+ }
214
+ const tasks = createAsyncTaskCollector();
215
+ const mutators = createMutators({
216
+ models,
217
+ environment: "server",
218
+ asyncTasks: tasks.queue,
219
+ authData: {
220
+ ...defaultMutateAuthData,
221
+ ...authData
222
+ },
223
+ createServerActions,
224
+ can: permissions.can,
225
+ validateMutation,
226
+ mutationValidators
227
+ });
228
+ const modelMutators = mutators[modelName];
229
+ const mutator = modelMutators[mutatorName];
230
+ await runTransaction(withTransactionLifecycle(createDatabase(), tasks.lifecycle), async tx => {
231
+ await mutator(tx, mutatorArg);
232
+ });
233
+ if (tasks.committed.length) {
234
+ const resolvedAuth = authData ?? null;
235
+ const promise = Promise.all(tasks.committed.map(task => runWithAuthScope(resolvedAuth, task)));
236
+ if (options?.awaitEffects) {
237
+ await promise;
238
+ } else {
239
+ promise.catch(err => {
240
+ console.error("[mutate] async tasks failed", err);
241
+ });
242
+ }
243
+ }
244
+ }
245
+ const mutate = new Proxy({}, {
246
+ get(_, modelName) {
247
+ return new Proxy({}, {
248
+ get(_2, mutatorName) {
249
+ return (arg, options) => runMutate(modelName, mutatorName, arg, options);
250
+ }
251
+ });
252
+ }
253
+ });
254
+ function query(cb, authData) {
255
+ const run = () => transaction(async tx => {
256
+ return tx.run(cb(getZQL()));
257
+ });
258
+ if (authData !== void 0) {
259
+ return runWithQueryContext({
260
+ authData
261
+ }, run);
262
+ }
263
+ return run();
264
+ }
265
+ if (queries) {
266
+ setCustomQueries(queries);
267
+ }
268
+ setRunner(queryObj => {
269
+ return transaction(async tx => {
270
+ return tx.run(queryObj);
271
+ });
272
+ });
273
+ return {
274
+ handleMutationRequest,
275
+ handleQueryRequest,
276
+ transaction,
277
+ mutate,
278
+ query
279
+ };
280
+ }
281
+ function withTransactionLifecycle(database, lifecycle) {
282
+ return {
283
+ async transaction(callback, input) {
284
+ try {
285
+ const value = await database.transaction(async (tx, hooks) => {
286
+ lifecycle.beginAttempt();
287
+ try {
288
+ const result = await callback(tx, hooks);
289
+ lifecycle.completeAttempt();
290
+ return result;
291
+ } catch (error) {
292
+ lifecycle.rollbackAttempt();
293
+ throw error;
294
+ }
295
+ }, input);
296
+ lifecycle.commitTransaction();
297
+ return value;
298
+ } catch (error) {
299
+ lifecycle.rollbackTransaction();
300
+ throw error;
301
+ }
302
+ }
303
+ };
304
+ }
305
+ async function parseAlreadyProcessed(request, response) {
306
+ const mutations = alreadyProcessedMutations(response);
307
+ if (mutations.length === 0) return;
308
+ const upstreamSchema = new URL(request.url).searchParams.get("schema");
309
+ if (!upstreamSchema) return;
310
+ const body = await request.json();
311
+ if (typeof body.clientGroupID !== "string") return;
312
+ return {
313
+ clientGroupID: body.clientGroupID,
314
+ mutations,
315
+ upstreamSchema
316
+ };
317
+ }
318
+ function alreadyProcessedMutations(response) {
319
+ if (!response || typeof response !== "object") return [];
320
+ const mutations = response.mutations;
321
+ if (!Array.isArray(mutations)) return [];
322
+ return mutations.filter(mutation => {
323
+ if (!mutation || typeof mutation !== "object") return false;
324
+ const id = mutation.id;
325
+ const result = mutation.result;
326
+ return !!id && typeof id === "object" && typeof id.clientID === "string" && typeof id.id === "number" && !!result && typeof result === "object" && result.error === "alreadyProcessed";
327
+ });
328
+ }
329
+ const dummyTransactionInput = {
330
+ clientGroupID: "unused",
331
+ clientID: "unused",
332
+ mutationID: 42,
333
+ upstreamSchema: "unused"
334
+ };
335
+ export { createZeroServerCore, resolveServerQuery };
336
+ //# sourceMappingURL=createZeroServerCore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","createPermissions","createMutators","getScopedAuthData","isInZeroMutation","mutatorContext","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","resolveServerQuery","authData","name","args","queries","permissions","validateQuery","startsWith","table","slice","length","objOrId","permission","Error","where","eb","buildPermissionQuery","one","queryName","params","query","fn","ctx","createAsyncTaskCollector","committed","attempt","completedAttempt","current","queue","Proxy","deleteProperty","_target","property","Reflect","get","target","value","bind","getOwnPropertyDescriptor","has","ownKeys","set","lifecycle","beginAttempt","completeAttempt","rollbackAttempt","commitTransaction","push","rollbackTransaction","createZeroServerCore","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","persistAlreadyProcessed","schema","validateMutation","environment","adminRoleMode","handleMutationRequest","request","skipAsyncTasks","tasks","recoveryRequest","clone","mutators","asyncTasks","can","processor","withTransactionLifecycle","response","process","parsed","parseAlreadyProcessed","Promise","all","map","task","catch","err","console","error","handler","userID","id","runTransaction","database","query2","tx","transaction","dummyTransactionInput","runMutate","modelName","mutatorName","mutatorArg","options","scoped","modelMutators","mutator","resolvedAuth","promise","awaitEffects","mutate","_","_2","arg","cb","run","queryObj","callback","input","hooks","result","alreadyProcessedMutations","upstreamSchema","URL","url","searchParams","body","json","clientGroupID","Array","isArray","filter","mutation","clientID","mutationID"],"sources":["../../src/createZeroServerCore.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}