litedbmodel 2.2.2 → 2.2.3

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 (105) hide show
  1. package/README.md +2 -1
  2. package/dist/DBModel.d.ts.map +1 -1
  3. package/dist/DBModel.js +3 -0
  4. package/dist/DBModel.js.map +1 -1
  5. package/dist/Middleware.d.ts +19 -2
  6. package/dist/Middleware.d.ts.map +1 -1
  7. package/dist/Middleware.js +1 -0
  8. package/dist/Middleware.js.map +1 -1
  9. package/dist/decorators.d.ts.map +1 -1
  10. package/dist/decorators.js +8 -0
  11. package/dist/decorators.js.map +1 -1
  12. package/dist/drivers/MysqlHelper.d.ts +1 -1
  13. package/dist/drivers/MysqlHelper.d.ts.map +1 -1
  14. package/dist/drivers/MysqlHelper.js.map +1 -1
  15. package/dist/drivers/PostgresHelper.d.ts +1 -1
  16. package/dist/drivers/PostgresHelper.d.ts.map +1 -1
  17. package/dist/drivers/PostgresHelper.js.map +1 -1
  18. package/dist/drivers/SqliteHelper.d.ts +1 -1
  19. package/dist/drivers/SqliteHelper.d.ts.map +1 -1
  20. package/dist/drivers/SqliteHelper.js.map +1 -1
  21. package/dist/index.cjs +99 -33
  22. package/dist/scp/connection-routing.d.ts +38 -1
  23. package/dist/scp/connection-routing.d.ts.map +1 -1
  24. package/dist/scp/connection-routing.js +64 -5
  25. package/dist/scp/connection-routing.js.map +1 -1
  26. package/dist/scp/dbmodel-runtime.d.ts +2 -1
  27. package/dist/scp/dbmodel-runtime.d.ts.map +1 -1
  28. package/dist/scp/dbmodel-runtime.js +2 -1
  29. package/dist/scp/dbmodel-runtime.js.map +1 -1
  30. package/dist/scp/decorator-adapter.d.ts +22 -0
  31. package/dist/scp/decorator-adapter.d.ts.map +1 -1
  32. package/dist/scp/decorator-adapter.js +26 -0
  33. package/dist/scp/decorator-adapter.js.map +1 -1
  34. package/dist/scp/emit/emitter.d.ts +21 -10
  35. package/dist/scp/emit/emitter.d.ts.map +1 -1
  36. package/dist/scp/emit/emitter.js +119 -51
  37. package/dist/scp/emit/emitter.js.map +1 -1
  38. package/dist/scp/emit/endpoint.d.ts +3 -8
  39. package/dist/scp/emit/endpoint.d.ts.map +1 -1
  40. package/dist/scp/exec-context.d.ts +39 -17
  41. package/dist/scp/exec-context.d.ts.map +1 -1
  42. package/dist/scp/exec-context.js +69 -35
  43. package/dist/scp/exec-context.js.map +1 -1
  44. package/dist/scp/grouping.d.ts.map +1 -1
  45. package/dist/scp/grouping.js +0 -0
  46. package/dist/scp/grouping.js.map +1 -1
  47. package/dist/scp/index.cjs +251 -629
  48. package/dist/scp/index.d.ts +6 -11
  49. package/dist/scp/index.d.ts.map +1 -1
  50. package/dist/scp/index.js +10 -28
  51. package/dist/scp/index.js.map +1 -1
  52. package/dist/scp/index.mjs +251 -617
  53. package/dist/scp/leaf-transport.d.ts +127 -39
  54. package/dist/scp/leaf-transport.d.ts.map +1 -1
  55. package/dist/scp/leaf-transport.js +30 -24
  56. package/dist/scp/leaf-transport.js.map +1 -1
  57. package/dist/scp/leaves.d.ts +57 -20
  58. package/dist/scp/leaves.d.ts.map +1 -1
  59. package/dist/scp/leaves.js +224 -65
  60. package/dist/scp/leaves.js.map +1 -1
  61. package/dist/scp/makesql/compile-select.d.ts +28 -1
  62. package/dist/scp/makesql/compile-select.d.ts.map +1 -1
  63. package/dist/scp/makesql/compile-select.js +19 -17
  64. package/dist/scp/makesql/compile-select.js.map +1 -1
  65. package/dist/scp/makesql/index.d.ts +2 -2
  66. package/dist/scp/makesql/index.d.ts.map +1 -1
  67. package/dist/scp/makesql/index.js +4 -6
  68. package/dist/scp/makesql/index.js.map +1 -1
  69. package/dist/scp/makesql/tx.d.ts +27 -69
  70. package/dist/scp/makesql/tx.d.ts.map +1 -1
  71. package/dist/scp/makesql/tx.js +26 -448
  72. package/dist/scp/makesql/tx.js.map +1 -1
  73. package/dist/scp/middleware.d.ts +4 -4
  74. package/dist/scp/middleware.d.ts.map +1 -1
  75. package/dist/scp/middleware.js +2 -2
  76. package/dist/scp/middleware.js.map +1 -1
  77. package/dist/scp/relation.d.ts +31 -12
  78. package/dist/scp/relation.d.ts.map +1 -1
  79. package/dist/scp/relation.js +16 -6
  80. package/dist/scp/relation.js.map +1 -1
  81. package/dist/scp/typed-object.d.ts +23 -19
  82. package/dist/scp/typed-object.d.ts.map +1 -1
  83. package/dist/scp/typed-object.js +24 -30
  84. package/dist/scp/typed-object.js.map +1 -1
  85. package/dist/scp/write-bundle.d.ts +21 -70
  86. package/dist/scp/write-bundle.d.ts.map +1 -1
  87. package/dist/scp/write-bundle.js +15 -79
  88. package/dist/scp/write-bundle.js.map +1 -1
  89. package/dist/types.d.ts +12 -0
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/types.js.map +1 -1
  92. package/docs/architecture.md +452 -0
  93. package/docs/design/phase-a-execution-context.md +2 -0
  94. package/package.json +14 -3
  95. package/dist/scp/writes.d.ts +0 -251
  96. package/dist/scp/writes.d.ts.map +0 -1
  97. package/dist/scp/writes.js +0 -176
  98. package/dist/scp/writes.js.map +0 -1
  99. package/docs/proposal/contracts-architecture-feasibility.md +0 -328
  100. package/docs/proposal/contracts-architecture.md +0 -579
  101. package/docs/proposal/litedbmodel-v2-scp-architecture.md +0 -433
  102. package/docs/proposal/sql-dynamic-expansion-spec.md +0 -175
  103. package/docs/proposal/v0-coverage-matrix.md +0 -157
  104. package/docs/proposal/v2-completeness-plan.md +0 -90
  105. package/docs/proposal/v2-sql-parity-checklist.md +0 -162
@@ -10,8 +10,8 @@
10
10
  * catalog leaf + handler + compile. Pure-JSON bundle, multi-language ready.
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.countingDriver = exports.executeTransactionAsync = exports.executeTransaction = exports.literalize = exports.deriveBatchPlan = exports.deriveTransactionPlan = exports.rowsHaveDbToken = exports.mysqlJsonTableColumn = exports.sqliteUpdateManyJson = exports.mysqlUpdateManyJson = exports.sqliteInsertJson = exports.mysqlInsertJson = exports.conditionsFor = exports.JsonArrayConditions = exports.encodeJsonArrayParam = exports.inListPredicate = exports.inListJson = exports.compileCompositeKeyStaticLimited = exports.compileCompositeKeyLimited = exports.compileCompositeKeyStaticUnlimited = exports.compileCompositeKeyUnlimited = exports.compileSingleKeyLimited = exports.compileSingleKeyUnlimited = exports.PG_ARRAY_CAST_TOKEN = exports.resolvePgArrayCast = exports.inferPgArrayType = exports.compileDeleteMany = exports.compileDelete = exports.compileUpdateSingle = exports.compileUpdateMany = exports.compileInsertMany = exports.compileInsert = exports.builderFor = exports.compileSelect = exports.noCastFormatter = exports.pgCastFormatter = exports.formatterFor = exports.andTrailing = exports.whereClause = exports.compileWhere = exports.makeSqlHandlerSync = exports.makeSqlHandler = exports.renderPorts = exports.renderPlaceholders = exports.composeMakeSQL = exports.assembleMakeSQL = exports.isMakeSQL = exports.LITEDBMODEL_MAKESQL_CATALOG = exports.makeSqlCatalogEntry = exports.MAKESQL = void 0;
14
- exports.mysqlPoolFactory = exports.pgPoolFactory = exports.mysqlConnectionPool = exports.pgConnectionPool = exports.mysqlDeboxPoolOptions = exports.configurePgDeboxTypeParsers = exports.bindReselect = exports.buildMysqlReselect = exports.stripMysqlPkHint = exports.mysqlPkHint = exports.IN_SENTINEL = exports.pgTypeSpecimen = exports.compileWriteNode = exports.renderTxStatement = void 0;
13
+ exports.pgTypeSpecimen = exports.compileWriteNode = exports.renderTxStatement = exports.executeTransactionAsync = exports.literalize = exports.deriveBatchPlan = exports.rowsHaveDbToken = exports.mysqlJsonTableColumn = exports.sqliteUpdateManyJson = exports.mysqlUpdateManyJson = exports.sqliteInsertJson = exports.mysqlInsertJson = exports.conditionsFor = exports.JsonArrayConditions = exports.encodeJsonArrayParam = exports.inListPredicate = exports.inListJson = exports.compileCompositeKeyStaticLimited = exports.compileCompositeKeyLimited = exports.compileCompositeKeyStaticUnlimited = exports.compileCompositeKeyUnlimited = exports.compileSingleKeyLimited = exports.compileSingleKeyUnlimited = exports.PG_ARRAY_CAST_TOKEN = exports.resolvePgArrayCast = exports.inferPgArrayType = exports.compileDeleteMany = exports.compileDelete = exports.compileUpdateSingle = exports.compileUpdateMany = exports.compileInsertMany = exports.compileInsert = exports.builderFor = exports.compileSelect = exports.noCastFormatter = exports.pgCastFormatter = exports.formatterFor = exports.andTrailing = exports.whereClause = exports.compileWhere = exports.makeSqlHandlerSync = exports.makeSqlHandler = exports.renderPorts = exports.renderPlaceholders = exports.composeMakeSQL = exports.assembleMakeSQL = exports.isMakeSQL = exports.LITEDBMODEL_MAKESQL_CATALOG = exports.makeSqlCatalogEntry = exports.MAKESQL = void 0;
14
+ exports.mysqlPoolFactory = exports.pgPoolFactory = exports.mysqlConnectionPool = exports.pgConnectionPool = exports.mysqlDeboxPoolOptions = exports.configurePgDeboxTypeParsers = exports.bindReselect = exports.buildMysqlReselect = exports.stripMysqlPkHint = exports.mysqlPkHint = exports.IN_SENTINEL = exports.ENTITY_ROOT = void 0;
15
15
  // Catalog leaf + assembly core.
16
16
  var makesql_1 = require("./makesql");
17
17
  Object.defineProperty(exports, "MAKESQL", { enumerable: true, get: function () { return makesql_1.MAKESQL; } });
@@ -72,17 +72,15 @@ Object.defineProperty(exports, "mysqlUpdateManyJson", { enumerable: true, get: f
72
72
  Object.defineProperty(exports, "sqliteUpdateManyJson", { enumerable: true, get: function () { return json_batch_1.sqliteUpdateManyJson; } });
73
73
  Object.defineProperty(exports, "mysqlJsonTableColumn", { enumerable: true, get: function () { return json_batch_1.mysqlJsonTableColumn; } });
74
74
  Object.defineProperty(exports, "rowsHaveDbToken", { enumerable: true, get: function () { return json_batch_1.rowsHaveDbToken; } });
75
- // Write-time relations → makeSQL transaction plan + 1-tx runtime (epic #43/#45 Phase B).
75
+ // Write descriptor → makeSQL statement, batch plan derivation, and the live async 1-tx runtime.
76
76
  var tx_1 = require("./tx");
77
- Object.defineProperty(exports, "deriveTransactionPlan", { enumerable: true, get: function () { return tx_1.deriveTransactionPlan; } });
78
77
  Object.defineProperty(exports, "deriveBatchPlan", { enumerable: true, get: function () { return tx_1.deriveBatchPlan; } });
79
78
  Object.defineProperty(exports, "literalize", { enumerable: true, get: function () { return tx_1.literalize; } });
80
- Object.defineProperty(exports, "executeTransaction", { enumerable: true, get: function () { return tx_1.executeTransaction; } });
81
79
  Object.defineProperty(exports, "executeTransactionAsync", { enumerable: true, get: function () { return tx_1.executeTransactionAsync; } });
82
- Object.defineProperty(exports, "countingDriver", { enumerable: true, get: function () { return tx_1.countingDriver; } });
83
80
  Object.defineProperty(exports, "renderTxStatement", { enumerable: true, get: function () { return tx_1.renderTxStatement; } });
84
81
  Object.defineProperty(exports, "compileWriteNode", { enumerable: true, get: function () { return tx_1.compileWriteNode; } });
85
82
  Object.defineProperty(exports, "pgTypeSpecimen", { enumerable: true, get: function () { return tx_1.pgTypeSpecimen; } });
83
+ Object.defineProperty(exports, "ENTITY_ROOT", { enumerable: true, get: function () { return tx_1.ENTITY_ROOT; } });
86
84
  Object.defineProperty(exports, "IN_SENTINEL", { enumerable: true, get: function () { return tx_1.IN_SENTINEL; } });
87
85
  // MySQL has no RETURNING: the pk-hint format + the write→re-select derivation the mysql connection
88
86
  // adapter (and the 4 native driver ports) share. ONE home for "MySQL cannot RETURN rows".
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scp/makesql/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,gCAAgC;AAChC,qCAOmB;AANjB,kGAAA,OAAO,OAAA;AACP,8GAAA,mBAAmB,OAAA;AACnB,sHAAA,2BAA2B,OAAA;AAC3B,oGAAA,SAAS,OAAA;AACT,0GAAA,eAAe,OAAA;AACf,yGAAA,cAAc,OAAA;AAIhB,wCAAwC;AACxC,qCAKmB;AAJjB,6GAAA,kBAAkB,OAAA;AAClB,sGAAA,WAAW,OAAA;AACX,yGAAA,cAAc,OAAA;AACd,6GAAA,kBAAkB,OAAA;AAIpB,yCAAyC;AACzC,qCAOmB;AANjB,uGAAA,YAAY,OAAA;AACZ,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AAGjB,yBAAyB;AACzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,kBAAkB;AAClB,+CAQwB;AAPtB,0GAAA,UAAU,OAAA;AACV,6GAAA,aAAa,OAAA;AACb,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,mHAAA,mBAAmB,OAAA;AACnB,6GAAA,aAAa,OAAA;AACb,iHAAA,iBAAiB,OAAA;AAInB,uBAAuB;AACvB,uDAU4B;AAT1B,oHAAA,gBAAgB,OAAA;AAChB,sHAAA,kBAAkB,OAAA;AAClB,uHAAA,mBAAmB,OAAA;AACnB,6HAAA,yBAAyB,OAAA;AACzB,2HAAA,uBAAuB,OAAA;AACvB,gIAAA,4BAA4B,OAAA;AAC5B,sIAAA,kCAAkC,OAAA;AAClC,8HAAA,0BAA0B,OAAA;AAC1B,oIAAA,gCAAgC,OAAA;AAIlC,gFAAgF;AAChF,wFAAwF;AACxF,2CAAqH;AAA5G,wGAAA,UAAU,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC9F,2CAOsB;AANpB,6GAAA,eAAe,OAAA;AACf,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AACpB,6GAAA,eAAe,OAAA;AAGjB,yFAAyF;AACzF,2BAWc;AAVZ,2GAAA,qBAAqB,OAAA;AACrB,qGAAA,eAAe,OAAA;AACf,gGAAA,UAAU,OAAA;AACV,wGAAA,kBAAkB,OAAA;AAClB,6GAAA,uBAAuB,OAAA;AACvB,oGAAA,cAAc,OAAA;AACd,uGAAA,iBAAiB,OAAA;AACjB,sGAAA,gBAAgB,OAAA;AAChB,oGAAA,cAAc,OAAA;AACd,iGAAA,WAAW,OAAA;AAGb,mGAAmG;AACnG,0FAA0F;AAC1F,qDAAoG;AAA3F,8GAAA,WAAW,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAAE,+GAAA,YAAY,OAAA;AAiBxE,mGAAmG;AACnG,oDAAoD;AACpD,iDAA6J;AAApJ,4HAAA,2BAA2B,OAAA;AAAE,sHAAA,qBAAqB,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAAE,iHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scp/makesql/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,gCAAgC;AAChC,qCAOmB;AANjB,kGAAA,OAAO,OAAA;AACP,8GAAA,mBAAmB,OAAA;AACnB,sHAAA,2BAA2B,OAAA;AAC3B,oGAAA,SAAS,OAAA;AACT,0GAAA,eAAe,OAAA;AACf,yGAAA,cAAc,OAAA;AAIhB,wCAAwC;AACxC,qCAKmB;AAJjB,6GAAA,kBAAkB,OAAA;AAClB,sGAAA,WAAW,OAAA;AACX,yGAAA,cAAc,OAAA;AACd,6GAAA,kBAAkB,OAAA;AAIpB,yCAAyC;AACzC,qCAOmB;AANjB,uGAAA,YAAY,OAAA;AACZ,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AAGjB,yBAAyB;AACzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,kBAAkB;AAClB,+CAQwB;AAPtB,0GAAA,UAAU,OAAA;AACV,6GAAA,aAAa,OAAA;AACb,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,mHAAA,mBAAmB,OAAA;AACnB,6GAAA,aAAa,OAAA;AACb,iHAAA,iBAAiB,OAAA;AAInB,uBAAuB;AACvB,uDAU4B;AAT1B,oHAAA,gBAAgB,OAAA;AAChB,sHAAA,kBAAkB,OAAA;AAClB,uHAAA,mBAAmB,OAAA;AACnB,6HAAA,yBAAyB,OAAA;AACzB,2HAAA,uBAAuB,OAAA;AACvB,gIAAA,4BAA4B,OAAA;AAC5B,sIAAA,kCAAkC,OAAA;AAClC,8HAAA,0BAA0B,OAAA;AAC1B,oIAAA,gCAAgC,OAAA;AAIlC,gFAAgF;AAChF,wFAAwF;AACxF,2CAAqH;AAA5G,wGAAA,UAAU,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC9F,2CAOsB;AANpB,6GAAA,eAAe,OAAA;AACf,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AACpB,6GAAA,eAAe,OAAA;AAGjB,gGAAgG;AAChG,2BASc;AARZ,qGAAA,eAAe,OAAA;AACf,gGAAA,UAAU,OAAA;AACV,6GAAA,uBAAuB,OAAA;AACvB,uGAAA,iBAAiB,OAAA;AACjB,sGAAA,gBAAgB,OAAA;AAChB,oGAAA,cAAc,OAAA;AACd,iGAAA,WAAW,OAAA;AACX,iGAAA,WAAW,OAAA;AAGb,mGAAmG;AACnG,0FAA0F;AAC1F,qDAAoG;AAA3F,8GAAA,WAAW,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAAE,+GAAA,YAAY,OAAA;AAgBxE,mGAAmG;AACnG,oDAAoD;AACpD,iDAA6J;AAApJ,4HAAA,2BAA2B,OAAA;AAAE,sHAAA,qBAAqB,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAAE,iHAAA,gBAAgB,OAAA"}
@@ -1,42 +1,33 @@
1
1
  /**
2
- * litedbmodel v2 SCP — write-time relations → ordered SQL transaction plan, re-expressed on
3
- * the `makeSQL` model (epic #43/#45 Phase B; spec §6 / §14). This REPLACES the reduced-spine
4
- * `../write-plan.ts` + `../write-runtime.ts` (`CompiledOperation` + `renderOperation` +
5
- * FragmentTree). No reduced IR is emitted anywhere: every statement's SQL is COMPLETE tuned
6
- * text (byte-identical to what the v1 write path sends — `SELECT 1 …`, `INSERT … ON CONFLICT
7
- * DO NOTHING`, `UPDATE … SET c = c + ?`, the outbox INSERT), and its `params` are closed-set
8
- * bc Expression IR refs resolved at execute time against the accumulated transaction scope.
2
+ * litedbmodel v2 SCP — the write descriptor → makeSQL statement compiler ({@link compileWriteNode}),
3
+ * the BATCH transaction-plan derivation ({@link deriveBatchPlan}), and the live async 1-tx runtime
4
+ * ({@link executeTransactionAsync}). No reduced IR is emitted anywhere: every statement's SQL is
5
+ * COMPLETE tuned text (byte-identical to what the v1 write path sends — `INSERT … ON CONFLICT DO
6
+ * NOTHING`, `UPDATE … SET c = ?`, `DELETE FROM … WHERE …`), and its `params` are closed-set bc
7
+ * Expression IR refs resolved at execute time against the transaction scope.
9
8
  *
10
9
  * A statement op is exactly a `makeSQL` template: `{ sql, params }` where `sql` carries `?`
11
10
  * placeholders and `params` are Expression IR (`{ref:[…]}` / a literal / a `{obj:{…}}` payload)
12
11
  * that bc evaluates per statement — then the concrete values assemble + render + bind through
13
12
  * the SAME `assembleMakeSQL` / `renderPlaceholders` the read path uses.
14
13
  *
15
- * ## Gate-first is a real execution behavior (spec §6 "Gate First")
14
+ * A BATCH write (createMany / updateMany / deleteMany) is ONE logical op that produces N grouped
15
+ * statements; {@link deriveBatchPlan} lowers those into a gate-free {@link TransactionPlan}
16
+ * (`entityFrom` null, every statement `role:'body'`), run in the declared order as ONE transaction.
17
+ * The single-row and read paths are lowered by `bc generate` into a native module per language and
18
+ * never reach this runtime; there is no runtime read-compile and no runtime single-write compile.
16
19
  *
17
- * Each gate statement carries a {@link GateRule} the runtime evaluates AFTER executing it: a
18
- * failing gate short-circuits — the remaining statements never execute and the tx ROLLBACKs.
20
+ * ## Gate short-circuit (still supported by the runtime)
19
21
  *
20
- * ## Path lowering (spec §6) — `$.input.*` / `$.entity.*` / `$.ref.<w>.*` → closed-set refs
21
- *
22
- * `$.input.<f>` → `{ref:['<f>']}` (bc flat input scope)
23
- * `$.entity.<f>` → `{ref:['__entity','<f>']}` (the sole body write's RETURNING row)
24
- * `$.ref.<w>.<f>` → `{ref:['<w>','<f>']}` (a named upstream write's RETURNING row)
25
- *
26
- * ## tx-DAG derivation (spec §6 / §14) — gate-first + data-dependency topo order
27
- *
28
- * Statements form a data-dependency DAG (`$.ref.<w>.*` consumes an earlier write's RETURNING
29
- * row via `TxStatement.binds`) with a gate-first constraint. A deterministic Kahn topo sort
30
- * (stable ascending declaration `seq` tie-break) orders them into a single-transaction plan.
31
- * Underivable shapes (cycle, dangling `$.ref`, referenced write without RETURNING, duplicate
32
- * bind, composite `$.entity`) are LOUD rejects — never a silently mis-ordered plan.
22
+ * A statement MAY carry a {@link GateRule} the runtime evaluates AFTER executing it: a failing gate
23
+ * short-circuits — the remaining statements never execute and the tx ROLLBACKs. The batch plans
24
+ * derived here carry no gates; the rule survives for a caller that hands the runtime a gated plan.
33
25
  */
34
26
  import { type Scope } from 'behavior-contracts/runtime';
35
27
  import { type ColumnTypeResolver } from '../coltype';
36
28
  import { type Dialect as MakeSQLDialect } from './handler';
37
- import { type ExecutionContext, type PooledAsyncContext, type SqliteDriver } from '../exec-context';
29
+ import { type PooledAsyncContext } from '../exec-context';
38
30
  import { type TransactionOptions } from '../tx-options';
39
- import { type LifecycleContract, type LifecycleEffects, type WriteLifecyclePhase } from '../writes';
40
31
  /** A closed-set bc Expression IR node used as a `makeSQL` deferred param (ref / literal / obj). */
41
32
  export type TxExpr = unknown;
42
33
  /**
@@ -108,6 +99,17 @@ export interface TxOp {
108
99
  }
109
100
  /** The role a transaction statement plays (drives the runtime's gate-first interpretation). */
110
101
  export type StatementRole = 'gate:requires' | 'gate:idempotency' | 'gate:unique' | 'body' | 'derive' | 'edge' | 'emit';
102
+ /**
103
+ * The write intent a {@link TransactionPlan} carries. It labels the plan the BATCH compilers derive
104
+ * (`createMany` ⇒ `create`, `updateMany` ⇒ `update`, `deleteMany` ⇒ `remove`) so a consumer can tell
105
+ * the three apart without re-reading the SQL.
106
+ */
107
+ export type WriteLifecyclePhase = 'create' | 'update' | 'remove';
108
+ /**
109
+ * The reserved scope key the tx runtime binds the plan's `entityFrom` row under, so a later statement
110
+ * that references the written row resolves against it. Reserved: no input field may use this name.
111
+ */
112
+ export declare const ENTITY_ROOT = "__entity";
111
113
  /** The gate rule the runtime evaluates on a gate statement's result to decide short-circuit. */
112
114
  export type GateRule = 'existsElseRollback' | 'insertedElseRollback' | 'insertedElseNoop';
113
115
  /** One ordered statement of a transaction plan (pure JSON — a makeSQL template + its role). */
@@ -134,7 +136,6 @@ export interface TransactionPlan {
134
136
  readonly statements: readonly TxStatement[];
135
137
  readonly onIdempotentHit: IdempotentHitPolicy;
136
138
  }
137
- /** The reserved column-ref path head that marks an IN-list membership (mirrors the bridge). */
138
139
  export declare const IN_SENTINEL = "@in";
139
140
  type WriteComponent = 'Insert' | 'Update' | 'Delete' | 'Select';
140
141
  interface WriteNodeLike {
@@ -171,22 +172,6 @@ export declare function pkPort(ports: Record<string, unknown>): {
171
172
  * are CANONICAL (alphabetical) sorted — the v2 write-path SSoT (matches `DBModel._insert`).
172
173
  */
173
174
  export declare function compileWriteNode(node: WriteNodeLike, dialect?: MakeSQLDialect, resolveColumnType?: ColumnTypeResolver): TxOp;
174
- /** The base write op the Command declares (`Insert`/`Update`/`Delete` with `onWrite`). */
175
- export interface BaseWrite {
176
- /** The compiled base write makeSQL op (complete `sql` + deferred Expression-IR `params`). */
177
- readonly op: TxOp;
178
- readonly label: string;
179
- /** The write's stable NAME (composite scope) — referenced downstream as `$.ref.<name>.*`. */
180
- readonly name?: string;
181
- /** The write's OWN save-contract effects (composite scope). */
182
- readonly effects?: LifecycleEffects;
183
- }
184
- /**
185
- * Derive the ORDERED, gate-first {@link TransactionPlan} from a Command's base write(s) + its
186
- * lifecycle save contract (spec §6 / §14). Single base write = fixed §6 group; multiple named
187
- * base writes = a topologically-ordered gate-first tx DAG (`$.ref.<name>.*` data dependencies).
188
- */
189
- export declare function deriveTransactionPlan(phase: WriteLifecyclePhase, bases: readonly BaseWrite[], lifecycle: LifecycleContract, dialect?: MakeSQLDialect): TransactionPlan;
190
175
  /**
191
176
  * Lower a list of CONCRETE batch-write ops (createMany / updateMany / deleteMany — each already
192
177
  * compiled by driving the v1 builders in `compile-crud`, so its `sql` is byte-identical to v1 and
@@ -205,15 +190,6 @@ export declare function deriveBatchPlan(phase: WriteLifecyclePhase, ops: readonl
205
190
  params: readonly unknown[];
206
191
  label?: string;
207
192
  }[]): TransactionPlan;
208
- /**
209
- * The minimal synchronous SQLite driver surface the tx runtime needs (better-sqlite3) — the
210
- * backward-compat public seam. Internally the tx runs through the {@link ExecutionContext} seam
211
- * (`../exec-context`); a raw driver passed here is wrapped via {@link contextForDriver}. Aliased to
212
- * {@link SqliteDriver}.
213
- */
214
- export type SqliteDb = SqliteDriver;
215
- /** A tx entry accepts either a raw {@link SqliteDb} or a full {@link ExecutionContext}. */
216
- export type DbOrContext = SqliteDb | ExecutionContext;
217
193
  /** Why a transaction did not commit (a gate short-circuit outcome; not a driver error). */
218
194
  export type ShortCircuitReason = 'requires_absent' | 'unique_collision' | 'idempotent_duplicate';
219
195
  /** The structured outcome of executing a {@link TransactionPlan}. */
@@ -234,24 +210,6 @@ export interface TransactionResult {
234
210
  */
235
211
  readonly returnedRows?: readonly (readonly Record<string, unknown>[])[];
236
212
  }
237
- /**
238
- * Execute a derived {@link TransactionPlan} as ONE real SQLite transaction with gate-first
239
- * short-circuit. Accepts a raw {@link SqliteDb} (wrapped via {@link contextForDriver}) or a full
240
- * {@link ExecutionContext}. The transaction derives a tx-scoped ctx (`withConnection(conn, true)`)
241
- * that PINS one connection so BEGIN, every body statement, and COMMIT/ROLLBACK all run on the SAME
242
- * connection (§3, per-execution ownership). For the single-DB SQLite driver the pinned connection
243
- * is the sole connection; the ownership shows its teeth on the pooled async path
244
- * ({@link import('../exec-context').withTransactionAsync}), which this mirrors.
245
- */
246
- export declare function executeTransaction(db: DbOrContext, plan: TransactionPlan, input: Scope, dialect?: MakeSQLDialect): TransactionResult;
247
- /**
248
- * A counting {@link SqliteDb} wrapper: forwards every call to the wrapped driver but records
249
- * each PREPARED SQL string. Tests use it to PROVE gate-first short-circuit.
250
- */
251
- export declare function countingDriver(db: SqliteDb): {
252
- db: SqliteDb;
253
- prepared: string[];
254
- };
255
213
  /** Render one statement op to its dialect SQL text + params (exposed for golden tests). */
256
214
  export declare function renderTxStatement(op: TxOp, scope: Scope, dialect?: MakeSQLDialect): {
257
215
  sql: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../src/scp/makesql/tx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAsB,KAAK,KAAK,EAAc,MAAM,4BAA4B,CAAC;AAKxF,OAAO,EAAgD,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EAAsB,KAAK,OAAO,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAM/E,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AAG3E,OAAO,EAOL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAGrB,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAC;AAInB,mGAAmG;AACnG,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC;AAE7B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBjD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI;IACnB,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvF;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QACtC;kHAC0G;QAC1G,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B;;;mFAG2E;QAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAED,+FAA+F;AAC/F,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,kBAAkB,GAClB,aAAa,GACb,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAEX,gGAAgG;AAChG,MAAM,MAAM,QAAQ,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;AAE1F,+FAA+F;AAC/F,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,uFAAuF;AACvF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAE7C,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC;CAC/C;AAkID,+FAA+F;AAC/F,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAChE,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAgND;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUvD;AAgDD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAOzH;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,cAAyB,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAOtI;AAqHD,0FAA0F;AAC1F,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAsHD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,cAAyB,GACjC,eAAe,CAkDjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1E,eAAe,CAgBjB;AA2DD;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC;AAEpC,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAOtD,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAEjG,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAC9F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;CACzE;AAyED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,cAAyB,GAAG,iBAAiB,CAiD9I;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CASjF;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,cAAyB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAEhI;AAoCD;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,cAAyB,EAClC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B"}
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../src/scp/makesql/tx.ts"],"names":[],"mappings":"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"}