on-zero 0.6.13 → 0.6.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 (93) hide show
  1. package/dist/cjs/createSchemaFromDrizzle.cjs +4 -4
  2. package/dist/cjs/createSchemaFromDrizzle.native.js +4 -4
  3. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  4. package/dist/cjs/createZeroDirectServer.cjs +279 -0
  5. package/dist/cjs/createZeroDirectServer.native.js +292 -0
  6. package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
  7. package/dist/cjs/createZeroSQLiteServer.cjs +8 -277
  8. package/dist/cjs/createZeroSQLiteServer.native.js +8 -390
  9. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -1
  10. package/dist/cjs/createZeroSQLiteServer.test.cjs +30 -3
  11. package/dist/cjs/createZeroSQLiteServer.test.native.js +31 -3
  12. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
  13. package/dist/cjs/createZeroServerCore.cjs +20 -205
  14. package/dist/cjs/createZeroServerCore.native.js +19 -213
  15. package/dist/cjs/createZeroServerCore.native.js.map +1 -1
  16. package/dist/cjs/generate.cjs +10 -3
  17. package/dist/cjs/generate.native.js +10 -3
  18. package/dist/cjs/generate.native.js.map +1 -1
  19. package/dist/cjs/generate.test.cjs +39 -0
  20. package/dist/cjs/generate.test.native.js +39 -0
  21. package/dist/cjs/generate.test.native.js.map +1 -1
  22. package/dist/cjs/sqliteRuntime.cjs +318 -0
  23. package/dist/cjs/sqliteRuntime.native.js +438 -0
  24. package/dist/cjs/sqliteRuntime.native.js.map +1 -0
  25. package/dist/cjs/syncHost.cjs +16 -9
  26. package/dist/cjs/syncHost.native.js +21 -12
  27. package/dist/cjs/syncHost.native.js.map +1 -1
  28. package/dist/cjs/syncHost.test.cjs +13 -2
  29. package/dist/cjs/syncHost.test.native.js +14 -2
  30. package/dist/cjs/syncHost.test.native.js.map +1 -1
  31. package/dist/esm/createSchemaFromDrizzle.mjs +2 -2
  32. package/dist/esm/createSchemaFromDrizzle.native.js +2 -2
  33. package/dist/esm/createZeroDirectServer.mjs +251 -0
  34. package/dist/esm/createZeroDirectServer.mjs.map +1 -0
  35. package/dist/esm/createZeroDirectServer.native.js +261 -0
  36. package/dist/esm/createZeroDirectServer.native.js.map +1 -0
  37. package/dist/esm/createZeroSQLiteServer.mjs +3 -272
  38. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -1
  39. package/dist/esm/createZeroSQLiteServer.native.js +3 -385
  40. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -1
  41. package/dist/esm/createZeroSQLiteServer.test.mjs +30 -3
  42. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
  43. package/dist/esm/createZeroSQLiteServer.test.native.js +31 -3
  44. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
  45. package/dist/esm/createZeroServerCore.mjs +18 -202
  46. package/dist/esm/createZeroServerCore.mjs.map +1 -1
  47. package/dist/esm/createZeroServerCore.native.js +18 -211
  48. package/dist/esm/createZeroServerCore.native.js.map +1 -1
  49. package/dist/esm/generate.mjs +10 -3
  50. package/dist/esm/generate.mjs.map +1 -1
  51. package/dist/esm/generate.native.js +10 -3
  52. package/dist/esm/generate.native.js.map +1 -1
  53. package/dist/esm/generate.test.mjs +39 -1
  54. package/dist/esm/generate.test.mjs.map +1 -1
  55. package/dist/esm/generate.test.native.js +39 -1
  56. package/dist/esm/generate.test.native.js.map +1 -1
  57. package/dist/esm/sqliteRuntime.mjs +289 -0
  58. package/dist/esm/sqliteRuntime.mjs.map +1 -0
  59. package/dist/esm/sqliteRuntime.native.js +406 -0
  60. package/dist/esm/sqliteRuntime.native.js.map +1 -0
  61. package/dist/esm/syncHost.mjs +14 -7
  62. package/dist/esm/syncHost.mjs.map +1 -1
  63. package/dist/esm/syncHost.native.js +19 -10
  64. package/dist/esm/syncHost.native.js.map +1 -1
  65. package/dist/esm/syncHost.test.mjs +13 -2
  66. package/dist/esm/syncHost.test.mjs.map +1 -1
  67. package/dist/esm/syncHost.test.native.js +14 -2
  68. package/dist/esm/syncHost.test.native.js.map +1 -1
  69. package/package.json +5 -6
  70. package/src/createSchemaFromDrizzle.ts +2 -2
  71. package/src/createZeroDirectServer.ts +427 -0
  72. package/src/createZeroSQLiteServer.test.ts +20 -5
  73. package/src/createZeroSQLiteServer.ts +14 -481
  74. package/src/createZeroServerCore.ts +32 -337
  75. package/src/generate.test.ts +57 -1
  76. package/src/generate.ts +23 -3
  77. package/src/sqliteRuntime.ts +512 -0
  78. package/src/syncHost.test.ts +10 -3
  79. package/src/syncHost.ts +49 -12
  80. package/test-fixtures/server-return-types.ts +8 -1
  81. package/types/createSchemaFromDrizzle.d.ts +2 -2
  82. package/types/createSchemaFromDrizzle.d.ts.map +1 -1
  83. package/types/createZeroDirectServer.d.ts +80 -0
  84. package/types/createZeroDirectServer.d.ts.map +1 -0
  85. package/types/createZeroSQLiteServer.d.ts +5 -30
  86. package/types/createZeroSQLiteServer.d.ts.map +1 -1
  87. package/types/createZeroServerCore.d.ts +30 -87
  88. package/types/createZeroServerCore.d.ts.map +1 -1
  89. package/types/generate.d.ts.map +1 -1
  90. package/types/sqliteRuntime.d.ts +71 -0
  91. package/types/sqliteRuntime.d.ts.map +1 -0
  92. package/types/syncHost.d.ts +10 -19
  93. package/types/syncHost.d.ts.map +1 -1
@@ -44,12 +44,18 @@ const queries = (0, import_zero.defineQueries)({
44
44
  let executor;
45
45
  let transaction;
46
46
  let lastQueryFormat;
47
+ let statements;
47
48
  (0, import_vitest.beforeEach)(() => {
48
49
  db = new import_node_sqlite.DatabaseSync(":memory:");
49
50
  db.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
51
+ statements = [];
50
52
  executor = {
51
- exec(sql, params = []) {
52
- db.prepare(sql).run(...params);
53
+ exec(sql, params = [], metadata) {
54
+ if (metadata) statements.push(metadata);
55
+ const result = db.prepare(sql).run(...params);
56
+ return {
57
+ changes: Number(result.changes)
58
+ };
53
59
  },
54
60
  query(sql, params = []) {
55
61
  return db.prepare(sql).all(...params);
@@ -125,6 +131,11 @@ const queries = (0, import_zero.defineQueries)({
125
131
  }]);
126
132
  (0, import_vitest.expect)(validatedAuthID).toBe("u1");
127
133
  (0, import_vitest.expect)(effectAuthID).toBe("u1");
134
+ (0, import_vitest.expect)(statements).toEqual([{
135
+ table: "project",
136
+ publicTable: "project",
137
+ kind: "insert"
138
+ }]);
128
139
  });
129
140
  (0, import_vitest.test)("returns a structural application error and drops rolled-back effects", async () => {
130
141
  let effectRuns = 0;
@@ -49,13 +49,20 @@ var queries = (0, import_zero.defineQueries)({
49
49
  var executor;
50
50
  var transaction;
51
51
  var lastQueryFormat;
52
+ var statements;
52
53
  (0, import_vitest.beforeEach)(function () {
53
54
  db = new import_node_sqlite.DatabaseSync(":memory:");
54
55
  db.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
56
+ statements = [];
55
57
  executor = {
56
58
  exec(sql) {
57
- var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
58
- db.prepare(sql).run(...params);
59
+ var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [],
60
+ metadata = arguments.length > 2 ? arguments[2] : void 0;
61
+ if (metadata) statements.push(metadata);
62
+ var result = db.prepare(sql).run(...params);
63
+ return {
64
+ changes: Number(result.changes)
65
+ };
59
66
  },
60
67
  query(sql) {
61
68
  var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
@@ -160,6 +167,11 @@ var queries = (0, import_zero.defineQueries)({
160
167
  }]);
161
168
  (0, import_vitest.expect)(validatedAuthID).toBe("u1");
162
169
  (0, import_vitest.expect)(effectAuthID).toBe("u1");
170
+ (0, import_vitest.expect)(statements).toEqual([{
171
+ table: "project",
172
+ publicTable: "project",
173
+ kind: "insert"
174
+ }]);
163
175
  });
164
176
  (0, import_vitest.test)("returns a structural application error and drops rolled-back effects", async function () {
165
177
  var effectRuns = 0;
@@ -1 +1 @@
1
- {"version":3,"names":["import_node_sqlite","require","import_zero","v","__toESM","import_vitest","import_mutatorContext","import_fixtureSchema","import_syncHost","import_zql","queries","defineQueries","project","byOwner","defineQuery","object","ownerId","string","param","args","zql","where","describe","db","executor","transaction","lastQueryFormat","beforeEach","DatabaseSync","exec","sql","params","arguments","length","prepare","run","query","all","queryAst","_ast","format","rows","singular","work","effects","value","defer","effect2","push","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","effect","err","return","error","afterEach","close","test","effectAuthID","validatedAuthID","adapter","createZeroSyncHostAdapter","schema","zeroHttpFixtureSchema","models","mutate","create","authData","server","tx","expect","id","toBe","insert","asyncTasks","_getScopedAuthData","getScopedAuthData","createServerActions","validateMutation","Object","keys","mutators","toEqual","context","name","mutationContext","effectRuns","reject","Error","catch","caught","toMatchObject","message","details","q","one","resolves"],"sources":["../../src/syncHost.test.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;gBAAA;AAEA,IAAAA,kBAA2C,GAAAC,OAAA;AAC3C,IAAAC,WAAmB,GAAAD,OAAA;AACnB,IAAAE,CAAA,GAAAC,OAAA,CAAAH,OAA8D;AAE9D,IAAAI,aAAA,GAAAJ,OAAA,CAAkC;AAClC,IAAAK,qBAAA,GAAsCL,OAAA;AACtC,IAAAM,oBAA0C,GAAAN,OAAA;AAC1C,IAAAO,eAAoB,GAAAP,OAAA;AASpB,IAAAQ,UAAM,GAAAR,OAAU;AAAc,IAC5BS,OAAS,OAAAR,WAAA,CAAAS,aAAA;EAAAC,OACP;IAASC,OAAc,IAAO,EAAEX,WAAW,CAAAY,WAAU,EAAAX,CAAA,CAAAY,MAAA;MAAGC,OAAG,EAAKb,CAAA,CAAAc,MAC9D;IACF,cAAAC,KAAA;MACF;QAAAC;MAAA,IAAAD,KAAA;MACD,OAAAT,UAAA,CAAAW,GAAA,CAAAR,OAAA,CAAAS,KAAA,YAAAF,IAAA,CAAAH,OAAA;IAED;EACE;AACA;AACA,IAAAX,aAAI,CAAAiB,QAAA;EACJ,IAAIC,EAAA;EAEJ,IAAAC,QAAA;EACE,IAAAC,WAAS;EACT,IAAAC,eAAG;EAAA,IACDrB,aAAA,CAAAsB,UAAA;IACFJ,EAAA,OAAAvB,kBAAA,CAAA4B,YAAA;IACAL,EAAA,CAAAM,IAAA,wFAAW;IAAAL,QACJ;MACHK,KAAGC,GAAA;QACL,IAAAC,MAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;QACAT,EAAA,CAAAW,OAAgD,CAAAJ,GAAA,EAAAK,GAAU,IAAGJ,MAAA;MAC3D;MACFK,MAAAN,GAAA;QACA,IAAAC,MAAiB,GAAMC,SAAQ,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;QAC7B,OAAAT,EAAA,CAAAW,OAAA,CAAkBJ,GAAA,EAAAO,GAAA,IAAAN,MAAA;MAClB;MACAO,SAAQC,IAAA,EAAAC,MAAO;QACjBd,eAAA,GAAAc,MAAA;QACF,IAAAC,IAAA,GAAAlB,EAAA,CAAAW,OAAA,sCAAAG,GAAA;QACA,OAAAG,MAAc,CAAAE,QAAO,GAAAD,IAAS,MAAAA,IAAA;MAC5B;IACA;IACAhB,WAAI,kBAAAA,CAAAkB,IAAA;MACF,IAAAC,OAAM,KAAQ;MAAqBrB,EAAA,CAAAM,IACjC,QAAM;MACJ;QAAmB,IACrBgB,KAAA,SAAAF,IAAA,CAAAnB,QAAA;UACDsB,MAAAC,OAAA;YACEH,OAAK,CAAAI,IAAQ,CAAAD,OAAA;UAChB;QACA;QACFxB,EAAA,CAAAM,IAAS,SAAO;QACd,IAAGoB,yBAAe;UAAAC,iBAAA;UAAAC,cAAA;QAClB;UACF,SAAAC,SAAA,GAAAR,OAAA,CAAAS,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;YACF,IAAAS,MAAA,GAAAH,KAAA,CAAAV,KAAA;YACD,MAAAa,MAAA;UAED;QACK,SAAMC,GAAA;UACVT,iBAAA;UAEDC,cAAA,GAAKQ,GAAA;QACC;UACA;YACE,KAAAV,yBAAU,IAAAG,SAAA,CAAAQ,MAAA,QAA0B;cAChCR,SAAA,CAAAQ,MAAA;YACR;UACE,UAAS;YACP,IAAAV,iBAAQ;cACN,MAAQC,cAAS;YACf;UACA;QACA;QACE,OAAAN,KAAA;MAAoC,SACrCgB,KAAA;QAAAtC,EAAA,CAAAM,IACH;QAAA,MACFgC,KAAA;MAAA;IACF;EACF;EAC6B,IAC7BxD,aAAA,CAAAyD,SAAA;IAAAvC,EACA,CAAAwC,KAAA;EAAA;EAEE,IAAA1D,aAAA,CAAA2D,IAAA,EAAkB,oEAAU;IAAA,IAC9BC,YAAA;IACF,IAACC,eAAA;IAED,IAAAC,OAAA,OAAA3D,eAAc,CAAA4D,yBAAwB;MACpCC,MAAA,EAAA9D,oBAAA,CAAA+D,qBAAA;MACAC,MAAA;QACD3D,OAAA;UACK4D,MAAA;YAAiBC,MAAA,iBAAAA,CACbvD,KAAS,EAAA2B,KAAA;cACf;gBAAA6B,QAAA;gBAAAC,MAAA;gBAAAC;cAAA,IAAA1D,KAAA;cACM,IAAAb,aAAe,CAAAwE,MAAM,EAAAH,QAAM,KAAQ,QAAAA,QAAA,uBAAAA,QAAA,CAAAI,EAAA,EAAAC,IAAA;cACzC,MAAAH,EAAA,CAAAJ,MAAgB,CAAA5D,OAAO,CAAAoE,MAAA,CAAAnC,KAAA;cACzB8B,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAM,UAAA,CAAAjC,IAAA;gBACF,IAAAkC,kBAAA;gBAEAjB,YAAA,GAAO,CAAAiB,kBAAW,OAAA5E,qBAAgC,CAAA6E,iBAAQ,iBAAAD,kBAAA,uBAAAA,kBAAA,CAAAJ,EAAA;cAClD;YACP;UACD;QACA;MACD;MAEDM,mBAAA,EAAK,SAAAA,CAAA;QACC;MACJ;MACE1E,OAAA;MACAe,WAAQ;MAAA4D,gBACGA,CAAAnE,KAAA;QAAA,IACP;UAAAwD;QAAQ,IAAAxD,KAAA;QAAAgD,eACE,GAAAQ,QAAS,KAAQ,IAAM,IAAAA,QAAmC,uBAAAA,QAAA,CAAAI,EAAA;MAChE;IACA;IACE,IAAAzE,aAAA,CAAAwE,MAAA,EAAAS,MAAA,CAAAC,IAAA,CAAApB,OAAA,CAAAqB,QAAA,GAAAC,OAAA,kBACD,EACD,sBAAU,CAAc;IAC1B,MACFhE,WAAA,WAAAmD,EAAA,EAAAc,OAAA;MAAA,OACFvB,OAAA,CAAAqB,QAAA,mBAAAZ,EAAA;QACFE,EAAA;QACA9D,OAAA;QACA2E,IAAA;MACD,GAAAC,eAAA,CAAAF,OAAA;IAED;IAAoB,EAAY,EAACrF,aAAI,CAAAwE,MACnC,EAAAtD,EAAQ,CAAAW,OAAS,wBAAgB,EAAAG,GAAA,IAAAoD,OAAA;MAE/BX,EAAE,MAAI;MACN9D,OAAA;MACF2E,IAAA;IACA,EAEF;IAA4B,EAC1B,EAAAtF,aAAM,CAAAwE,MAAA,EAAAX,eAAA,EAAAa,IAAA;IAAA,EACN,EAAA1E,aAAS,CAAAwE,MAAA,EAAAZ,YAAA,EAAAc,IAAA;EAAA;EACA,EACX,EAAC1E,aAAA,CAAA2D,IAAA;IACD,IAAA6B,UAAA;IACA,IAAA1B,OAAA,OAAA3D,eAAO,CAAA4D,yBAAkB;MAC1BC,MAAA,EAAA9D,oBAAA,CAAA+D,qBAAA;MAEDC,MAAA;QACK3D,OAAQ;UACT4D,MAAA;YACAsB,MAAA,iBAAAA,CAAA5E,KAAA,EAAA2B,KAAA;cACA;gBAAA8B,MAAA;gBAAAC;cAAA,IAAA1D,KAAA;cACF,MAAA0D,EAAA,CAAAJ,MAAA,CAAA5D,OAAA,CAAAoE,MAAA,CAAAnC,KAAA;cACM8B,MAAA,KAAU,QAAAA,MAAA,uBAAAA,MAA0B,CAAAM,UAAA,CAAAjC,IAAA;gBAChC6C,UAAA;cACA,CAAC;cACT,UAAAE,KAAqB,SAAQ;YAC7B;UACD;QAED;MACE;MACAX,mBAAS,WAAAA,CAAA;QACT,OAAM;MACP;MACD3D;IACD;IAED,IAAAoC,KAAA,SAAApC,WAAK,WAAAmD,EAAA,EAAAc,OAAA;MACH,OAAIvB,OAAA,CAAAqB,QAAA,mBAAAZ,EAAA;QACJE,EAAM;QACJ9D,OAAQ;QACR2E,IAAA,EAAQ;MACR,GAAAC,eAAA,CAAAF,OAAqB,EAAO;IAAC,EAC7B,CAAAM,KAAA,WAAAC,MAAA;MACA,OAAAA,MAAA;IAAA,EACA;IACE,IAAA5F,aAAa,CAAAwE,MAAA,EAAAhB,KAAA,EAAAqC,aAAA;MACfP,IAAA;MACDQ,OAAA;MAEDC,OAAM;IAAyE,EAC7E;IAAQ,EACR,EAAA/F,aAAM,CAAAwE,MAAA,EAAAtD,EAAA,CAAAW,OAAA,0BAAAG,GAAA,IAAAoD,OAAA;IACR,CAAC,GAAApF,aAAA,CAAAwE,MAAA,EAAAgB,UAAA,EAAAd,IAAA;EAED;EACA,IAAA1E,aAAA,CAAA2D,IAAA,qEAA+C;IAC/CzC,EAAA,CAAAW,OAAA,2DAA0C,EAAAC,GAAA;IAC1C,IAAAgC,OAAA,OAAA3D,eAAO,CAAA4D,yBAAoB;MACzBC,MAAA,EAAA9D,oBAA4B,CAAA+D,qBAAkB;MAC9CC,MAAA;MACAa,mBAAmB,WAAAA,CAAA,EAAK;QACzB;MACF;MACF3D;IAED;IAGE,MAAO,IAAApB,aAAA,CAAAwE,MAAA,EAAAV,OAAA,CAAAQ,MAAA,CAAAvC,KAAA,WAAAiE,CAAA;MACL,OAAGA,CAAA,CAAAzF,OAAA,CAAA0F,GAAA;IACH,IAAAC,QAAU,CAAAd,OAAQ;MAClBX,EAAA,MAAU;MACV9D,OAAA,MAAY;MACd2E,IAAA;IACF","ignoreList":[]}
1
+ {"version":3,"names":["import_node_sqlite","require","import_zero","v","__toESM","import_vitest","import_mutatorContext","import_fixtureSchema","import_syncHost","import_zql","queries","defineQueries","project","byOwner","defineQuery","object","ownerId","string","param","args","zql","where","describe","db","executor","transaction","lastQueryFormat","statements","beforeEach","DatabaseSync","exec","sql","params","arguments","length","metadata","push","result","prepare","run","changes","Number","query","all","queryAst","_ast","format","rows","singular","work","effects","value","defer","effect2","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","effect","err","return","error","afterEach","close","test","effectAuthID","validatedAuthID","adapter","createZeroSyncHostAdapter","schema","zeroHttpFixtureSchema","models","mutate","create","authData","server","tx","expect","id","toBe","insert","asyncTasks","_getScopedAuthData","getScopedAuthData","createServerActions","validateMutation","Object","keys","mutators","toEqual","context","name","mutationContext","table","publicTable","kind","effectRuns","reject","Error","catch","caught","toMatchObject","message","details","q"],"sources":["../../src/syncHost.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { drizzleZeroConfig } from "drizzle-zero";
2
- import { createZeroTableBuilder } from "drizzle-zero";
1
+ import { drizzleZeroConfig } from "drizzle-zero-sqlite";
2
+ import { createZeroTableBuilder } from "drizzle-zero-sqlite";
3
3
  import { generateDrizzleSchemaFile } from "./generate.mjs";
4
4
  export { drizzleZeroConfig as createSchemaFromDrizzle, createZeroTableBuilder, generateDrizzleSchemaFile };
5
5
  //# sourceMappingURL=createSchemaFromDrizzle.mjs.map
@@ -1,5 +1,5 @@
1
- import { drizzleZeroConfig } from "drizzle-zero";
2
- import { createZeroTableBuilder } from "drizzle-zero";
1
+ import { drizzleZeroConfig } from "drizzle-zero-sqlite";
2
+ import { createZeroTableBuilder } from "drizzle-zero-sqlite";
3
3
  import { generateDrizzleSchemaFile } from "./generate.native.js";
4
4
  export { drizzleZeroConfig as createSchemaFromDrizzle, createZeroTableBuilder, generateDrizzleSchemaFile };
5
5
  //# sourceMappingURL=createSchemaFromDrizzle.native.js.map
@@ -0,0 +1,251 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { createPermissions } from "./createPermissions.mjs";
3
+ import { createMutators } from "./helpers/createMutators.mjs";
4
+ import { getScopedAuthData, isInZeroMutation, mutatorContext, runWithAuthScope } from "./helpers/mutatorContext.mjs";
5
+ import { runWithQueryContext } from "./helpers/queryContext.mjs";
6
+ import { getMutationsPermissions } from "./modelRegistry.mjs";
7
+ import { setCustomQueries } from "./run.mjs";
8
+ import { getZQL, setEnvironment, setSchema } from "./state.mjs";
9
+ import { setEvaluatingPermission } from "./where.mjs";
10
+ import { setRunner } from "./zeroRunner.mjs";
11
+ function resolveServerQuery({
12
+ authData,
13
+ name,
14
+ args,
15
+ queries,
16
+ permissions,
17
+ validateQuery
18
+ }) {
19
+ if (name.startsWith("permission.")) {
20
+ const table = name.slice("permission.".length);
21
+ const {
22
+ objOrId
23
+ } = args;
24
+ const permission = getMutationsPermissions(table);
25
+ if (!permission) {
26
+ throw new Error(`[permission] no permission defined for table: ${table}`);
27
+ }
28
+ setEvaluatingPermission(true);
29
+ try {
30
+ return getZQL()[table].where(eb => {
31
+ return permissions.buildPermissionQuery(authData, eb, permission, objOrId, table);
32
+ }).one();
33
+ } finally {
34
+ setEvaluatingPermission(false);
35
+ }
36
+ }
37
+ if (validateQuery) {
38
+ validateQuery({
39
+ authData,
40
+ queryName: name,
41
+ params: args
42
+ });
43
+ }
44
+ const query = mustGetQuery(queries, name);
45
+ return query.fn({
46
+ args,
47
+ ctx: authData
48
+ });
49
+ }
50
+ function createAsyncTaskCollector() {
51
+ const committed = [];
52
+ let attempt;
53
+ let completedAttempt;
54
+ const current = () => attempt ?? committed;
55
+ const queue = new Proxy([], {
56
+ deleteProperty(_target, property) {
57
+ return Reflect.deleteProperty(current(), property);
58
+ },
59
+ get(_target, property) {
60
+ const target = current();
61
+ const value = Reflect.get(target, property, target);
62
+ return typeof value === "function" ? value.bind(target) : value;
63
+ },
64
+ getOwnPropertyDescriptor(_target, property) {
65
+ return Reflect.getOwnPropertyDescriptor(current(), property);
66
+ },
67
+ has(_target, property) {
68
+ return Reflect.has(current(), property);
69
+ },
70
+ ownKeys() {
71
+ return Reflect.ownKeys(current());
72
+ },
73
+ set(_target, property, value) {
74
+ return Reflect.set(current(), property, value);
75
+ }
76
+ });
77
+ const lifecycle = {
78
+ beginAttempt() {
79
+ attempt = [];
80
+ completedAttempt = void 0;
81
+ },
82
+ completeAttempt() {
83
+ completedAttempt = attempt;
84
+ attempt = void 0;
85
+ },
86
+ rollbackAttempt() {
87
+ attempt = void 0;
88
+ completedAttempt = void 0;
89
+ },
90
+ commitTransaction() {
91
+ if (completedAttempt) committed.push(...completedAttempt);
92
+ completedAttempt = void 0;
93
+ },
94
+ rollbackTransaction() {
95
+ attempt = void 0;
96
+ completedAttempt = void 0;
97
+ }
98
+ };
99
+ return {
100
+ committed,
101
+ lifecycle,
102
+ queue
103
+ };
104
+ }
105
+ function createZeroDirectServerRuntime({
106
+ createDatabase,
107
+ createServerActions,
108
+ defaultAllowAdminRole = "all",
109
+ defaultMutateAuthData = {},
110
+ models,
111
+ mutations: mutationValidators,
112
+ queries,
113
+ schema,
114
+ validateMutation,
115
+ validateQuery
116
+ }) {
117
+ setSchema(schema);
118
+ setEnvironment("server");
119
+ const permissions = createPermissions({
120
+ environment: "server",
121
+ schema,
122
+ adminRoleMode: defaultAllowAdminRole
123
+ });
124
+ async function runTransaction(database, query2) {
125
+ try {
126
+ if (isInZeroMutation()) {
127
+ const {
128
+ tx
129
+ } = mutatorContext();
130
+ return await query2(tx);
131
+ }
132
+ return await database.transaction(query2, dummyTransactionInput);
133
+ } catch (err) {
134
+ if (err?.name !== "PermissionError") {
135
+ console.error(`Error running transaction(): ${err}`);
136
+ }
137
+ throw err;
138
+ }
139
+ }
140
+ async function transaction(query2) {
141
+ return runTransaction(createDatabase(), query2);
142
+ }
143
+ async function runMutate(modelName, mutatorName, mutatorArg, options) {
144
+ let authData = options?.authData;
145
+ if (!authData) {
146
+ const scoped = getScopedAuthData();
147
+ if (scoped) authData = scoped;
148
+ }
149
+ const tasks = createAsyncTaskCollector();
150
+ const mutators = createMutators({
151
+ models,
152
+ environment: "server",
153
+ asyncTasks: tasks.queue,
154
+ authData: {
155
+ ...defaultMutateAuthData,
156
+ ...authData
157
+ },
158
+ createServerActions,
159
+ can: permissions.can,
160
+ validateMutation,
161
+ mutationValidators
162
+ });
163
+ const modelMutators = mutators[modelName];
164
+ const mutator = modelMutators[mutatorName];
165
+ await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async tx => {
166
+ await mutator(tx, mutatorArg);
167
+ });
168
+ if (tasks.committed.length) {
169
+ const resolvedAuth = authData ?? null;
170
+ const promise = Promise.all(tasks.committed.map(task => runWithAuthScope(resolvedAuth, task)));
171
+ if (options?.awaitEffects) {
172
+ await promise;
173
+ } else {
174
+ promise.catch(err => {
175
+ console.error("[mutate] async tasks failed", err);
176
+ });
177
+ }
178
+ }
179
+ }
180
+ const mutate = new Proxy({}, {
181
+ get(_, modelName) {
182
+ return new Proxy({}, {
183
+ get(_2, mutatorName) {
184
+ return (arg, options) => runMutate(modelName, mutatorName, arg, options);
185
+ }
186
+ });
187
+ }
188
+ });
189
+ function query(cb, authData) {
190
+ const run = () => transaction(async tx => {
191
+ return tx.run(cb(getZQL()));
192
+ });
193
+ if (authData !== void 0) {
194
+ return runWithQueryContext({
195
+ authData
196
+ }, run);
197
+ }
198
+ return run();
199
+ }
200
+ if (queries) {
201
+ setCustomQueries(queries);
202
+ }
203
+ setRunner(queryObj => {
204
+ return transaction(async tx => {
205
+ return tx.run(queryObj);
206
+ });
207
+ });
208
+ return {
209
+ permissions,
210
+ server: {
211
+ transaction,
212
+ mutate,
213
+ query
214
+ }
215
+ };
216
+ }
217
+ function createZeroDirectServer(options) {
218
+ return createZeroDirectServerRuntime(options).server;
219
+ }
220
+ function createDatabaseWithLifecycle(database, lifecycle) {
221
+ return {
222
+ async transaction(callback, input) {
223
+ try {
224
+ const value = await database.transaction(async (tx, hooks) => {
225
+ lifecycle.beginAttempt();
226
+ try {
227
+ const result = await callback(tx, hooks);
228
+ lifecycle.completeAttempt();
229
+ return result;
230
+ } catch (error) {
231
+ lifecycle.rollbackAttempt();
232
+ throw error;
233
+ }
234
+ }, input);
235
+ lifecycle.commitTransaction();
236
+ return value;
237
+ } catch (error) {
238
+ lifecycle.rollbackTransaction();
239
+ throw error;
240
+ }
241
+ }
242
+ };
243
+ }
244
+ const dummyTransactionInput = {
245
+ clientGroupID: "unused",
246
+ clientID: "unused",
247
+ mutationID: 42,
248
+ upstreamSchema: "unused"
249
+ };
250
+ export { createAsyncTaskCollector, createZeroDirectServer, createZeroDirectServerRuntime, resolveServerQuery };
251
+ //# sourceMappingURL=createZeroDirectServer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mustGetQuery","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","createZeroDirectServerRuntime","createDatabase","createServerActions","defaultAllowAdminRole","defaultMutateAuthData","models","mutations","mutationValidators","schema","validateMutation","environment","adminRoleMode","runTransaction","database","query2","tx","transaction","dummyTransactionInput","err","console","error","runMutate","modelName","mutatorName","mutatorArg","options","scoped","tasks","mutators","asyncTasks","can","modelMutators","mutator","createDatabaseWithLifecycle","resolvedAuth","promise","Promise","all","map","task","awaitEffects","catch","mutate","_","_2","arg","cb","run","queryObj","server","createZeroDirectServer","callback","input","hooks","result","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroDirectServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,261 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { createPermissions } from "./createPermissions.native.js";
3
+ import { createMutators } from "./helpers/createMutators.native.js";
4
+ import { getScopedAuthData, isInZeroMutation, mutatorContext, runWithAuthScope } from "./helpers/mutatorContext.native.js";
5
+ import { runWithQueryContext } from "./helpers/queryContext.native.js";
6
+ import { getMutationsPermissions } from "./modelRegistry.native.js";
7
+ import { setCustomQueries } from "./run.native.js";
8
+ import { getZQL, setEnvironment, setSchema } from "./state.native.js";
9
+ import { setEvaluatingPermission } from "./where.native.js";
10
+ import { setRunner } from "./zeroRunner.native.js";
11
+ function resolveServerQuery(param) {
12
+ var {
13
+ authData,
14
+ name,
15
+ args,
16
+ queries,
17
+ permissions,
18
+ validateQuery
19
+ } = param;
20
+ if (name.startsWith("permission.")) {
21
+ var table = name.slice("permission.".length);
22
+ var {
23
+ objOrId
24
+ } = args;
25
+ var 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(function (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
+ var query = mustGetQuery(queries, name);
46
+ return query.fn({
47
+ args,
48
+ ctx: authData
49
+ });
50
+ }
51
+ function createAsyncTaskCollector() {
52
+ var committed = [];
53
+ var attempt;
54
+ var completedAttempt;
55
+ var current = function () {
56
+ return attempt !== null && attempt !== void 0 ? attempt : committed;
57
+ };
58
+ var queue = new Proxy([], {
59
+ deleteProperty(_target, property) {
60
+ return Reflect.deleteProperty(current(), property);
61
+ },
62
+ get(_target, property) {
63
+ var target = current();
64
+ var value = Reflect.get(target, property, target);
65
+ return typeof value === "function" ? value.bind(target) : value;
66
+ },
67
+ getOwnPropertyDescriptor(_target, property) {
68
+ return Reflect.getOwnPropertyDescriptor(current(), property);
69
+ },
70
+ has(_target, property) {
71
+ return Reflect.has(current(), property);
72
+ },
73
+ ownKeys() {
74
+ return Reflect.ownKeys(current());
75
+ },
76
+ set(_target, property, value) {
77
+ return Reflect.set(current(), property, value);
78
+ }
79
+ });
80
+ var lifecycle = {
81
+ beginAttempt() {
82
+ attempt = [];
83
+ completedAttempt = void 0;
84
+ },
85
+ completeAttempt() {
86
+ completedAttempt = attempt;
87
+ attempt = void 0;
88
+ },
89
+ rollbackAttempt() {
90
+ attempt = void 0;
91
+ completedAttempt = void 0;
92
+ },
93
+ commitTransaction() {
94
+ if (completedAttempt) committed.push(...completedAttempt);
95
+ completedAttempt = void 0;
96
+ },
97
+ rollbackTransaction() {
98
+ attempt = void 0;
99
+ completedAttempt = void 0;
100
+ }
101
+ };
102
+ return {
103
+ committed,
104
+ lifecycle,
105
+ queue
106
+ };
107
+ }
108
+ function createZeroDirectServerRuntime(param) {
109
+ var {
110
+ createDatabase,
111
+ createServerActions,
112
+ defaultAllowAdminRole = "all",
113
+ defaultMutateAuthData = {},
114
+ models,
115
+ mutations: mutationValidators,
116
+ queries,
117
+ schema,
118
+ validateMutation,
119
+ validateQuery
120
+ } = param;
121
+ setSchema(schema);
122
+ setEnvironment("server");
123
+ var permissions = createPermissions({
124
+ environment: "server",
125
+ schema,
126
+ adminRoleMode: defaultAllowAdminRole
127
+ });
128
+ async function runTransaction(database, query2) {
129
+ try {
130
+ if (isInZeroMutation()) {
131
+ var {
132
+ tx
133
+ } = mutatorContext();
134
+ return await query2(tx);
135
+ }
136
+ return await database.transaction(query2, dummyTransactionInput);
137
+ } catch (err) {
138
+ if ((err === null || err === void 0 ? void 0 : err.name) !== "PermissionError") {
139
+ console.error(`Error running transaction(): ${err}`);
140
+ }
141
+ throw err;
142
+ }
143
+ }
144
+ async function transaction(query2) {
145
+ return runTransaction(createDatabase(), query2);
146
+ }
147
+ async function runMutate(modelName, mutatorName, mutatorArg, options) {
148
+ var authData = options === null || options === void 0 ? void 0 : options.authData;
149
+ if (!authData) {
150
+ var scoped = getScopedAuthData();
151
+ if (scoped) authData = scoped;
152
+ }
153
+ var tasks = createAsyncTaskCollector();
154
+ var mutators = createMutators({
155
+ models,
156
+ environment: "server",
157
+ asyncTasks: tasks.queue,
158
+ authData: {
159
+ ...defaultMutateAuthData,
160
+ ...authData
161
+ },
162
+ createServerActions,
163
+ can: permissions.can,
164
+ validateMutation,
165
+ mutationValidators
166
+ });
167
+ var modelMutators = mutators[modelName];
168
+ var mutator = modelMutators[mutatorName];
169
+ await runTransaction(createDatabaseWithLifecycle(createDatabase(), tasks.lifecycle), async function (tx) {
170
+ await mutator(tx, mutatorArg);
171
+ });
172
+ if (tasks.committed.length) {
173
+ var resolvedAuth = authData !== null && authData !== void 0 ? authData : null;
174
+ var promise = Promise.all(tasks.committed.map(function (task) {
175
+ return runWithAuthScope(resolvedAuth, task);
176
+ }));
177
+ if (options === null || options === void 0 ? void 0 : options.awaitEffects) {
178
+ await promise;
179
+ } else {
180
+ promise.catch(function (err) {
181
+ console.error("[mutate] async tasks failed", err);
182
+ });
183
+ }
184
+ }
185
+ }
186
+ var mutate = new Proxy({}, {
187
+ get(_, modelName) {
188
+ return new Proxy({}, {
189
+ get(_2, mutatorName) {
190
+ return function (arg, options) {
191
+ return runMutate(modelName, mutatorName, arg, options);
192
+ };
193
+ }
194
+ });
195
+ }
196
+ });
197
+ function query(cb, authData) {
198
+ var run = function () {
199
+ return transaction(async function (tx) {
200
+ return tx.run(cb(getZQL()));
201
+ });
202
+ };
203
+ if (authData !== void 0) {
204
+ return runWithQueryContext({
205
+ authData
206
+ }, run);
207
+ }
208
+ return run();
209
+ }
210
+ if (queries) {
211
+ setCustomQueries(queries);
212
+ }
213
+ setRunner(function (queryObj) {
214
+ return transaction(async function (tx) {
215
+ return tx.run(queryObj);
216
+ });
217
+ });
218
+ return {
219
+ permissions,
220
+ server: {
221
+ transaction,
222
+ mutate,
223
+ query
224
+ }
225
+ };
226
+ }
227
+ function createZeroDirectServer(options) {
228
+ return createZeroDirectServerRuntime(options).server;
229
+ }
230
+ function createDatabaseWithLifecycle(database, lifecycle) {
231
+ return {
232
+ async transaction(callback, input) {
233
+ try {
234
+ var value = await database.transaction(async function (tx, hooks) {
235
+ lifecycle.beginAttempt();
236
+ try {
237
+ var result = await callback(tx, hooks);
238
+ lifecycle.completeAttempt();
239
+ return result;
240
+ } catch (error) {
241
+ lifecycle.rollbackAttempt();
242
+ throw error;
243
+ }
244
+ }, input);
245
+ lifecycle.commitTransaction();
246
+ return value;
247
+ } catch (error) {
248
+ lifecycle.rollbackTransaction();
249
+ throw error;
250
+ }
251
+ }
252
+ };
253
+ }
254
+ var dummyTransactionInput = {
255
+ clientGroupID: "unused",
256
+ clientID: "unused",
257
+ mutationID: 42,
258
+ upstreamSchema: "unused"
259
+ };
260
+ export { createAsyncTaskCollector, createZeroDirectServer, createZeroDirectServerRuntime, resolveServerQuery };
261
+ //# sourceMappingURL=createZeroDirectServer.native.js.map