@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.
- package/README.md +95 -30
- package/docs/meta-contract.md +1 -1
- package/package.json +3 -2
- package/src/cli/args.ts +4 -2
- package/src/cli/codegen.ts +2 -2
- package/src/cli/comb-config.ts +8 -3
- package/src/cli/file-path.ts +25 -0
- package/src/cli/migrate-apply.ts +5 -21
- package/src/cli/migrate-d1.ts +5 -1
- package/src/cli/migrate-json.ts +48 -0
- package/src/cli/migrate.ts +26 -4
- package/src/formats/bcp47.ts +12 -0
- package/src/formats/catalog.ts +27 -4
- package/src/index.ts +1 -0
- package/src/migrate/core/apply.ts +63 -22
- package/src/migrate/core/atlas-apply-runs.ts +15 -26
- package/src/migrate/core/cleanup.ts +22 -10
- package/src/migrate/core/d1-engine-child.mjs +27 -11
- package/src/migrate/core/d1-history.ts +23 -26
- package/src/migrate/core/d1-wrangler-error.ts +24 -1
- package/src/migrate/core/pg-replay-commit.ts +41 -38
- package/src/migrate/core/pg-replay-drops.ts +17 -32
- package/src/migrate/core/pg-replay-hidden.ts +75 -0
- package/src/migrate/core/pg-replay-roles.ts +2 -4
- package/src/migrate/core/pg-replay.ts +21 -19
- package/src/migrate/core/pg-server-snapshot.ts +4 -24
- package/src/migrate/core/proof-readers.ts +80 -0
- package/src/migrate/core/proof-run.ts +19 -5
- package/src/migrate/core/proof-scope.ts +27 -14
- package/src/migrate/core/sql-code.ts +36 -5
- package/src/migrate/core/sql-scan.ts +7 -1
- package/src/migrate/core/sqlite-keywords.ts +70 -0
- package/src/migrate/core/stopped.ts +70 -0
- package/src/migrate/core/trigger-write.d.mts +7 -0
- package/src/migrate/core/trigger-write.mjs +42 -0
- package/src/query/cursor-mint.ts +11 -18
- package/src/query/cursor-refusals.ts +22 -11
- package/src/query/descriptions.ts +4 -9
- package/src/query/filter-parse.ts +80 -22
- package/src/query/filter-validate.ts +10 -13
- package/src/query/filter.ts +40 -18
- package/src/query/list-extras.ts +7 -10
- package/src/query/list-schema.ts +0 -2
- package/src/query/merged.ts +3 -2
- package/src/query/pagination.ts +30 -6
- package/src/query/rounded-key.ts +5 -8
- package/src/query/schema-params.ts +12 -5
- package/src/query/select-validate.ts +7 -4
- package/src/query/sqlite/cursor-fit.ts +10 -2
- package/src/query/trusted.ts +7 -2
- package/types/cli/args.d.ts.map +1 -1
- package/types/cli/comb-config.d.ts +5 -2
- package/types/cli/comb-config.d.ts.map +1 -1
- package/types/cli/file-path.d.ts +11 -0
- package/types/cli/file-path.d.ts.map +1 -0
- package/types/cli/migrate-apply.d.ts +1 -0
- package/types/cli/migrate-apply.d.ts.map +1 -1
- package/types/cli/migrate-d1.d.ts.map +1 -1
- package/types/cli/migrate-json.d.ts +4 -0
- package/types/cli/migrate-json.d.ts.map +1 -0
- package/types/cli/migrate.d.ts.map +1 -1
- package/types/formats/bcp47.d.ts +9 -0
- package/types/formats/bcp47.d.ts.map +1 -0
- package/types/formats/catalog.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/migrate/core/apply.d.ts +3 -2
- package/types/migrate/core/apply.d.ts.map +1 -1
- package/types/migrate/core/atlas-apply-runs.d.ts +6 -0
- package/types/migrate/core/atlas-apply-runs.d.ts.map +1 -1
- package/types/migrate/core/cleanup.d.ts +16 -4
- package/types/migrate/core/cleanup.d.ts.map +1 -1
- package/types/migrate/core/d1-history.d.ts.map +1 -1
- package/types/migrate/core/d1-wrangler-error.d.ts +11 -0
- package/types/migrate/core/d1-wrangler-error.d.ts.map +1 -1
- package/types/migrate/core/pg-replay-commit.d.ts +14 -9
- package/types/migrate/core/pg-replay-commit.d.ts.map +1 -1
- package/types/migrate/core/pg-replay-drops.d.ts +7 -12
- package/types/migrate/core/pg-replay-drops.d.ts.map +1 -1
- package/types/migrate/core/pg-replay-hidden.d.ts +36 -0
- package/types/migrate/core/pg-replay-hidden.d.ts.map +1 -0
- package/types/migrate/core/pg-replay-roles.d.ts +2 -4
- package/types/migrate/core/pg-replay-roles.d.ts.map +1 -1
- package/types/migrate/core/pg-replay.d.ts.map +1 -1
- package/types/migrate/core/pg-server-snapshot.d.ts +4 -11
- package/types/migrate/core/pg-server-snapshot.d.ts.map +1 -1
- package/types/migrate/core/proof-readers.d.ts +19 -0
- package/types/migrate/core/proof-readers.d.ts.map +1 -0
- package/types/migrate/core/proof-run.d.ts.map +1 -1
- package/types/migrate/core/proof-scope.d.ts +15 -7
- package/types/migrate/core/proof-scope.d.ts.map +1 -1
- package/types/migrate/core/sql-code.d.ts +7 -3
- package/types/migrate/core/sql-code.d.ts.map +1 -1
- package/types/migrate/core/sql-scan.d.ts.map +1 -1
- package/types/migrate/core/sqlite-keywords.d.ts +11 -0
- package/types/migrate/core/sqlite-keywords.d.ts.map +1 -0
- package/types/migrate/core/stopped.d.ts +23 -0
- package/types/migrate/core/stopped.d.ts.map +1 -0
- package/types/query/cursor-mint.d.ts.map +1 -1
- package/types/query/cursor-refusals.d.ts +17 -1
- package/types/query/cursor-refusals.d.ts.map +1 -1
- package/types/query/descriptions.d.ts +1 -1
- package/types/query/descriptions.d.ts.map +1 -1
- package/types/query/filter-parse.d.ts +15 -4
- package/types/query/filter-parse.d.ts.map +1 -1
- package/types/query/filter-validate.d.ts +1 -1
- package/types/query/filter-validate.d.ts.map +1 -1
- package/types/query/filter.d.ts +9 -1
- package/types/query/filter.d.ts.map +1 -1
- package/types/query/list-extras.d.ts.map +1 -1
- package/types/query/list-schema.d.ts.map +1 -1
- package/types/query/merged.d.ts.map +1 -1
- package/types/query/pagination.d.ts +13 -1
- package/types/query/pagination.d.ts.map +1 -1
- package/types/query/rounded-key.d.ts +2 -11
- package/types/query/rounded-key.d.ts.map +1 -1
- package/types/query/schema-params.d.ts.map +1 -1
- package/types/query/select-validate.d.ts.map +1 -1
- package/types/query/sqlite/cursor-fit.d.ts.map +1 -1
- package/types/query/trusted.d.ts +1 -1
- 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
|
-
/**
|
|
18
|
-
|
|
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;
|
|
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,
|
|
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;
|
|
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":"
|
|
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;
|
|
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";
|
package/types/index.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
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;
|
|
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":"
|
|
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
|
-
/**
|
|
2
|
-
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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":"
|
|
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
|
|
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,
|
|
20
|
-
*
|
|
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
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* the cleanup
|
|
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
|
|
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
|
-
/**
|
|
8
|
-
type
|
|
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:
|
|
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
|
|
56
|
-
* the database
|
|
57
|
-
*
|
|
58
|
-
*
|
|
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,
|
|
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
|
|
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`)
|
|
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,
|
|
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":"
|
|
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
|
|
6
|
-
*
|
|
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 {
|
|
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
|
|
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":"
|
|
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,
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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)
|
|
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,
|
|
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
|