@visorcraft/mongreldb-kit 0.7.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 (65) hide show
  1. package/dist/constraints.d.ts +35 -0
  2. package/dist/constraints.d.ts.map +1 -0
  3. package/dist/constraints.js +404 -0
  4. package/dist/constraints.js.map +1 -0
  5. package/dist/db.d.ts +135 -0
  6. package/dist/db.d.ts.map +1 -0
  7. package/dist/db.js +495 -0
  8. package/dist/db.js.map +1 -0
  9. package/dist/defaults.d.ts +26 -0
  10. package/dist/defaults.d.ts.map +1 -0
  11. package/dist/defaults.js +56 -0
  12. package/dist/defaults.js.map +1 -0
  13. package/dist/errors.d.ts +54 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/errors.js +104 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/index.d.ts +13 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +13 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/internalTables.d.ts +63 -0
  22. package/dist/internalTables.d.ts.map +1 -0
  23. package/dist/internalTables.js +60 -0
  24. package/dist/internalTables.js.map +1 -0
  25. package/dist/keys.d.ts +7 -0
  26. package/dist/keys.d.ts.map +1 -0
  27. package/dist/keys.js +84 -0
  28. package/dist/keys.js.map +1 -0
  29. package/dist/migrate.d.ts +132 -0
  30. package/dist/migrate.d.ts.map +1 -0
  31. package/dist/migrate.js +1004 -0
  32. package/dist/migrate.js.map +1 -0
  33. package/dist/packing.d.ts +12 -0
  34. package/dist/packing.d.ts.map +1 -0
  35. package/dist/packing.js +137 -0
  36. package/dist/packing.js.map +1 -0
  37. package/dist/query.d.ts +423 -0
  38. package/dist/query.d.ts.map +1 -0
  39. package/dist/query.js +1645 -0
  40. package/dist/query.js.map +1 -0
  41. package/dist/remote.d.ts +29 -0
  42. package/dist/remote.d.ts.map +1 -0
  43. package/dist/remote.js +42 -0
  44. package/dist/remote.js.map +1 -0
  45. package/dist/rows.d.ts +5 -0
  46. package/dist/rows.d.ts.map +1 -0
  47. package/dist/rows.js +38 -0
  48. package/dist/rows.js.map +1 -0
  49. package/dist/schema.d.ts +91 -0
  50. package/dist/schema.d.ts.map +1 -0
  51. package/dist/schema.js +206 -0
  52. package/dist/schema.js.map +1 -0
  53. package/dist/tsv.d.ts +4 -0
  54. package/dist/tsv.d.ts.map +1 -0
  55. package/dist/tsv.js +102 -0
  56. package/dist/tsv.js.map +1 -0
  57. package/dist/types.d.ts +99 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +2 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/validation.d.ts +3 -0
  62. package/dist/validation.d.ts.map +1 -0
  63. package/dist/validation.js +98 -0
  64. package/dist/validation.js.map +1 -0
  65. package/package.json +50 -0
package/dist/errors.js ADDED
@@ -0,0 +1,104 @@
1
+ export class KitError extends Error {
2
+ code;
3
+ constructor(message, code = 'STORAGE') {
4
+ super(message);
5
+ this.name = 'KitError';
6
+ this.code = code;
7
+ }
8
+ }
9
+ export class KitValidationError extends KitError {
10
+ table;
11
+ column;
12
+ constructor(message, table, column) {
13
+ super(message, 'VALIDATION');
14
+ this.name = 'KitValidationError';
15
+ this.table = table;
16
+ this.column = column;
17
+ }
18
+ }
19
+ export class KitNotFoundError extends KitError {
20
+ table;
21
+ pk;
22
+ constructor(table, pk) {
23
+ super(`${table}(${String(pk)}) not found`, 'NOT_FOUND');
24
+ this.name = 'KitNotFoundError';
25
+ this.table = table;
26
+ this.pk = pk;
27
+ }
28
+ }
29
+ export class KitDuplicateError extends KitError {
30
+ table;
31
+ constraint;
32
+ constructor(table, constraint) {
33
+ super(`Duplicate in ${table} for ${constraint}`, 'DUPLICATE');
34
+ this.name = 'KitDuplicateError';
35
+ this.table = table;
36
+ this.constraint = constraint;
37
+ }
38
+ }
39
+ export class KitForeignKeyError extends KitError {
40
+ table;
41
+ constraint;
42
+ constructor(table, constraint) {
43
+ super(`Foreign key violation in ${table} for ${constraint}`, 'FOREIGN_KEY');
44
+ this.name = 'KitForeignKeyError';
45
+ this.table = table;
46
+ this.constraint = constraint;
47
+ }
48
+ }
49
+ export class KitRestrictError extends KitError {
50
+ table;
51
+ constraint;
52
+ constructor(table, constraint) {
53
+ super(`Restrict violation in ${table} for ${constraint}`, 'RESTRICT');
54
+ this.name = 'KitRestrictError';
55
+ this.table = table;
56
+ this.constraint = constraint;
57
+ }
58
+ }
59
+ export class KitConflictError extends KitError {
60
+ retryable = true;
61
+ constructor(message = 'Conflict') {
62
+ super(message, 'CONFLICT');
63
+ this.name = 'KitConflictError';
64
+ }
65
+ }
66
+ export class KitMigrationError extends KitError {
67
+ constructor(message) {
68
+ super(message, 'MIGRATION');
69
+ this.name = 'KitMigrationError';
70
+ }
71
+ }
72
+ export class KitSchemaDriftError extends KitError {
73
+ constructor(message) {
74
+ super(message, 'SCHEMA_DRIFT');
75
+ this.name = 'KitSchemaDriftError';
76
+ }
77
+ }
78
+ export class KitTimeoutError extends KitError {
79
+ constructor(message = 'Transaction timed out') {
80
+ super(message, 'TIMEOUT');
81
+ this.name = 'KitTimeoutError';
82
+ }
83
+ }
84
+ export class KitUnsupportedError extends KitError {
85
+ constructor(message) {
86
+ super(message, 'UNSUPPORTED');
87
+ this.name = 'KitUnsupportedError';
88
+ }
89
+ }
90
+ /**
91
+ * Returns true when the underlying error is a retryable MongrelDB write-write
92
+ * conflict. The native addon prefixes commit-time conflict errors with
93
+ * `__CONFLICT__:` so callers can detect them without instanceof checks against
94
+ * addon-owned classes that may not cross the require boundary cleanly.
95
+ */
96
+ export function isRetryableConflict(err) {
97
+ if (err instanceof KitConflictError)
98
+ return true;
99
+ if (err == null || typeof err !== 'object' || !('message' in err))
100
+ return false;
101
+ const msg = err.message;
102
+ return typeof msg === 'string' && msg.startsWith('__CONFLICT__:');
103
+ }
104
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from './types.js';
2
+ export * from './schema.js';
3
+ export * from './defaults.js';
4
+ export * from './validation.js';
5
+ export * from './errors.js';
6
+ export * from './internalTables.js';
7
+ export * from './keys.js';
8
+ export * from './constraints.js';
9
+ export * from './db.js';
10
+ export * from './query.js';
11
+ export * from './migrate.js';
12
+ export * from './remote.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './types.js';
2
+ export * from './schema.js';
3
+ export * from './defaults.js';
4
+ export * from './validation.js';
5
+ export * from './errors.js';
6
+ export * from './internalTables.js';
7
+ export * from './keys.js';
8
+ export * from './constraints.js';
9
+ export * from './db.js';
10
+ export * from './query.js';
11
+ export * from './migrate.js';
12
+ export * from './remote.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,63 @@
1
+ export declare const kitSchemaMigrations: import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"version", "int64", false, null, null>, import("./types.js").ColumnSpec<"name", "text", false, null, null>, import("./types.js").ColumnSpec<"checksum", "text", false, null, null>, import("./types.js").ColumnSpec<"applied_at", "text", false, null, null>, import("./types.js").ColumnSpec<"kit_version", "text", false, null, null>, import("./types.js").ColumnSpec<"status", "text", false, null, null>]> & {
2
+ version: import("./types.js").ColumnSpec<"version", "int64", false, null, null>;
3
+ checksum: import("./types.js").ColumnSpec<"checksum", "text", false, null, null>;
4
+ applied_at: import("./types.js").ColumnSpec<"applied_at", "text", false, null, null>;
5
+ kit_version: import("./types.js").ColumnSpec<"kit_version", "text", false, null, null>;
6
+ status: import("./types.js").ColumnSpec<"status", "text", false, null, null>;
7
+ };
8
+ export declare const kitSchemaCatalog: import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"schema_version", "int64", false, null, null>, import("./types.js").ColumnSpec<"schema_json", "text", false, null, null>, import("./types.js").ColumnSpec<"checksum", "text", false, null, null>, import("./types.js").ColumnSpec<"written_at", "text", false, null, null>]> & {
9
+ checksum: import("./types.js").ColumnSpec<"checksum", "text", false, null, null>;
10
+ schema_version: import("./types.js").ColumnSpec<"schema_version", "int64", false, null, null>;
11
+ schema_json: import("./types.js").ColumnSpec<"schema_json", "text", false, null, null>;
12
+ written_at: import("./types.js").ColumnSpec<"written_at", "text", false, null, null>;
13
+ };
14
+ export declare const kitUniqueKeys: import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"encoded_key", "text", false, null, null>, import("./types.js").ColumnSpec<"constraint_name", "text", false, null, null>, import("./types.js").ColumnSpec<"owner_table", "text", false, null, null>, import("./types.js").ColumnSpec<"owner_pk", "text", false, null, null>, import("./types.js").ColumnSpec<"created_at", "text", false, null, null>]> & {
15
+ encoded_key: import("./types.js").ColumnSpec<"encoded_key", "text", false, null, null>;
16
+ constraint_name: import("./types.js").ColumnSpec<"constraint_name", "text", false, null, null>;
17
+ owner_table: import("./types.js").ColumnSpec<"owner_table", "text", false, null, null>;
18
+ owner_pk: import("./types.js").ColumnSpec<"owner_pk", "text", false, null, null>;
19
+ created_at: import("./types.js").ColumnSpec<"created_at", "text", false, null, null>;
20
+ };
21
+ export declare const kitRowGuards: import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"encoded_guard_key", "text", false, null, null>, import("./types.js").ColumnSpec<"table_name", "text", false, null, null>, import("./types.js").ColumnSpec<"primary_key", "text", false, null, null>, import("./types.js").ColumnSpec<"version", "int64", false, null, null>, import("./types.js").ColumnSpec<"updated_at", "text", false, null, null>]> & {
22
+ version: import("./types.js").ColumnSpec<"version", "int64", false, null, null>;
23
+ encoded_guard_key: import("./types.js").ColumnSpec<"encoded_guard_key", "text", false, null, null>;
24
+ table_name: import("./types.js").ColumnSpec<"table_name", "text", false, null, null>;
25
+ primary_key: import("./types.js").ColumnSpec<"primary_key", "text", false, null, null>;
26
+ updated_at: import("./types.js").ColumnSpec<"updated_at", "text", false, null, null>;
27
+ };
28
+ export declare const kitMigrationLocks: import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"lock_name", "text", false, null, null>, import("./types.js").ColumnSpec<"holder", "text", false, null, null>, import("./types.js").ColumnSpec<"acquired_at", "text", false, null, null>, import("./types.js").ColumnSpec<"expires_at", "text", false, null, null>]> & {
29
+ lock_name: import("./types.js").ColumnSpec<"lock_name", "text", false, null, null>;
30
+ holder: import("./types.js").ColumnSpec<"holder", "text", false, null, null>;
31
+ acquired_at: import("./types.js").ColumnSpec<"acquired_at", "text", false, null, null>;
32
+ expires_at: import("./types.js").ColumnSpec<"expires_at", "text", false, null, null>;
33
+ };
34
+ export declare const internalTables: ((import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"version", "int64", false, null, null>, import("./types.js").ColumnSpec<"name", "text", false, null, null>, import("./types.js").ColumnSpec<"checksum", "text", false, null, null>, import("./types.js").ColumnSpec<"applied_at", "text", false, null, null>, import("./types.js").ColumnSpec<"kit_version", "text", false, null, null>, import("./types.js").ColumnSpec<"status", "text", false, null, null>]> & {
35
+ version: import("./types.js").ColumnSpec<"version", "int64", false, null, null>;
36
+ checksum: import("./types.js").ColumnSpec<"checksum", "text", false, null, null>;
37
+ applied_at: import("./types.js").ColumnSpec<"applied_at", "text", false, null, null>;
38
+ kit_version: import("./types.js").ColumnSpec<"kit_version", "text", false, null, null>;
39
+ status: import("./types.js").ColumnSpec<"status", "text", false, null, null>;
40
+ }) | (import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"schema_version", "int64", false, null, null>, import("./types.js").ColumnSpec<"schema_json", "text", false, null, null>, import("./types.js").ColumnSpec<"checksum", "text", false, null, null>, import("./types.js").ColumnSpec<"written_at", "text", false, null, null>]> & {
41
+ checksum: import("./types.js").ColumnSpec<"checksum", "text", false, null, null>;
42
+ schema_version: import("./types.js").ColumnSpec<"schema_version", "int64", false, null, null>;
43
+ schema_json: import("./types.js").ColumnSpec<"schema_json", "text", false, null, null>;
44
+ written_at: import("./types.js").ColumnSpec<"written_at", "text", false, null, null>;
45
+ }) | (import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"encoded_key", "text", false, null, null>, import("./types.js").ColumnSpec<"constraint_name", "text", false, null, null>, import("./types.js").ColumnSpec<"owner_table", "text", false, null, null>, import("./types.js").ColumnSpec<"owner_pk", "text", false, null, null>, import("./types.js").ColumnSpec<"created_at", "text", false, null, null>]> & {
46
+ encoded_key: import("./types.js").ColumnSpec<"encoded_key", "text", false, null, null>;
47
+ constraint_name: import("./types.js").ColumnSpec<"constraint_name", "text", false, null, null>;
48
+ owner_table: import("./types.js").ColumnSpec<"owner_table", "text", false, null, null>;
49
+ owner_pk: import("./types.js").ColumnSpec<"owner_pk", "text", false, null, null>;
50
+ created_at: import("./types.js").ColumnSpec<"created_at", "text", false, null, null>;
51
+ }) | (import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"encoded_guard_key", "text", false, null, null>, import("./types.js").ColumnSpec<"table_name", "text", false, null, null>, import("./types.js").ColumnSpec<"primary_key", "text", false, null, null>, import("./types.js").ColumnSpec<"version", "int64", false, null, null>, import("./types.js").ColumnSpec<"updated_at", "text", false, null, null>]> & {
52
+ version: import("./types.js").ColumnSpec<"version", "int64", false, null, null>;
53
+ encoded_guard_key: import("./types.js").ColumnSpec<"encoded_guard_key", "text", false, null, null>;
54
+ table_name: import("./types.js").ColumnSpec<"table_name", "text", false, null, null>;
55
+ primary_key: import("./types.js").ColumnSpec<"primary_key", "text", false, null, null>;
56
+ updated_at: import("./types.js").ColumnSpec<"updated_at", "text", false, null, null>;
57
+ }) | (import("./types.js").TableSpec<readonly [import("./types.js").ColumnSpec<"lock_name", "text", false, null, null>, import("./types.js").ColumnSpec<"holder", "text", false, null, null>, import("./types.js").ColumnSpec<"acquired_at", "text", false, null, null>, import("./types.js").ColumnSpec<"expires_at", "text", false, null, null>]> & {
58
+ lock_name: import("./types.js").ColumnSpec<"lock_name", "text", false, null, null>;
59
+ holder: import("./types.js").ColumnSpec<"holder", "text", false, null, null>;
60
+ acquired_at: import("./types.js").ColumnSpec<"acquired_at", "text", false, null, null>;
61
+ expires_at: import("./types.js").ColumnSpec<"expires_at", "text", false, null, null>;
62
+ }))[];
63
+ //# sourceMappingURL=internalTables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalTables.d.ts","sourceRoot":"","sources":["../src/internalTables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB;;;;;;CAU9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;CAQ3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;CAUxB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;CAUvB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;CAQ5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAM1B,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { table, int, text, index } from './schema.js';
2
+ export const kitSchemaMigrations = table('__kit_schema_migrations', {
3
+ columns: [
4
+ int('version', { primaryKey: true }),
5
+ text('name', { nullable: false }),
6
+ text('checksum', { nullable: false }),
7
+ text('applied_at', { nullable: false }),
8
+ text('kit_version', { nullable: false }),
9
+ text('status', { nullable: false })
10
+ ],
11
+ primaryKey: ['version']
12
+ });
13
+ export const kitSchemaCatalog = table('__kit_schema_catalog', {
14
+ columns: [
15
+ int('schema_version', { primaryKey: true }),
16
+ text('schema_json', { nullable: false }),
17
+ text('checksum', { nullable: false }),
18
+ text('written_at', { nullable: false })
19
+ ],
20
+ primaryKey: ['schema_version']
21
+ });
22
+ export const kitUniqueKeys = table('__kit_unique_keys', {
23
+ columns: [
24
+ text('encoded_key', { primaryKey: true }),
25
+ text('constraint_name', { nullable: false }),
26
+ text('owner_table', { nullable: false }),
27
+ text('owner_pk', { nullable: false }),
28
+ text('created_at', { nullable: false })
29
+ ],
30
+ primaryKey: ['encoded_key'],
31
+ indexes: [index(['owner_table'])]
32
+ });
33
+ export const kitRowGuards = table('__kit_row_guards', {
34
+ columns: [
35
+ text('encoded_guard_key', { primaryKey: true }),
36
+ text('table_name', { nullable: false }),
37
+ text('primary_key', { nullable: false }),
38
+ int('version', { nullable: false }),
39
+ text('updated_at', { nullable: false })
40
+ ],
41
+ primaryKey: ['encoded_guard_key'],
42
+ indexes: [index(['table_name'])]
43
+ });
44
+ export const kitMigrationLocks = table('__kit_migration_locks', {
45
+ columns: [
46
+ text('lock_name', { primaryKey: true }),
47
+ text('holder', { nullable: false }),
48
+ text('acquired_at', { nullable: false }),
49
+ text('expires_at', { nullable: false })
50
+ ],
51
+ primaryKey: ['lock_name']
52
+ });
53
+ export const internalTables = [
54
+ kitSchemaMigrations,
55
+ kitSchemaCatalog,
56
+ kitUniqueKeys,
57
+ kitRowGuards,
58
+ kitMigrationLocks
59
+ ];
60
+ //# sourceMappingURL=internalTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalTables.js","sourceRoot":"","sources":["../src/internalTables.ts"],"names":[],"mappings":"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"}
package/dist/keys.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { PkValue } from './types.js';
2
+ export declare const KIT_KEY_VERSION = 1;
3
+ export declare function encodedPk(pkValue: PkValue): string;
4
+ export declare function decodePk(encoded: string): PkValue;
5
+ export declare function encodeUniqueKey(kitVersion: number, constraintName: string, values: (string | bigint | null)[]): string;
6
+ export declare function encodeRowGuardKey(tableName: string, pkValue: PkValue): string;
7
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,eAAe,IAAI,CAAC;AAkEjC,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKlD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED,wBAAgB,eAAe,CAC9B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAChC,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE7E"}
package/dist/keys.js ADDED
@@ -0,0 +1,84 @@
1
+ export const KIT_KEY_VERSION = 1;
2
+ function escapeString(value) {
3
+ return value.replace(/\\/g, '\\\\').replace(/:/g, '\\:');
4
+ }
5
+ function unescapeString(value) {
6
+ return value.replace(/\\:/g, ':').replace(/\\\\/g, '\\');
7
+ }
8
+ function encodeKeyComponent(value) {
9
+ if (value === null || value === undefined) {
10
+ return 'n:null';
11
+ }
12
+ if (typeof value === 'bigint') {
13
+ return `i:${value.toString()}`;
14
+ }
15
+ return `s:${escapeString(value)}`;
16
+ }
17
+ function decodeKeyComponent(token) {
18
+ const prefix = token.slice(0, 2);
19
+ const body = token.slice(2);
20
+ switch (prefix) {
21
+ case 's:':
22
+ return unescapeString(body);
23
+ case 'i:':
24
+ return BigInt(body);
25
+ case 'n:':
26
+ return null;
27
+ default:
28
+ throw new Error(`Unexpected primary key token prefix: ${prefix}`);
29
+ }
30
+ }
31
+ function decodeKeyComponents(encoded) {
32
+ const tokens = [];
33
+ let current = '';
34
+ let escaped = false;
35
+ for (const ch of encoded) {
36
+ if (escaped) {
37
+ current += ch;
38
+ escaped = false;
39
+ continue;
40
+ }
41
+ if (ch === '\\') {
42
+ current += ch;
43
+ escaped = true;
44
+ continue;
45
+ }
46
+ if (ch === ':') {
47
+ // A token is a typed component: "s:", "i:", or "n:" followed by a body.
48
+ if (current.length >= 2 && /^[sin]:/.test(current)) {
49
+ tokens.push(current);
50
+ current = '';
51
+ continue;
52
+ }
53
+ }
54
+ current += ch;
55
+ }
56
+ if (current.length >= 2) {
57
+ tokens.push(current);
58
+ }
59
+ return tokens.map(decodeKeyComponent);
60
+ }
61
+ export function encodedPk(pkValue) {
62
+ if (Array.isArray(pkValue)) {
63
+ return pkValue.map(encodeKeyComponent).join(':');
64
+ }
65
+ return encodeKeyComponent(pkValue);
66
+ }
67
+ export function decodePk(encoded) {
68
+ const parts = decodeKeyComponents(encoded);
69
+ if (parts.length === 1) {
70
+ const value = parts[0];
71
+ if (value === null) {
72
+ throw new Error('Single-column primary key cannot be decoded as null');
73
+ }
74
+ return value;
75
+ }
76
+ return parts;
77
+ }
78
+ export function encodeUniqueKey(kitVersion, constraintName, values) {
79
+ return `uq:${kitVersion}:${constraintName}:${values.map(encodeKeyComponent).join(':')}`;
80
+ }
81
+ export function encodeRowGuardKey(tableName, pkValue) {
82
+ return `rg:${tableName}:${encodedPk(pkValue)}`;
83
+ }
84
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import type { Database as NativeDatabase } from '@visorcraft/mongreldb/native.js';
2
+ import { KitDatabase } from './db.js';
3
+ import { type Schema } from './schema.js';
4
+ import type { TableSpec, ColumnSpec, IndexSpec, UniqueSpec, ForeignKeySpec } from './types.js';
5
+ /**
6
+ * A declarative migration operation. Mirrors the Rust
7
+ * `mongreldb_kit_core::migrations::MigrationOp` enum. These describe *what* a
8
+ * migration changes; the imperative `up()` callback performs the change. When
9
+ * present on a migration they are folded into its content-aware checksum so
10
+ * editing the op list is detected as schema drift.
11
+ */
12
+ export type MigrationOp = {
13
+ kind: 'createTable';
14
+ name: string;
15
+ } | {
16
+ kind: 'dropTable';
17
+ name: string;
18
+ } | {
19
+ kind: 'addColumn';
20
+ table: string;
21
+ column: string;
22
+ } | {
23
+ kind: 'dropColumn';
24
+ table: string;
25
+ column: string;
26
+ } | {
27
+ kind: 'alterColumn';
28
+ table: string;
29
+ column: string;
30
+ } | {
31
+ kind: 'addIndex';
32
+ table: string;
33
+ index: string;
34
+ } | {
35
+ kind: 'dropIndex';
36
+ table: string;
37
+ index: string;
38
+ } | {
39
+ kind: 'addUnique';
40
+ table: string;
41
+ constraint: string;
42
+ } | {
43
+ kind: 'dropUnique';
44
+ table: string;
45
+ constraint: string;
46
+ } | {
47
+ kind: 'addForeignKey';
48
+ table: string;
49
+ constraint: string;
50
+ } | {
51
+ kind: 'dropForeignKey';
52
+ table: string;
53
+ constraint: string;
54
+ } | {
55
+ kind: 'addCheck';
56
+ table: string;
57
+ constraint: string;
58
+ } | {
59
+ kind: 'dropCheck';
60
+ table: string;
61
+ constraint: string;
62
+ } | {
63
+ kind: 'rawSql';
64
+ sql: string;
65
+ };
66
+ export interface Migration {
67
+ version: number;
68
+ name: string;
69
+ /**
70
+ * Optional declarative description of the migration's operations. Including
71
+ * it makes the migration checksum content-aware so a later edit to the ops
72
+ * is rejected as drift. When omitted the checksum covers `version`/`name`
73
+ * with an empty op list.
74
+ */
75
+ ops?: MigrationOp[];
76
+ up: (ctx: MigrationContext) => Promise<void> | void;
77
+ }
78
+ export interface MigrationContext {
79
+ kit: KitDatabase;
80
+ db: NativeDatabase;
81
+ ensureTable: (table: TableSpec) => Promise<void> | void;
82
+ addColumn: (tableName: string, column: ColumnSpec) => Promise<void> | void;
83
+ dropColumn: (tableName: string, columnName: string) => Promise<void> | void;
84
+ alterColumn: (tableName: string, columnName: string, newColumn: ColumnSpec) => Promise<void> | void;
85
+ addIndex: (tableName: string, index: IndexSpec) => Promise<void> | void;
86
+ dropIndex: (tableName: string, indexName: string) => Promise<void> | void;
87
+ sql: (sql: string) => Promise<unknown[]> | unknown[];
88
+ }
89
+ /**
90
+ * The canonical content string a migration's checksum is computed over. Shape:
91
+ * `{"version":<n>,"name":<json>,"ops":[<op>,...]}` with no insignificant
92
+ * whitespace, byte-identical to the Rust kit's `canonical_content`.
93
+ */
94
+ export declare function migrationContent(migration: Migration): string;
95
+ /**
96
+ * Content-aware SHA-256 checksum for a migration. Covers the version, name, and
97
+ * ordered op list via {@link migrationContent}; the same logical migration
98
+ * produces the identical checksum in TypeScript, Rust, and Python.
99
+ */
100
+ export declare function migrationChecksum(migration: Migration): string;
101
+ export declare function migrateSync(kit: KitDatabase, schema: Schema, migrations: Migration[]): void;
102
+ export declare function migrate(kit: KitDatabase, schema: Schema, migrations: Migration[]): Promise<void>;
103
+ export declare function createTable(kit: KitDatabase, table: TableSpec): Promise<void>;
104
+ /**
105
+ * Drop `tableName` and remove every unique-key and row guard it owned. The
106
+ * application row data and its guards are gone after this; the schema catalog is
107
+ * re-persisted by the migration runner once all ops complete.
108
+ */
109
+ export declare function dropTable(kit: KitDatabase, tableName: string): Promise<void>;
110
+ export declare function addColumn(kit: KitDatabase, tableName: string, column: ColumnSpec): Promise<void>;
111
+ /**
112
+ * Change the declared type or constraints of an existing column in place.
113
+ *
114
+ * Kit keeps application-only changes metadata-local when the old and new
115
+ * storage types map to the same engine {@link ColumnType}. Native schema
116
+ * changes (rename, storage type, nullability, primary-key/sequence flags) are
117
+ * delegated to MongrelDB's native ALTER COLUMN validation.
118
+ */
119
+ export declare function alterColumn(kit: KitDatabase, tableName: string, columnName: string, newColumn: ColumnSpec): Promise<void>;
120
+ export declare function addIndex(kit: KitDatabase, tableName: string, index: IndexSpec): Promise<void>;
121
+ export declare function dropIndex(kit: KitDatabase, tableName: string, indexName: string): Promise<void>;
122
+ export declare function dropColumn(kit: KitDatabase, tableName: string, columnName: string): Promise<void>;
123
+ export declare function addUnique(kit: KitDatabase, tableName: string, unique: UniqueSpec): Promise<void>;
124
+ /**
125
+ * Add a foreign key and backfill parent `__kit_row_guards` (PLAN "Migrations").
126
+ * Each existing child row with a non-null FK must reference an existing parent;
127
+ * a missing parent rejects the migration. The referenced parent's row guard is
128
+ * touched so a later concurrent parent delete conflicts. The FK is added to the
129
+ * in-memory table so subsequent writes enforce it.
130
+ */
131
+ export declare function addForeignKey(kit: KitDatabase, tableName: string, fk: ForeignKeySpec): Promise<void>;
132
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}