@codemarc/blt 1.6.5 → 1.8.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 (81) hide show
  1. package/README.md +192 -0
  2. package/dist/blt +4 -0
  3. package/dist/blt.d.ts.map +1 -1
  4. package/dist/blt.js.map +1 -1
  5. package/dist/commands/data/apply.d.ts +6 -0
  6. package/dist/commands/data/apply.d.ts.map +1 -0
  7. package/dist/commands/data/apply.js +363 -0
  8. package/dist/commands/data/apply.js.map +1 -0
  9. package/dist/commands/data/helpers.d.ts +15 -0
  10. package/dist/commands/data/helpers.d.ts.map +1 -0
  11. package/dist/commands/data/helpers.js +53 -0
  12. package/dist/commands/data/helpers.js.map +1 -0
  13. package/dist/commands/data/pull.d.ts +11 -0
  14. package/dist/commands/data/pull.d.ts.map +1 -0
  15. package/dist/commands/data/pull.js +101 -0
  16. package/dist/commands/data/pull.js.map +1 -0
  17. package/dist/commands/data/remove.d.ts +7 -0
  18. package/dist/commands/data/remove.d.ts.map +1 -0
  19. package/dist/commands/data/remove.js +29 -0
  20. package/dist/commands/data/remove.js.map +1 -0
  21. package/dist/commands/data.d.ts +3 -0
  22. package/dist/commands/data.d.ts.map +1 -0
  23. package/dist/commands/data.js +115 -0
  24. package/dist/commands/data.js.map +1 -0
  25. package/dist/commands/spin/dns.d.ts +7 -0
  26. package/dist/commands/spin/dns.d.ts.map +1 -0
  27. package/dist/commands/spin/dns.js +42 -0
  28. package/dist/commands/spin/dns.js.map +1 -0
  29. package/dist/commands/spin/down.d.ts +3 -0
  30. package/dist/commands/spin/down.d.ts.map +1 -0
  31. package/dist/commands/spin/down.js +17 -0
  32. package/dist/commands/spin/down.js.map +1 -0
  33. package/dist/commands/spin/helpers.d.ts +7 -0
  34. package/dist/commands/spin/helpers.d.ts.map +1 -0
  35. package/dist/commands/spin/helpers.js +38 -0
  36. package/dist/commands/spin/helpers.js.map +1 -0
  37. package/dist/commands/spin/list.d.ts +3 -0
  38. package/dist/commands/spin/list.d.ts.map +1 -0
  39. package/dist/commands/spin/list.js +20 -0
  40. package/dist/commands/spin/list.js.map +1 -0
  41. package/dist/commands/spin/setup.d.ts +3 -0
  42. package/dist/commands/spin/setup.d.ts.map +1 -0
  43. package/dist/commands/spin/setup.js +32 -0
  44. package/dist/commands/spin/setup.js.map +1 -0
  45. package/dist/commands/spin/ssh.d.ts +3 -0
  46. package/dist/commands/spin/ssh.d.ts.map +1 -0
  47. package/dist/commands/spin/ssh.js +14 -0
  48. package/dist/commands/spin/ssh.js.map +1 -0
  49. package/dist/commands/spin/status.d.ts +3 -0
  50. package/dist/commands/spin/status.d.ts.map +1 -0
  51. package/dist/commands/spin/status.js +21 -0
  52. package/dist/commands/spin/status.js.map +1 -0
  53. package/dist/commands/spin/up.d.ts +11 -0
  54. package/dist/commands/spin/up.d.ts.map +1 -0
  55. package/dist/commands/spin/up.js +34 -0
  56. package/dist/commands/spin/up.js.map +1 -0
  57. package/dist/commands/spin.d.ts +3 -0
  58. package/dist/commands/spin.d.ts.map +1 -0
  59. package/dist/commands/spin.js +166 -0
  60. package/dist/commands/spin.js.map +1 -0
  61. package/dist/lib/data-pull-extra-tables.d.ts +26 -0
  62. package/dist/lib/data-pull-extra-tables.d.ts.map +1 -0
  63. package/dist/lib/data-pull-extra-tables.js +212 -0
  64. package/dist/lib/data-pull-extra-tables.js.map +1 -0
  65. package/dist/lib/data-pull-manifest.d.ts +97 -0
  66. package/dist/lib/data-pull-manifest.d.ts.map +1 -0
  67. package/dist/lib/data-pull-manifest.js +603 -0
  68. package/dist/lib/data-pull-manifest.js.map +1 -0
  69. package/dist/lib/database-runner.d.ts +28 -2
  70. package/dist/lib/database-runner.d.ts.map +1 -1
  71. package/dist/lib/database-runner.js +112 -49
  72. package/dist/lib/database-runner.js.map +1 -1
  73. package/dist/lib/digitalocean.d.ts +60 -0
  74. package/dist/lib/digitalocean.d.ts.map +1 -0
  75. package/dist/lib/digitalocean.js +108 -0
  76. package/dist/lib/digitalocean.js.map +1 -0
  77. package/dist/lib/yaml-converter.d.ts +25 -1
  78. package/dist/lib/yaml-converter.d.ts.map +1 -1
  79. package/dist/lib/yaml-converter.js +98 -15
  80. package/dist/lib/yaml-converter.js.map +1 -1
  81. package/package.json +2 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Manifest for `blt data pull` → rows shaped like instance YAML
3
+ * (function / procedure / table + `{ row }[]`).
4
+ */
5
+ import type { Client } from "pg";
6
+ export type SqlTargetType = "function" | "procedure" | "table";
7
+ export type SnapshotManifestAsset = {
8
+ id: string;
9
+ file: string;
10
+ /** Target name: function name, procedure name, or table name */
11
+ function: string;
12
+ sqlType?: SqlTargetType;
13
+ rowCount: number;
14
+ };
15
+ /** Written next to snapshot JSON/YAML assets */
16
+ export type SnapshotManifest = {
17
+ instance: string;
18
+ pulledAt: string;
19
+ sourceHostRedacted: string;
20
+ pgVersion: string;
21
+ schemaVersion?: string;
22
+ assets: SnapshotManifestAsset[];
23
+ };
24
+ /** One exported asset file ({stem}.{json|yaml}) */
25
+ export type SnapshotAssetFile = {
26
+ assetId: string;
27
+ function: string;
28
+ sqlType?: SqlTargetType;
29
+ primaryKey?: string[];
30
+ /** Columns to omit from `ON CONFLICT DO UPDATE SET` (e.g. keep target `id` when upserting on `provider_type`). */
31
+ conflictUpdateExclude?: string[];
32
+ /**
33
+ * SQL predicate for partial unique indexes, e.g. `location_id IS NULL`.
34
+ * Emitted as `ON CONFLICT (…) WHERE …`.
35
+ */
36
+ conflictWhere?: string;
37
+ /** `information_schema.columns.udt_name` per column (extra `public.*` dumps). */
38
+ columnUdts?: Record<string, string>;
39
+ rows: {
40
+ row: Record<string, unknown>;
41
+ }[];
42
+ };
43
+ export type PullContext = {
44
+ includeUsers: boolean;
45
+ includeSecrets: boolean;
46
+ };
47
+ /** One logical partition (one file on disk) */
48
+ export type PullPartition = {
49
+ assetId: string;
50
+ snapshotStem: string;
51
+ rows: {
52
+ row: Record<string, unknown>;
53
+ }[];
54
+ /** For generic `public.*` table dumps: UPSERT target (omit when no PK). */
55
+ primaryKey?: string[];
56
+ conflictUpdateExclude?: string[];
57
+ /** Partial unique index predicate (see `SnapshotAssetFile.conflictWhere`). */
58
+ conflictWhere?: string;
59
+ columnUdts?: Record<string, string>;
60
+ };
61
+ /** Physical `public` tables already exported by {@link FULL_PULL_SEQUENCE}. */
62
+ export declare const MANIFEST_COVERED_PUBLIC_TABLES: readonly string[];
63
+ export type PullManifestEntry = {
64
+ readonly targetName: string;
65
+ readonly sqlType: SqlTargetType;
66
+ /**
67
+ * When true, `blt data apply` truncates `truncateTable` (with other function-mode
68
+ * targets) before replay. Only used when sqlType === "function".
69
+ */
70
+ readonly needsTruncate: boolean;
71
+ readonly truncateTable?: string;
72
+ readonly skip?: (ctx: PullContext) => boolean;
73
+ readonly fetchPartitions: (client: Client, ctx: PullContext) => Promise<PullPartition[]>;
74
+ };
75
+ export declare function jsonProps(props: unknown): Record<string, unknown>;
76
+ /** FK-safe TRUNCATE order before replaying function-mode snapshot assets (child → parent) */
77
+ export declare const APPLY_TRUNCATE_TABLES: readonly string[];
78
+ /** Map snapshot function target → table truncated before replay */
79
+ export declare const SNAPSHOT_FUNCTION_TRUNCATE_TABLE: Readonly<Record<string, string>>;
80
+ export declare function sortManifestAssetsForApply<T extends {
81
+ function: string;
82
+ }>(assets: readonly T[]): T[];
83
+ /**
84
+ * Deletes existing rows for function-mode + selected table-mode snapshot targets (child-before-parent).
85
+ * Omits tables not referenced by any manifest asset so older menu-only snapshots
86
+ * do not truncate e.g. `taxes`.
87
+ */
88
+ export declare function getApplyTruncateSqlForManifest(assets: SnapshotManifestAsset[]): string;
89
+ /** Truncate all function-mode tables (full snapshot). */
90
+ export declare function getApplyTruncateSql(): string;
91
+ /** Ordered pulls: FK-safe apply order (see plan). */
92
+ export declare function getFullPullManifest(): readonly PullManifestEntry[];
93
+ /** @deprecated Use getFullPullManifest */
94
+ export declare function getMenuGraphPullManifest(): readonly PullManifestEntry[];
95
+ /** @deprecated Use getApplyTruncateSql */
96
+ export declare function getMenuGraphApplyTruncateSql(): string;
97
+ //# sourceMappingURL=data-pull-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-pull-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/data-pull-manifest.ts"],"names":[],"mappings":"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"}