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
@@ -1,579 +0,0 @@
1
- SQL Contracts Architecture Draft
2
-
3
- 概要
4
-
5
- 本仕様は、litedbmodel の SQL-first 設計と GraphDDB の Contract / Planner / Runtime アーキテクチャを統合し、RDB 向けの契約駆動ランタイムを定義する。
6
-
7
- 目的は ORM を作ることではなく、
8
-
9
- * 論理モデルを契約化する
10
- * CQRS を公開IFとする
11
- * SQL生成・トランザクション・実行計画を導出する
12
- * 多言語 Runtime を実現する
13
-
14
- ことである。
15
-
16
- ⸻
17
-
18
- 設計思想
19
-
20
- SQL-first
21
-
22
- SQLを隠蔽しない。
23
-
24
- 複雑な検索は SQL をそのまま利用できる。
25
-
26
- ただし SQL であっても
27
-
28
- * 入力
29
- * 出力
30
- * Safety
31
- * Effect
32
- * Transaction
33
-
34
- は契約化する。
35
-
36
- ⸻
37
-
38
- 論理モデル中心
39
-
40
- 外部に見えるものは論理モデルである。
41
-
42
- Logical Model
43
- ↓
44
- CQRS Contract
45
- ↓
46
- Execution Plan
47
- ↓
48
- Dialect SQL
49
-
50
- DB物理構造はモデル定義が吸収する。
51
-
52
- ⸻
53
-
54
- CQRS公開IF
55
-
56
- 公開されるAPIは CQRS のみ。
57
-
58
- Query
59
- Command
60
-
61
- Repository や ORM API は外部公開しない。
62
-
63
- ⸻
64
-
65
- レイヤ構成
66
-
67
- Logical Model
68
- ↓
69
- Model Mapping
70
- ↓
71
- Access Pattern Contract
72
- ↓
73
- Composition IR
74
- ↓
75
- SQL IR
76
- ↓
77
- Dialect SQL
78
- ↓
79
- Runtime
80
-
81
- ⸻
82
-
83
- モデル定義
84
-
85
- モデル定義は論理モデルと物理配置を対応付ける。
86
-
87
- Logical User
88
- ↓
89
- users table
90
- ↓
91
- columns
92
- ↓
93
- relations
94
- ↓
95
- indexes
96
-
97
- ここでは
98
-
99
- * belongsTo
100
- * hasOne
101
- * hasMany
102
- * many-to-many
103
-
104
- などの意味だけを定義する。
105
-
106
- ⸻
107
-
108
- Access Pattern
109
-
110
- アクセスパターンが公開契約になる。
111
-
112
- 例
113
-
114
- GetUser
115
- SearchUsers
116
- PatchUser
117
- ReplaceUserRoles
118
-
119
- ここから
120
-
121
- * SQL
122
- * Transaction
123
- * Object Assembly
124
-
125
- が導出される。
126
-
127
- ⸻
128
-
129
- Composition IR
130
-
131
- 最初のIR。
132
-
133
- SQLではない。
134
-
135
- 責務は
136
-
137
- * Query API 呼び出し
138
- * データフロー
139
- * バッチロード
140
- * Object Assembly
141
-
142
- である。
143
-
144
- 例
145
-
146
- User.findOne
147
- ↓
148
- Post.findByUserIds
149
- ↓
150
- Attach posts
151
-
152
- 保持するもの
153
-
154
- API Node
155
- Data Flow
156
- Object Assembly
157
- Execution Dependency
158
-
159
- ⸻
160
-
161
- SQL IR
162
-
163
- Composition IR を SQL に変換したもの。
164
-
165
- ここでは
166
-
167
- * SELECT
168
- * UPDATE
169
- * INSERT
170
- * DELETE
171
- * CTE
172
- * Parameter
173
- * Placeholder
174
-
175
- などが扱われる。
176
-
177
- Dialect 非依存。
178
-
179
- ⸻
180
-
181
- Dialect SQL
182
-
183
- 最後に
184
-
185
- PostgreSQL
186
- MySQL
187
- SQLite
188
-
189
- へ変換する。
190
-
191
- Runtime は SQL を生成しない。
192
-
193
- ⸻
194
-
195
- Runtime
196
-
197
- Runtime の責務は最小限。
198
-
199
- Input Validation
200
- ↓
201
- Dynamic Slot Evaluation
202
- ↓
203
- Placeholder Expansion
204
- ↓
205
- SQL Execute
206
- ↓
207
- Object Assembly
208
-
209
- SQL生成ロジックは持たない。
210
-
211
- ⸻
212
-
213
- SKIP
214
-
215
- SKIP は契約言語。
216
-
217
- 単なる便利機能ではない。
218
-
219
- 対象
220
-
221
- WHERE
222
- SET
223
- Execution Step
224
-
225
- 例
226
-
227
- name = input.name ?? SKIP
228
- status = input.status ?? SKIP
229
-
230
- ⸻
231
-
232
- Dynamic Slot
233
-
234
- 値だけではなく構造も Placeholder にする。
235
-
236
- 種類
237
-
238
- Value
239
- Column
240
- Condition
241
- Fragment
242
- Set
243
- Order
244
-
245
- 例
246
-
247
- sql`
248
- WHERE
249
- ?
250
- `
251
-
252
- に
253
-
254
- Condition を埋め込める。
255
-
256
- ⸻
257
-
258
- SQL Template
259
-
260
- SQL Template は
261
-
262
- 静的部分
263
-
264
- と
265
-
266
- 動的部分
267
-
268
- を持つ。
269
-
270
- Compile
271
- ↓
272
- Static Flatten
273
- ↓
274
- Runtime Expansion
275
-
276
- Rust版と同様、
277
-
278
- 静的に確定できるものはできるだけ展開する。
279
-
280
- 動的条件だけ Runtime に残す。
281
-
282
- ⸻
283
-
284
- 静的解析
285
-
286
- Compile 時に
287
-
288
- Model
289
- Relation
290
- Column
291
- Type
292
- Scope
293
- Placeholder
294
-
295
- をすべて解決する。
296
-
297
- Runtime で
298
-
299
- Unknown Column
300
- Unknown Relation
301
-
302
- などは発生しない。
303
-
304
- ⸻
305
-
306
- Relation
307
-
308
- Relation は SQL JOIN ではない。
309
-
310
- まず
311
-
312
- hasMany
313
- ↓
314
- Query Composition
315
-
316
- へ展開される。
317
-
318
- 例えば
319
-
320
- User
321
- ↓
322
- Post.findByUserIds
323
- ↓
324
- Object Assembly
325
-
326
- SQL JOIN ではなく
327
-
328
- Query の組み合わせになる。
329
-
330
- ⸻
331
-
332
- Object Assembly
333
-
334
- 取得した Row を
335
-
336
- 論理モデルへ組み立てる。
337
-
338
- 例
339
-
340
- User
341
- ↓
342
- posts[]
343
- ↓
344
- comments[]
345
-
346
- この Assembly も IR に含まれる。
347
-
348
- ⸻
349
-
350
- Relation Filter
351
-
352
- JOIN 構文そのものではなく
353
-
354
- Relation Filter を定義する。
355
-
356
- 例
357
-
358
- User
359
- WHERE
360
- status = active
361
- AND
362
- Membership.group = xxx
363
-
364
- 公開契約では
365
-
366
- User.filterThrough(...)
367
-
368
- のような意味になる。
369
-
370
- 内部では
371
-
372
- JOIN
373
- EXISTS
374
- IN
375
-
376
- などへ変換可能。
377
-
378
- ⸻
379
-
380
- Raw SQL
381
-
382
- Raw SQL は Escape Hatch。
383
-
384
- ただし契約外ではない。
385
-
386
- 契約化するもの
387
-
388
- Input
389
- Output
390
- Safety
391
- Effect
392
- Dialect
393
-
394
- SQLだけ自由に書ける。
395
-
396
- ⸻
397
-
398
- Transaction
399
-
400
- Transaction DAG を公開仕様にはしない。
401
-
402
- 公開されるのは
403
-
404
- Access Pattern
405
-
406
- のみ。
407
-
408
- Transaction は導出される。
409
-
410
- Access Pattern
411
- ↓
412
- Dependency Graph
413
- ↓
414
- Transaction DAG
415
- ↓
416
- Execution Plan
417
-
418
- ⸻
419
-
420
- Execution Planning
421
-
422
- Planner が
423
-
424
- Execution Graph
425
-
426
- を生成する。
427
-
428
- ここで
429
-
430
- * Dependency
431
- * Safety
432
- * Cardinality
433
-
434
- を考慮する。
435
-
436
- ⸻
437
-
438
- Gate First
439
-
440
- 意味が変わらない限り
441
-
442
- Gate を最優先で実行する。
443
-
444
- 例
445
-
446
- Input Validation
447
- ↓
448
- SET Exists
449
- ↓
450
- WHERE Exists
451
- ↓
452
- UPDATE
453
- ↓
454
- Audit
455
-
456
- 不要な SQL はできるだけ早く打ち切る。
457
-
458
- ⸻
459
-
460
- Static vs Dynamic
461
-
462
- Compile
463
-
464
- Model
465
- Relation
466
- Column
467
- Join
468
- Projection
469
-
470
- Runtime
471
-
472
- SKIP
473
- Condition
474
- Parameter
475
- Dynamic Fragment
476
-
477
- Compile 時に可能な限り解決する。
478
-
479
- ⸻
480
-
481
- Multi-language Runtime
482
-
483
- 生成対象
484
-
485
- TypeScript
486
- Go
487
- Rust
488
- Python
489
- PHP
490
-
491
- Runtime は
492
-
493
- Contract
494
- ↓
495
- SQL Execute
496
- ↓
497
- Assembly
498
-
499
- だけを担当する。
500
-
501
- ⸻
502
-
503
- Conformance
504
-
505
- 全 Runtime は
506
-
507
- 同一 Contract
508
-
509
- 同一 Input
510
-
511
- から
512
-
513
- 同一 SQL
514
-
515
- 同一 Result
516
-
517
- を生成しなければならない。
518
-
519
- ⸻
520
-
521
- Responsibility
522
-
523
- Model
524
-
525
- 物理配置との対応
526
-
527
- Contract
528
-
529
- 公開API
530
-
531
- Planner
532
-
533
- Execution Plan導出
534
-
535
- Compiler
536
-
537
- Dialect SQL生成
538
-
539
- Runtime
540
-
541
- SQL実行
542
-
543
- ⸻
544
-
545
- 最終アーキテクチャ
546
-
547
- Logical Model
548
- │
549
- ▼
550
- Model Mapping
551
- │
552
- ▼
553
- Access Pattern Contract
554
- │
555
- ▼
556
- Composition IR
557
- (API Graph + Assembly)
558
- │
559
- ▼
560
- SQL IR
561
- (Condition / Placeholder / SQL Template)
562
- │
563
- ▼
564
- Dialect SQL
565
- (PostgreSQL/MySQL/SQLite)
566
- │
567
- ▼
568
- Runtime
569
- (Bind / Execute / Assemble)
570
-
571
- 中心思想
572
-
573
- * 論理モデルを公開契約とする
574
- * SQLを隠蔽しない
575
- * 実行計画は契約から導出する
576
- * Transactionは公開せず導出する
577
- * SKIP・Condition・Relationを契約化する
578
- * Compile時に可能な限り静的解析し、Runtimeでは最小限の動的解決のみ行う
579
- * 多言語 Runtime は同一 Contract を実行するだけの薄い実装とする