@useairfoil/connector-kit 0.6.0 → 0.6.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 (179) hide show
  1. package/METRICS.md +16 -17
  2. package/README.md +127 -442
  3. package/dist/annotations-BE74YmAO.d.mts +39 -0
  4. package/dist/auth/index.d.mts +2 -0
  5. package/dist/{auth-DvU_CZ7C.js → auth/index.mjs} +6 -8
  6. package/dist/auth/index.mjs.map +1 -0
  7. package/dist/connector-app/index.d.mts +2 -0
  8. package/dist/connector-app/index.mjs +2 -0
  9. package/dist/connector-app-C-L4QqG6.mjs +123 -0
  10. package/dist/connector-app-C-L4QqG6.mjs.map +1 -0
  11. package/dist/{constants-D113Ut1x.js → constants-D-GQzpHZ.mjs} +4 -5
  12. package/dist/constants-D-GQzpHZ.mjs.map +1 -0
  13. package/dist/demo/index.d.mts +2 -0
  14. package/dist/demo/index.mjs +2 -0
  15. package/dist/demo-B30Vlkk2.mjs +191 -0
  16. package/dist/demo-B30Vlkk2.mjs.map +1 -0
  17. package/dist/errors/index.d.mts +2 -0
  18. package/dist/errors/index.mjs +2 -0
  19. package/dist/{errors-DHWylqRZ.js → errors-pT0YVJU5.mjs} +2 -3
  20. package/dist/errors-pT0YVJU5.mjs.map +1 -0
  21. package/dist/iceberg/index.d.mts +3 -0
  22. package/dist/iceberg/index.mjs +3 -0
  23. package/dist/iceberg-D6L8I6vA.mjs +39 -0
  24. package/dist/iceberg-D6L8I6vA.mjs.map +1 -0
  25. package/dist/{index-VpHaZXZw.d.ts → index-BUHSGm9Q.d.mts} +11 -13
  26. package/dist/{index-DXa26Ry5.d.ts → index-BX8G7d41.d.mts} +1 -2
  27. package/dist/{index-bfjH7Yb0.d.ts → index-BfXpgxk9.d.mts} +9 -10
  28. package/dist/{index-BKw7jA2a.d.ts → index-CRVAwJ5-.d.mts} +10 -8
  29. package/dist/index-CUPP2A_m.d.mts +27 -0
  30. package/dist/{index-DYpEMJf-.d.ts → index-CgvFomO6.d.mts} +6 -7
  31. package/dist/index-DJhDp4Xc.d.mts +58 -0
  32. package/dist/index-Dk7urvpF.d.mts +76 -0
  33. package/dist/{index-DKoRwyFn.d.ts → index-DkVNO6ks.d.mts} +2 -5
  34. package/dist/{index-C5Ma7V7t.d.ts → index-NnCutIqM.d.mts} +62 -37
  35. package/dist/{index-CR9HJDdr.d.ts → index-eFuoMZZ3.d.mts} +18 -20
  36. package/dist/{index-ZSuiZX5H.d.ts → index-ygpml2kC.d.mts} +19 -31
  37. package/dist/index.d.mts +16 -0
  38. package/dist/index.mjs +45 -0
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/ingestion/index.d.mts +2 -0
  41. package/dist/ingestion/index.mjs +2 -0
  42. package/dist/ingestion-q0WwqUSt.mjs +275 -0
  43. package/dist/ingestion-q0WwqUSt.mjs.map +1 -0
  44. package/dist/ingestor/index.d.mts +3 -0
  45. package/dist/ingestor/index.mjs +4 -0
  46. package/dist/ingestor-D4L-HPkg.mjs +26 -0
  47. package/dist/ingestor-D4L-HPkg.mjs.map +1 -0
  48. package/dist/instrumented-Bhp7fyvh.mjs +29 -0
  49. package/dist/instrumented-Bhp7fyvh.mjs.map +1 -0
  50. package/dist/manifest/index.d.mts +2 -0
  51. package/dist/manifest/{index.js → index.mjs} +2 -4
  52. package/dist/{manifest-P7kBnch9.js → manifest-BGKxmKLy.mjs} +14 -19
  53. package/dist/manifest-BGKxmKLy.mjs.map +1 -0
  54. package/dist/{telemetry-j_nxwYfh.js → metrics-BaEX__MN.mjs} +170 -19
  55. package/dist/metrics-BaEX__MN.mjs.map +1 -0
  56. package/dist/{metrics-C4V1pm6v.d.ts → metrics-CVXFL7YT.d.mts} +18 -13
  57. package/dist/metrics.d.mts +2 -0
  58. package/dist/metrics.mjs +2 -0
  59. package/dist/{chunk-Bp6m_JJh.js → rolldown-runtime-D7D4PA-g.mjs} +4 -4
  60. package/dist/runtime-config/index.d.mts +2 -0
  61. package/dist/runtime-config/index.mjs +3 -0
  62. package/dist/runtime-config-Oa55gAew.mjs +97 -0
  63. package/dist/runtime-config-Oa55gAew.mjs.map +1 -0
  64. package/dist/server-CMnxz3h0.mjs +144 -0
  65. package/dist/server-CMnxz3h0.mjs.map +1 -0
  66. package/dist/service-DLkhuxYl.d.mts +27 -0
  67. package/dist/service-jWxxfEht.mjs +7 -0
  68. package/dist/service-jWxxfEht.mjs.map +1 -0
  69. package/dist/state-store/index.d.mts +2 -0
  70. package/dist/state-store/index.mjs +2 -0
  71. package/dist/{state-store-BdYulQOY.js → state-store-uFvHY7Ax.mjs} +15 -22
  72. package/dist/state-store-uFvHY7Ax.mjs.map +1 -0
  73. package/dist/status/{index.d.ts → index.d.mts} +1 -4
  74. package/dist/status/{index.js → index.mjs} +2 -6
  75. package/dist/{status-BTTd7AUR.js → status-CKb9IhQ9.mjs} +14 -16
  76. package/dist/status-CKb9IhQ9.mjs.map +1 -0
  77. package/dist/table-V0tgUC5i.mjs +370 -0
  78. package/dist/table-V0tgUC5i.mjs.map +1 -0
  79. package/dist/types-xZtSmrGA.d.mts +220 -0
  80. package/dist/webhook/index.d.mts +3 -0
  81. package/dist/webhook/index.mjs +12 -0
  82. package/dist/webhook/index.mjs.map +1 -0
  83. package/dist/wings-I56hGtNv.mjs +325 -0
  84. package/dist/wings-I56hGtNv.mjs.map +1 -0
  85. package/package.json +64 -51
  86. package/src/catalog/table.ts +201 -0
  87. package/src/connector-app/create-table.ts +47 -0
  88. package/src/connector-app/demo.ts +42 -0
  89. package/src/connector-app/index.ts +2 -0
  90. package/src/connector-app/start.ts +1 -1
  91. package/src/core/builder.ts +15 -23
  92. package/src/core/index.ts +11 -1
  93. package/src/core/types.ts +114 -39
  94. package/src/demo/definition.ts +68 -0
  95. package/src/demo/generate.ts +167 -0
  96. package/src/demo/index.ts +3 -0
  97. package/src/demo/run.ts +142 -0
  98. package/src/iceberg/annotations.ts +62 -0
  99. package/src/iceberg/error.ts +9 -0
  100. package/src/iceberg/index.ts +3 -0
  101. package/src/iceberg/table.ts +511 -0
  102. package/src/index.ts +3 -1
  103. package/src/ingestion/engine.ts +240 -60
  104. package/src/ingestor/arrow.ts +248 -0
  105. package/src/ingestor/console.ts +13 -0
  106. package/src/ingestor/index.ts +9 -0
  107. package/src/ingestor/instrumented.ts +61 -0
  108. package/src/ingestor/service.ts +30 -0
  109. package/src/ingestor/wings.ts +143 -0
  110. package/src/manifest/config.ts +3 -3
  111. package/src/metrics.ts +66 -20
  112. package/src/runtime-config/config.ts +6 -8
  113. package/src/runtime-config/constants.ts +2 -2
  114. package/src/runtime-config/index.ts +2 -7
  115. package/src/runtime-config/layer.ts +1 -1
  116. package/src/runtime-config/table-bindings.ts +48 -136
  117. package/src/state-store/layer-key-value-store.ts +8 -3
  118. package/src/state-store/layer-memory.ts +1 -1
  119. package/src/state-store/layer-sql.ts +4 -4
  120. package/src/state-store/schema.ts +2 -2
  121. package/src/state-store/state.ts +14 -2
  122. package/src/status/route.ts +2 -2
  123. package/src/telemetry.ts +10 -10
  124. package/src/webhook/server.ts +39 -40
  125. package/dist/auth/index.d.ts +0 -2
  126. package/dist/auth/index.js +0 -3
  127. package/dist/auth-DvU_CZ7C.js.map +0 -1
  128. package/dist/connector-app/index.d.ts +0 -14
  129. package/dist/connector-app/index.js +0 -12
  130. package/dist/connector-app-BljHd0Pe.js +0 -64
  131. package/dist/connector-app-BljHd0Pe.js.map +0 -1
  132. package/dist/constants-D113Ut1x.js.map +0 -1
  133. package/dist/errors/index.d.ts +0 -2
  134. package/dist/errors/index.js +0 -3
  135. package/dist/errors-DHWylqRZ.js.map +0 -1
  136. package/dist/index-BA8ASHKr.d.ts +0 -31
  137. package/dist/index.d.ts +0 -14
  138. package/dist/index.js +0 -60
  139. package/dist/index.js.map +0 -1
  140. package/dist/ingestion/index.d.ts +0 -6
  141. package/dist/ingestion/index.js +0 -11
  142. package/dist/ingestion-QBGKrFr9.js +0 -200
  143. package/dist/ingestion-QBGKrFr9.js.map +0 -1
  144. package/dist/manifest/index.d.ts +0 -2
  145. package/dist/manifest-P7kBnch9.js.map +0 -1
  146. package/dist/metrics-inkCAxKq.js +0 -136
  147. package/dist/metrics-inkCAxKq.js.map +0 -1
  148. package/dist/metrics.d.ts +0 -4
  149. package/dist/metrics.js +0 -5
  150. package/dist/publisher/index.d.ts +0 -6
  151. package/dist/publisher/index.js +0 -8
  152. package/dist/publisher-BdWJOfer.js +0 -138
  153. package/dist/publisher-BdWJOfer.js.map +0 -1
  154. package/dist/runtime-config/index.d.ts +0 -4
  155. package/dist/runtime-config/index.js +0 -5
  156. package/dist/runtime-config-IbyCVpei.js +0 -60
  157. package/dist/runtime-config-IbyCVpei.js.map +0 -1
  158. package/dist/server-D-eLX3yN.js +0 -183
  159. package/dist/server-D-eLX3yN.js.map +0 -1
  160. package/dist/service-CUjGhe-7.d.ts +0 -32
  161. package/dist/service-DiP-XETo.js +0 -8
  162. package/dist/service-DiP-XETo.js.map +0 -1
  163. package/dist/state-store/index.d.ts +0 -3
  164. package/dist/state-store/index.js +0 -5
  165. package/dist/state-store-BdYulQOY.js.map +0 -1
  166. package/dist/status-BTTd7AUR.js.map +0 -1
  167. package/dist/table-bindings-Dp1DhTeS.js +0 -106
  168. package/dist/table-bindings-Dp1DhTeS.js.map +0 -1
  169. package/dist/telemetry-j_nxwYfh.js.map +0 -1
  170. package/dist/types-jVD5Ys43.d.ts +0 -174
  171. package/dist/webhook/index.d.ts +0 -7
  172. package/dist/webhook/index.js +0 -9
  173. package/dist/webhook-MhFcLW-o.js +0 -13
  174. package/dist/webhook-MhFcLW-o.js.map +0 -1
  175. package/src/publisher/console.ts +0 -18
  176. package/src/publisher/index.ts +0 -7
  177. package/src/publisher/instrumented.ts +0 -75
  178. package/src/publisher/service.ts +0 -37
  179. package/src/publisher/wings.ts +0 -204
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/webhook/index.ts"],"sourcesContent":["import type { ResourceDefinition, WebhookRoute, WebhookRouteInput } from \"../core/types\";\n\nexport { router } from \"./server\";\nexport type { WebhookAckMode, WebhookRoute, WebhookRouteContext, WebhookRouteInput } from \"./types\";\n\nexport const route = <const Resources extends ReadonlyArray<ResourceDefinition>, Payload>(\n definition: WebhookRouteInput<Resources, Payload>,\n): WebhookRoute<Resources, Payload> => definition;\n"],"mappings":";;;;;;;AAKA,MAAa,SACX,eACqC"}
@@ -0,0 +1,325 @@
1
+ import { t as ConnectorError } from "./errors-pT0YVJU5.mjs";
2
+ import { a as IcebergSchemaError, n as compileTable, r as makeCommitRequest } from "./table-V0tgUC5i.mjs";
3
+ import { a as catalog, n as loadTableBindings, s as wingsUri } from "./runtime-config-Oa55gAew.mjs";
4
+ import { t as Ingestor } from "./service-jWxxfEht.mjs";
5
+ import { Config, Effect, Layer, Schema } from "effect";
6
+ import * as Wings from "@useairfoil/wings";
7
+ import { FetchHttpClient } from "effect/http";
8
+ import { getCurrentSchema, parseDecimalType, parseFixedType } from "iceberg-js";
9
+ import { Bool, DateDay, Decimal, Field, FixedSizeBinary, Float32, Float64, Int32, Int64, LargeBinary, List, Map_, RecordBatch, Schema as Schema$1, Struct as Struct$1, TimeMicrosecond, TimestampMicrosecond, Utf8, makeBuilder } from "apache-arrow";
10
+ //#region src/catalog/table.ts
11
+ const tableError = (cause) => {
12
+ if (cause instanceof ConnectorError) return cause;
13
+ const message = cause instanceof Error ? cause.message : "Failed to prepare Iceberg table";
14
+ return new ConnectorError({
15
+ message: cause instanceof IcebergSchemaError ? `${cause.path}: ${message}` : message,
16
+ cause
17
+ });
18
+ };
19
+ const compareTypes = (expected, actual, path) => {
20
+ if (typeof expected === "string" || typeof actual === "string") return expected === actual ? void 0 : path;
21
+ if (expected.type !== actual.type) return path;
22
+ switch (expected.type) {
23
+ case "struct":
24
+ if (actual.type !== "struct") return path;
25
+ return compareFields(expected.fields, actual.fields, path);
26
+ case "list":
27
+ if (actual.type !== "list" || expected["element-id"] !== actual["element-id"] || expected["element-required"] !== actual["element-required"]) return path;
28
+ return compareTypes(expected.element, actual.element, `${path}.element`);
29
+ case "map":
30
+ if (actual.type !== "map" || expected["key-id"] !== actual["key-id"] || expected["value-id"] !== actual["value-id"] || expected["value-required"] !== actual["value-required"]) return path;
31
+ return compareTypes(expected.key, actual.key, `${path}.key`) ?? compareTypes(expected.value, actual.value, `${path}.value`);
32
+ }
33
+ };
34
+ const compareFields = (expected, actual, path) => {
35
+ if (expected.length !== actual.length) return path;
36
+ for (const field of expected) {
37
+ const fieldPath = `${path}.${field.name}`;
38
+ const other = actual.find((candidate) => candidate.name === field.name);
39
+ if (!other || field.id !== other.id || field.required !== other.required) return fieldPath;
40
+ const mismatch = compareTypes(field.type, other.type, fieldPath);
41
+ if (mismatch) return mismatch;
42
+ }
43
+ };
44
+ const verifyTable = (metadata, expected) => Effect.try({
45
+ try: () => {
46
+ if (!Array.isArray(metadata.schemas)) throw new Error("Invalid table metadata");
47
+ const actual = getCurrentSchema(metadata);
48
+ if (!actual) throw new Error("Table has no current schema");
49
+ const path = compareFields(expected.fields, actual.fields, "$");
50
+ if (path) throw new Error(`Table schema does not match at ${path}. Migrate the table or revert the schema change.`);
51
+ const expectedIds = new Set(expected["identifier-field-ids"]);
52
+ const actualIds = new Set(actual["identifier-field-ids"]);
53
+ if (expectedIds.size !== actualIds.size || [...expectedIds].some((id) => !actualIds.has(id))) throw new Error("Table identifier fields do not match. Recreate the table or revert the schema change.");
54
+ return actual;
55
+ },
56
+ catch: (cause) => new ConnectorError({
57
+ message: cause instanceof Error ? cause.message : "Invalid table metadata",
58
+ cause
59
+ })
60
+ });
61
+ /** Creates a table with the IDs from its Effect schema, then checks the loaded schema. */
62
+ const createTable = (schema, options) => Effect.gen(function* () {
63
+ const table = yield* compileTable(schema);
64
+ yield* options.catalog.commitTable(options.identifier, makeCommitRequest(table, { location: options.location }));
65
+ const metadata = yield* options.catalog.loadTable(options.identifier);
66
+ return yield* verifyTable(metadata, table.schema);
67
+ }).pipe(Effect.mapError(tableError));
68
+ /** Creates a table through a Wings catalog. */
69
+ const createTableFromWings = (schema, options) => Effect.scoped(Effect.gen(function* () {
70
+ const catalog = yield* (yield* Wings.CatalogManager.make({ baseUrl: options.wingsUri })).getIcebergCatalog(options.catalogId);
71
+ return yield* createTable(schema, {
72
+ catalog,
73
+ identifier: options.identifier,
74
+ location: options.location
75
+ });
76
+ })).pipe(Effect.mapError(tableError));
77
+ /** Loads a table, creating it when it is missing. */
78
+ const ensureTable = (schema, options) => Effect.gen(function* () {
79
+ const table = yield* compileTable(schema);
80
+ const metadata = yield* options.catalog.loadTable(options.identifier).pipe(Effect.catchIf((error) => error.status === 404, () => options.catalog.commitTable(options.identifier, makeCommitRequest(table, { location: options.location })).pipe(Effect.catchIf((error) => error.status === 409 || error.status === 412, () => Effect.void), Effect.flatMap(() => options.catalog.loadTable(options.identifier)))));
81
+ return yield* verifyTable(metadata, table.schema);
82
+ }).pipe(Effect.mapError(tableError));
83
+ //#endregion
84
+ //#region src/ingestor/arrow.ts
85
+ const bytes = (length) => Schema.Uint8Array.check(Schema.makeFilter((value) => value.byteLength === length || `expected ${length} bytes`));
86
+ const int32 = Schema.Number.check(Schema.isInt(), Schema.isBetween({
87
+ minimum: -2147483648,
88
+ maximum: 2147483647
89
+ }));
90
+ const int64 = Schema.BigInt.check(Schema.isBetweenBigInt({
91
+ minimum: -(2n ** 63n),
92
+ maximum: 2n ** 63n - 1n
93
+ }));
94
+ const float32 = Schema.Finite.check(Schema.makeFilter((value) => Number.isFinite(Math.fround(value)) || "expected a 32-bit number"));
95
+ const microsecondsInDay = Schema.BigInt.check(Schema.isBetweenBigInt({
96
+ minimum: 0n,
97
+ maximum: 86399999999n
98
+ }));
99
+ const primitives = {
100
+ boolean: {
101
+ type: new Bool(),
102
+ row: Schema.Boolean
103
+ },
104
+ int: {
105
+ type: new Int32(),
106
+ row: int32
107
+ },
108
+ long: {
109
+ type: new Int64(),
110
+ row: int64
111
+ },
112
+ float: {
113
+ type: new Float32(),
114
+ row: float32
115
+ },
116
+ double: {
117
+ type: new Float64(),
118
+ row: Schema.Finite
119
+ },
120
+ string: {
121
+ type: new Utf8(),
122
+ row: Schema.String
123
+ },
124
+ uuid: {
125
+ type: new FixedSizeBinary(16),
126
+ row: bytes(16)
127
+ },
128
+ binary: {
129
+ type: new LargeBinary(),
130
+ row: Schema.Uint8Array
131
+ },
132
+ date: {
133
+ type: new DateDay(),
134
+ row: Schema.Date
135
+ },
136
+ time: {
137
+ type: new TimeMicrosecond(),
138
+ row: microsecondsInDay
139
+ },
140
+ timestamp: {
141
+ type: new TimestampMicrosecond(),
142
+ row: Schema.Date
143
+ },
144
+ timestamptz: {
145
+ type: new TimestampMicrosecond("UTC"),
146
+ row: Schema.Date
147
+ }
148
+ };
149
+ const primitive = (type) => {
150
+ const known = primitives[type];
151
+ if (known) return known;
152
+ const decimal = parseDecimalType(type);
153
+ if (decimal) {
154
+ if (decimal.precision < 1 || decimal.precision > 38 || decimal.scale > decimal.precision) throw new Error(`Invalid Iceberg decimal type ${type}`);
155
+ return {
156
+ type: new Decimal(decimal.scale, decimal.precision),
157
+ row: Schema.instanceOf(Uint32Array).check(Schema.makeFilter((value) => value.length === 4 || "expected four words"))
158
+ };
159
+ }
160
+ const fixed = parseFixedType(type);
161
+ if (fixed) {
162
+ if (fixed.length < 1) throw new Error(`Invalid Iceberg fixed type ${type}`);
163
+ return {
164
+ type: new FixedSizeBinary(fixed.length),
165
+ row: bytes(fixed.length)
166
+ };
167
+ }
168
+ throw new Error(`Unsupported Iceberg type ${type}`);
169
+ };
170
+ /** Absent and null both become null in Arrow. */
171
+ const optional = (row) => Schema.optional(Schema.NullOr(row));
172
+ const fieldMetadata = (id) => /* @__PURE__ */ new Map([["PARQUET:field_id", String(id)]]);
173
+ /** Same as `primitive`, plus struct, list and map. */
174
+ const compileType = (type) => {
175
+ if (typeof type === "string") return primitive(type);
176
+ if (type.type === "struct") {
177
+ const fields = type.fields.map((field) => ({
178
+ ...field,
179
+ compiled: compileType(field.type)
180
+ }));
181
+ return {
182
+ type: new Struct$1(fields.map((field) => new Field(field.name, field.compiled.type, !field.required, fieldMetadata(field.id)))),
183
+ row: Schema.Struct(Object.fromEntries(fields.map((field) => [field.name, field.required ? field.compiled.row : optional(field.compiled.row)])))
184
+ };
185
+ }
186
+ if (type.type === "list") {
187
+ const element = compileType(type.element);
188
+ const required = type["element-required"];
189
+ return {
190
+ type: new List(new Field("element", element.type, !required, fieldMetadata(type["element-id"]))),
191
+ row: Schema.Array(required ? element.row : Schema.NullishOr(element.row))
192
+ };
193
+ }
194
+ const key = compileType(type.key);
195
+ const value = compileType(type.value);
196
+ const required = type["value-required"];
197
+ const entries = new Struct$1([new Field("key", key.type, false, fieldMetadata(type["key-id"])), new Field("value", value.type, !required, fieldMetadata(type["value-id"]))]);
198
+ return {
199
+ type: new Map_(new Field("entries", entries, false)),
200
+ row: Schema.ReadonlyMap(key.row, required ? value.row : Schema.NullishOr(value.row))
201
+ };
202
+ };
203
+ const makeRowEncoder = (tableSchema, version) => Effect.try({
204
+ try: () => {
205
+ const fields = tableSchema.fields.map((field) => ({
206
+ id: field.id,
207
+ name: field.name,
208
+ ...compileType(field.type)
209
+ }));
210
+ const fieldNames = new Set(fields.map((field) => field.name));
211
+ const identifierIds = new Set(tableSchema["identifier-field-ids"]);
212
+ const keys = tableSchema.fields.filter((field) => identifierIds.has(field.id)).map((field) => field.name);
213
+ const required = /* @__PURE__ */ new Set([...keys, version]);
214
+ if (!fieldNames.has(version)) throw new Error(`Missing version column ${version}`);
215
+ const struct = new Struct$1(fields.map((field) => new Field(field.name, field.type, true, fieldMetadata(field.id))));
216
+ const schema = new Schema$1(struct.children);
217
+ const decodeRow = Schema.decodeUnknownSync(Schema.Struct(Object.fromEntries(fields.map((field) => [field.name, required.has(field.name) ? field.row : optional(field.row)]))), { onExcessProperty: "error" });
218
+ const decodeAt = (row, index) => {
219
+ try {
220
+ return decodeRow(row);
221
+ } catch (cause) {
222
+ const detail = cause instanceof Error ? cause.message : String(cause);
223
+ throw new Error(`row ${index}: ${detail}`, { cause });
224
+ }
225
+ };
226
+ return (rows) => Effect.try({
227
+ try: () => {
228
+ const builder = makeBuilder({
229
+ type: struct,
230
+ nullValues: [null, void 0]
231
+ });
232
+ for (const [index, row] of rows.entries()) builder.append(decodeAt(row, index));
233
+ return new RecordBatch(schema, builder.finish().flush());
234
+ },
235
+ catch: (cause) => new ConnectorError({
236
+ message: "Failed to encode rows",
237
+ cause
238
+ })
239
+ });
240
+ },
241
+ catch: (cause) => new ConnectorError({
242
+ message: "Failed to convert Iceberg schema",
243
+ cause
244
+ })
245
+ });
246
+ //#endregion
247
+ //#region src/ingestor/wings.ts
248
+ const connectorError = (message, cause) => new ConnectorError({
249
+ message,
250
+ cause
251
+ });
252
+ /** Loads each table schema and opens one Wings stream per bound resource. */
253
+ const layerWings = (config) => Layer.effect(Ingestor)(Effect.gen(function* () {
254
+ const manager = yield* Wings.CatalogManager.CatalogManager;
255
+ const catalog = yield* manager.getIcebergCatalog(config.catalog).pipe(Effect.mapError((cause) => connectorError("Failed to load Wings catalog", cause)));
256
+ const bindings = config.tables;
257
+ const prepared = [];
258
+ for (const resource of config.connector.resources) {
259
+ const binding = bindings[resource.name];
260
+ if (!binding) continue;
261
+ const { namespace, name, location } = binding;
262
+ const identifier = {
263
+ namespace,
264
+ name
265
+ };
266
+ const schema = yield* ensureTable(resource.rowSchema, {
267
+ catalog,
268
+ identifier,
269
+ location
270
+ }).pipe(Effect.mapError((cause) => connectorError(`Failed to prepare table for ${resource.name}: ${cause.message}`, cause)));
271
+ const encode = yield* makeRowEncoder(schema, resource.version);
272
+ prepared.push({
273
+ resource: resource.name,
274
+ identifier,
275
+ encode
276
+ });
277
+ }
278
+ const entries = /* @__PURE__ */ new Map();
279
+ for (const { resource, identifier, encode } of prepared) {
280
+ const ingestor = yield* manager.ingestor({
281
+ catalog: config.catalog,
282
+ namespace: identifier.namespace,
283
+ table: identifier.name
284
+ }).pipe(Effect.mapError((cause) => connectorError(`Failed to open ingestor for ${resource}`, cause)));
285
+ entries.set(resource, {
286
+ encode,
287
+ push: (batch) => ingestor.push(batch).pipe(Effect.mapError((cause) => connectorError(`Failed to ingest rows for ${resource}`, cause)))
288
+ });
289
+ }
290
+ const service = {
291
+ resourceNames: prepared.map(({ resource }) => resource),
292
+ ingest: ({ resource, batch }) => {
293
+ const entry = entries.get(resource);
294
+ if (!entry) return Effect.fail(connectorError(`Unknown resource ${resource}`));
295
+ if (batch.rows.length === 0) return Effect.succeed({
296
+ rows: 0,
297
+ bytes: 0
298
+ });
299
+ return entry.encode(batch.rows).pipe(Effect.flatMap((encoded) => entry.push(encoded).pipe(Effect.as({
300
+ rows: batch.rows.length,
301
+ bytes: encoded.data.byteLength
302
+ }))));
303
+ }
304
+ };
305
+ return Ingestor.of(service);
306
+ }));
307
+ /** Reads the Wings URL, catalog and table bindings from hosted config. */
308
+ const layerWingsConfig = (connector) => Layer.unwrap(Effect.gen(function* () {
309
+ const { catalog: catalog$1, uri } = yield* Config.all({
310
+ catalog,
311
+ uri: wingsUri
312
+ }).pipe(Effect.mapError((cause) => connectorError("Invalid Wings configuration", cause)));
313
+ if (uri.protocol !== "http:" && uri.protocol !== "https:") return yield* Effect.fail(connectorError("Invalid Wings URL"));
314
+ const tables = yield* loadTableBindings(connector).pipe(Effect.mapError((cause) => connectorError(cause.message, cause)));
315
+ const manager = Wings.CatalogManager.layer({ baseUrl: uri.href }).pipe(Layer.provide(FetchHttpClient.layer));
316
+ return layerWings({
317
+ connector,
318
+ catalog: catalog$1,
319
+ tables
320
+ }).pipe(Layer.provide(manager));
321
+ }));
322
+ //#endregion
323
+ export { layerWingsConfig as n, createTableFromWings as r, layerWings as t };
324
+
325
+ //# sourceMappingURL=wings-I56hGtNv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wings-I56hGtNv.mjs","names":["Struct","ArrowSchema","RuntimeConfig.catalog","RuntimeConfig.wingsUri","RuntimeConfig.loadTableBindings"],"sources":["../src/catalog/table.ts","../src/ingestor/arrow.ts","../src/ingestor/wings.ts"],"sourcesContent":["import type {\n IcebergType,\n StructField,\n TableIdentifier,\n TableMetadata,\n TableSchema,\n} from \"iceberg-js\";\n\nimport * as Wings from \"@useairfoil/wings\";\nimport { Effect, type Schema } from \"effect\";\nimport { HttpClient } from \"effect/http\";\nimport { getCurrentSchema } from \"iceberg-js\";\n\nimport { ConnectorError } from \"../errors\";\nimport { IcebergSchemaError } from \"../iceberg/error\";\nimport { compileTable, makeCommitRequest } from \"../iceberg/table\";\n\ntype Catalog = Effect.Success<\n ReturnType<Wings.CatalogManager.CatalogManagerService[\"getIcebergCatalog\"]>\n>;\n\ntype TableOptions = {\n readonly catalog: Catalog;\n readonly identifier: TableIdentifier;\n readonly location?: string | undefined;\n};\n\ntype WingsTableOptions = {\n readonly wingsUri: string;\n readonly catalogId: string;\n readonly identifier: TableIdentifier;\n readonly location?: string | undefined;\n};\n\nconst tableError = (cause: unknown): ConnectorError => {\n if (cause instanceof ConnectorError) return cause;\n\n const message = cause instanceof Error ? cause.message : \"Failed to prepare Iceberg table\";\n return new ConnectorError({\n message: cause instanceof IcebergSchemaError ? `${cause.path}: ${message}` : message,\n cause,\n });\n};\n\nconst compareTypes = (\n expected: IcebergType,\n actual: IcebergType,\n path: string,\n): string | undefined => {\n if (typeof expected === \"string\" || typeof actual === \"string\") {\n return expected === actual ? undefined : path;\n }\n\n if (expected.type !== actual.type) return path;\n\n switch (expected.type) {\n case \"struct\":\n if (actual.type !== \"struct\") return path;\n return compareFields(expected.fields, actual.fields, path);\n case \"list\":\n if (\n actual.type !== \"list\" ||\n expected[\"element-id\"] !== actual[\"element-id\"] ||\n expected[\"element-required\"] !== actual[\"element-required\"]\n ) {\n return path;\n }\n return compareTypes(expected.element, actual.element, `${path}.element`);\n case \"map\":\n if (\n actual.type !== \"map\" ||\n expected[\"key-id\"] !== actual[\"key-id\"] ||\n expected[\"value-id\"] !== actual[\"value-id\"] ||\n expected[\"value-required\"] !== actual[\"value-required\"]\n ) {\n return path;\n }\n return (\n compareTypes(expected.key, actual.key, `${path}.key`) ??\n compareTypes(expected.value, actual.value, `${path}.value`)\n );\n }\n};\n\nconst compareFields = (\n expected: ReadonlyArray<StructField>,\n actual: ReadonlyArray<StructField>,\n path: string,\n): string | undefined => {\n if (expected.length !== actual.length) return path;\n\n for (const field of expected) {\n const fieldPath = `${path}.${field.name}`;\n const other = actual.find((candidate) => candidate.name === field.name);\n\n if (!other || field.id !== other.id || field.required !== other.required) return fieldPath;\n\n const mismatch = compareTypes(field.type, other.type, fieldPath);\n if (mismatch) return mismatch;\n }\n};\n\nconst verifyTable = (\n metadata: TableMetadata,\n expected: TableSchema,\n): Effect.Effect<TableSchema, ConnectorError> =>\n Effect.try({\n try: () => {\n if (!Array.isArray(metadata.schemas)) throw new Error(\"Invalid table metadata\");\n const actual = getCurrentSchema(metadata);\n if (!actual) throw new Error(\"Table has no current schema\");\n\n const path = compareFields(expected.fields, actual.fields, \"$\");\n if (path) {\n throw new Error(\n `Table schema does not match at ${path}. Migrate the table or revert the schema change.`,\n );\n }\n\n const expectedIds = new Set(expected[\"identifier-field-ids\"]);\n const actualIds = new Set(actual[\"identifier-field-ids\"]);\n if (\n expectedIds.size !== actualIds.size ||\n [...expectedIds].some((id) => !actualIds.has(id))\n ) {\n throw new Error(\n \"Table identifier fields do not match. Recreate the table or revert the schema change.\",\n );\n }\n\n return actual;\n },\n catch: (cause) =>\n new ConnectorError({\n message: cause instanceof Error ? cause.message : \"Invalid table metadata\",\n cause,\n }),\n });\n\n/** Creates a table with the IDs from its Effect schema, then checks the loaded schema. */\nexport const createTable = (\n schema: Schema.Top,\n options: TableOptions,\n): Effect.Effect<TableSchema, ConnectorError> =>\n Effect.gen(function* () {\n const table = yield* compileTable(schema);\n yield* options.catalog.commitTable(\n options.identifier,\n makeCommitRequest(table, { location: options.location }),\n );\n\n const metadata = yield* options.catalog.loadTable(options.identifier);\n return yield* verifyTable(metadata, table.schema);\n }).pipe(Effect.mapError(tableError));\n\n/** Creates a table through a Wings catalog. */\nexport const createTableFromWings = (\n schema: Schema.Top,\n options: WingsTableOptions,\n): Effect.Effect<TableSchema, ConnectorError, HttpClient.HttpClient> =>\n Effect.scoped(\n Effect.gen(function* () {\n const manager = yield* Wings.CatalogManager.make({ baseUrl: options.wingsUri });\n const catalog = yield* manager.getIcebergCatalog(options.catalogId);\n return yield* createTable(schema, {\n catalog,\n identifier: options.identifier,\n location: options.location,\n });\n }),\n ).pipe(Effect.mapError(tableError));\n\n/** Loads a table, creating it when it is missing. */\nexport const ensureTable = (\n schema: Schema.Top,\n options: TableOptions,\n): Effect.Effect<TableSchema, ConnectorError> =>\n Effect.gen(function* () {\n const table = yield* compileTable(schema);\n const metadata = yield* options.catalog.loadTable(options.identifier).pipe(\n Effect.catchIf(\n (error) => error.status === 404,\n () =>\n options.catalog\n .commitTable(\n options.identifier,\n makeCommitRequest(table, { location: options.location }),\n )\n .pipe(\n // Another instance may have created the table. Reload and check it.\n Effect.catchIf(\n (error) => error.status === 409 || error.status === 412,\n () => Effect.void,\n ),\n Effect.flatMap(() => options.catalog.loadTable(options.identifier)),\n ),\n ),\n );\n\n return yield* verifyTable(metadata, table.schema);\n }).pipe(Effect.mapError(tableError));\n","import {\n Bool,\n DateDay,\n Decimal,\n Field,\n FixedSizeBinary,\n Float32,\n Float64,\n Int32,\n Int64,\n LargeBinary,\n List,\n Map_,\n RecordBatch,\n Schema as ArrowSchema,\n Struct,\n TimeMicrosecond,\n TimestampMicrosecond,\n Utf8,\n makeBuilder,\n type DataType,\n type TypeMap,\n} from \"apache-arrow\";\nimport { Effect, Schema } from \"effect\";\nimport {\n parseDecimalType,\n parseFixedType,\n type IcebergType,\n type PrimitiveType,\n type TableSchema,\n} from \"iceberg-js\";\n\nimport { ConnectorError } from \"../errors\";\n\n// Nothing converts an Iceberg schema to Arrow for us, so we do it here.\n// Each type also gets a schema for its values, because Arrow does not reject a bad\n// value, it converts it: \"1\" becomes 1, and 1.5 becomes 1.\n\ntype RowSchema = Schema.Codec<unknown, unknown>;\n\n/** One Iceberg type: the Arrow type, and the values it accepts. */\ntype Compiled = {\n readonly type: DataType;\n readonly row: RowSchema;\n};\n\n// Arrow pads or cuts binary values to fit.\nconst bytes = (length: number) =>\n Schema.Uint8Array.check(\n Schema.makeFilter(\n (value: Uint8Array) => value.byteLength === length || `expected ${length} bytes`,\n ),\n );\n\n// Arrow wraps big integers instead of failing, so check the range.\nconst int32 = Schema.Number.check(\n Schema.isInt(),\n Schema.isBetween({ minimum: -2_147_483_648, maximum: 2_147_483_647 }),\n);\n\nconst int64 = Schema.BigInt.check(\n Schema.isBetweenBigInt({ minimum: -(2n ** 63n), maximum: 2n ** 63n - 1n }),\n);\n\n// Arrow turns a number outside the 32-bit range into Infinity.\nconst float32 = Schema.Finite.check(\n Schema.makeFilter(\n (value: number) => Number.isFinite(Math.fround(value)) || \"expected a 32-bit number\",\n ),\n);\n\nconst microsecondsInDay = Schema.BigInt.check(\n Schema.isBetweenBigInt({ minimum: 0n, maximum: 86_399_999_999n }),\n);\n\nconst primitives: Record<string, Compiled> = {\n boolean: { type: new Bool(), row: Schema.Boolean },\n int: { type: new Int32(), row: int32 },\n long: { type: new Int64(), row: int64 },\n float: { type: new Float32(), row: float32 },\n double: { type: new Float64(), row: Schema.Finite },\n string: { type: new Utf8(), row: Schema.String },\n uuid: { type: new FixedSizeBinary(16), row: bytes(16) },\n binary: { type: new LargeBinary(), row: Schema.Uint8Array },\n date: { type: new DateDay(), row: Schema.Date },\n time: { type: new TimeMicrosecond(), row: microsecondsInDay },\n timestamp: { type: new TimestampMicrosecond(), row: Schema.Date },\n timestamptz: { type: new TimestampMicrosecond(\"UTC\"), row: Schema.Date },\n};\n\nconst primitive = (type: PrimitiveType): Compiled => {\n const known = primitives[type];\n\n if (known) return known;\n\n // Nothing checks the catalog metadata, and Arrow takes any precision.\n // Better to fail here than at write time.\n const decimal = parseDecimalType(type);\n\n if (decimal) {\n if (decimal.precision < 1 || decimal.precision > 38 || decimal.scale > decimal.precision) {\n throw new Error(`Invalid Iceberg decimal type ${type}`);\n }\n\n return {\n type: new Decimal(decimal.scale, decimal.precision),\n row: Schema.instanceOf(Uint32Array).check(\n Schema.makeFilter((value: Uint32Array) => value.length === 4 || \"expected four words\"),\n ),\n };\n }\n\n const fixed = parseFixedType(type);\n\n if (fixed) {\n if (fixed.length < 1) throw new Error(`Invalid Iceberg fixed type ${type}`);\n\n return { type: new FixedSizeBinary(fixed.length), row: bytes(fixed.length) };\n }\n\n throw new Error(`Unsupported Iceberg type ${type}`);\n};\n\n/** Absent and null both become null in Arrow. */\nconst optional = (row: RowSchema) => Schema.optional(Schema.NullOr(row));\n\nconst fieldMetadata = (id: number): Map<string, string> =>\n new Map([[\"PARQUET:field_id\", String(id)]]);\n\n/** Same as `primitive`, plus struct, list and map. */\nconst compileType = (type: IcebergType): Compiled => {\n if (typeof type === \"string\") return primitive(type);\n\n if (type.type === \"struct\") {\n const fields = type.fields.map((field) => ({ ...field, compiled: compileType(field.type) }));\n\n return {\n type: new Struct(\n fields.map(\n (field) =>\n new Field(field.name, field.compiled.type, !field.required, fieldMetadata(field.id)),\n ),\n ),\n row: Schema.Struct(\n Object.fromEntries(\n fields.map((field) => [\n field.name,\n field.required ? field.compiled.row : optional(field.compiled.row),\n ]),\n ),\n ),\n };\n }\n\n if (type.type === \"list\") {\n const element = compileType(type.element);\n const required = type[\"element-required\"];\n\n return {\n type: new List(\n new Field(\"element\", element.type, !required, fieldMetadata(type[\"element-id\"])),\n ),\n row: Schema.Array(required ? element.row : Schema.NullishOr(element.row)),\n };\n }\n\n const key = compileType(type.key);\n const value = compileType(type.value);\n const required = type[\"value-required\"];\n const entries = new Struct([\n new Field(\"key\", key.type, false, fieldMetadata(type[\"key-id\"])),\n new Field(\"value\", value.type, !required, fieldMetadata(type[\"value-id\"])),\n ]);\n\n return {\n type: new Map_(new Field(\"entries\", entries, false)),\n row: Schema.ReadonlyMap(key.row, required ? value.row : Schema.NullishOr(value.row)),\n };\n};\n\nexport type RowEncoder = (\n rows: ReadonlyArray<object>,\n) => Effect.Effect<RecordBatch<TypeMap>, ConnectorError>;\n\nexport const makeRowEncoder = (\n tableSchema: TableSchema,\n version: string,\n): Effect.Effect<RowEncoder, ConnectorError> =>\n Effect.try({\n try: () => {\n const fields = tableSchema.fields.map((field) => ({\n id: field.id,\n name: field.name,\n ...compileType(field.type),\n }));\n const fieldNames = new Set(fields.map((field) => field.name));\n const identifierIds = new Set(tableSchema[\"identifier-field-ids\"]);\n const keys = tableSchema.fields\n .filter((field) => identifierIds.has(field.id))\n .map((field) => field.name);\n // Other columns may be missing: a delete only sends the key and version.\n const required = new Set([...keys, version]);\n\n if (!fieldNames.has(version)) throw new Error(`Missing version column ${version}`);\n\n const struct = new Struct(\n fields.map((field) => new Field(field.name, field.type, true, fieldMetadata(field.id))),\n );\n const schema = new ArrowSchema(struct.children);\n\n const decodeRow = Schema.decodeUnknownSync(\n Schema.Struct(\n Object.fromEntries(\n fields.map((field) => [\n field.name,\n required.has(field.name) ? field.row : optional(field.row),\n ]),\n ),\n ),\n { onExcessProperty: \"error\" },\n );\n\n // Schema says which field is wrong. This adds the row number.\n const decodeAt = (row: object, index: number) => {\n try {\n return decodeRow(row) as Record<string, unknown>;\n } catch (cause) {\n const detail = cause instanceof Error ? cause.message : String(cause);\n throw new Error(`row ${index}: ${detail}`, { cause });\n }\n };\n\n return (rows: ReadonlyArray<object>) =>\n Effect.try({\n try: () => {\n const builder = makeBuilder({ type: struct, nullValues: [null, undefined] });\n\n for (const [index, row] of rows.entries()) {\n builder.append(decodeAt(row, index) as Struct<TypeMap>[\"TValue\"]);\n }\n\n return new RecordBatch(schema, builder.finish().flush());\n },\n catch: (cause) => new ConnectorError({ message: \"Failed to encode rows\", cause }),\n });\n },\n catch: (cause) => new ConnectorError({ message: \"Failed to convert Iceberg schema\", cause }),\n });\n","import type { RecordBatch, TypeMap } from \"apache-arrow\";\nimport type { TableIdentifier } from \"iceberg-js\";\n\nimport * as Wings from \"@useairfoil/wings\";\nimport { Config, Effect, Layer } from \"effect\";\nimport { FetchHttpClient } from \"effect/http\";\n\nimport type { TableSource } from \"../core/types\";\n\nimport { ensureTable } from \"../catalog/table\";\nimport { ConnectorError } from \"../errors\";\nimport * as RuntimeConfig from \"../runtime-config\";\nimport { makeRowEncoder, type RowEncoder } from \"./arrow\";\nimport { Ingestor, type IngestorService } from \"./service\";\n\n/** One catalog and an Iceberg table for each resource that runs. */\nexport type WingsIngestorConfig<Source extends TableSource = TableSource> = {\n readonly connector: Source;\n readonly catalog: string;\n readonly tables: RuntimeConfig.ResolvedTableBindings<Source>;\n};\n\ntype IngestorEntry = {\n readonly encode: RowEncoder;\n readonly push: (batch: RecordBatch<TypeMap>) => Effect.Effect<void, ConnectorError>;\n};\n\ntype PreparedTable = {\n readonly resource: string;\n readonly identifier: TableIdentifier;\n readonly encode: RowEncoder;\n};\n\nconst connectorError = (message: string, cause?: unknown) => new ConnectorError({ message, cause });\n\n/** Loads each table schema and opens one Wings stream per bound resource. */\nexport const layerWings = <const Source extends TableSource>(\n config: WingsIngestorConfig<Source>,\n): Layer.Layer<Ingestor, ConnectorError, Wings.CatalogManager.CatalogManager> =>\n Layer.effect(Ingestor)(\n Effect.gen(function* () {\n const manager = yield* Wings.CatalogManager.CatalogManager;\n const catalog = yield* manager\n .getIcebergCatalog(config.catalog)\n .pipe(Effect.mapError((cause) => connectorError(\"Failed to load Wings catalog\", cause)));\n\n const bindings: Partial<Record<string, RuntimeConfig.TableBinding>> = config.tables;\n\n const prepared: Array<PreparedTable> = [];\n for (const resource of config.connector.resources) {\n const binding = bindings[resource.name];\n if (!binding) continue;\n\n const { namespace, name, location } = binding;\n const identifier = { namespace, name };\n const schema = yield* ensureTable(resource.rowSchema, {\n catalog,\n identifier,\n location,\n }).pipe(\n Effect.mapError((cause) =>\n connectorError(`Failed to prepare table for ${resource.name}: ${cause.message}`, cause),\n ),\n );\n\n const encode = yield* makeRowEncoder(schema, resource.version);\n prepared.push({ resource: resource.name, identifier, encode });\n }\n\n const entries = new Map<string, IngestorEntry>();\n for (const { resource, identifier, encode } of prepared) {\n const ingestor = yield* manager\n .ingestor({\n catalog: config.catalog,\n namespace: identifier.namespace,\n table: identifier.name,\n })\n .pipe(\n Effect.mapError((cause) =>\n connectorError(`Failed to open ingestor for ${resource}`, cause),\n ),\n );\n\n entries.set(resource, {\n encode,\n push: (batch) =>\n ingestor\n .push(batch)\n .pipe(\n Effect.mapError((cause) =>\n connectorError(`Failed to ingest rows for ${resource}`, cause),\n ),\n ),\n });\n }\n\n const service: IngestorService = {\n resourceNames: prepared.map(({ resource }) => resource),\n ingest: ({ resource, batch }) => {\n const entry = entries.get(resource);\n\n if (!entry) return Effect.fail(connectorError(`Unknown resource ${resource}`));\n if (batch.rows.length === 0) return Effect.succeed({ rows: 0, bytes: 0 });\n\n return entry\n .encode(batch.rows)\n .pipe(\n Effect.flatMap((encoded) =>\n entry\n .push(encoded)\n .pipe(Effect.as({ rows: batch.rows.length, bytes: encoded.data.byteLength })),\n ),\n );\n },\n };\n\n return Ingestor.of(service);\n }),\n );\n\n/** Reads the Wings URL, catalog and table bindings from hosted config. */\nexport const layerWingsConfig = (connector: TableSource) =>\n Layer.unwrap(\n Effect.gen(function* () {\n const { catalog, uri } = yield* Config.all({\n catalog: RuntimeConfig.catalog,\n uri: RuntimeConfig.wingsUri,\n }).pipe(Effect.mapError((cause) => connectorError(\"Invalid Wings configuration\", cause)));\n\n if (uri.protocol !== \"http:\" && uri.protocol !== \"https:\") {\n return yield* Effect.fail(connectorError(\"Invalid Wings URL\"));\n }\n\n const tables = yield* RuntimeConfig.loadTableBindings(connector).pipe(\n Effect.mapError((cause) => connectorError(cause.message, cause)),\n );\n const manager = Wings.CatalogManager.layer({ baseUrl: uri.href }).pipe(\n Layer.provide(FetchHttpClient.layer),\n );\n\n return layerWings({ connector, catalog, tables }).pipe(Layer.provide(manager));\n }),\n );\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@useairfoil/connector-kit",
3
- "version": "0.6.0",
4
- "repository": "useairfoil/typescript-sdk",
3
+ "version": "0.6.1",
4
+ "repository": "useairfoil/connector-kit",
5
5
  "files": [
6
6
  "dist",
7
7
  "src",
@@ -9,68 +9,78 @@
9
9
  "README.md"
10
10
  ],
11
11
  "type": "module",
12
- "main": "./dist/index.js",
13
- "types": "./dist/index.d.ts",
12
+ "main": "./dist/index.mjs",
13
+ "types": "./dist/index.d.mts",
14
14
  "exports": {
15
15
  ".": {
16
- "types": "./dist/index.d.ts",
17
- "import": "./dist/index.js",
18
- "default": "./dist/index.js"
16
+ "types": "./dist/index.d.mts",
17
+ "import": "./dist/index.mjs",
18
+ "default": "./dist/index.mjs"
19
19
  },
20
20
  "./auth": {
21
- "types": "./dist/auth/index.d.ts",
22
- "import": "./dist/auth/index.js",
23
- "default": "./dist/auth/index.js"
21
+ "types": "./dist/auth/index.d.mts",
22
+ "import": "./dist/auth/index.mjs",
23
+ "default": "./dist/auth/index.mjs"
24
24
  },
25
25
  "./connector-app": {
26
- "types": "./dist/connector-app/index.d.ts",
27
- "import": "./dist/connector-app/index.js",
28
- "default": "./dist/connector-app/index.js"
26
+ "types": "./dist/connector-app/index.d.mts",
27
+ "import": "./dist/connector-app/index.mjs",
28
+ "default": "./dist/connector-app/index.mjs"
29
+ },
30
+ "./demo": {
31
+ "types": "./dist/demo/index.d.mts",
32
+ "import": "./dist/demo/index.mjs",
33
+ "default": "./dist/demo/index.mjs"
34
+ },
35
+ "./iceberg": {
36
+ "types": "./dist/iceberg/index.d.mts",
37
+ "import": "./dist/iceberg/index.mjs",
38
+ "default": "./dist/iceberg/index.mjs"
29
39
  },
30
40
  "./ingestion": {
31
- "types": "./dist/ingestion/index.d.ts",
32
- "import": "./dist/ingestion/index.js",
33
- "default": "./dist/ingestion/index.js"
41
+ "types": "./dist/ingestion/index.d.mts",
42
+ "import": "./dist/ingestion/index.mjs",
43
+ "default": "./dist/ingestion/index.mjs"
44
+ },
45
+ "./ingestor": {
46
+ "types": "./dist/ingestor/index.d.mts",
47
+ "import": "./dist/ingestor/index.mjs",
48
+ "default": "./dist/ingestor/index.mjs"
34
49
  },
35
50
  "./manifest": {
36
- "types": "./dist/manifest/index.d.ts",
37
- "import": "./dist/manifest/index.js",
38
- "default": "./dist/manifest/index.js"
51
+ "types": "./dist/manifest/index.d.mts",
52
+ "import": "./dist/manifest/index.mjs",
53
+ "default": "./dist/manifest/index.mjs"
39
54
  },
40
55
  "./metrics": {
41
- "types": "./dist/metrics.d.ts",
42
- "import": "./dist/metrics.js",
43
- "default": "./dist/metrics.js"
44
- },
45
- "./publisher": {
46
- "types": "./dist/publisher/index.d.ts",
47
- "import": "./dist/publisher/index.js",
48
- "default": "./dist/publisher/index.js"
56
+ "types": "./dist/metrics.d.mts",
57
+ "import": "./dist/metrics.mjs",
58
+ "default": "./dist/metrics.mjs"
49
59
  },
50
60
  "./runtime-config": {
51
- "types": "./dist/runtime-config/index.d.ts",
52
- "import": "./dist/runtime-config/index.js",
53
- "default": "./dist/runtime-config/index.js"
61
+ "types": "./dist/runtime-config/index.d.mts",
62
+ "import": "./dist/runtime-config/index.mjs",
63
+ "default": "./dist/runtime-config/index.mjs"
54
64
  },
55
65
  "./state-store": {
56
- "types": "./dist/state-store/index.d.ts",
57
- "import": "./dist/state-store/index.js",
58
- "default": "./dist/state-store/index.js"
66
+ "types": "./dist/state-store/index.d.mts",
67
+ "import": "./dist/state-store/index.mjs",
68
+ "default": "./dist/state-store/index.mjs"
59
69
  },
60
70
  "./status": {
61
- "types": "./dist/status/index.d.ts",
62
- "import": "./dist/status/index.js",
63
- "default": "./dist/status/index.js"
71
+ "types": "./dist/status/index.d.mts",
72
+ "import": "./dist/status/index.mjs",
73
+ "default": "./dist/status/index.mjs"
64
74
  },
65
75
  "./webhook": {
66
- "types": "./dist/webhook/index.d.ts",
67
- "import": "./dist/webhook/index.js",
68
- "default": "./dist/webhook/index.js"
76
+ "types": "./dist/webhook/index.d.mts",
77
+ "import": "./dist/webhook/index.mjs",
78
+ "default": "./dist/webhook/index.mjs"
69
79
  },
70
80
  "./errors": {
71
- "types": "./dist/errors/index.d.ts",
72
- "import": "./dist/errors/index.js",
73
- "default": "./dist/errors/index.js"
81
+ "types": "./dist/errors/index.d.mts",
82
+ "import": "./dist/errors/index.mjs",
83
+ "default": "./dist/errors/index.mjs"
74
84
  }
75
85
  },
76
86
  "scripts": {
@@ -80,21 +90,24 @@
80
90
  "typecheck": "tsc --noEmit"
81
91
  },
82
92
  "dependencies": {
83
- "@effect/platform-node": "^4.0.0-rc.108",
84
- "@useairfoil/flight": "0.4.6",
85
- "@useairfoil/wings": "0.4.5"
93
+ "@effect/platform-node": "^4.0.7",
94
+ "@faker-js/faker": "10.6.0",
95
+ "@useairfoil/wings": "0.4.7",
96
+ "apache-arrow": "^21.1.0",
97
+ "iceberg-js": "^1.0.0"
86
98
  },
87
99
  "devDependencies": {
88
- "@effect/sql-pg": "^4.0.0-rc.108",
89
- "@effect/vitest": "^4.0.0-rc.108",
100
+ "@effect/sql-pg": "^4.0.7",
101
+ "@effect/vitest": "^4.0.7",
90
102
  "@types/node": "^24.2.0",
91
- "effect": "^4.0.0-rc.108",
103
+ "@useairfoil/wings-testing": "0.1.6",
104
+ "effect": "^4.0.7",
92
105
  "testcontainers": "^11.14.0",
93
- "tsdown": "^0.15.6",
94
- "vitest": "^4.1.0"
106
+ "tsdown": "^0.23.0",
107
+ "vitest": "^5.0.3"
95
108
  },
96
109
  "peerDependencies": {
97
- "effect": "^4.0.0-rc.108"
110
+ "effect": "^4.0.7"
98
111
  },
99
112
  "peerDependenciesMeta": {
100
113
  "effect": {