@workerstack/database 0.22.0 → 0.23.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 (121) hide show
  1. package/README.md +95 -30
  2. package/docs/meta-contract.md +1 -1
  3. package/package.json +3 -2
  4. package/src/cli/args.ts +4 -2
  5. package/src/cli/codegen.ts +2 -2
  6. package/src/cli/comb-config.ts +8 -3
  7. package/src/cli/file-path.ts +25 -0
  8. package/src/cli/migrate-apply.ts +5 -21
  9. package/src/cli/migrate-d1.ts +5 -1
  10. package/src/cli/migrate-json.ts +48 -0
  11. package/src/cli/migrate.ts +26 -4
  12. package/src/formats/bcp47.ts +12 -0
  13. package/src/formats/catalog.ts +27 -4
  14. package/src/index.ts +1 -0
  15. package/src/migrate/core/apply.ts +63 -22
  16. package/src/migrate/core/atlas-apply-runs.ts +15 -26
  17. package/src/migrate/core/cleanup.ts +22 -10
  18. package/src/migrate/core/d1-engine-child.mjs +27 -11
  19. package/src/migrate/core/d1-history.ts +23 -26
  20. package/src/migrate/core/d1-wrangler-error.ts +24 -1
  21. package/src/migrate/core/pg-replay-commit.ts +41 -38
  22. package/src/migrate/core/pg-replay-drops.ts +17 -32
  23. package/src/migrate/core/pg-replay-hidden.ts +75 -0
  24. package/src/migrate/core/pg-replay-roles.ts +2 -4
  25. package/src/migrate/core/pg-replay.ts +21 -19
  26. package/src/migrate/core/pg-server-snapshot.ts +4 -24
  27. package/src/migrate/core/proof-readers.ts +80 -0
  28. package/src/migrate/core/proof-run.ts +19 -5
  29. package/src/migrate/core/proof-scope.ts +27 -14
  30. package/src/migrate/core/sql-code.ts +36 -5
  31. package/src/migrate/core/sql-scan.ts +7 -1
  32. package/src/migrate/core/sqlite-keywords.ts +70 -0
  33. package/src/migrate/core/stopped.ts +70 -0
  34. package/src/migrate/core/trigger-write.d.mts +7 -0
  35. package/src/migrate/core/trigger-write.mjs +42 -0
  36. package/src/query/cursor-mint.ts +11 -18
  37. package/src/query/cursor-refusals.ts +22 -11
  38. package/src/query/descriptions.ts +4 -9
  39. package/src/query/filter-parse.ts +80 -22
  40. package/src/query/filter-validate.ts +10 -13
  41. package/src/query/filter.ts +40 -18
  42. package/src/query/list-extras.ts +7 -10
  43. package/src/query/list-schema.ts +0 -2
  44. package/src/query/merged.ts +3 -2
  45. package/src/query/pagination.ts +30 -6
  46. package/src/query/rounded-key.ts +5 -8
  47. package/src/query/schema-params.ts +12 -5
  48. package/src/query/select-validate.ts +7 -4
  49. package/src/query/sqlite/cursor-fit.ts +10 -2
  50. package/src/query/trusted.ts +7 -2
  51. package/types/cli/args.d.ts.map +1 -1
  52. package/types/cli/comb-config.d.ts +5 -2
  53. package/types/cli/comb-config.d.ts.map +1 -1
  54. package/types/cli/file-path.d.ts +11 -0
  55. package/types/cli/file-path.d.ts.map +1 -0
  56. package/types/cli/migrate-apply.d.ts +1 -0
  57. package/types/cli/migrate-apply.d.ts.map +1 -1
  58. package/types/cli/migrate-d1.d.ts.map +1 -1
  59. package/types/cli/migrate-json.d.ts +4 -0
  60. package/types/cli/migrate-json.d.ts.map +1 -0
  61. package/types/cli/migrate.d.ts.map +1 -1
  62. package/types/formats/bcp47.d.ts +9 -0
  63. package/types/formats/bcp47.d.ts.map +1 -0
  64. package/types/formats/catalog.d.ts.map +1 -1
  65. package/types/index.d.ts +1 -0
  66. package/types/index.d.ts.map +1 -1
  67. package/types/migrate/core/apply.d.ts +3 -2
  68. package/types/migrate/core/apply.d.ts.map +1 -1
  69. package/types/migrate/core/atlas-apply-runs.d.ts +6 -0
  70. package/types/migrate/core/atlas-apply-runs.d.ts.map +1 -1
  71. package/types/migrate/core/cleanup.d.ts +16 -4
  72. package/types/migrate/core/cleanup.d.ts.map +1 -1
  73. package/types/migrate/core/d1-history.d.ts.map +1 -1
  74. package/types/migrate/core/d1-wrangler-error.d.ts +11 -0
  75. package/types/migrate/core/d1-wrangler-error.d.ts.map +1 -1
  76. package/types/migrate/core/pg-replay-commit.d.ts +14 -9
  77. package/types/migrate/core/pg-replay-commit.d.ts.map +1 -1
  78. package/types/migrate/core/pg-replay-drops.d.ts +7 -12
  79. package/types/migrate/core/pg-replay-drops.d.ts.map +1 -1
  80. package/types/migrate/core/pg-replay-hidden.d.ts +36 -0
  81. package/types/migrate/core/pg-replay-hidden.d.ts.map +1 -0
  82. package/types/migrate/core/pg-replay-roles.d.ts +2 -4
  83. package/types/migrate/core/pg-replay-roles.d.ts.map +1 -1
  84. package/types/migrate/core/pg-replay.d.ts.map +1 -1
  85. package/types/migrate/core/pg-server-snapshot.d.ts +4 -11
  86. package/types/migrate/core/pg-server-snapshot.d.ts.map +1 -1
  87. package/types/migrate/core/proof-readers.d.ts +19 -0
  88. package/types/migrate/core/proof-readers.d.ts.map +1 -0
  89. package/types/migrate/core/proof-run.d.ts.map +1 -1
  90. package/types/migrate/core/proof-scope.d.ts +15 -7
  91. package/types/migrate/core/proof-scope.d.ts.map +1 -1
  92. package/types/migrate/core/sql-code.d.ts +7 -3
  93. package/types/migrate/core/sql-code.d.ts.map +1 -1
  94. package/types/migrate/core/sql-scan.d.ts.map +1 -1
  95. package/types/migrate/core/sqlite-keywords.d.ts +11 -0
  96. package/types/migrate/core/sqlite-keywords.d.ts.map +1 -0
  97. package/types/migrate/core/stopped.d.ts +23 -0
  98. package/types/migrate/core/stopped.d.ts.map +1 -0
  99. package/types/query/cursor-mint.d.ts.map +1 -1
  100. package/types/query/cursor-refusals.d.ts +17 -1
  101. package/types/query/cursor-refusals.d.ts.map +1 -1
  102. package/types/query/descriptions.d.ts +1 -1
  103. package/types/query/descriptions.d.ts.map +1 -1
  104. package/types/query/filter-parse.d.ts +15 -4
  105. package/types/query/filter-parse.d.ts.map +1 -1
  106. package/types/query/filter-validate.d.ts +1 -1
  107. package/types/query/filter-validate.d.ts.map +1 -1
  108. package/types/query/filter.d.ts +9 -1
  109. package/types/query/filter.d.ts.map +1 -1
  110. package/types/query/list-extras.d.ts.map +1 -1
  111. package/types/query/list-schema.d.ts.map +1 -1
  112. package/types/query/merged.d.ts.map +1 -1
  113. package/types/query/pagination.d.ts +13 -1
  114. package/types/query/pagination.d.ts.map +1 -1
  115. package/types/query/rounded-key.d.ts +2 -11
  116. package/types/query/rounded-key.d.ts.map +1 -1
  117. package/types/query/schema-params.d.ts.map +1 -1
  118. package/types/query/select-validate.d.ts.map +1 -1
  119. package/types/query/sqlite/cursor-fit.d.ts.map +1 -1
  120. package/types/query/trusted.d.ts +1 -1
  121. package/types/query/trusted.d.ts.map +1 -1
@@ -14,8 +14,11 @@ export declare function findCombConfig(cwd: string): Promise<CodegenConfig | und
14
14
  export declare function loadCombConfig(cwd: string): Promise<CodegenConfig>;
15
15
  /** The database `name` declares, or a CliError naming the ones it does, and `hint` when the caller has one */
16
16
  export declare function databaseIn(config: CodegenConfig, name: string, hint?: string): DatabaseCodegen;
17
- /** The tables file `tables` names, resolved against `cwd`; a CliError when it is missing */
18
- export declare function tablesFile(cwd: string, tables: string): string;
17
+ /**
18
+ * The tables file `tables` names, resolved against `cwd`, as `what` gave it (--tables, or
19
+ * comb.config.ts `tables`); a CliError when it is missing or not a file
20
+ */
21
+ export declare function tablesFile(cwd: string, tables: string, what: "--tables" | "tables"): string;
19
22
  /** A database comb.config.ts declares FTS on: its tables file and the FTS of each table */
20
23
  export type DeclaredFts = {
21
24
  fts: Record<string, FtsTableConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"comb-config.d.ts","sourceRoot":"","sources":["../../src/cli/comb-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAA;AAS9C;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAS7E;AAED,2EAA2E;AAC3E,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CASpF;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAIxE;AAED,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAK9F;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjF;;;;GAIG;AACH,wBAAsB,WAAW,CAChC,GAAG,EAAE,MAAM,EACX,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrE,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAKlC;AAED,kGAAkG;AAClG,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAK3F"}
1
+ {"version":3,"file":"comb-config.d.ts","sourceRoot":"","sources":["../../src/cli/comb-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAA;AAS9C;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAS7E;AAED,2EAA2E;AAC3E,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CASpF;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAIxE;AAED,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAK9F;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAK3F;AAED,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjF;;;;GAIG;AACH,wBAAsB,WAAW,CAChC,GAAG,EAAE,MAAM,EACX,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrE,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAKlC;AAED,kGAAkG;AAClG,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAK3F"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Refuse `file`, which `what` names (an option or a config field), when it exists as other than a
3
+ * file, saying what it is, then `fix`; a missing one is left to the caller, which refuses it its own way
4
+ */
5
+ export declare function refuseNotFile(file: string, what: string, fix: string): void;
6
+ /**
7
+ * Refuse a name a file is made from, `what` naming it, when it would name a path: one holding a
8
+ * separator, or `.` or `..` alone; then `usage`
9
+ */
10
+ export declare function refusePathName(name: string, what: string, usage: string): void;
11
+ //# sourceMappingURL=file-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-path.d.ts","sourceRoot":"","sources":["../../src/cli/file-path.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG9E"}
@@ -2,6 +2,7 @@ import { type Peers } from "../migrate/core/optional-peer.ts";
2
2
  import type { Command, Provider } from "../migrate/core/peer-needs.ts";
3
3
  import { type CliContext } from "./output.ts";
4
4
  type Mode = "apply" | "baseline" | "check" | "status";
5
+ /** `migrate apply|baseline|check|status`, with --json as one JSON object (migrate-json.ts) */
5
6
  export declare function migrateApply(mode: Mode, argv: readonly string[], io: CliContext): Promise<void>;
6
7
  /**
7
8
  * Every peer `command` on `provider` needs, Atlas's version read through `io` among them, refused
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-apply.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-apply.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAS,KAAK,KAAK,EAAgB,MAAM,kCAAkC,CAAA;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAQtE,OAAO,EAAyB,KAAK,UAAU,EAAiC,MAAM,aAAa,CAAA;AAEnG,KAAK,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAoMrD,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrG;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,OAAO,EAChB,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClE,OAAO,CAAC,KAAK,CAAC,CAGhB"}
1
+ {"version":3,"file":"migrate-apply.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-apply.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAS,KAAK,KAAK,EAAgB,MAAM,kCAAkC,CAAA;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAQtE,OAAO,EAAyB,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAEzF,KAAK,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AA+LrD,8FAA8F;AAC9F,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrG;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,OAAO,EAChB,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClE,OAAO,CAAC,KAAK,CAAC,CAGhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-d1.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-d1.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,4BAA4B,CAAA;AAE/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAyB,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,KAAK,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEvD,8DAA8D;AAC9D,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/E,gGAAgG;AAChG,iBAAS,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAepH;AAED,qHAAqH;AACrH,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB,wBAAsB,SAAS,CAC9B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,QAAQ,EAAE,UAAU,GAClB,OAAO,CAAC,cAAc,CAAC,CAmDzB"}
1
+ {"version":3,"file":"migrate-d1.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-d1.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,4BAA4B,CAAA;AAE/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,qBAAqB,CAAA;AAErE,OAAO,EAAyB,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,KAAK,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEvD,8DAA8D;AAC9D,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/E,gGAAgG;AAChG,iBAAS,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAkBpH;AAED,qHAAqH;AACrH,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB,wBAAsB,SAAS,CAC9B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,QAAQ,EAAE,UAAU,GAClB,OAAO,CAAC,cAAc,CAAC,CAmDzB"}
@@ -0,0 +1,4 @@
1
+ import { type CliContext, type MigrateOutcome } from "./output.ts";
2
+ /** `run` on `db`, its human lines on stderr and its one JSON object on `io.out` */
3
+ export declare function asJson(db: string, io: CliContext, run: (io: CliContext) => Promise<MigrateOutcome>): Promise<void>;
4
+ //# sourceMappingURL=migrate-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-json.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-json.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAY,MAAM,aAAa,CAAA;AAK5E,mFAAmF;AACnF,wBAAsB,MAAM,CAC3B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,OAAO,CAAC,cAAc,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AA0NvD,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrG"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAY,KAAK,UAAU,EAAY,MAAM,aAAa,CAAA;AA+OjE,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Whether `value` is a well-formed BCP 47 language tag, RFC 5646 §2.1's Language-Tag, exactly as
3
+ * written: a langtag such as zh-Hant-TW or es-419, a private-use tag such as x-private, or a
4
+ * grandfathered tag such as i-klingon. It takes what a `format: "bcp47"` column takes before its
5
+ * trim, from the same grammar: it never trims or folds case, so " en" is no tag. A value that is no
6
+ * string at runtime is refused, and this never throws.
7
+ */
8
+ export declare function isBcp47(value: string): boolean;
9
+ //# sourceMappingURL=bcp47.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bcp47.d.ts","sourceRoot":"","sources":["../../src/formats/bcp47.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/formats/catalog.ts"],"names":[],"mappings":"AAoBA,0EAA0E;AAC1E,eAAO,MAAM,YAAY,YACxB,WAAW,EACX,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,SAAS,CACA,CAAA;AAEV,iEAAiE;AACjE,eAAO,MAAM,eAAe,YAAI,eAAe,EAAE,iBAAiB,CAAU,CAAA;AAE5E,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6BAA6B;AAC7B,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D,qEAAqE;AACrE,KAAK,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAEvG,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACxB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC,EAAE,CAAA;IACnE,uHAAuH;IACvH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,4GAA4G;IAC5G,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG;IACzB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB,CAAA;AAyID,sCAAsC;AACtC,eAAO,MAAM,OAAO,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,UAAU,GAAG,UAAU;CAA4B,CAAA;AAE1F,0CAA0C;AAC1C,eAAO,MAAM,aAAa,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,aAAa,GAAG,WAAW;CAGvE,CAAA;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKtE"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/formats/catalog.ts"],"names":[],"mappings":"AAoBA,0EAA0E;AAC1E,eAAO,MAAM,YAAY,YACxB,WAAW,EACX,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,SAAS,CACA,CAAA;AAEV,iEAAiE;AACjE,eAAO,MAAM,eAAe,YAAI,eAAe,EAAE,iBAAiB,CAAU,CAAA;AAE5E,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6BAA6B;AAC7B,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D,qEAAqE;AACrE,KAAK,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAEvG,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACxB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC,EAAE,CAAA;IACnE,uHAAuH;IACvH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,4GAA4G;IAC5G,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG;IACzB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB,CAAA;AAgKD,sCAAsC;AACtC,eAAO,MAAM,OAAO,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,UAAU,GAAG,UAAU;CAA4B,CAAA;AAE1F,0CAA0C;AAC1C,eAAO,MAAM,aAAa,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,aAAa,GAAG,WAAW;CAGvE,CAAA;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKtE"}
package/types/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { isCidr } from "./cidr.ts";
2
+ export { isBcp47 } from "./formats/bcp47.ts";
2
3
  export type { IntegerFormat, TextFormat } from "./formats/catalog.ts";
3
4
  export { isIanaTimeZone } from "./formats/iana-time-zone.ts";
4
5
  export { isIso3166Alpha2, isIso3166Alpha3 } from "./formats/iso3166-1.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EACN,KAAK,YAAY,EACjB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GACjB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC9F,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,eAAe,GACf,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EACN,KAAK,YAAY,EACjB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GACjB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC9F,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,eAAe,GACf,MAAM,YAAY,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import type { Connection } from "../types.ts";
2
2
  import { type RetryOptions } from "./utils.ts";
3
3
  /** Whether a unique index of comb's history holds its hash alone, as comb's table did before 0.13 */
4
- export declare function hashUnique(conn: Connection): Promise<boolean>;
4
+ export declare const hashUnique: (conn: Connection) => Promise<boolean>;
5
5
  /**
6
6
  * comb's history, made where it is missing, named from 0.11, and from a history before 0.13
7
7
  * rebuilt in one batch: every row and id kept, each row `renamed` lists taking its new name,
@@ -46,7 +46,8 @@ type ApplyOptions = {
46
46
  * record it wrote says it ran, so a retry reads the history first and runs nothing again.
47
47
  * When no read of `history` answers after a batch that failed transiently, the failure is an Unconfirmed.
48
48
  * The record goes first, so a batch whose file another run recorded while it waited for the lock
49
- * fails on the name at once and runs nothing; the history then says so, and it is that run's.
49
+ * fails on the name's unique index at once and runs nothing (ensureMigrationsTable keeps one on every
50
+ * history, whoever made the table); the history then says so, and it is that run's.
50
51
  * Returns who applied it.
51
52
  */
52
53
  export declare function applyRecorded(conn: Pick<Connection, "batch">, migration: Recorded, { history, retry }: ApplyOptions): Promise<"this run" | "another run">;
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/apply.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,YAAY,CAAA;AAezD,qGAAqG;AACrG,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACvD,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/G;AAID;;;;GAIG;AACH,eAAO,MAAM,YAAY,+BAA+B,CAAA;AAExD,+GAA+G;AAC/G,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtG;AAED,8EAA8E;AAC9E,KAAK,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEjF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,CAAA;AAEhE,mHAAmH;AACnH,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,CAAA;AAS9F;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,QAAQ,EACnB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,GAC9B,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,CAkCrC;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EACnC,UAAU,EAAE,SAAS,QAAQ,EAAE,EAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CAsBf"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/apply.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAM7C,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,YAAY,CAAA;AA4BzD,qGAAqG;AACrG,eAAO,MAAM,UAAU,SAAU,UAAU,KAAG,OAAO,CAAC,OAAO,CAA2B,CAAA;AAmBxF;;;;GAIG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GACvD,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/G;AAID;;;;GAIG;AACH,eAAO,MAAM,YAAY,+BAA+B,CAAA;AAExD,+GAA+G;AAC/G,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtG;AAED,8EAA8E;AAC9E,KAAK,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEjF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,CAAA;AAEhE,mHAAmH;AACnH,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,CAAA;AAS9F;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,QAAQ,EACnB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,GAC9B,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,CAkCrC;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EACnC,UAAU,EAAE,SAAS,QAAQ,EAAE,EAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CAwCf"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * The apply itself, once comb approved the pending files: one Atlas call per file, so
3
+ * each file runs on a session of its own, as it would alone, as on SQLite and on D1. No
4
+ * reading of a file proves what it leaves on its session: a trigger, a default, a DO block's EXECUTE
5
+ * or code the target holds can each run a SET that outlives its COMMIT.
6
+ */
1
7
  import { type Foreign } from "./atlas-foreign.ts";
2
8
  import { type AtlasStatus, checkHistory } from "./atlas-history.ts";
3
9
  import { type AtlasCommand } from "./atlas-status.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"atlas-apply-runs.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/atlas-apply-runs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAkB,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnF,OAAO,EAAS,KAAK,YAAY,EAAe,MAAM,mBAAmB,CAAA;AA6CzE;;;;;;;GAOG;AACH,iBAAe,SAAS,CACvB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChH,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AA+BD,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"atlas-apply-runs.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/atlas-apply-runs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAkB,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnF,OAAO,EAAS,KAAK,YAAY,EAAe,MAAM,mBAAmB,CAAA;AAoCzE;;;;;;;GAOG;AACH,iBAAe,SAAS,CACvB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChH,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AA+BD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1,5 +1,17 @@
1
- /** A step a signal runs, told which signal came */
2
- type Step = (signal: NodeJS.Signals) => unknown;
1
+ /**
2
+ * A step a signal runs, told which signal came and what the steps that ran before it returned, in
3
+ * that order: a step held first runs last, and reads what the steps held after it found out
4
+ */
5
+ type Step = (signal: NodeJS.Signals, earlier: readonly unknown[]) => unknown;
6
+ /**
7
+ * The signals a held step runs on: every one whose default action ends the process and that a
8
+ * terminal or a supervisor sends. A Ctrl-C (SIGINT), a Ctrl-\ (SIGQUIT), a container stop or a CI
9
+ * step timeout (SIGTERM), and a terminal's hangup, as an SSH drop sends it (SIGHUP): a child in a
10
+ * group of its own gets none of them from the terminal, so comb's forward is its only signal.
11
+ */
12
+ export declare const STOP_SIGNALS: readonly ["SIGHUP", "SIGINT", "SIGQUIT", "SIGTERM"];
13
+ /** One of STOP_SIGNALS */
14
+ export type StopSignal = (typeof STOP_SIGNALS)[number];
3
15
  /**
4
16
  * Settles once every stop begun so far has ended: asked for the process's end, or let a host that
5
17
  * listens keep it. A test that stubs process.kill around a signal restores it only past this, so
@@ -13,7 +25,7 @@ export declare function stopsEnded(): Promise<void>;
13
25
  */
14
26
  export declare function pastStop(): Promise<void>;
15
27
  /**
16
- * Hold `step` until the release this returns, so SIGINT and SIGTERM run it before the process ends.
28
+ * Hold `step` until the release this returns, so a stop signal runs it before the process ends.
17
29
  * The listener is read from the process, not remembered: a host that removed every listener gets it back.
18
30
  */
19
31
  export declare function hold(step: Step): () => void;
@@ -49,7 +61,7 @@ export type Scratch = {
49
61
  };
50
62
  /**
51
63
  * A new directory under the temp directory that only this user can open (0700), named `prefix`, this
52
- * process's pid and host mark, and removed by `remove`, or by SIGINT or SIGTERM before it. A
64
+ * process's pid and host mark, and removed by `remove`, or by a stop signal before it. A
53
65
  * process's first scratch of a prefix sweeps what killed runs left.
54
66
  */
55
67
  export declare function scratchDir(prefix: string): Scratch;
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/cleanup.ts"],"names":[],"mappings":"AAaA,mDAAmD;AACnD,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO,CAAA;AAsE/C;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,IAAI,CAI3C;AAKD;;;GAGG;AACH,wBAAgB,WAAW,IAAI;IAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAAE,CAUpG;AAED,gDAAgD;AAChD,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOnG;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5C;AAED,wHAAwH;AACxH,eAAO,MAAM,gBAAgB,EAAE,MAAwB,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAQjC;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAetG;AAKD,+DAA+D;AAC/D,MAAM,MAAM,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAA;AAErD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAelD"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/cleanup.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,CAAA;AAK5E;;;;;GAKG;AACH,eAAO,MAAM,YAAY,YAAI,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AAE/E,0BAA0B;AAC1B,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAiEtD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,IAAI,CAI3C;AAKD;;;GAGG;AACH,wBAAgB,WAAW,IAAI;IAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAAE,CAUpG;AAED,gDAAgD;AAChD,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOnG;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5C;AAED,wHAAwH;AACxH,eAAO,MAAM,gBAAgB,EAAE,MAAwB,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAQjC;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAetG;AAKD,+DAA+D;AAC/D,MAAM,MAAM,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAA;AAErD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAelD"}
@@ -1 +1 @@
1
- {"version":3,"file":"d1-history.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/d1-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAI7C,OAAO,EAAqB,KAAK,QAAQ,EAAgB,KAAK,UAAU,EAAkB,MAAM,iBAAiB,CAAA;AAyIjH,KAAK,OAAO,GAAG;IACd,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtD,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,UAAU,CAAA;CAChB,CAAA;AAED,wGAAwG;AACxG,iBAAe,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqD5E;AAED;;;;;;GAMG;AACH,iBAAe,UAAU,CACxB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiCjD;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQjH;AAED,6GAA6G;AAC7G,iBAAe,QAAQ,CACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAanD;AAED,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"d1-history.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/d1-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAI7C,OAAO,EAAqB,KAAK,QAAQ,EAAgB,KAAK,UAAU,EAAkB,MAAM,iBAAiB,CAAA;AAqHjH,KAAK,OAAO,GAAG;IACd,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtD,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,UAAU,CAAA;CAChB,CAAA;AAqBD,wGAAwG;AACxG,iBAAe,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmD5E;AAED;;;;;;GAMG;AACH,iBAAe,UAAU,CACxB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiCjD;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQjH;AAED,6GAA6G;AAC7G,iBAAe,QAAQ,CACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAanD;AAED,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA"}
@@ -10,5 +10,16 @@ export declare function wranglerError({ stderr, stdout }: Ran): string;
10
10
  * never waited out, since comb cannot know the batch did nothing, and what the table holds says what is still pending.
11
11
  */
12
12
  export declare function applyFailure(ran: Ran, locked: boolean): string;
13
+ /** Refuse a failed run, or one whose table gained (`added`) other than the `names` checked, naming a file never checked */
14
+ export declare function refuseUnlike(ran: {
15
+ code: number;
16
+ stderr: string;
17
+ stdout: string;
18
+ }, { added, locked, names, table }: {
19
+ added: string[];
20
+ locked: boolean;
21
+ names: string[];
22
+ table: string;
23
+ }): void;
13
24
  export {};
14
25
  //# sourceMappingURL=d1-wrangler-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"d1-wrangler-error.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/d1-wrangler-error.ts"],"names":[],"mappings":"AAKA,KAAK,GAAG,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7C,2HAA2H;AAC3H,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI9D"}
1
+ {"version":3,"file":"d1-wrangler-error.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/d1-wrangler-error.ts"],"names":[],"mappings":"AAOA,KAAK,GAAG,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7C,2HAA2H;AAC3H,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI9D;AAED,2HAA2H;AAC3H,wBAAgB,YAAY,CAC3B,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACrD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnG,IAAI,CAeN"}
@@ -2,11 +2,13 @@
2
2
  * The replay's transactions and the reads around them (pg-replay.ts): a file's or comb's own
3
3
  * statement's transaction, refused before its COMMIT when this backend's counts show it wrote past
4
4
  * its database, and the server's shared catalogs read as committed around it and around
5
- * every bare statement, a change there the file's when it is to an object the file names;
5
+ * every bare statement, a change there the file's when it is to the replay's own database, or to an
6
+ * object the file names beside a statement that can run code comb cannot read;
6
7
  * a `txmode none` file's statement in a transaction of its own first, bare only when
7
8
  * Postgres runs it outside a block alone.
8
9
  */
9
10
  import { type Run } from "./pg-replay-roles.ts";
11
+ import { type Hidden } from "./pg-replay-hidden.ts";
10
12
  import { type Snapshot } from "./pg-server-snapshot.ts";
11
13
  import { type Own } from "./pg-server-writes.ts";
12
14
  /**
@@ -16,23 +18,26 @@ import { type Own } from "./pg-server-writes.ts";
16
18
  */
17
19
  declare function begin(run: Run): Promise<void>;
18
20
  /**
19
- * Where a replayed transaction or bare statement is: its file's name and the names it spells, the
20
- * statement, if bare, and what a refusal stops; told each role the transaction adds that the replay
21
- * adopts
21
+ * Where a replayed transaction or bare statement is: its file's name and the names it spells, what
22
+ * its statements so far can run that comb cannot read (`hidden`), the statement, if bare, and what a
23
+ * refusal stops; told each role the transaction adds that the replay adopts
22
24
  */
23
25
  type At = {
24
26
  adopted?: ((role: string) => void) | undefined;
27
+ hidden: Hidden;
25
28
  name: string;
26
29
  names: ReadonlySet<string>;
27
30
  sent: string | undefined;
28
31
  stops: string;
29
32
  };
30
33
  /**
31
- * The server's shared catalogs read as committed against the last read: a change since to an object
32
- * the file `name` names (`names`), while `sent` or the whole file ran, is refused, and a role or
33
- * database it added is the cleanup's; a change to any other is another session's. The
34
- * replay's own database is the file's whatever it spells, as only this replay runs in it, and is
35
- * the cleanup's too. `read` is that read when the caller took it
34
+ * The server's shared catalogs read as committed against the last read: a change since to the
35
+ * replay's own database, or to what it holds, is the file's, as only this replay runs in it, and the
36
+ * cleanup drops it. A change to an object the file names is the file's when its statements so far
37
+ * can run code comb cannot read (pg-replay-hidden.ts), the one way a change past the database gets by
38
+ * the counts, and is refused, but no cleanup drops it: Postgres keeps no creator for a role or a
39
+ * database, and another session may have made it. A change to any other object, or beside statements
40
+ * that run only what their parse says, is another session's. `read` is that read when the caller took it
36
41
  */
37
42
  declare function window(run: Run, at: At, read?: Snapshot): Promise<void>;
38
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pg-replay-commit.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-commit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAoB,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAS,KAAK,QAAQ,EAA8C,MAAM,yBAAyB,CAAA;AAC1G,OAAO,EAIN,KAAK,GAAG,EAIR,MAAM,uBAAuB,CAAA;AAG9B;;;;GAIG;AACH,iBAAe,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5C;AAED;;;;GAIG;AACH,KAAK,EAAE,GAAG;IACT,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAKD;;;;;;GAMG;AACH,iBAAe,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAsDD;;;;;;GAMG;AACH,iBAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAQxD;AAYD;;;;GAIG;AACH,iBAAe,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BrD;AAKD;;;;;;GAMG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAED,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"pg-replay-commit.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-commit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAoB,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAA8C,MAAM,yBAAyB,CAAA;AACnG,OAAO,EAIN,KAAK,GAAG,EAIR,MAAM,uBAAuB,CAAA;AAG9B;;;;GAIG;AACH,iBAAe,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5C;AAED;;;;GAIG;AACH,KAAK,EAAE,GAAG;IACT,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAYD;;;;;;;;GAQG;AACH,iBAAe,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;AA4CD;;;;;;GAMG;AACH,iBAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAQxD;AAYD;;;;GAIG;AACH,iBAAe,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BrD;AAKD;;;;;;GAMG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAED,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA"}
@@ -4,15 +4,10 @@ import { type Sql } from "./pg-replay-database.ts";
4
4
  import type { Run } from "./pg-replay-roles.ts";
5
5
  /** `step` run, its failure passed: one whose failure leaves something has it said by the drop that then fails (dropOr) */
6
6
  declare function settle(step: () => Promise<unknown>): Promise<void>;
7
- /** What a drop that failed left on devUrl's server, a database, role or slot by name, and whether a later sweep takes it */
8
- type Left = {
9
- swept: boolean;
10
- what: string;
11
- };
12
- /** How a drop that failed is said: what it `left`, with dev's error */
13
- type Leave = (left: Left, error: unknown) => void;
7
+ /** How a drop that failed is said: what it left on devUrl's server, a database, role or slot by name, with dev's error */
8
+ type Leave = (left: string, error: unknown) => void;
14
9
  /** `drop` run, a failure `leave`d: cleaning up never replaces the replay's verdict, and never leaves something unsaid */
15
- declare function dropOr(leave: Leave, left: Left, drop: () => Promise<unknown>): Promise<void>;
10
+ declare function dropOr(leave: Leave, left: string, drop: () => Promise<unknown>): Promise<void>;
16
11
  /** How the drops reach devUrl's server: a session in `database`, which a subscription's drop needs, and how a failed drop is said */
17
12
  type Drops = {
18
13
  into: (database: string) => Sql;
@@ -52,10 +47,10 @@ declare function sweep(admin: Sql, now: number, drops: Drops): Promise<void>;
52
47
  declare function sweepDev(target: PgTarget, print: (line: string) => void, load?: () => Promise<Connect>): Promise<void>;
53
48
  /**
54
49
  * `run`'s cleanup, each drop that fails `leave`d: its connection closed, a query in flight with it,
55
- * any backend still in its database ended, the slots a refused window added, which a drop waits on,
56
- * the database's subscriptions and slots, which keep it from its drop, the database made no
57
- * template and dropped, forcing out a backend that came in since, each role it made, and that
58
- * window's roles and idle databases, which no sweep takes
50
+ * any backend still in its database ended, the database's subscriptions and slots, which keep it
51
+ * from its drop, the database made no template and dropped, forcing out a backend that came in
52
+ * since, and each role it made or adopted. It drops nothing else a refused window saw, as Postgres
53
+ * keeps no creator for a role, a database or a slot, and another session may have made it
59
54
  */
60
55
  declare function cleanUp(run: Run, drops: Drops): Promise<void>;
61
56
  export { cleanUp, type Drops, dropMade, dropOr, dropRole, dropSlot, type Leave, leaving, settle, sweep, sweepDev };
@@ -1 +1 @@
1
- {"version":3,"file":"pg-replay-drops.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-drops.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,KAAK,OAAO,EAAE,SAAS,EAAgB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAqB,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAG/C,0HAA0H;AAC1H,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjE;AAED,4HAA4H;AAC5H,KAAK,IAAI,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5C,uEAAuE;AACvE,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAEjD,yHAAyH;AACzH,iBAAe,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;AAED,qIAAqI;AACrI,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9D,mEAAmE;AACnE,iBAAS,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAK9F;AAED,8DAA8D;AAC9D,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAkCD;;;;;GAKG;AACH,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D;AAMD;;;GAGG;AACH,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;AAED;;;;GAIG;AACH,iBAAe,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAazE;AAQD;;;;;;;;GAQG;AACH,iBAAe,QAAQ,CACtB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,GAAE,MAAM,OAAO,CAAC,OAAO,CAA8B,GACvD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;;;GAMG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5D;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"pg-replay-drops.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-drops.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,KAAK,OAAO,EAAE,SAAS,EAAgB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAqB,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAG/C,0HAA0H;AAC1H,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjE;AAED,0HAA0H;AAC1H,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAEnD,yHAAyH;AACzH,iBAAe,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F;AAED,qIAAqI;AACrI,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9D,mEAAmE;AACnE,iBAAS,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAK9F;AAED,8DAA8D;AAC9D,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAiCD;;;;;GAKG;AACH,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D;AAMD;;;GAGG;AACH,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;AAED;;;;GAIG;AACH,iBAAe,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzE;AAQD;;;;;;;;GAQG;AACH,iBAAe,QAAQ,CACtB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,GAAE,MAAM,OAAO,CAAC,OAAO,CAA8B,GACvD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;;;GAMG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5D;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Whether the statements a replay's window covers can run code comb cannot read, the only way one
3
+ * makes a change past its database that this backend's counts miss (pg-replay-commit.ts): a DO
4
+ * block, a CALL, an EXECUTE, or a call of a function outside pg_catalog, dblink's among them. A
5
+ * statement whose tree holds none of those runs only what its parse says, and BEYOND and SERVER_CALLS
6
+ * (pg-outside-transaction.ts, pg-server-calls.ts) leave out every such statement that reaches past
7
+ * the database, so a change the server's read shows beside it is another session's. A function
8
+ * called by a bare name is pg_catalog's only where the replay's database holds no other of that name,
9
+ * as an overload in a schema on the search path can take the call, and the file makes none of it.
10
+ * Code Postgres runs for a statement on its own, a trigger, a default, an operator or a cast that
11
+ * calls a function an earlier file defines, is no call in the tree, so it is not read here; what it
12
+ * writes in the replay's transaction its counts still see.
13
+ */
14
+ import type { Sql } from "./pg-replay-database.ts";
15
+ /**
16
+ * What the statements so far can run that comb cannot read: `code` when one surely can, the
17
+ * functions they call by a bare name (`calls`), which may be pg_catalog's, and those the file makes
18
+ * (`made`). A file's every later window counts what one ran, as a change a DO block makes in the
19
+ * file's own block commits at its COMMIT
20
+ */
21
+ type Hidden = {
22
+ calls: Set<string>;
23
+ code: boolean;
24
+ made: Set<string>;
25
+ };
26
+ /** Nothing run yet */
27
+ declare const nothingHidden: () => Hidden;
28
+ /** A statement the replay runs, read `into`: one the parser cannot read may run anything */
29
+ declare function readStatement(tree: unknown, into: Hidden): void;
30
+ /**
31
+ * Whether what `hidden` holds can run code comb cannot read, a bare name resolved on `sql`, the
32
+ * replay's connection, which sees what its open transaction made
33
+ */
34
+ declare function runsHidden(sql: Sql, { calls, code, made }: Hidden): Promise<boolean>;
35
+ export { type Hidden, nothingHidden, readStatement, runsHidden };
36
+ //# sourceMappingURL=pg-replay-hidden.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-replay-hidden.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-hidden.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAElD;;;;;GAKG;AACH,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAEtE,sBAAsB;AACtB,QAAA,MAAM,aAAa,QAAO,MAA8D,CAAA;AA0BxF,4FAA4F;AAC5F,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGxD;AASD;;;GAGG;AACH,iBAAe,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnF;AAED,OAAO,EAAE,KAAK,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA"}
@@ -1,13 +1,12 @@
1
1
  import { type Sql } from "./pg-replay-database.ts";
2
2
  import { type Rows, type Writes } from "./pg-server-writes.ts";
3
- import type { Snapshot, Strays } from "./pg-server-snapshot.ts";
3
+ import type { Snapshot } from "./pg-server-snapshot.ts";
4
4
  /**
5
5
  * One replay's state: its connection, the server as committed (`admin`), its database, the backend
6
6
  * that owns it, its role (`role`, which CURRENT_USER and its kin name in a file), whether that role
7
7
  * is a superuser, which reads pg_authid, whether it has CREATEROLE (`createrole`), and the roles it made; the
8
8
  * open transaction's own writes, comb's CREATE ROLEs', with the rows they left; the shared catalogs
9
- * as last read committed (`seen`), and the roles, databases and replication slots a refused window
10
- * added (`strays`), which the cleanup drops
9
+ * as last read committed (`seen`)
11
10
  */
12
11
  type Run = {
13
12
  admin: Sql;
@@ -22,7 +21,6 @@ type Run = {
22
21
  role: string;
23
22
  seen: Snapshot;
24
23
  sql: Sql;
25
- strays: Strays;
26
24
  /** the tablespaces it left out the CREATE of, which a statement then runs in pg_default instead */
27
25
  tablespaces: Set<string>;
28
26
  superuser: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"pg-replay-roles.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-roles.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAmB,KAAK,GAAG,EAAO,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAiC,KAAK,IAAI,EAAe,KAAK,MAAM,EAAe,MAAM,uBAAuB,CAAA;AACvH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAG/D;;;;;;;GAOG;AACH,KAAK,GAAG,GAAG;IACV,KAAK,EAAE,GAAG,CAAA;IACV,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;IACd,mGAAmG;IACnG,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,sIAAsI;AACtI,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUrG;AAED,gHAAgH;AAChH,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxG;AA0BD;;;GAGG;AACH,iBAAS,QAAQ,CAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,GACrB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBnD;AAED;;;;;;;GAOG;AACH,iBAAe,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9F,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED;;;GAGG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBhF;AAED;;;;GAIG;AACH,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc1E;AAED;;;GAGG;AACH,iBAAe,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAKD,6GAA6G;AAC7G,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAEjF;AAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,EAAE,CAAA"}
1
+ {"version":3,"file":"pg-replay-roles.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay-roles.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAmB,KAAK,GAAG,EAAO,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAiC,KAAK,IAAI,EAAe,KAAK,MAAM,EAAe,MAAM,uBAAuB,CAAA;AACvH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGvD;;;;;;GAMG;AACH,KAAK,GAAG,GAAG;IACV,KAAK,EAAE,GAAG,CAAA;IACV,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,mGAAmG;IACnG,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,sIAAsI;AACtI,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUrG;AAED,gHAAgH;AAChH,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxG;AA0BD;;;GAGG;AACH,iBAAS,QAAQ,CAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,GACrB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBnD;AAED;;;;;;;GAOG;AACH,iBAAe,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9F,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED;;;GAGG;AACH,iBAAe,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBhF;AAED;;;;GAIG;AACH,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc1E;AAED;;;GAGG;AACH,iBAAe,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAKD,6GAA6G;AAC7G,iBAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAEjF;AAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pg-replay.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay.ts"],"names":[],"mappings":"AA8CA,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAKpE,OAAO,EAAE,KAAK,OAAO,EAAwC,MAAM,sBAAsB,CAAA;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAoE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAKpH,OAAO,EAAe,KAAK,MAAM,EAAgC,MAAM,0BAA0B,CAAA;AASjG,0CAA0C;AAC1C,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,sHAAsH;AACtH,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AA0ID;;;;GAIG;AACH,iBAAe,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,EACC,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,MAAM,EACT,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IACvC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B,GACC,OAAO,CAAC,CAAC,CAAC,CAqCZ;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,QAAQ,EAChB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,EACvD,IAAI,GAAE,MAAM,OAAO,CAAC,OAAO,CAA+B,GACxD,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,CAAC,CAAA;CAAE,CAAC,CAWjD;AAED,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"pg-replay.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-replay.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAKpE,OAAO,EAAE,KAAK,OAAO,EAAwC,MAAM,sBAAsB,CAAA;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAoE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAKpH,OAAO,EAAe,KAAK,MAAM,EAAgC,MAAM,0BAA0B,CAAA;AAUjG,0CAA0C;AAC1C,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,sHAAsH;AACtH,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AA4ID;;;;GAIG;AACH,iBAAe,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,EACC,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,MAAM,EACT,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IACvC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B,GACC,OAAO,CAAC,CAAC,CAAC,CAqCZ;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,QAAQ,EAChB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,EACvD,IAAI,GAAE,MAAM,OAAO,CAAC,OAAO,CAA+B,GACxD,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,CAAC,CAAA;CAAE,CAAC,CAWjD;AAED,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -2,8 +2,9 @@
2
2
  * The server's shared catalogs read as committed, in one query: what a bare
3
3
  * statement changed, which no transaction counts, and what a second connection committed, which this
4
4
  * backend's counts never see (pg-server-writes.ts). The read is the server's, another session's work
5
- * in it too, so each row carries the names of the objects it is about, and a change is a file's only
6
- * when one is a name the file spells (namesIn in sql-code.ts). A replay's own rows are left out, but
5
+ * in it too, so each row carries the names of the objects it is about: a change is a file's when it
6
+ * is to the replay's own database, or to a name the file spells (namesIn in sql-code.ts) beside a
7
+ * statement that can run code comb cannot read (pg-replay-hidden.ts). A replay's own rows are left out, but
7
8
  * for the fields of its own database's row that keep the cleanup from dropping it, which only that
8
9
  * replay changes. Beside the catalogs, the server's replication slots, which no catalog
9
10
  * holds.
@@ -33,15 +34,7 @@ declare function snapshot(admin: Sql): Promise<Snapshot>;
33
34
  * name in `names`, the names a file spells, when given
34
35
  */
35
36
  declare function snapshotChanges(before: Snapshot, after: Snapshot, names?: ReadonlySet<string>): string[];
36
- /** What the cleanup drops, by the noun its subject starts with */
37
- type Strays = {
38
- databases: string[];
39
- roles: string[];
40
- slots: string[];
41
- };
42
- /** The roles, databases and replication slots named in `names` that `after` holds and `before` does not */
43
- declare function added(before: Snapshot, after: Snapshot, names: ReadonlySet<string>): Strays;
44
37
  /** The subscriptions `after` holds in `database` and `before` does not, by subject: its drop takes them */
45
38
  declare const subscriptionsIn: (before: Snapshot, after: Snapshot, database: string) => string[];
46
- export { added, prepareSnapshot, type Snapshot, snapshot, snapshotChanges, type Strays, subscriptionsIn };
39
+ export { prepareSnapshot, type Snapshot, snapshot, snapshotChanges, subscriptionsIn };
47
40
  //# sourceMappingURL=pg-server-snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pg-server-snapshot.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-server-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AA6ElD;;;GAGG;AACH,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAA;AAEvF;;;;GAIG;AACH,iBAAe,eAAe,CAC7B,KAAK,EAAE,GAAG,EACV,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,gIAAgI;AAChI,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQrD;AAWD;;;GAGG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAajG;AAED,kEAAkE;AAClE,KAAK,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AASvE,2GAA2G;AAC3G,iBAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAQpF;AAED,2GAA2G;AAC3G,QAAA,MAAM,eAAe,WAAY,QAAQ,SAAS,QAAQ,YAAY,MAAM,KAAG,MAAM,EAKvD,CAAA;AAE9B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"pg-server-snapshot.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/pg-server-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AA6ElD;;;GAGG;AACH,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAA;AAEvF;;;;GAIG;AACH,iBAAe,eAAe,CAC7B,KAAK,EAAE,GAAG,EACV,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,gIAAgI;AAChI,iBAAe,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQrD;AAWD;;;GAGG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAajG;AAED,2GAA2G;AAC3G,QAAA,MAAM,eAAe,WAAY,QAAQ,SAAS,QAAQ,YAAY,MAAM,KAAG,MAAM,EAKvD,CAAA;AAE9B,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * What a file leaves unable to run: SQLite's DROP TABLE and DROP VIEW check no view or trigger that names what they
3
+ * drop, and SQLite, D1 and libsql resolve those names only when a statement runs. So a file can apply and leave every
4
+ * read of a view, or every write a trigger fires on, failing. After a file applies to the proof's copy, each view and
5
+ * trigger that survives it and names an object the file dropped or changed is compiled: a view's read, a trigger's
6
+ * own write on its table or view (trigger-write.mjs). SQLite resolves a name only by name, and the copy holds every
7
+ * reader that names a table a file reaches (proof-scope.ts), so this finds every reader the file breaks.
8
+ */
9
+ import type { LocalDb } from "../drivers/local-db.ts";
10
+ import type { LiveObject } from "./proof-copy.ts";
11
+ /** The copy's schema, each object by type and folded name */
12
+ declare function schemaOf(db: LocalDb): Map<string, LiveObject>;
13
+ /**
14
+ * Throws when a file that turned the copy's schema `before` into `db`'s leaves a view or trigger unable to run,
15
+ * naming it and SQLite's error: no approval overrides, since every read or write through it would fail
16
+ */
17
+ declare function refuseBrokenReaders(db: LocalDb, before: ReadonlyMap<string, LiveObject>): void;
18
+ export { refuseBrokenReaders, schemaOf };
19
+ //# sourceMappingURL=proof-readers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-readers.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/proof-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAKjD,6DAA6D;AAC7D,iBAAS,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAatD;AA8BD;;;GAGG;AACH,iBAAS,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAevF;AAED,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"proof-run.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/proof-run.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAwD,KAAK,UAAU,EAAe,MAAM,iBAAiB,CAAA;AAMpH,4CAA4C;AAC5C,KAAK,KAAK,GAAG;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAwKD;;;;;;;;GAQG;AACH,iBAAe,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,EAAE,MAAkB,EAAE,IAAI,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAA;CAAO,GACjH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAuD7B;AAKD,OAAO,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"proof-run.d.ts","sourceRoot":"","sources":["../../../src/migrate/core/proof-run.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAwD,KAAK,UAAU,EAAe,MAAM,iBAAiB,CAAA;AAOpH,4CAA4C;AAC5C,KAAK,KAAK,GAAG;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAoLD;;;;;;;;GAQG;AACH,iBAAe,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,EAAE,MAAkB,EAAE,IAAI,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAA;CAAO,GACjH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAuD7B;AAKD,OAAO,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,CAAA"}
@@ -3,15 +3,17 @@
3
3
  * can observe, created, and the tables whose rows they can observe, seeded, so the copy refuses what the whole
4
4
  * schema would and costs what the files reach.
5
5
  *
6
- * - An object's references are every name its text spells (sql-code's lexer, compared folded, never as a substring)
7
- * and, for a virtual table, each string and quoted name among its module's arguments, whole. A table's FK parents
8
- * are the other tables it references; a reader is a view, a trigger or a virtual table, and reads what it references.
6
+ * - An object's references are every name its text spells where SQLite's grammar takes a name (sql-code's lexer,
7
+ * compared folded, never as a substring: the `TABLE` of `CREATE TABLE` is no name) and, for a virtual table, each
8
+ * word, string and quoted name among its module's arguments, whole. A table's FK parents are the other tables it
9
+ * references; a reader is a view, a trigger or a virtual table, and reads what it references.
9
10
  * - N: each live object whose name a file spells, and the history table; S is N's tables, which a file creates,
10
11
  * alters, drops, renames or writes.
11
12
  * - Rows go to S, each table a reader reached from S references (to a fixpoint), D (their FK descendants: a cascade
12
13
  * reaches them) and A (the FK ancestors of all those: their keys must be met).
13
14
  * - The copy creates N, the seeded tables, and each reader that references an S table (SQLite checks views and
14
- * triggers on DROP COLUMN and RENAME COLUMN, and a rename rewrites them). Then to a fixpoint each index and trigger
15
+ * triggers on DROP COLUMN and RENAME COLUMN, and a rename rewrites them) or a view of N (a file that drops the
16
+ * view leaves the reader unable to run, which the proof compiles it to see). Then to a fixpoint each index and trigger
15
17
  * on a created table or view (a view's INSTEAD OF triggers carry out a write through it), each table and view a
16
18
  * created reader references, and each created table's FK ancestors, which a write to it compiles checks against.
17
19
  * - Reflection reads the schema itself: a name with SQLite's reserved `sqlite_` prefix (its catalogs, sqlite_sequence,
@@ -27,15 +29,21 @@
27
29
  import type { LiveObject } from "./proof-copy.ts";
28
30
  declare const isVirtual: (object: LiveObject) => boolean;
29
31
  /**
30
- * Virtual table `object`'s module, the name after USING however it is written, and each string and quoted name among
31
- * the module's arguments, which the module may read as a table's name (fts5vocab, content=)
32
+ * Virtual table `object`'s module, the name after USING however it is written, each string and quoted name among
33
+ * the module's arguments, which the module may read as a table's name (fts5vocab, content=), and each bare word there
32
34
  */
33
35
  declare function virtualOf(object: LiveObject): {
34
36
  args: string[];
35
37
  module: string;
38
+ words: string[];
36
39
  } | undefined;
37
40
  /** The folded names of the shadow tables virtual table `object`'s module makes */
38
41
  declare const shadowsOf: (object: LiveObject) => string[];
42
+ /**
43
+ * Every name `object` references, folded (see the module's comment). A virtual table's module reads its own arguments,
44
+ * not SQL, so each bare word among them may name a table, `group` in `content=group` among them
45
+ */
46
+ declare const referencesOf: (object: LiveObject) => Set<string>;
39
47
  /** What a copy scoped to pending files holds: the live objects it creates, in their order, and the tables it seeds, folded */
40
48
  type Scope = {
41
49
  objects: LiveObject[];
@@ -48,5 +56,5 @@ type Scope = {
48
56
  declare function observable(objects: readonly LiveObject[], files: ReadonlyArray<{
49
57
  sql: string;
50
58
  }>, history?: string | undefined): Scope;
51
- export { isVirtual, observable, type Scope, shadowsOf, virtualOf };
59
+ export { isVirtual, observable, referencesOf, type Scope, shadowsOf, virtualOf };
52
60
  //# sourceMappingURL=proof-scope.d.ts.map