@chipmobilesdk/rn-local-db 0.4.0 → 0.5.0

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 (680) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +69 -8
  3. package/lib/commonjs/adapter/budgets.js +79 -0
  4. package/lib/commonjs/adapter/budgets.js.map +1 -0
  5. package/lib/commonjs/adapter/collection.js +236 -0
  6. package/lib/commonjs/adapter/collection.js.map +1 -0
  7. package/lib/commonjs/adapter/deletion.js +291 -0
  8. package/lib/commonjs/adapter/deletion.js.map +1 -0
  9. package/lib/commonjs/adapter/handle.js +259 -0
  10. package/lib/commonjs/adapter/handle.js.map +1 -0
  11. package/lib/commonjs/adapter/index.js +67 -0
  12. package/lib/commonjs/adapter/index.js.map +1 -0
  13. package/lib/commonjs/adapter/lifecycle.js +176 -0
  14. package/lib/commonjs/adapter/lifecycle.js.map +1 -0
  15. package/lib/commonjs/adapter/schema-sync.js +124 -0
  16. package/lib/commonjs/adapter/schema-sync.js.map +1 -0
  17. package/lib/commonjs/adapter/transaction.js +58 -0
  18. package/lib/commonjs/adapter/transaction.js.map +1 -0
  19. package/lib/commonjs/artifacts/availability.js +90 -0
  20. package/lib/commonjs/artifacts/availability.js.map +1 -0
  21. package/lib/commonjs/artifacts/cascade.js +80 -0
  22. package/lib/commonjs/artifacts/cascade.js.map +1 -0
  23. package/lib/commonjs/artifacts/paths.js +31 -0
  24. package/lib/commonjs/artifacts/paths.js.map +1 -0
  25. package/lib/commonjs/artifacts/reconcile.js +55 -0
  26. package/lib/commonjs/artifacts/reconcile.js.map +1 -0
  27. package/lib/commonjs/artifacts/store.js +300 -0
  28. package/lib/commonjs/artifacts/store.js.map +1 -0
  29. package/lib/commonjs/contract/adapter.js +6 -0
  30. package/lib/commonjs/contract/adapter.js.map +1 -0
  31. package/lib/commonjs/contract/attachment.js +2 -0
  32. package/lib/commonjs/contract/attachment.js.map +1 -0
  33. package/lib/commonjs/contract/backup.js +2 -0
  34. package/lib/commonjs/contract/backup.js.map +1 -0
  35. package/lib/commonjs/contract/config.js +31 -0
  36. package/lib/commonjs/contract/config.js.map +1 -0
  37. package/lib/commonjs/contract/encryption.js +6 -0
  38. package/lib/commonjs/contract/encryption.js.map +1 -0
  39. package/lib/commonjs/contract/errors.js +64 -0
  40. package/lib/commonjs/contract/errors.js.map +1 -0
  41. package/lib/commonjs/contract/migration.js +6 -0
  42. package/lib/commonjs/contract/migration.js.map +1 -0
  43. package/lib/commonjs/contract/query.js +6 -0
  44. package/lib/commonjs/contract/query.js.map +1 -0
  45. package/lib/commonjs/contract/record.js +6 -0
  46. package/lib/commonjs/contract/record.js.map +1 -0
  47. package/lib/commonjs/contract/schema.js +2 -0
  48. package/lib/commonjs/contract/schema.js.map +1 -0
  49. package/lib/commonjs/contract/scope.js +2 -0
  50. package/lib/commonjs/contract/scope.js.map +1 -0
  51. package/lib/commonjs/contract/transaction.js +6 -0
  52. package/lib/commonjs/contract/transaction.js.map +1 -0
  53. package/lib/commonjs/crypto/chunked-cipher.js +147 -0
  54. package/lib/commonjs/crypto/chunked-cipher.js.map +1 -0
  55. package/lib/commonjs/crypto/derive.js +61 -0
  56. package/lib/commonjs/crypto/derive.js.map +1 -0
  57. package/lib/commonjs/crypto/key-provider.js +70 -0
  58. package/lib/commonjs/crypto/key-provider.js.map +1 -0
  59. package/lib/commonjs/crypto/provider.js +54 -0
  60. package/lib/commonjs/crypto/provider.js.map +1 -0
  61. package/lib/commonjs/diagnostics/dev-log.js +127 -0
  62. package/lib/commonjs/diagnostics/dev-log.js.map +1 -0
  63. package/lib/commonjs/diagnostics/errors.js +57 -0
  64. package/lib/commonjs/diagnostics/errors.js.map +1 -0
  65. package/lib/commonjs/diagnostics/faults.js +54 -0
  66. package/lib/commonjs/diagnostics/faults.js.map +1 -0
  67. package/lib/commonjs/diagnostics/map-native.js +98 -0
  68. package/lib/commonjs/diagnostics/map-native.js.map +1 -0
  69. package/lib/commonjs/diagnostics/redact.js +110 -0
  70. package/lib/commonjs/diagnostics/redact.js.map +1 -0
  71. package/lib/commonjs/index.js +70 -0
  72. package/lib/commonjs/index.js.map +1 -0
  73. package/lib/commonjs/migration/executor.js +136 -0
  74. package/lib/commonjs/migration/executor.js.map +1 -0
  75. package/lib/commonjs/migration/ledger.js +64 -0
  76. package/lib/commonjs/migration/ledger.js.map +1 -0
  77. package/lib/commonjs/migration/validate-chain.js +76 -0
  78. package/lib/commonjs/migration/validate-chain.js.map +1 -0
  79. package/lib/commonjs/package.json +1 -0
  80. package/lib/commonjs/platform/backup-android-verify.js +76 -0
  81. package/lib/commonjs/platform/backup-android-verify.js.map +1 -0
  82. package/lib/commonjs/platform/backup-ios.js +50 -0
  83. package/lib/commonjs/platform/backup-ios.js.map +1 -0
  84. package/lib/commonjs/platform/bytes.js +158 -0
  85. package/lib/commonjs/platform/bytes.js.map +1 -0
  86. package/lib/commonjs/platform/fs.js +59 -0
  87. package/lib/commonjs/platform/fs.js.map +1 -0
  88. package/lib/commonjs/platform/location.js +129 -0
  89. package/lib/commonjs/platform/location.js.map +1 -0
  90. package/lib/commonjs/query/budgets.js +95 -0
  91. package/lib/commonjs/query/budgets.js.map +1 -0
  92. package/lib/commonjs/query/compare.js +97 -0
  93. package/lib/commonjs/query/compare.js.map +1 -0
  94. package/lib/commonjs/query/cursor.js +97 -0
  95. package/lib/commonjs/query/cursor.js.map +1 -0
  96. package/lib/commonjs/query/filter.js +82 -0
  97. package/lib/commonjs/query/filter.js.map +1 -0
  98. package/lib/commonjs/query/paginate.js +48 -0
  99. package/lib/commonjs/query/paginate.js.map +1 -0
  100. package/lib/commonjs/query/sort.js +61 -0
  101. package/lib/commonjs/query/sort.js.map +1 -0
  102. package/lib/commonjs/query/validate.js +180 -0
  103. package/lib/commonjs/query/validate.js.map +1 -0
  104. package/lib/commonjs/schema/declare.js +47 -0
  105. package/lib/commonjs/schema/declare.js.map +1 -0
  106. package/lib/commonjs/schema/validate-config.js +115 -0
  107. package/lib/commonjs/schema/validate-config.js.map +1 -0
  108. package/lib/commonjs/scope/hash.js +107 -0
  109. package/lib/commonjs/scope/hash.js.map +1 -0
  110. package/lib/commonjs/scope/normalize.js +73 -0
  111. package/lib/commonjs/scope/normalize.js.map +1 -0
  112. package/lib/commonjs/scope/validate.js +81 -0
  113. package/lib/commonjs/scope/validate.js.map +1 -0
  114. package/lib/commonjs/sqlite/adapter.js +31 -0
  115. package/lib/commonjs/sqlite/adapter.js.map +1 -0
  116. package/lib/commonjs/sqlite/batch.js +218 -0
  117. package/lib/commonjs/sqlite/batch.js.map +1 -0
  118. package/lib/commonjs/sqlite/catalog.js +81 -0
  119. package/lib/commonjs/sqlite/catalog.js.map +1 -0
  120. package/lib/commonjs/sqlite/connection.js +210 -0
  121. package/lib/commonjs/sqlite/connection.js.map +1 -0
  122. package/lib/commonjs/sqlite/index-coverage.js +42 -0
  123. package/lib/commonjs/sqlite/index-coverage.js.map +1 -0
  124. package/lib/commonjs/sqlite/native.js +54 -0
  125. package/lib/commonjs/sqlite/native.js.map +1 -0
  126. package/lib/commonjs/sqlite/row-codec.js +192 -0
  127. package/lib/commonjs/sqlite/row-codec.js.map +1 -0
  128. package/lib/commonjs/sqlite/sql-builder.js +253 -0
  129. package/lib/commonjs/sqlite/sql-builder.js.map +1 -0
  130. package/lib/commonjs/sqlite/statements.js +54 -0
  131. package/lib/commonjs/sqlite/statements.js.map +1 -0
  132. package/lib/commonjs/sqlite/transaction-queue.js +79 -0
  133. package/lib/commonjs/sqlite/transaction-queue.js.map +1 -0
  134. package/lib/commonjs/sqlite/transactions.js +33 -0
  135. package/lib/commonjs/sqlite/transactions.js.map +1 -0
  136. package/lib/commonjs/sqlite/values.js +31 -0
  137. package/lib/commonjs/sqlite/values.js.map +1 -0
  138. package/lib/commonjs/testing/conformance/attachments.js +180 -0
  139. package/lib/commonjs/testing/conformance/attachments.js.map +1 -0
  140. package/lib/commonjs/testing/conformance/encryption.js +187 -0
  141. package/lib/commonjs/testing/conformance/encryption.js.map +1 -0
  142. package/lib/commonjs/testing/conformance/index.js +103 -0
  143. package/lib/commonjs/testing/conformance/index.js.map +1 -0
  144. package/lib/commonjs/testing/conformance/lifecycle.js +134 -0
  145. package/lib/commonjs/testing/conformance/lifecycle.js.map +1 -0
  146. package/lib/commonjs/testing/conformance/migrations.js +167 -0
  147. package/lib/commonjs/testing/conformance/migrations.js.map +1 -0
  148. package/lib/commonjs/testing/conformance/queries.js +278 -0
  149. package/lib/commonjs/testing/conformance/queries.js.map +1 -0
  150. package/lib/commonjs/testing/conformance/records.js +224 -0
  151. package/lib/commonjs/testing/conformance/records.js.map +1 -0
  152. package/lib/commonjs/testing/conformance/scopes.js +107 -0
  153. package/lib/commonjs/testing/conformance/scopes.js.map +1 -0
  154. package/lib/commonjs/testing/conformance/transactions.js +228 -0
  155. package/lib/commonjs/testing/conformance/transactions.js.map +1 -0
  156. package/lib/commonjs/testing/faults.js +38 -0
  157. package/lib/commonjs/testing/faults.js.map +1 -0
  158. package/lib/commonjs/testing/index.js +59 -0
  159. package/lib/commonjs/testing/index.js.map +1 -0
  160. package/lib/commonjs/testing/memory-adapter/attachments.js +145 -0
  161. package/lib/commonjs/testing/memory-adapter/attachments.js.map +1 -0
  162. package/lib/commonjs/testing/memory-adapter/collection.js +224 -0
  163. package/lib/commonjs/testing/memory-adapter/collection.js.map +1 -0
  164. package/lib/commonjs/testing/memory-adapter/index.js +366 -0
  165. package/lib/commonjs/testing/memory-adapter/index.js.map +1 -0
  166. package/lib/commonjs/testing/memory-adapter/migrations.js +126 -0
  167. package/lib/commonjs/testing/memory-adapter/migrations.js.map +1 -0
  168. package/lib/commonjs/testing/memory-adapter/reset.js +49 -0
  169. package/lib/commonjs/testing/memory-adapter/reset.js.map +1 -0
  170. package/lib/commonjs/testing/memory-adapter/store.js +107 -0
  171. package/lib/commonjs/testing/memory-adapter/store.js.map +1 -0
  172. package/lib/module/adapter/budgets.js +51 -0
  173. package/lib/module/adapter/budgets.js.map +1 -0
  174. package/lib/module/adapter/collection.js +232 -0
  175. package/lib/module/adapter/collection.js.map +1 -0
  176. package/lib/module/adapter/deletion.js +280 -0
  177. package/lib/module/adapter/deletion.js.map +1 -0
  178. package/lib/module/adapter/handle.js +254 -0
  179. package/lib/module/adapter/handle.js.map +1 -0
  180. package/lib/module/adapter/index.js +59 -0
  181. package/lib/module/adapter/index.js.map +1 -0
  182. package/lib/module/adapter/lifecycle.js +172 -0
  183. package/lib/module/adapter/lifecycle.js.map +1 -0
  184. package/lib/module/adapter/schema-sync.js +121 -0
  185. package/lib/module/adapter/schema-sync.js.map +1 -0
  186. package/lib/module/adapter/transaction.js +54 -0
  187. package/lib/module/adapter/transaction.js.map +1 -0
  188. package/lib/module/artifacts/availability.js +86 -0
  189. package/lib/module/artifacts/availability.js.map +1 -0
  190. package/lib/module/artifacts/cascade.js +75 -0
  191. package/lib/module/artifacts/cascade.js.map +1 -0
  192. package/lib/module/artifacts/paths.js +26 -0
  193. package/lib/module/artifacts/paths.js.map +1 -0
  194. package/lib/module/artifacts/reconcile.js +51 -0
  195. package/lib/module/artifacts/reconcile.js.map +1 -0
  196. package/lib/module/artifacts/store.js +289 -0
  197. package/lib/module/artifacts/store.js.map +1 -0
  198. package/lib/module/contract/adapter.js +4 -0
  199. package/lib/module/contract/adapter.js.map +1 -0
  200. package/lib/module/contract/attachment.js +2 -0
  201. package/lib/module/contract/attachment.js.map +1 -0
  202. package/lib/module/contract/backup.js +2 -0
  203. package/lib/module/contract/backup.js.map +1 -0
  204. package/lib/module/contract/config.js +27 -0
  205. package/lib/module/contract/config.js.map +1 -0
  206. package/lib/module/contract/encryption.js +4 -0
  207. package/lib/module/contract/encryption.js.map +1 -0
  208. package/lib/module/contract/errors.js +60 -0
  209. package/lib/module/contract/errors.js.map +1 -0
  210. package/lib/module/contract/migration.js +4 -0
  211. package/lib/module/contract/migration.js.map +1 -0
  212. package/lib/module/contract/query.js +4 -0
  213. package/lib/module/contract/query.js.map +1 -0
  214. package/lib/module/contract/record.js +4 -0
  215. package/lib/module/contract/record.js.map +1 -0
  216. package/lib/module/contract/schema.js +2 -0
  217. package/lib/module/contract/schema.js.map +1 -0
  218. package/lib/module/contract/scope.js +2 -0
  219. package/lib/module/contract/scope.js.map +1 -0
  220. package/lib/module/contract/transaction.js +4 -0
  221. package/lib/module/contract/transaction.js.map +1 -0
  222. package/lib/module/crypto/chunked-cipher.js +134 -0
  223. package/lib/module/crypto/chunked-cipher.js.map +1 -0
  224. package/lib/module/crypto/derive.js +56 -0
  225. package/lib/module/crypto/derive.js.map +1 -0
  226. package/lib/module/crypto/key-provider.js +67 -0
  227. package/lib/module/crypto/key-provider.js.map +1 -0
  228. package/lib/module/crypto/provider.js +49 -0
  229. package/lib/module/crypto/provider.js.map +1 -0
  230. package/lib/module/diagnostics/dev-log.js +120 -0
  231. package/lib/module/diagnostics/dev-log.js.map +1 -0
  232. package/lib/module/diagnostics/errors.js +44 -0
  233. package/lib/module/diagnostics/errors.js.map +1 -0
  234. package/lib/module/diagnostics/faults.js +47 -0
  235. package/lib/module/diagnostics/faults.js.map +1 -0
  236. package/lib/module/diagnostics/map-native.js +93 -0
  237. package/lib/module/diagnostics/map-native.js.map +1 -0
  238. package/lib/module/diagnostics/redact.js +102 -0
  239. package/lib/module/diagnostics/redact.js.map +1 -0
  240. package/lib/module/index.js +28 -0
  241. package/lib/module/index.js.map +1 -0
  242. package/lib/module/migration/executor.js +132 -0
  243. package/lib/module/migration/executor.js.map +1 -0
  244. package/lib/module/migration/ledger.js +57 -0
  245. package/lib/module/migration/ledger.js.map +1 -0
  246. package/lib/module/migration/validate-chain.js +70 -0
  247. package/lib/module/migration/validate-chain.js.map +1 -0
  248. package/lib/module/package.json +1 -0
  249. package/lib/module/platform/backup-android-verify.js +69 -0
  250. package/lib/module/platform/backup-android-verify.js.map +1 -0
  251. package/lib/module/platform/backup-ios.js +44 -0
  252. package/lib/module/platform/backup-ios.js.map +1 -0
  253. package/lib/module/platform/bytes.js +148 -0
  254. package/lib/module/platform/bytes.js.map +1 -0
  255. package/lib/module/platform/fs.js +54 -0
  256. package/lib/module/platform/fs.js.map +1 -0
  257. package/lib/module/platform/location.js +120 -0
  258. package/lib/module/platform/location.js.map +1 -0
  259. package/lib/module/query/budgets.js +88 -0
  260. package/lib/module/query/budgets.js.map +1 -0
  261. package/lib/module/query/compare.js +90 -0
  262. package/lib/module/query/compare.js.map +1 -0
  263. package/lib/module/query/cursor.js +91 -0
  264. package/lib/module/query/cursor.js.map +1 -0
  265. package/lib/module/query/filter.js +78 -0
  266. package/lib/module/query/filter.js.map +1 -0
  267. package/lib/module/query/paginate.js +40 -0
  268. package/lib/module/query/paginate.js.map +1 -0
  269. package/lib/module/query/sort.js +53 -0
  270. package/lib/module/query/sort.js.map +1 -0
  271. package/lib/module/query/validate.js +173 -0
  272. package/lib/module/query/validate.js.map +1 -0
  273. package/lib/module/schema/declare.js +37 -0
  274. package/lib/module/schema/declare.js.map +1 -0
  275. package/lib/module/schema/validate-config.js +111 -0
  276. package/lib/module/schema/validate-config.js.map +1 -0
  277. package/lib/module/scope/hash.js +102 -0
  278. package/lib/module/scope/hash.js.map +1 -0
  279. package/lib/module/scope/normalize.js +67 -0
  280. package/lib/module/scope/normalize.js.map +1 -0
  281. package/lib/module/scope/validate.js +76 -0
  282. package/lib/module/scope/validate.js.map +1 -0
  283. package/lib/module/sqlite/adapter.js +27 -0
  284. package/lib/module/sqlite/adapter.js.map +1 -0
  285. package/lib/module/sqlite/batch.js +214 -0
  286. package/lib/module/sqlite/batch.js.map +1 -0
  287. package/lib/module/sqlite/catalog.js +72 -0
  288. package/lib/module/sqlite/catalog.js.map +1 -0
  289. package/lib/module/sqlite/connection.js +206 -0
  290. package/lib/module/sqlite/connection.js.map +1 -0
  291. package/lib/module/sqlite/index-coverage.js +38 -0
  292. package/lib/module/sqlite/index-coverage.js.map +1 -0
  293. package/lib/module/sqlite/native.js +48 -0
  294. package/lib/module/sqlite/native.js.map +1 -0
  295. package/lib/module/sqlite/row-codec.js +176 -0
  296. package/lib/module/sqlite/row-codec.js.map +1 -0
  297. package/lib/module/sqlite/sql-builder.js +247 -0
  298. package/lib/module/sqlite/sql-builder.js.map +1 -0
  299. package/lib/module/sqlite/statements.js +49 -0
  300. package/lib/module/sqlite/statements.js.map +1 -0
  301. package/lib/module/sqlite/transaction-queue.js +75 -0
  302. package/lib/module/sqlite/transaction-queue.js.map +1 -0
  303. package/lib/module/sqlite/transactions.js +29 -0
  304. package/lib/module/sqlite/transactions.js.map +1 -0
  305. package/lib/module/sqlite/values.js +24 -0
  306. package/lib/module/sqlite/values.js.map +1 -0
  307. package/lib/module/testing/conformance/attachments.js +176 -0
  308. package/lib/module/testing/conformance/attachments.js.map +1 -0
  309. package/lib/module/testing/conformance/encryption.js +183 -0
  310. package/lib/module/testing/conformance/encryption.js.map +1 -0
  311. package/lib/module/testing/conformance/index.js +97 -0
  312. package/lib/module/testing/conformance/index.js.map +1 -0
  313. package/lib/module/testing/conformance/lifecycle.js +130 -0
  314. package/lib/module/testing/conformance/lifecycle.js.map +1 -0
  315. package/lib/module/testing/conformance/migrations.js +163 -0
  316. package/lib/module/testing/conformance/migrations.js.map +1 -0
  317. package/lib/module/testing/conformance/queries.js +274 -0
  318. package/lib/module/testing/conformance/queries.js.map +1 -0
  319. package/lib/module/testing/conformance/records.js +220 -0
  320. package/lib/module/testing/conformance/records.js.map +1 -0
  321. package/lib/module/testing/conformance/scopes.js +103 -0
  322. package/lib/module/testing/conformance/scopes.js.map +1 -0
  323. package/lib/module/testing/conformance/transactions.js +224 -0
  324. package/lib/module/testing/conformance/transactions.js.map +1 -0
  325. package/lib/module/testing/faults.js +16 -0
  326. package/lib/module/testing/faults.js.map +1 -0
  327. package/lib/module/testing/index.js +16 -0
  328. package/lib/module/testing/index.js.map +1 -0
  329. package/lib/module/testing/memory-adapter/attachments.js +142 -0
  330. package/lib/module/testing/memory-adapter/attachments.js.map +1 -0
  331. package/lib/module/testing/memory-adapter/collection.js +220 -0
  332. package/lib/module/testing/memory-adapter/collection.js.map +1 -0
  333. package/lib/module/testing/memory-adapter/index.js +351 -0
  334. package/lib/module/testing/memory-adapter/index.js.map +1 -0
  335. package/lib/module/testing/memory-adapter/migrations.js +122 -0
  336. package/lib/module/testing/memory-adapter/migrations.js.map +1 -0
  337. package/lib/module/testing/memory-adapter/reset.js +44 -0
  338. package/lib/module/testing/memory-adapter/reset.js.map +1 -0
  339. package/lib/module/testing/memory-adapter/store.js +94 -0
  340. package/lib/module/testing/memory-adapter/store.js.map +1 -0
  341. package/lib/typescript/commonjs/adapter/budgets.d.ts +19 -0
  342. package/lib/typescript/commonjs/adapter/budgets.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/adapter/collection.d.ts +25 -0
  344. package/lib/typescript/commonjs/adapter/collection.d.ts.map +1 -0
  345. package/lib/typescript/commonjs/adapter/deletion.d.ts +48 -0
  346. package/lib/typescript/commonjs/adapter/deletion.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/adapter/handle.d.ts +30 -0
  348. package/lib/typescript/commonjs/adapter/handle.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/adapter/index.d.ts +30 -0
  350. package/lib/typescript/commonjs/adapter/index.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/adapter/lifecycle.d.ts +25 -0
  352. package/lib/typescript/commonjs/adapter/lifecycle.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/adapter/schema-sync.d.ts +19 -0
  354. package/lib/typescript/commonjs/adapter/schema-sync.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/adapter/transaction.d.ts +32 -0
  356. package/lib/typescript/commonjs/adapter/transaction.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/artifacts/availability.d.ts +19 -0
  358. package/lib/typescript/commonjs/artifacts/availability.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/artifacts/cascade.d.ts +26 -0
  360. package/lib/typescript/commonjs/artifacts/cascade.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/artifacts/paths.d.ts +16 -0
  362. package/lib/typescript/commonjs/artifacts/paths.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/artifacts/reconcile.d.ts +23 -0
  364. package/lib/typescript/commonjs/artifacts/reconcile.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/artifacts/store.d.ts +45 -0
  366. package/lib/typescript/commonjs/artifacts/store.d.ts.map +1 -0
  367. package/lib/typescript/commonjs/contract/adapter.d.ts +55 -0
  368. package/lib/typescript/commonjs/contract/adapter.d.ts.map +1 -0
  369. package/lib/typescript/commonjs/contract/attachment.d.ts +84 -0
  370. package/lib/typescript/commonjs/contract/attachment.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/contract/backup.d.ts +26 -0
  372. package/lib/typescript/commonjs/contract/backup.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/contract/config.d.ts +50 -0
  374. package/lib/typescript/commonjs/contract/config.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/contract/encryption.d.ts +31 -0
  376. package/lib/typescript/commonjs/contract/encryption.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/contract/errors.d.ts +50 -0
  378. package/lib/typescript/commonjs/contract/errors.d.ts.map +1 -0
  379. package/lib/typescript/commonjs/contract/migration.d.ts +37 -0
  380. package/lib/typescript/commonjs/contract/migration.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/contract/query.d.ts +79 -0
  382. package/lib/typescript/commonjs/contract/query.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/contract/record.d.ts +43 -0
  384. package/lib/typescript/commonjs/contract/record.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/contract/schema.d.ts +33 -0
  386. package/lib/typescript/commonjs/contract/schema.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/contract/scope.d.ts +33 -0
  388. package/lib/typescript/commonjs/contract/scope.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/contract/transaction.d.ts +66 -0
  390. package/lib/typescript/commonjs/contract/transaction.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/crypto/chunked-cipher.d.ts +57 -0
  392. package/lib/typescript/commonjs/crypto/chunked-cipher.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/crypto/derive.d.ts +28 -0
  394. package/lib/typescript/commonjs/crypto/derive.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/crypto/key-provider.d.ts +30 -0
  396. package/lib/typescript/commonjs/crypto/key-provider.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/crypto/provider.d.ts +35 -0
  398. package/lib/typescript/commonjs/crypto/provider.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/diagnostics/dev-log.d.ts +35 -0
  400. package/lib/typescript/commonjs/diagnostics/dev-log.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/diagnostics/errors.d.ts +34 -0
  402. package/lib/typescript/commonjs/diagnostics/errors.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/diagnostics/faults.d.ts +26 -0
  404. package/lib/typescript/commonjs/diagnostics/faults.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/diagnostics/map-native.d.ts +31 -0
  406. package/lib/typescript/commonjs/diagnostics/map-native.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/diagnostics/redact.d.ts +70 -0
  408. package/lib/typescript/commonjs/diagnostics/redact.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/index.d.ts +30 -0
  410. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  411. package/lib/typescript/commonjs/migration/executor.d.ts +40 -0
  412. package/lib/typescript/commonjs/migration/executor.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/migration/ledger.d.ts +34 -0
  414. package/lib/typescript/commonjs/migration/ledger.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/migration/validate-chain.d.ts +20 -0
  416. package/lib/typescript/commonjs/migration/validate-chain.d.ts.map +1 -0
  417. package/lib/typescript/commonjs/package.json +1 -0
  418. package/lib/typescript/commonjs/platform/backup-android-verify.d.ts +30 -0
  419. package/lib/typescript/commonjs/platform/backup-android-verify.d.ts.map +1 -0
  420. package/lib/typescript/commonjs/platform/backup-ios.d.ts +26 -0
  421. package/lib/typescript/commonjs/platform/backup-ios.d.ts.map +1 -0
  422. package/lib/typescript/commonjs/platform/bytes.d.ts +36 -0
  423. package/lib/typescript/commonjs/platform/bytes.d.ts.map +1 -0
  424. package/lib/typescript/commonjs/platform/fs.d.ts +47 -0
  425. package/lib/typescript/commonjs/platform/fs.d.ts.map +1 -0
  426. package/lib/typescript/commonjs/platform/location.d.ts +53 -0
  427. package/lib/typescript/commonjs/platform/location.d.ts.map +1 -0
  428. package/lib/typescript/commonjs/query/budgets.d.ts +23 -0
  429. package/lib/typescript/commonjs/query/budgets.d.ts.map +1 -0
  430. package/lib/typescript/commonjs/query/compare.d.ts +42 -0
  431. package/lib/typescript/commonjs/query/compare.d.ts.map +1 -0
  432. package/lib/typescript/commonjs/query/cursor.d.ts +27 -0
  433. package/lib/typescript/commonjs/query/cursor.d.ts.map +1 -0
  434. package/lib/typescript/commonjs/query/filter.d.ts +11 -0
  435. package/lib/typescript/commonjs/query/filter.d.ts.map +1 -0
  436. package/lib/typescript/commonjs/query/paginate.d.ts +15 -0
  437. package/lib/typescript/commonjs/query/paginate.d.ts.map +1 -0
  438. package/lib/typescript/commonjs/query/sort.d.ts +19 -0
  439. package/lib/typescript/commonjs/query/sort.d.ts.map +1 -0
  440. package/lib/typescript/commonjs/query/validate.d.ts +15 -0
  441. package/lib/typescript/commonjs/query/validate.d.ts.map +1 -0
  442. package/lib/typescript/commonjs/schema/declare.d.ts +20 -0
  443. package/lib/typescript/commonjs/schema/declare.d.ts.map +1 -0
  444. package/lib/typescript/commonjs/schema/validate-config.d.ts +11 -0
  445. package/lib/typescript/commonjs/schema/validate-config.d.ts.map +1 -0
  446. package/lib/typescript/commonjs/scope/hash.d.ts +24 -0
  447. package/lib/typescript/commonjs/scope/hash.d.ts.map +1 -0
  448. package/lib/typescript/commonjs/scope/normalize.d.ts +46 -0
  449. package/lib/typescript/commonjs/scope/normalize.d.ts.map +1 -0
  450. package/lib/typescript/commonjs/scope/validate.d.ts +15 -0
  451. package/lib/typescript/commonjs/scope/validate.d.ts.map +1 -0
  452. package/lib/typescript/commonjs/sqlite/adapter.d.ts +16 -0
  453. package/lib/typescript/commonjs/sqlite/adapter.d.ts.map +1 -0
  454. package/lib/typescript/commonjs/sqlite/batch.d.ts +25 -0
  455. package/lib/typescript/commonjs/sqlite/batch.d.ts.map +1 -0
  456. package/lib/typescript/commonjs/sqlite/catalog.d.ts +34 -0
  457. package/lib/typescript/commonjs/sqlite/catalog.d.ts.map +1 -0
  458. package/lib/typescript/commonjs/sqlite/connection.d.ts +58 -0
  459. package/lib/typescript/commonjs/sqlite/connection.d.ts.map +1 -0
  460. package/lib/typescript/commonjs/sqlite/index-coverage.d.ts +18 -0
  461. package/lib/typescript/commonjs/sqlite/index-coverage.d.ts.map +1 -0
  462. package/lib/typescript/commonjs/sqlite/native.d.ts +48 -0
  463. package/lib/typescript/commonjs/sqlite/native.d.ts.map +1 -0
  464. package/lib/typescript/commonjs/sqlite/row-codec.d.ts +69 -0
  465. package/lib/typescript/commonjs/sqlite/row-codec.d.ts.map +1 -0
  466. package/lib/typescript/commonjs/sqlite/sql-builder.d.ts +34 -0
  467. package/lib/typescript/commonjs/sqlite/sql-builder.d.ts.map +1 -0
  468. package/lib/typescript/commonjs/sqlite/statements.d.ts +26 -0
  469. package/lib/typescript/commonjs/sqlite/statements.d.ts.map +1 -0
  470. package/lib/typescript/commonjs/sqlite/transaction-queue.d.ts +31 -0
  471. package/lib/typescript/commonjs/sqlite/transaction-queue.d.ts.map +1 -0
  472. package/lib/typescript/commonjs/sqlite/transactions.d.ts +26 -0
  473. package/lib/typescript/commonjs/sqlite/transactions.d.ts.map +1 -0
  474. package/lib/typescript/commonjs/sqlite/values.d.ts +13 -0
  475. package/lib/typescript/commonjs/sqlite/values.d.ts.map +1 -0
  476. package/lib/typescript/commonjs/testing/conformance/attachments.d.ts +4 -0
  477. package/lib/typescript/commonjs/testing/conformance/attachments.d.ts.map +1 -0
  478. package/lib/typescript/commonjs/testing/conformance/encryption.d.ts +4 -0
  479. package/lib/typescript/commonjs/testing/conformance/encryption.d.ts.map +1 -0
  480. package/lib/typescript/commonjs/testing/conformance/index.d.ts +58 -0
  481. package/lib/typescript/commonjs/testing/conformance/index.d.ts.map +1 -0
  482. package/lib/typescript/commonjs/testing/conformance/lifecycle.d.ts +4 -0
  483. package/lib/typescript/commonjs/testing/conformance/lifecycle.d.ts.map +1 -0
  484. package/lib/typescript/commonjs/testing/conformance/migrations.d.ts +4 -0
  485. package/lib/typescript/commonjs/testing/conformance/migrations.d.ts.map +1 -0
  486. package/lib/typescript/commonjs/testing/conformance/queries.d.ts +4 -0
  487. package/lib/typescript/commonjs/testing/conformance/queries.d.ts.map +1 -0
  488. package/lib/typescript/commonjs/testing/conformance/records.d.ts +4 -0
  489. package/lib/typescript/commonjs/testing/conformance/records.d.ts.map +1 -0
  490. package/lib/typescript/commonjs/testing/conformance/scopes.d.ts +4 -0
  491. package/lib/typescript/commonjs/testing/conformance/scopes.d.ts.map +1 -0
  492. package/lib/typescript/commonjs/testing/conformance/transactions.d.ts +4 -0
  493. package/lib/typescript/commonjs/testing/conformance/transactions.d.ts.map +1 -0
  494. package/lib/typescript/commonjs/testing/faults.d.ts +13 -0
  495. package/lib/typescript/commonjs/testing/faults.d.ts.map +1 -0
  496. package/lib/typescript/commonjs/testing/index.d.ts +13 -0
  497. package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
  498. package/lib/typescript/commonjs/testing/memory-adapter/attachments.d.ts +23 -0
  499. package/lib/typescript/commonjs/testing/memory-adapter/attachments.d.ts.map +1 -0
  500. package/lib/typescript/commonjs/testing/memory-adapter/collection.d.ts +19 -0
  501. package/lib/typescript/commonjs/testing/memory-adapter/collection.d.ts.map +1 -0
  502. package/lib/typescript/commonjs/testing/memory-adapter/index.d.ts +22 -0
  503. package/lib/typescript/commonjs/testing/memory-adapter/index.d.ts.map +1 -0
  504. package/lib/typescript/commonjs/testing/memory-adapter/migrations.d.ts +11 -0
  505. package/lib/typescript/commonjs/testing/memory-adapter/migrations.d.ts.map +1 -0
  506. package/lib/typescript/commonjs/testing/memory-adapter/reset.d.ts +23 -0
  507. package/lib/typescript/commonjs/testing/memory-adapter/reset.d.ts.map +1 -0
  508. package/lib/typescript/commonjs/testing/memory-adapter/store.d.ts +54 -0
  509. package/lib/typescript/commonjs/testing/memory-adapter/store.d.ts.map +1 -0
  510. package/lib/typescript/module/adapter/budgets.d.ts +19 -0
  511. package/lib/typescript/module/adapter/budgets.d.ts.map +1 -0
  512. package/lib/typescript/module/adapter/collection.d.ts +25 -0
  513. package/lib/typescript/module/adapter/collection.d.ts.map +1 -0
  514. package/lib/typescript/module/adapter/deletion.d.ts +48 -0
  515. package/lib/typescript/module/adapter/deletion.d.ts.map +1 -0
  516. package/lib/typescript/module/adapter/handle.d.ts +30 -0
  517. package/lib/typescript/module/adapter/handle.d.ts.map +1 -0
  518. package/lib/typescript/module/adapter/index.d.ts +30 -0
  519. package/lib/typescript/module/adapter/index.d.ts.map +1 -0
  520. package/lib/typescript/module/adapter/lifecycle.d.ts +25 -0
  521. package/lib/typescript/module/adapter/lifecycle.d.ts.map +1 -0
  522. package/lib/typescript/module/adapter/schema-sync.d.ts +19 -0
  523. package/lib/typescript/module/adapter/schema-sync.d.ts.map +1 -0
  524. package/lib/typescript/module/adapter/transaction.d.ts +32 -0
  525. package/lib/typescript/module/adapter/transaction.d.ts.map +1 -0
  526. package/lib/typescript/module/artifacts/availability.d.ts +19 -0
  527. package/lib/typescript/module/artifacts/availability.d.ts.map +1 -0
  528. package/lib/typescript/module/artifacts/cascade.d.ts +26 -0
  529. package/lib/typescript/module/artifacts/cascade.d.ts.map +1 -0
  530. package/lib/typescript/module/artifacts/paths.d.ts +16 -0
  531. package/lib/typescript/module/artifacts/paths.d.ts.map +1 -0
  532. package/lib/typescript/module/artifacts/reconcile.d.ts +23 -0
  533. package/lib/typescript/module/artifacts/reconcile.d.ts.map +1 -0
  534. package/lib/typescript/module/artifacts/store.d.ts +45 -0
  535. package/lib/typescript/module/artifacts/store.d.ts.map +1 -0
  536. package/lib/typescript/module/contract/adapter.d.ts +55 -0
  537. package/lib/typescript/module/contract/adapter.d.ts.map +1 -0
  538. package/lib/typescript/module/contract/attachment.d.ts +84 -0
  539. package/lib/typescript/module/contract/attachment.d.ts.map +1 -0
  540. package/lib/typescript/module/contract/backup.d.ts +26 -0
  541. package/lib/typescript/module/contract/backup.d.ts.map +1 -0
  542. package/lib/typescript/module/contract/config.d.ts +50 -0
  543. package/lib/typescript/module/contract/config.d.ts.map +1 -0
  544. package/lib/typescript/module/contract/encryption.d.ts +31 -0
  545. package/lib/typescript/module/contract/encryption.d.ts.map +1 -0
  546. package/lib/typescript/module/contract/errors.d.ts +50 -0
  547. package/lib/typescript/module/contract/errors.d.ts.map +1 -0
  548. package/lib/typescript/module/contract/migration.d.ts +37 -0
  549. package/lib/typescript/module/contract/migration.d.ts.map +1 -0
  550. package/lib/typescript/module/contract/query.d.ts +79 -0
  551. package/lib/typescript/module/contract/query.d.ts.map +1 -0
  552. package/lib/typescript/module/contract/record.d.ts +43 -0
  553. package/lib/typescript/module/contract/record.d.ts.map +1 -0
  554. package/lib/typescript/module/contract/schema.d.ts +33 -0
  555. package/lib/typescript/module/contract/schema.d.ts.map +1 -0
  556. package/lib/typescript/module/contract/scope.d.ts +33 -0
  557. package/lib/typescript/module/contract/scope.d.ts.map +1 -0
  558. package/lib/typescript/module/contract/transaction.d.ts +66 -0
  559. package/lib/typescript/module/contract/transaction.d.ts.map +1 -0
  560. package/lib/typescript/module/crypto/chunked-cipher.d.ts +57 -0
  561. package/lib/typescript/module/crypto/chunked-cipher.d.ts.map +1 -0
  562. package/lib/typescript/module/crypto/derive.d.ts +28 -0
  563. package/lib/typescript/module/crypto/derive.d.ts.map +1 -0
  564. package/lib/typescript/module/crypto/key-provider.d.ts +30 -0
  565. package/lib/typescript/module/crypto/key-provider.d.ts.map +1 -0
  566. package/lib/typescript/module/crypto/provider.d.ts +35 -0
  567. package/lib/typescript/module/crypto/provider.d.ts.map +1 -0
  568. package/lib/typescript/module/diagnostics/dev-log.d.ts +35 -0
  569. package/lib/typescript/module/diagnostics/dev-log.d.ts.map +1 -0
  570. package/lib/typescript/module/diagnostics/errors.d.ts +34 -0
  571. package/lib/typescript/module/diagnostics/errors.d.ts.map +1 -0
  572. package/lib/typescript/module/diagnostics/faults.d.ts +26 -0
  573. package/lib/typescript/module/diagnostics/faults.d.ts.map +1 -0
  574. package/lib/typescript/module/diagnostics/map-native.d.ts +31 -0
  575. package/lib/typescript/module/diagnostics/map-native.d.ts.map +1 -0
  576. package/lib/typescript/module/diagnostics/redact.d.ts +70 -0
  577. package/lib/typescript/module/diagnostics/redact.d.ts.map +1 -0
  578. package/lib/typescript/module/index.d.ts +30 -0
  579. package/lib/typescript/module/index.d.ts.map +1 -0
  580. package/lib/typescript/module/migration/executor.d.ts +40 -0
  581. package/lib/typescript/module/migration/executor.d.ts.map +1 -0
  582. package/lib/typescript/module/migration/ledger.d.ts +34 -0
  583. package/lib/typescript/module/migration/ledger.d.ts.map +1 -0
  584. package/lib/typescript/module/migration/validate-chain.d.ts +20 -0
  585. package/lib/typescript/module/migration/validate-chain.d.ts.map +1 -0
  586. package/lib/typescript/module/package.json +1 -0
  587. package/lib/typescript/module/platform/backup-android-verify.d.ts +30 -0
  588. package/lib/typescript/module/platform/backup-android-verify.d.ts.map +1 -0
  589. package/lib/typescript/module/platform/backup-ios.d.ts +26 -0
  590. package/lib/typescript/module/platform/backup-ios.d.ts.map +1 -0
  591. package/lib/typescript/module/platform/bytes.d.ts +36 -0
  592. package/lib/typescript/module/platform/bytes.d.ts.map +1 -0
  593. package/lib/typescript/module/platform/fs.d.ts +47 -0
  594. package/lib/typescript/module/platform/fs.d.ts.map +1 -0
  595. package/lib/typescript/module/platform/location.d.ts +53 -0
  596. package/lib/typescript/module/platform/location.d.ts.map +1 -0
  597. package/lib/typescript/module/query/budgets.d.ts +23 -0
  598. package/lib/typescript/module/query/budgets.d.ts.map +1 -0
  599. package/lib/typescript/module/query/compare.d.ts +42 -0
  600. package/lib/typescript/module/query/compare.d.ts.map +1 -0
  601. package/lib/typescript/module/query/cursor.d.ts +27 -0
  602. package/lib/typescript/module/query/cursor.d.ts.map +1 -0
  603. package/lib/typescript/module/query/filter.d.ts +11 -0
  604. package/lib/typescript/module/query/filter.d.ts.map +1 -0
  605. package/lib/typescript/module/query/paginate.d.ts +15 -0
  606. package/lib/typescript/module/query/paginate.d.ts.map +1 -0
  607. package/lib/typescript/module/query/sort.d.ts +19 -0
  608. package/lib/typescript/module/query/sort.d.ts.map +1 -0
  609. package/lib/typescript/module/query/validate.d.ts +15 -0
  610. package/lib/typescript/module/query/validate.d.ts.map +1 -0
  611. package/lib/typescript/module/schema/declare.d.ts +20 -0
  612. package/lib/typescript/module/schema/declare.d.ts.map +1 -0
  613. package/lib/typescript/module/schema/validate-config.d.ts +11 -0
  614. package/lib/typescript/module/schema/validate-config.d.ts.map +1 -0
  615. package/lib/typescript/module/scope/hash.d.ts +24 -0
  616. package/lib/typescript/module/scope/hash.d.ts.map +1 -0
  617. package/lib/typescript/module/scope/normalize.d.ts +46 -0
  618. package/lib/typescript/module/scope/normalize.d.ts.map +1 -0
  619. package/lib/typescript/module/scope/validate.d.ts +15 -0
  620. package/lib/typescript/module/scope/validate.d.ts.map +1 -0
  621. package/lib/typescript/module/sqlite/adapter.d.ts +16 -0
  622. package/lib/typescript/module/sqlite/adapter.d.ts.map +1 -0
  623. package/lib/typescript/module/sqlite/batch.d.ts +25 -0
  624. package/lib/typescript/module/sqlite/batch.d.ts.map +1 -0
  625. package/lib/typescript/module/sqlite/catalog.d.ts +34 -0
  626. package/lib/typescript/module/sqlite/catalog.d.ts.map +1 -0
  627. package/lib/typescript/module/sqlite/connection.d.ts +58 -0
  628. package/lib/typescript/module/sqlite/connection.d.ts.map +1 -0
  629. package/lib/typescript/module/sqlite/index-coverage.d.ts +18 -0
  630. package/lib/typescript/module/sqlite/index-coverage.d.ts.map +1 -0
  631. package/lib/typescript/module/sqlite/native.d.ts +48 -0
  632. package/lib/typescript/module/sqlite/native.d.ts.map +1 -0
  633. package/lib/typescript/module/sqlite/row-codec.d.ts +69 -0
  634. package/lib/typescript/module/sqlite/row-codec.d.ts.map +1 -0
  635. package/lib/typescript/module/sqlite/sql-builder.d.ts +34 -0
  636. package/lib/typescript/module/sqlite/sql-builder.d.ts.map +1 -0
  637. package/lib/typescript/module/sqlite/statements.d.ts +26 -0
  638. package/lib/typescript/module/sqlite/statements.d.ts.map +1 -0
  639. package/lib/typescript/module/sqlite/transaction-queue.d.ts +31 -0
  640. package/lib/typescript/module/sqlite/transaction-queue.d.ts.map +1 -0
  641. package/lib/typescript/module/sqlite/transactions.d.ts +26 -0
  642. package/lib/typescript/module/sqlite/transactions.d.ts.map +1 -0
  643. package/lib/typescript/module/sqlite/values.d.ts +13 -0
  644. package/lib/typescript/module/sqlite/values.d.ts.map +1 -0
  645. package/lib/typescript/module/testing/conformance/attachments.d.ts +4 -0
  646. package/lib/typescript/module/testing/conformance/attachments.d.ts.map +1 -0
  647. package/lib/typescript/module/testing/conformance/encryption.d.ts +4 -0
  648. package/lib/typescript/module/testing/conformance/encryption.d.ts.map +1 -0
  649. package/lib/typescript/module/testing/conformance/index.d.ts +58 -0
  650. package/lib/typescript/module/testing/conformance/index.d.ts.map +1 -0
  651. package/lib/typescript/module/testing/conformance/lifecycle.d.ts +4 -0
  652. package/lib/typescript/module/testing/conformance/lifecycle.d.ts.map +1 -0
  653. package/lib/typescript/module/testing/conformance/migrations.d.ts +4 -0
  654. package/lib/typescript/module/testing/conformance/migrations.d.ts.map +1 -0
  655. package/lib/typescript/module/testing/conformance/queries.d.ts +4 -0
  656. package/lib/typescript/module/testing/conformance/queries.d.ts.map +1 -0
  657. package/lib/typescript/module/testing/conformance/records.d.ts +4 -0
  658. package/lib/typescript/module/testing/conformance/records.d.ts.map +1 -0
  659. package/lib/typescript/module/testing/conformance/scopes.d.ts +4 -0
  660. package/lib/typescript/module/testing/conformance/scopes.d.ts.map +1 -0
  661. package/lib/typescript/module/testing/conformance/transactions.d.ts +4 -0
  662. package/lib/typescript/module/testing/conformance/transactions.d.ts.map +1 -0
  663. package/lib/typescript/module/testing/faults.d.ts +13 -0
  664. package/lib/typescript/module/testing/faults.d.ts.map +1 -0
  665. package/lib/typescript/module/testing/index.d.ts +13 -0
  666. package/lib/typescript/module/testing/index.d.ts.map +1 -0
  667. package/lib/typescript/module/testing/memory-adapter/attachments.d.ts +23 -0
  668. package/lib/typescript/module/testing/memory-adapter/attachments.d.ts.map +1 -0
  669. package/lib/typescript/module/testing/memory-adapter/collection.d.ts +19 -0
  670. package/lib/typescript/module/testing/memory-adapter/collection.d.ts.map +1 -0
  671. package/lib/typescript/module/testing/memory-adapter/index.d.ts +22 -0
  672. package/lib/typescript/module/testing/memory-adapter/index.d.ts.map +1 -0
  673. package/lib/typescript/module/testing/memory-adapter/migrations.d.ts +11 -0
  674. package/lib/typescript/module/testing/memory-adapter/migrations.d.ts.map +1 -0
  675. package/lib/typescript/module/testing/memory-adapter/reset.d.ts +23 -0
  676. package/lib/typescript/module/testing/memory-adapter/reset.d.ts.map +1 -0
  677. package/lib/typescript/module/testing/memory-adapter/store.d.ts +54 -0
  678. package/lib/typescript/module/testing/memory-adapter/store.d.ts.map +1 -0
  679. package/package.json +51 -16
  680. package/src/crypto/provider.ts +7 -3
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Table shape, and the payload-as-truth rule.
5
+ *
6
+ * Every read reconstructs the record from `payload` alone. The projected
7
+ * `f_*` columns are written on every write and consulted only by `WHERE` and
8
+ * `ORDER BY` — never by a read path (research.md R6).
9
+ *
10
+ * That single rule is what makes two requirements structural rather than
11
+ * carefully maintained. FR-018's byte fidelity holds because nothing else is
12
+ * consulted to rebuild a record, and FR-019's explicit-null versus
13
+ * absent-field distinction holds because a NULL projected column cannot be
14
+ * ambiguous if no read ever looks at it.
15
+ */
16
+
17
+ import { collectionTable, hasSoftDelete, hasTimestamps, projectedColumn } from "../schema/declare.js";
18
+ import { num, text } from "./values.js";
19
+ export const RESERVED_COLUMNS = ['id', 'payload', 'created_at', 'updated_at', 'deleted_at'];
20
+
21
+ /** SQLite affinity for a declared field type. */
22
+ function affinityOf(field) {
23
+ switch (field.type) {
24
+ case 'number':
25
+ case 'timestamp':
26
+ return 'REAL';
27
+ case 'boolean':
28
+ return 'INTEGER';
29
+ case 'string':
30
+ default:
31
+ return 'TEXT';
32
+ }
33
+ }
34
+ export function createTableSql(schema) {
35
+ const columns = ['id TEXT PRIMARY KEY', 'payload TEXT NOT NULL', 'created_at INTEGER', 'updated_at INTEGER', 'deleted_at INTEGER', ...(schema.fields ?? []).map(field => `"${projectedColumn(field.name)}" ${affinityOf(field)}`)];
36
+ return `CREATE TABLE IF NOT EXISTS "${collectionTable(schema.name)}" (${columns.join(', ')})`;
37
+ }
38
+ export function addColumnSql(schema, field) {
39
+ return `ALTER TABLE "${collectionTable(schema.name)}" ADD COLUMN "${projectedColumn(field.name)}" ${affinityOf(field)}`;
40
+ }
41
+
42
+ /**
43
+ * The name an index has in the database file.
44
+ *
45
+ * Index names are database-wide in SQLite, but declared per collection. Until
46
+ * 0.2.0 the declared name was used as is, so a second collection declaring an
47
+ * index of the same name hit `IF NOT EXISTS` and silently got no index — a
48
+ * UNIQUE constraint included. The double underscore keeps a declared name from
49
+ * colliding with the package's own `<table>_live` index.
50
+ */
51
+ export function physicalIndexName(schema, declaredName) {
52
+ return `${collectionTable(schema.name)}__${declaredName}`;
53
+ }
54
+
55
+ /** The declared name back from a physical one, for reporting to the app. */
56
+ export function declaredIndexName(schema, physicalName) {
57
+ const prefix = `${collectionTable(schema.name)}__`;
58
+ return physicalName.startsWith(prefix) ? physicalName.slice(prefix.length) : physicalName;
59
+ }
60
+ export function createIndexSql(schema) {
61
+ const table = collectionTable(schema.name);
62
+ const statements = (schema.indexes ?? []).map(index => {
63
+ const columns = index.fields.map(field => `"${projectedColumn(field)}"`).join(', ');
64
+ return `CREATE ${index.unique ? 'UNIQUE ' : ''}INDEX IF NOT EXISTS "${physicalIndexName(schema, index.name)}" ON "${table}" (${columns})`;
65
+ });
66
+ if (hasSoftDelete(schema)) {
67
+ // Every default query carries `deleted_at IS NULL`, so without this the
68
+ // exclusion turns the cheapest possible filter into a full scan.
69
+ statements.push(`CREATE INDEX IF NOT EXISTS "${table}_live" ON "${table}" (deleted_at)`);
70
+ }
71
+ return statements;
72
+ }
73
+
74
+ /**
75
+ * Project a declared field for the WHERE and ORDER BY columns.
76
+ *
77
+ * Anything that is not a comparable primitive projects to NULL. A nested
78
+ * object has no defensible ordering, and inventing one would make a filter
79
+ * silently match records a consumer never meant to select.
80
+ */
81
+ export function projectValue(data, field) {
82
+ if (!Object.prototype.hasOwnProperty.call(data, field.name)) {
83
+ return null;
84
+ }
85
+ const value = data[field.name];
86
+ if (value === null) {
87
+ return null;
88
+ }
89
+ switch (typeof value) {
90
+ case 'boolean':
91
+ return value ? 1 : 0;
92
+ case 'number':
93
+ return Number.isFinite(value) ? value : null;
94
+ case 'string':
95
+ return value;
96
+ default:
97
+ return null;
98
+ }
99
+ }
100
+ export function projectedValues(schema, data) {
101
+ return (schema.fields ?? []).map(field => projectValue(data, field));
102
+ }
103
+ export function projectedColumnNames(schema) {
104
+ return (schema.fields ?? []).map(field => projectedColumn(field.name));
105
+ }
106
+
107
+ /** Serialize on the way in, so a caller mutating its object cannot change
108
+ * what is stored (FR-022). */
109
+ export function encodePayload(data) {
110
+ return JSON.stringify(data ?? {});
111
+ }
112
+ /**
113
+ * Rebuild a record from the payload column and nothing else.
114
+ *
115
+ * The timestamp and soft-delete fields are surfaced only when the collection
116
+ * declared them, so a consumer cannot come to depend on a field the schema
117
+ * never promised.
118
+ */
119
+ export function decodeRow(schema, row) {
120
+ const record = {
121
+ id: text(row.id),
122
+ data: JSON.parse(text(row.payload))
123
+ };
124
+ if (hasTimestamps(schema)) {
125
+ if (row.created_at != null) {
126
+ record.createdAt = num(row.created_at);
127
+ }
128
+ if (row.updated_at != null) {
129
+ record.updatedAt = num(row.updated_at);
130
+ }
131
+ }
132
+ if (hasSoftDelete(schema)) {
133
+ record.deletedAt = row.deleted_at == null ? null : num(row.deleted_at);
134
+ }
135
+ return record;
136
+ }
137
+ export function insertColumns(schema, id, data, now, /** The payload already serialized by the budget check, to avoid a second pass. */
138
+ payload = encodePayload(data)) {
139
+ const columns = ['id', 'payload'];
140
+ const values = [id, payload];
141
+ if (hasTimestamps(schema)) {
142
+ columns.push('created_at', 'updated_at');
143
+ values.push(now, now);
144
+ }
145
+ if (hasSoftDelete(schema)) {
146
+ columns.push('deleted_at');
147
+ values.push(null);
148
+ }
149
+ const projected = projectedValues(schema, data);
150
+ for (const [index, name] of projectedColumnNames(schema).entries()) {
151
+ columns.push(name);
152
+ values.push(projected[index]);
153
+ }
154
+ return {
155
+ columns,
156
+ values
157
+ };
158
+ }
159
+ export function updateAssignments(schema, data, now, payload = encodePayload(data)) {
160
+ const columns = ['payload'];
161
+ const values = [payload];
162
+ if (hasTimestamps(schema)) {
163
+ columns.push('updated_at');
164
+ values.push(now);
165
+ }
166
+ const projected = projectedValues(schema, data);
167
+ for (const [index, name] of projectedColumnNames(schema).entries()) {
168
+ columns.push(name);
169
+ values.push(projected[index]);
170
+ }
171
+ return {
172
+ columns,
173
+ values
174
+ };
175
+ }
176
+ //# sourceMappingURL=row-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["collectionTable","hasSoftDelete","hasTimestamps","projectedColumn","num","text","RESERVED_COLUMNS","affinityOf","field","type","createTableSql","schema","columns","fields","map","name","join","addColumnSql","physicalIndexName","declaredName","declaredIndexName","physicalName","prefix","startsWith","slice","length","createIndexSql","table","statements","indexes","index","unique","push","projectValue","data","Object","prototype","hasOwnProperty","call","value","Number","isFinite","projectedValues","projectedColumnNames","encodePayload","JSON","stringify","decodeRow","row","record","id","parse","payload","created_at","createdAt","updated_at","updatedAt","deletedAt","deleted_at","insertColumns","now","values","projected","entries","updateAssignments"],"sourceRoot":"../../../src","sources":["sqlite/row-codec.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Filter tree to parameterized SQL.
5
+ *
6
+ * Nothing a consumer supplies is ever concatenated into a statement. Field
7
+ * names are resolved through the schema first — validation has already run
8
+ * and rejected anything undeclared (FR-034) — so the only identifiers that
9
+ * reach SQL are ones this package generated from a declaration it checked.
10
+ * Values bind as parameters, without exception. Injection stops being a thing
11
+ * to remember and becomes a thing the shape of the code prevents.
12
+ *
13
+ * The other half of this file is keyset pagination. `OFFSET` was rejected for
14
+ * two measured reasons (research.md R6): it degrades linearly at the 100,000
15
+ * record budget because the engine still walks the skipped rows, and it
16
+ * shifts pages under concurrent writes so a record can be skipped or returned
17
+ * twice — the exact failure SC-007 forbids.
18
+ */
19
+
20
+ import { projectedColumn } from "../schema/declare.js";
21
+ const TRUE = {
22
+ sql: '1',
23
+ params: []
24
+ };
25
+ const FALSE = {
26
+ sql: '0',
27
+ params: []
28
+ };
29
+ function columnFor(field) {
30
+ return field === 'id' ? 'id' : `"${projectedColumn(field)}"`;
31
+ }
32
+
33
+ /**
34
+ * The JSON path for a declared field.
35
+ *
36
+ * Safe to interpolate: the field name came from a schema declaration that
37
+ * validation already matched against `^[A-Za-z][A-Za-z0-9_]{0,62}$`, so it
38
+ * cannot carry a quote, a dollar sign, or a path separator.
39
+ */
40
+ function jsonType(field) {
41
+ return `json_type(payload, '$.${field}')`;
42
+ }
43
+
44
+ /** Present, and holding something a comparison can be defined over. */
45
+ function presentPrimitive(field) {
46
+ return `(${jsonType(field)} IS NOT NULL AND ${jsonType(field)} NOT IN ('object', 'array'))`;
47
+ }
48
+
49
+ /** Present and explicitly null — the condition `isNull` actually means. */
50
+ function isExplicitNull(field) {
51
+ return `${jsonType(field)} = 'null'`;
52
+ }
53
+
54
+ /** Booleans project to 0/1, so a bound parameter has to match. */
55
+ function bind(value) {
56
+ return typeof value === 'boolean' ? value ? 1 : 0 : value;
57
+ }
58
+ function comparison(node) {
59
+ const field = node.field;
60
+ const column = columnFor(field);
61
+ switch (node.op) {
62
+ case 'exists':
63
+ return {
64
+ sql: node.value ? `${jsonType(field)} IS NOT NULL` : `${jsonType(field)} IS NULL`,
65
+ params: []
66
+ };
67
+ case 'isNull':
68
+ return {
69
+ sql: isExplicitNull(field),
70
+ params: []
71
+ };
72
+ case 'isNotNull':
73
+ return {
74
+ sql: `(${jsonType(field)} IS NOT NULL AND ${jsonType(field)} != 'null')`,
75
+ params: []
76
+ };
77
+ case 'eq':
78
+ // Matching an explicit null needs the JSON type: `col = NULL` is
79
+ // NULL in SQL, which is not true, and a projected NULL cannot tell
80
+ // "absent" from "null" on its own.
81
+ return node.value === null ? {
82
+ sql: isExplicitNull(field),
83
+ params: []
84
+ } : {
85
+ sql: `${column} = ?`,
86
+ params: [bind(node.value)]
87
+ };
88
+ case 'ne':
89
+ return node.value === null ? {
90
+ sql: `(${presentPrimitive(field)} AND ${jsonType(field)} != 'null')`,
91
+ params: []
92
+ } : {
93
+ sql: `(${presentPrimitive(field)} AND ${column} IS NOT ?)`,
94
+ params: [bind(node.value)]
95
+ };
96
+ case 'lt':
97
+ case 'lte':
98
+ case 'gt':
99
+ case 'gte':
100
+ {
101
+ if (node.value === null) {
102
+ // An ordered comparison against null has no answer; SQL would
103
+ // return NULL and the in-memory adapter returns false. Being
104
+ // explicit keeps the two identical.
105
+ return FALSE;
106
+ }
107
+ const operator = {
108
+ lt: '<',
109
+ lte: '<=',
110
+ gt: '>',
111
+ gte: '>='
112
+ }[node.op];
113
+ return {
114
+ sql: `(${column} IS NOT NULL AND ${column} ${operator} ?)`,
115
+ params: [bind(node.value)]
116
+ };
117
+ }
118
+ case 'between':
119
+ {
120
+ const [low, high] = node.value;
121
+ if (low === null || high === null) {
122
+ return FALSE;
123
+ }
124
+ return {
125
+ sql: `(${column} IS NOT NULL AND ${column} BETWEEN ? AND ?)`,
126
+ params: [bind(low), bind(high)]
127
+ };
128
+ }
129
+ case 'in':
130
+ case 'nin':
131
+ {
132
+ const values = node.value;
133
+ const nonNull = values.filter(value => value !== null);
134
+ const acceptsNull = values.length !== nonNull.length;
135
+ const clauses = [];
136
+ const params = [];
137
+ if (nonNull.length > 0) {
138
+ clauses.push(`${column} IN (${nonNull.map(() => '?').join(', ')})`);
139
+ params.push(...nonNull.map(value => bind(value)));
140
+ }
141
+ if (acceptsNull) {
142
+ clauses.push(isExplicitNull(field));
143
+ }
144
+ const membership = clauses.length > 0 ? `(${clauses.join(' OR ')})` : '0';
145
+ if (node.op === 'in') {
146
+ return {
147
+ sql: membership,
148
+ params
149
+ };
150
+ }
151
+ // `nin` excludes, but only among records that have the field at
152
+ // all: an absent field satisfies no comparison, negated or not.
153
+ return {
154
+ sql: `(${presentPrimitive(field)} AND NOT IFNULL(${membership}, 0))`,
155
+ params
156
+ };
157
+ }
158
+ default:
159
+ return FALSE;
160
+ }
161
+ }
162
+ export function buildFilter(node) {
163
+ if (!node) {
164
+ return TRUE;
165
+ }
166
+ switch (node.op) {
167
+ case 'and':
168
+ case 'or':
169
+ {
170
+ const parts = node.nodes.map(child => buildFilter(child));
171
+ return {
172
+ sql: `(${parts.map(part => part.sql).join(node.op === 'and' ? ' AND ' : ' OR ')})`,
173
+ params: parts.flatMap(part => part.params)
174
+ };
175
+ }
176
+ case 'not':
177
+ {
178
+ const inner = buildFilter(node.node);
179
+ // IFNULL, because NOT NULL is NULL in SQL and would quietly drop
180
+ // rows the in-memory adapter keeps.
181
+ return {
182
+ sql: `(NOT IFNULL(${inner.sql}, 0))`,
183
+ params: inner.params
184
+ };
185
+ }
186
+ default:
187
+ return comparison(node);
188
+ }
189
+ }
190
+ export function buildOrderBy(sort) {
191
+ return sort.map(key => `${columnFor(key.field)} ${key.direction === 'desc' ? 'DESC' : 'ASC'}`).join(', ');
192
+ }
193
+
194
+ /**
195
+ * The keyset predicate: everything strictly after the cursor position.
196
+ *
197
+ * Lexicographic across the sort keys — equal on the first means the second
198
+ * decides, down to the `id` tiebreaker that guarantees a total order. NULL is
199
+ * treated as smaller than every value, matching both SQLite's default
200
+ * ordering and `compareValues`, so the two adapters page identically.
201
+ */
202
+ export function buildKeysetPredicate(sort, anchor) {
203
+ const params = [];
204
+ const build = index => {
205
+ if (index >= sort.length) {
206
+ return '0';
207
+ }
208
+ const key = sort[index];
209
+ const column = columnFor(key.field);
210
+ const value = anchor[index] ?? null;
211
+ const descending = key.direction === 'desc';
212
+ let strictly;
213
+ if (descending) {
214
+ if (value === null) {
215
+ // Nothing sorts before null, so a descending walk anchored on
216
+ // null has nothing left ahead of it on this key.
217
+ strictly = '0';
218
+ } else {
219
+ strictly = `(${column} IS NULL OR ${column} < ?)`;
220
+ params.push(bind(value));
221
+ }
222
+ } else if (value === null) {
223
+ strictly = `${column} IS NOT NULL`;
224
+ } else {
225
+ strictly = `${column} > ?`;
226
+ params.push(bind(value));
227
+ }
228
+ const equal = `${column} IS ?`;
229
+ const equalParam = bind(value);
230
+ if (index === sort.length - 1) {
231
+ return strictly;
232
+ }
233
+
234
+ // Params are pushed in the order the fragments are concatenated, so the
235
+ // equality parameter has to land between this key's comparison and the
236
+ // next key's fragment.
237
+ const head = `(${strictly} OR (${equal} AND `;
238
+ params.push(equalParam);
239
+ const tail = build(index + 1);
240
+ return `${head}${tail}))`;
241
+ };
242
+ return {
243
+ sql: build(0),
244
+ params
245
+ };
246
+ }
247
+ //# sourceMappingURL=sql-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["projectedColumn","TRUE","sql","params","FALSE","columnFor","field","jsonType","presentPrimitive","isExplicitNull","bind","value","comparison","node","column","op","operator","lt","lte","gt","gte","low","high","values","nonNull","filter","acceptsNull","length","clauses","push","map","join","membership","buildFilter","parts","nodes","child","part","flatMap","inner","buildOrderBy","sort","key","direction","buildKeysetPredicate","anchor","build","index","descending","strictly","equal","equalParam","head","tail"],"sourceRoot":"../../../src","sources":["sqlite/sql-builder.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The write statements, built in one place (LDB-12).
5
+ *
6
+ * The collection API and the batch each used to assemble their own INSERT and
7
+ * UPDATE text. Two copies of the same rule is how a batch upsert came to treat
8
+ * a soft-deleted row differently from a collection upsert.
9
+ */
10
+
11
+ import { collectionTable, hasSoftDelete } from "../schema/declare.js";
12
+ import { insertColumns, updateAssignments } from "./row-codec.js";
13
+ // Built once per table and column list rather than on every write (PERF-10).
14
+ const insertTexts = new Map();
15
+ function insertText(table, columns) {
16
+ const key = `${table}|${columns.join(',')}`;
17
+ let sql = insertTexts.get(key);
18
+ if (sql === undefined) {
19
+ sql = `INSERT INTO "${table}" (${columns.map(name => `"${name}"`).join(', ')}) VALUES (${columns.map(() => '?').join(', ')})`;
20
+ insertTexts.set(key, sql);
21
+ }
22
+ return sql;
23
+ }
24
+
25
+ /**
26
+ * `ignore` leaves a row that already holds the id untouched and reports zero
27
+ * rows affected, so a conflict is detected without a SELECT beforehand.
28
+ */
29
+ export function insertStatement(schema, id, data, now, payload, onConflict = 'fail') {
30
+ const {
31
+ columns,
32
+ values
33
+ } = insertColumns(schema, id, data, now, payload);
34
+ const sql = insertText(collectionTable(schema.name), columns);
35
+ return [onConflict === 'ignore' ? `${sql} ON CONFLICT(id) DO NOTHING` : sql, values];
36
+ }
37
+ export function updateStatement(schema, id, data, now, payload, options = {}) {
38
+ const {
39
+ columns,
40
+ values
41
+ } = updateAssignments(schema, data, now, payload);
42
+ const assignments = columns.map(name => `"${name}" = ?`);
43
+ if (options.restore === true && hasSoftDelete(schema)) {
44
+ assignments.push('deleted_at = NULL');
45
+ }
46
+ const live = options.liveOnly === true ? ' AND deleted_at IS NULL' : '';
47
+ return [`UPDATE "${collectionTable(schema.name)}" SET ${assignments.join(', ')} WHERE id = ?${live}`, [...values, id]];
48
+ }
49
+ //# sourceMappingURL=statements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["collectionTable","hasSoftDelete","insertColumns","updateAssignments","insertTexts","Map","insertText","table","columns","key","join","sql","get","undefined","map","name","set","insertStatement","schema","id","data","now","payload","onConflict","values","updateStatement","options","assignments","restore","push","live","liveOnly"],"sourceRoot":"../../../src","sources":["sqlite/statements.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,eAAe,EAAEC,aAAa,QAAQ,sBAAmB;AAElE,SAASC,aAAa,EAAEC,iBAAiB,QAAQ,gBAAa;AAM9D;AACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE7C,SAASC,UAAUA,CAACC,KAAa,EAAEC,OAA0B,EAAU;EACtE,MAAMC,GAAG,GAAG,GAAGF,KAAK,IAAIC,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC,EAAE;EAC3C,IAAIC,GAAG,GAAGP,WAAW,CAACQ,GAAG,CAACH,GAAG,CAAC;EAC9B,IAAIE,GAAG,KAAKE,SAAS,EAAE;IACtBF,GAAG,GAAG,gBAAgBJ,KAAK,MAAMC,OAAO,CAACM,GAAG,CAACC,IAAI,IAAI,IAAIA,IAAI,GAAG,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC,aAAaF,OAAO,CAC9FM,GAAG,CAAC,MAAM,GAAG,CAAC,CACdJ,IAAI,CAAC,IAAI,CAAC,GAAG;IACfN,WAAW,CAACY,GAAG,CAACP,GAAG,EAAEE,GAAG,CAAC;EAC1B;EACA,OAAOA,GAAG;AACX;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,eAAeA,CAC9BC,MAAwB,EACxBC,EAAU,EACVC,IAAgB,EAChBC,GAAW,EACXC,OAAe,EACfC,UAA6B,GAAG,MAAM,EAC1B;EACZ,MAAM;IAAEf,OAAO;IAAEgB;EAAO,CAAC,GAAGtB,aAAa,CAACgB,MAAM,EAAEC,EAAE,EAAEC,IAAI,EAAEC,GAAG,EAAEC,OAAO,CAAC;EACzE,MAAMX,GAAG,GAAGL,UAAU,CAACN,eAAe,CAACkB,MAAM,CAACH,IAAI,CAAC,EAAEP,OAAO,CAAC;EAC7D,OAAO,CAACe,UAAU,KAAK,QAAQ,GAAG,GAAGZ,GAAG,6BAA6B,GAAGA,GAAG,EAAEa,MAAM,CAAC;AACrF;AASA,OAAO,SAASC,eAAeA,CAC9BP,MAAwB,EACxBC,EAAU,EACVC,IAAgB,EAChBC,GAAW,EACXC,OAAe,EACfI,OAAsB,GAAG,CAAC,CAAC,EACf;EACZ,MAAM;IAAElB,OAAO;IAAEgB;EAAO,CAAC,GAAGrB,iBAAiB,CAACe,MAAM,EAAEE,IAAI,EAAEC,GAAG,EAAEC,OAAO,CAAC;EACzE,MAAMK,WAAW,GAAGnB,OAAO,CAACM,GAAG,CAACC,IAAI,IAAI,IAAIA,IAAI,OAAO,CAAC;EACxD,IAAIW,OAAO,CAACE,OAAO,KAAK,IAAI,IAAI3B,aAAa,CAACiB,MAAM,CAAC,EAAE;IACtDS,WAAW,CAACE,IAAI,CAAC,mBAAmB,CAAC;EACtC;EACA,MAAMC,IAAI,GAAGJ,OAAO,CAACK,QAAQ,KAAK,IAAI,GAAG,yBAAyB,GAAG,EAAE;EACvE,OAAO,CACN,WAAW/B,eAAe,CAACkB,MAAM,CAACH,IAAI,CAAC,SAASY,WAAW,CAACjB,IAAI,CAAC,IAAI,CAAC,gBAAgBoB,IAAI,EAAE,EAC5F,CAAC,GAAGN,MAAM,EAAEL,EAAE,CAAC,CACf;AACF","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The per-handle queue that keeps a transaction to itself.
5
+ *
6
+ * A transaction holds the queue until it settles; work arriving meanwhile
7
+ * through the handle waits its turn and then runs on its own, instead of
8
+ * joining the transaction and vanishing with its rollback (LDB-01). Shared by
9
+ * the SQLite connection and the memory adapter so both isolate the same way.
10
+ *
11
+ * Pure: no engine, no React, so the memory adapter can use it without loading
12
+ * native code.
13
+ */
14
+
15
+ import { DiagnosticCodes } from "../contract/errors.js";
16
+ import { raise } from "../diagnostics/errors.js";
17
+
18
+ /**
19
+ * How long work through the handle waits behind a transaction before it is
20
+ * refused.
21
+ *
22
+ * Not a performance budget: it exists for the one wait that never ends. A
23
+ * transaction body that awaits the handle's own `collection()` or
24
+ * `attachments()` is waiting on work queued behind itself. Until 0.2.0 that
25
+ * work ran inside the transaction; now it is refused after this long with a
26
+ * message naming `tx.collection()` / `tx.attachments()`, and the transaction
27
+ * rolls back, rather than both waiting forever.
28
+ */
29
+ export const TRANSACTION_WAIT_LIMIT_MS = 10_000;
30
+ export function createTransactionQueue(waitLimitMs = TRANSACTION_WAIT_LIMIT_MS) {
31
+ /** Tail of the queue. Never rejects, so one failure cannot stall the rest. */
32
+ let tail = Promise.resolve();
33
+ /** Transactions queued or running. Only work behind one of them can deadlock. */
34
+ let transactions = 0;
35
+ const enqueue = work => {
36
+ const run = tail.then(work, work);
37
+ tail = run.catch(() => undefined);
38
+ return run;
39
+ };
40
+ return {
41
+ run(work) {
42
+ if (transactions === 0) {
43
+ return enqueue(work);
44
+ }
45
+ let abandoned = false;
46
+ let timer;
47
+ const started = enqueue(() => {
48
+ clearTimeout(timer);
49
+ // Refused while waiting: it must not run late, after its caller was
50
+ // already told it failed.
51
+ return abandoned ? Promise.resolve(undefined) : work();
52
+ });
53
+ const refused = new Promise((_, reject) => {
54
+ timer = setTimeout(() => {
55
+ abandoned = true;
56
+ try {
57
+ raise(DiagnosticCodes.TRANSACTION_STATE, {
58
+ message: 'waited too long behind an in-flight transaction; inside a transaction body use tx.collection() and tx.attachments(), not the handle'
59
+ });
60
+ } catch (error) {
61
+ reject(error);
62
+ }
63
+ }, waitLimitMs);
64
+ });
65
+ return Promise.race([started, refused]);
66
+ },
67
+ runTransaction(work) {
68
+ transactions += 1;
69
+ return enqueue(work).finally(() => {
70
+ transactions -= 1;
71
+ });
72
+ }
73
+ };
74
+ }
75
+ //# sourceMappingURL=transaction-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DiagnosticCodes","raise","TRANSACTION_WAIT_LIMIT_MS","createTransactionQueue","waitLimitMs","tail","Promise","resolve","transactions","enqueue","work","run","then","catch","undefined","abandoned","timer","started","clearTimeout","refused","_","reject","setTimeout","TRANSACTION_STATE","message","error","race","runTransaction","finally"],"sourceRoot":"../../../src","sources":["sqlite/transaction-queue.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,eAAe,QAAQ,uBAAoB;AACpD,SAASC,KAAK,QAAQ,0BAAuB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAG,MAAM;AAS/C,OAAO,SAASC,sBAAsBA,CACrCC,WAAmB,GAAGF,yBAAyB,EAC5B;EACnB;EACA,IAAIG,IAAsB,GAAGC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC9C;EACA,IAAIC,YAAY,GAAG,CAAC;EAEpB,MAAMC,OAAO,GAAOC,IAAsB,IAAiB;IAC1D,MAAMC,GAAG,GAAGN,IAAI,CAACO,IAAI,CAACF,IAAI,EAAEA,IAAI,CAAC;IACjCL,IAAI,GAAGM,GAAG,CAACE,KAAK,CAAC,MAAMC,SAAS,CAAC;IACjC,OAAOH,GAAG;EACX,CAAC;EAED,OAAO;IACNA,GAAGA,CAAID,IAAsB,EAAc;MAC1C,IAAIF,YAAY,KAAK,CAAC,EAAE;QACvB,OAAOC,OAAO,CAACC,IAAI,CAAC;MACrB;MAEA,IAAIK,SAAS,GAAG,KAAK;MACrB,IAAIC,KAAgD;MACpD,MAAMC,OAAO,GAAGR,OAAO,CAAC,MAAM;QAC7BS,YAAY,CAACF,KAAK,CAAC;QACnB;QACA;QACA,OAAOD,SAAS,GAAGT,OAAO,CAACC,OAAO,CAACO,SAAc,CAAC,GAAGJ,IAAI,CAAC,CAAC;MAC5D,CAAC,CAAC;MACF,MAAMS,OAAO,GAAG,IAAIb,OAAO,CAAQ,CAACc,CAAC,EAAEC,MAAM,KAAK;QACjDL,KAAK,GAAGM,UAAU,CAAC,MAAM;UACxBP,SAAS,GAAG,IAAI;UAChB,IAAI;YACHd,KAAK,CAACD,eAAe,CAACuB,iBAAiB,EAAE;cACxCC,OAAO,EACN;YACF,CAAC,CAAC;UACH,CAAC,CAAC,OAAOC,KAAK,EAAE;YACfJ,MAAM,CAACI,KAAK,CAAC;UACd;QACD,CAAC,EAAErB,WAAW,CAAC;MAChB,CAAC,CAAC;MACF,OAAOE,OAAO,CAACoB,IAAI,CAAC,CAACT,OAAO,EAAEE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEDQ,cAAcA,CAAIjB,IAAsB,EAAc;MACrDF,YAAY,IAAI,CAAC;MACjB,OAAOC,OAAO,CAACC,IAAI,CAAC,CAACkB,OAAO,CAAC,MAAM;QAClCpB,YAAY,IAAI,CAAC;MAClB,CAAC,CAAC;IACH;EACD,CAAC;AACF","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The transaction primitive.
5
+ *
6
+ * A transaction never spans two scopes, and not because a check forbids it:
7
+ * a transaction runs on one connection, a connection is opened against one
8
+ * scope's file, and the public surface offers no way to reach a second one
9
+ * from inside. FR-038 is a type error rather than a runtime one (research.md
10
+ * R2).
11
+ *
12
+ * Rollback fidelity is SQLite's, not this package's. A failure at any step
13
+ * unwinds through the engine's own `ROLLBACK`, which is the only way SC-006's
14
+ * "identical to its pre-transaction state, every time" survives a process
15
+ * kill halfway through.
16
+ */
17
+
18
+ /**
19
+ * Run `body` inside one transaction on one scope.
20
+ *
21
+ * Deliberately thin. The interesting behavior — read-your-own-writes,
22
+ * terminal-state rejection, what a settled transaction does when used again —
23
+ * belongs to `adapter/transaction.ts`, where both adapters can be held to the
24
+ * same rules.
25
+ */
26
+ export function runInTransaction(connection, body) {
27
+ return connection.transaction(body);
28
+ }
29
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["runInTransaction","connection","body","transaction"],"sourceRoot":"../../../src","sources":["sqlite/transactions.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAC/BC,UAAsB,EACtBC,IAA6C,EAChC;EACb,OAAOD,UAAU,CAACE,WAAW,CAACD,IAAI,CAAC;AACpC","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Reading values back out of a result row.
5
+ *
6
+ * The engine hands back `unknown` per column, and every read site would
7
+ * otherwise repeat the same `String(...)` / `Number(...)` coercion with a
8
+ * slightly different null check. One place to do it means one place where the
9
+ * "NULL means absent, not empty string" rule is decided.
10
+ */
11
+
12
+ export function text(value) {
13
+ return typeof value === 'string' ? value : String(value);
14
+ }
15
+ export function num(value) {
16
+ return typeof value === 'number' ? value : Number(value);
17
+ }
18
+ export function maybeText(value) {
19
+ return value == null ? null : text(value);
20
+ }
21
+ export function maybeNum(value) {
22
+ return value == null ? null : num(value);
23
+ }
24
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["text","value","String","num","Number","maybeText","maybeNum"],"sourceRoot":"../../../src","sources":["sqlite/values.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASA,IAAIA,CAACC,KAAc,EAAU;EAC5C,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGC,MAAM,CAACD,KAAkC,CAAC;AACtF;AAEA,OAAO,SAASE,GAAGA,CAACF,KAAc,EAAU;EAC3C,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGG,MAAM,CAACH,KAAwB,CAAC;AAC5E;AAEA,OAAO,SAASI,SAASA,CAACJ,KAAc,EAAiB;EACxD,OAAOA,KAAK,IAAI,IAAI,GAAG,IAAI,GAAGD,IAAI,CAACC,KAAK,CAAC;AAC1C;AAEA,OAAO,SAASK,QAAQA,CAACL,KAAc,EAAiB;EACvD,OAAOA,KAAK,IAAI,IAAI,GAAG,IAAI,GAAGE,GAAG,CAACF,KAAK,CAAC;AACzC","ignoreList":[]}