@sixb/ducklake 0.0.1

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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/dist/ducklake-storage.d.ts +42 -0
  4. package/dist/ducklake-storage.d.ts.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +3112 -0
  8. package/dist/index.js.map +34 -0
  9. package/dist/internal/catalog-key.d.ts +11 -0
  10. package/dist/internal/catalog-key.d.ts.map +1 -0
  11. package/dist/internal/dataset-row-commit.d.ts +26 -0
  12. package/dist/internal/dataset-row-commit.d.ts.map +1 -0
  13. package/dist/internal/duckdb-column-types.d.ts +45 -0
  14. package/dist/internal/duckdb-column-types.d.ts.map +1 -0
  15. package/dist/internal/duckdb-decimal.d.ts +6 -0
  16. package/dist/internal/duckdb-decimal.d.ts.map +1 -0
  17. package/dist/internal/duckdb-row.d.ts +8 -0
  18. package/dist/internal/duckdb-row.d.ts.map +1 -0
  19. package/dist/internal/duckdb-runtime.d.ts +63 -0
  20. package/dist/internal/duckdb-runtime.d.ts.map +1 -0
  21. package/dist/internal/duckdb-value-converter.d.ts +7 -0
  22. package/dist/internal/duckdb-value-converter.d.ts.map +1 -0
  23. package/dist/internal/ducklake-catalog-schema.d.ts +12 -0
  24. package/dist/internal/ducklake-catalog-schema.d.ts.map +1 -0
  25. package/dist/internal/ducklake-connection-manager.d.ts +67 -0
  26. package/dist/internal/ducklake-connection-manager.d.ts.map +1 -0
  27. package/dist/internal/ducklake-current-dataset-definitions.d.ts +10 -0
  28. package/dist/internal/ducklake-current-dataset-definitions.d.ts.map +1 -0
  29. package/dist/internal/ducklake-dataset-catalog.d.ts +33 -0
  30. package/dist/internal/ducklake-dataset-catalog.d.ts.map +1 -0
  31. package/dist/internal/ducklake-dataset-table-ref.d.ts +9 -0
  32. package/dist/internal/ducklake-dataset-table-ref.d.ts.map +1 -0
  33. package/dist/internal/ducklake-maintenance.d.ts +9 -0
  34. package/dist/internal/ducklake-maintenance.d.ts.map +1 -0
  35. package/dist/internal/ducklake-row-reader.d.ts +24 -0
  36. package/dist/internal/ducklake-row-reader.d.ts.map +1 -0
  37. package/dist/internal/ducklake-snapshot-reader.d.ts +73 -0
  38. package/dist/internal/ducklake-snapshot-reader.d.ts.map +1 -0
  39. package/dist/internal/ducklake-sql-executor.d.ts +33 -0
  40. package/dist/internal/ducklake-sql-executor.d.ts.map +1 -0
  41. package/dist/internal/ducklake-write-coordinator.d.ts +53 -0
  42. package/dist/internal/ducklake-write-coordinator.d.ts.map +1 -0
  43. package/dist/internal/ducklake-write-session.d.ts +17 -0
  44. package/dist/internal/ducklake-write-session.d.ts.map +1 -0
  45. package/dist/internal/names.d.ts +13 -0
  46. package/dist/internal/names.d.ts.map +1 -0
  47. package/dist/internal/row-appender.d.ts +7 -0
  48. package/dist/internal/row-appender.d.ts.map +1 -0
  49. package/dist/internal/schema.d.ts +35 -0
  50. package/dist/internal/schema.d.ts.map +1 -0
  51. package/dist/internal/sql-transform-relations.d.ts +13 -0
  52. package/dist/internal/sql-transform-relations.d.ts.map +1 -0
  53. package/dist/internal/sql.d.ts +62 -0
  54. package/dist/internal/sql.d.ts.map +1 -0
  55. package/dist/internal/versions.d.ts +22 -0
  56. package/dist/internal/versions.d.ts.map +1 -0
  57. package/dist/tsconfig.json +5 -0
  58. package/dist/types.d.ts +147 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/package.json +64 -0
  61. package/src/ducklake-storage.ts +130 -0
  62. package/src/index.ts +14 -0
  63. package/src/internal/catalog-key.ts +28 -0
  64. package/src/internal/dataset-row-commit.ts +128 -0
  65. package/src/internal/duckdb-column-types.ts +68 -0
  66. package/src/internal/duckdb-decimal.ts +36 -0
  67. package/src/internal/duckdb-row.ts +83 -0
  68. package/src/internal/duckdb-runtime.ts +347 -0
  69. package/src/internal/duckdb-value-converter.ts +27 -0
  70. package/src/internal/ducklake-catalog-schema.ts +116 -0
  71. package/src/internal/ducklake-connection-manager.ts +510 -0
  72. package/src/internal/ducklake-current-dataset-definitions.ts +228 -0
  73. package/src/internal/ducklake-dataset-catalog.ts +363 -0
  74. package/src/internal/ducklake-dataset-table-ref.ts +35 -0
  75. package/src/internal/ducklake-maintenance.ts +116 -0
  76. package/src/internal/ducklake-row-reader.ts +143 -0
  77. package/src/internal/ducklake-snapshot-reader.ts +826 -0
  78. package/src/internal/ducklake-sql-executor.ts +334 -0
  79. package/src/internal/ducklake-write-coordinator.ts +532 -0
  80. package/src/internal/ducklake-write-session.ts +170 -0
  81. package/src/internal/names.ts +111 -0
  82. package/src/internal/row-appender.ts +73 -0
  83. package/src/internal/schema.ts +149 -0
  84. package/src/internal/sql-transform-relations.ts +99 -0
  85. package/src/internal/sql.ts +440 -0
  86. package/src/internal/versions.ts +140 -0
  87. package/src/types.ts +159 -0
package/src/types.ts ADDED
@@ -0,0 +1,159 @@
1
+ /**
2
+ * DuckLake catalog connection settings.
3
+ *
4
+ * The catalog stores DuckLake metadata. Physical table data still lives under
5
+ * `dataPath` and is managed by DuckLake, not by Sixb sidecar tables.
6
+ */
7
+ export type DuckLakeCatalogOptions =
8
+ | { readonly type: "duckdb"; readonly path: string }
9
+ | { readonly type: "sqlite"; readonly path: string }
10
+ | PostgresDuckLakeCatalogOptions
11
+ /** Escape hatch for DuckLake catalog URI forms Sixb does not model yet. */
12
+ | {
13
+ readonly type: "custom"
14
+ readonly uri: string
15
+ readonly extensions?: readonly string[]
16
+ readonly metadataParameters?: Readonly<Record<string, string>>
17
+ }
18
+
19
+ /**
20
+ * Friendly PostgreSQL catalog settings.
21
+ *
22
+ * The provider renders these to the libpq string required by DuckLake. Use
23
+ * `custom` for raw DuckLake catalog URIs that need unsupported options.
24
+ */
25
+ export interface PostgresDuckLakeCatalogOptions {
26
+ readonly type: "postgres"
27
+ readonly host: string
28
+ readonly database: string
29
+ readonly port?: number
30
+ readonly user?: string
31
+ readonly password?: string
32
+ readonly sslMode?: "disable" | "allow" | "prefer" | "require" | "verify-ca" | "verify-full"
33
+ readonly applicationName?: string
34
+ readonly connectTimeoutSeconds?: number
35
+ readonly metadataSchema?: string
36
+ readonly parameters?: Readonly<Record<string, string | number | boolean>>
37
+ }
38
+
39
+ /**
40
+ * Runtime settings for the embedded DuckDB process that loads DuckLake.
41
+ */
42
+ export interface DuckDbRuntimeOptions {
43
+ readonly path?: string
44
+ readonly config?: Readonly<Record<string, string>>
45
+ }
46
+
47
+ /**
48
+ * DuckDB PostgreSQL extension pool settings for a Postgres-backed DuckLake
49
+ * metadata catalog.
50
+ */
51
+ export interface DuckLakePostgresPoolOptions {
52
+ readonly maxConnections?: number
53
+ readonly waitTimeoutMillis?: number
54
+ readonly maxLifetimeMillis?: number
55
+ readonly idleTimeoutMillis?: number
56
+ readonly enableThreadLocalCache?: boolean
57
+ readonly enableReaperThread?: boolean
58
+ readonly healthCheckQuery?: string
59
+ }
60
+
61
+ /**
62
+ * Common CREATE SECRET options shared by DuckDB object-store integrations.
63
+ */
64
+ interface BaseSecretOptions {
65
+ readonly name?: string
66
+ readonly persistent?: boolean
67
+ readonly scope?: string
68
+ }
69
+
70
+ /**
71
+ * Shared options for DuckDB secrets that use the S3-compatible HTTPFS layer.
72
+ *
73
+ * R2 and GCS are modeled as first-class DuckDB secret types, but they still use
74
+ * the same S3 API client under the hood.
75
+ */
76
+ interface S3ApiSecretOptions extends BaseSecretOptions {
77
+ readonly provider?: "config" | "credential_chain"
78
+ readonly keyId?: string
79
+ readonly secret?: string
80
+ readonly sessionToken?: string
81
+ readonly region?: string
82
+ readonly endpoint?: string
83
+ readonly urlStyle?: "path" | "vhost"
84
+ readonly useSsl?: boolean
85
+ readonly verifySsl?: boolean
86
+ readonly chain?: string
87
+ readonly profile?: string
88
+ }
89
+
90
+ export interface S3SecretOptions extends S3ApiSecretOptions {
91
+ readonly type: "s3"
92
+ readonly kmsKeyId?: string
93
+ readonly requesterPays?: boolean
94
+ }
95
+
96
+ export interface R2SecretOptions extends S3ApiSecretOptions {
97
+ readonly type: "r2"
98
+ readonly accountId?: string
99
+ }
100
+
101
+ export interface GcsSecretOptions extends S3ApiSecretOptions {
102
+ readonly type: "gcs"
103
+ }
104
+
105
+ export interface AzureSecretOptions extends BaseSecretOptions {
106
+ readonly type: "azure"
107
+ readonly connectionString?: string
108
+ readonly accountName?: string
109
+ readonly accountKey?: string
110
+ readonly tenantId?: string
111
+ readonly clientId?: string
112
+ readonly clientSecret?: string
113
+ }
114
+
115
+ export type DuckDbSecretOptions =
116
+ | S3SecretOptions
117
+ | R2SecretOptions
118
+ | GcsSecretOptions
119
+ | AzureSecretOptions
120
+
121
+ export interface DuckLakeMaintenanceOptions {
122
+ /** How long to keep snapshots before they can expire. Default: "7 days". */
123
+ readonly expireOlderThan?: string
124
+ /** How long to keep deleted/orphaned files before reclaim. Default: expireOlderThan. */
125
+ readonly deleteOlderThan?: string
126
+ /** Report what would be expired/deleted without changing the lake. Default: false. */
127
+ readonly dryRun?: boolean
128
+ }
129
+
130
+ export interface DuckLakeMaintenanceReport {
131
+ readonly dryRun: boolean
132
+ readonly expireOlderThan: string
133
+ readonly deleteOlderThan: string
134
+ readonly snapshots: number
135
+ readonly oldFiles: number
136
+ readonly orphanedFiles: number
137
+ }
138
+
139
+ /**
140
+ * Public provider configuration for `new DuckLakeStorage(...)`.
141
+ *
142
+ * Defaults:
143
+ * - `alias`: "sixb_lake"
144
+ * - `createIfNotExists`: true
145
+ * - `readOnly`: false
146
+ * - `duckdb.path`: ":memory:"
147
+ */
148
+ export interface DuckLakeStorageOptions {
149
+ readonly catalog: DuckLakeCatalogOptions
150
+ readonly dataPath?: string
151
+ readonly alias?: string
152
+ readonly duckdb?: DuckDbRuntimeOptions
153
+ readonly postgresPool?: DuckLakePostgresPoolOptions
154
+ readonly secrets?: readonly DuckDbSecretOptions[]
155
+ /** Runs after DuckLake/catalog extensions load and before ATTACH. */
156
+ readonly setupSql?: readonly string[]
157
+ readonly createIfNotExists?: boolean
158
+ readonly readOnly?: boolean
159
+ }