@deepnote/database-integrations 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +36 -8
- package/dist/index.d.cts +406 -102
- package/dist/index.d.ts +406 -102
- package/dist/index.js +36 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -17,6 +17,10 @@ const BigQueryAuthMethods = {
|
|
|
17
17
|
ServiceAccount: "service-account",
|
|
18
18
|
GoogleOauth: "google-oauth"
|
|
19
19
|
};
|
|
20
|
+
const TrinoAuthMethods = {
|
|
21
|
+
Password: "password",
|
|
22
|
+
Oauth: "oauth"
|
|
23
|
+
};
|
|
20
24
|
const DatabaseAuthMethods = {
|
|
21
25
|
UsernameAndPassword: "username-and-password",
|
|
22
26
|
IndividualCredentials: "individual-credentials"
|
|
@@ -27,7 +31,8 @@ const federatedAuthMethods = [
|
|
|
27
31
|
SnowflakeAuthMethods.AzureAd,
|
|
28
32
|
SnowflakeAuthMethods.KeyPair,
|
|
29
33
|
BigQueryAuthMethods.GoogleOauth,
|
|
30
|
-
DatabaseAuthMethods.IndividualCredentials
|
|
34
|
+
DatabaseAuthMethods.IndividualCredentials,
|
|
35
|
+
TrinoAuthMethods.Oauth
|
|
31
36
|
];
|
|
32
37
|
function isFederatedAuthMethod(authMethod) {
|
|
33
38
|
return federatedAuthMethods.includes(authMethod);
|
|
@@ -121,9 +126,15 @@ const commonRedshiftMetadataSchema = z.object({
|
|
|
121
126
|
caCertificateName: z.string().optional(),
|
|
122
127
|
caCertificateText: z.string().optional()
|
|
123
128
|
});
|
|
124
|
-
const redshiftMetadataSchema = z.
|
|
129
|
+
const redshiftMetadataSchema = z.preprocess((data) => {
|
|
130
|
+
if (typeof data === "object" && data !== null && (!("authMethod" in data) || !data.authMethod)) return {
|
|
131
|
+
...data,
|
|
132
|
+
authMethod: DatabaseAuthMethods.UsernameAndPassword
|
|
133
|
+
};
|
|
134
|
+
return data;
|
|
135
|
+
}, z.union([
|
|
125
136
|
commonRedshiftMetadataSchema.extend({
|
|
126
|
-
authMethod: z.literal(DatabaseAuthMethods.UsernameAndPassword),
|
|
137
|
+
authMethod: z.literal(DatabaseAuthMethods.UsernameAndPassword).optional(),
|
|
127
138
|
user: z.string(),
|
|
128
139
|
password: z.string()
|
|
129
140
|
}),
|
|
@@ -134,7 +145,7 @@ const redshiftMetadataSchema = z.discriminatedUnion("authMethod", [
|
|
|
134
145
|
roleNonce: z.string()
|
|
135
146
|
}),
|
|
136
147
|
commonRedshiftMetadataSchema.extend({ authMethod: z.literal(DatabaseAuthMethods.IndividualCredentials) })
|
|
137
|
-
]);
|
|
148
|
+
]));
|
|
138
149
|
const commonSnowflakeMetadataSchema = z.object({
|
|
139
150
|
accountName: z.string(),
|
|
140
151
|
warehouse: z.string().optional(),
|
|
@@ -181,12 +192,10 @@ const spannerMetadataSchema = z.object({
|
|
|
181
192
|
instance: z.string(),
|
|
182
193
|
database: z.string()
|
|
183
194
|
});
|
|
184
|
-
const
|
|
195
|
+
const trinoBaseMetadataSchema = z.object({
|
|
185
196
|
host: z.string(),
|
|
186
|
-
|
|
187
|
-
password: z.string(),
|
|
197
|
+
port: z.string().optional(),
|
|
188
198
|
database: z.string(),
|
|
189
|
-
port: z.string(),
|
|
190
199
|
sshEnabled: z.boolean().optional(),
|
|
191
200
|
sshHost: z.string().optional(),
|
|
192
201
|
sshPort: z.string().optional(),
|
|
@@ -195,6 +204,22 @@ const trinoMetadataSchema = z.object({
|
|
|
195
204
|
caCertificateName: z.string().optional(),
|
|
196
205
|
caCertificateText: z.string().optional()
|
|
197
206
|
});
|
|
207
|
+
const trinoUsernamePasswordMetadataSchema = trinoBaseMetadataSchema.extend({
|
|
208
|
+
user: z.string(),
|
|
209
|
+
password: z.string()
|
|
210
|
+
});
|
|
211
|
+
const trinoOAuthMetadataSchema = trinoBaseMetadataSchema.extend({
|
|
212
|
+
authMethod: z.literal(TrinoAuthMethods.Oauth),
|
|
213
|
+
clientId: z.string(),
|
|
214
|
+
clientSecret: z.string(),
|
|
215
|
+
authUrl: z.string().url(),
|
|
216
|
+
tokenUrl: z.string().url()
|
|
217
|
+
});
|
|
218
|
+
const trinoMetadataSchema = z.discriminatedUnion("authMethod", [
|
|
219
|
+
trinoUsernamePasswordMetadataSchema.extend({ authMethod: z.literal(null) }),
|
|
220
|
+
trinoUsernamePasswordMetadataSchema.extend({ authMethod: z.literal(TrinoAuthMethods.Password) }),
|
|
221
|
+
trinoOAuthMetadataSchema
|
|
222
|
+
]);
|
|
198
223
|
const commonDatabaseSchema = z.object({
|
|
199
224
|
host: z.string(),
|
|
200
225
|
user: z.string(),
|
|
@@ -604,6 +629,7 @@ const getPostgresSqlAlchemyInput = (integrationId, projectRootDirectory, { user,
|
|
|
604
629
|
};
|
|
605
630
|
};
|
|
606
631
|
const getRedshiftSqlAlchemyInput = (integrationId, projectRootDirectory, metadata) => {
|
|
632
|
+
if (!metadata.authMethod) metadata.authMethod = DatabaseAuthMethods.UsernameAndPassword;
|
|
607
633
|
if (isFederatedAuthMethod(metadata.authMethod)) return null;
|
|
608
634
|
const portSuffix = metadata.port ? `:${metadata.port}` : "";
|
|
609
635
|
const mode = getPostgresStyleMode(metadata.caCertificateName, metadata.sslEnabled);
|
|
@@ -664,6 +690,7 @@ const getMaterializePostgresSqlAlchemyInput = (integrationId, projectRootDirecto
|
|
|
664
690
|
};
|
|
665
691
|
};
|
|
666
692
|
const getTrinoEnvVars = (integrationId, metadata, projectRootDirectory) => {
|
|
693
|
+
if (metadata.authMethod === TrinoAuthMethods.Oauth) return null;
|
|
667
694
|
return {
|
|
668
695
|
url: `trino://${encodeURIComponent(metadata.user)}:${encodeURIComponent(metadata.password)}@${metadata.host}:${metadata.port}/${encodeURIComponent(metadata.database)}`,
|
|
669
696
|
params: { connect_args: {
|
|
@@ -840,4 +867,4 @@ function isDatabaseIntegrationTypeWithSslSupport(type) {
|
|
|
840
867
|
}
|
|
841
868
|
|
|
842
869
|
//#endregion
|
|
843
|
-
export { AwsAuthMethods, BigQueryAuthMethods, BigQueryServiceAccountParseError, DatabaseAuthMethods, SnowflakeAuthMethods, SpannerServiceAccountParseError, databaseIntegrationConfigSchema, databaseIntegrationTypes, databaseIntegrationTypesWithSslSupport, databaseMetadataSchemasByType, federatedAuthMethods, getEnvironmentVariablesForIntegrations, getSnowflakeFederatedAuthSqlAlchemyInput, getSqlAlchemyInput, isDatabaseIntegrationType, isDatabaseIntegrationTypeWithSslSupport, isFederatedAuthMetadata, isFederatedAuthMethod, isSqlIntegrationType, sqlIntegrationTypes };
|
|
870
|
+
export { AwsAuthMethods, BigQueryAuthMethods, BigQueryServiceAccountParseError, DatabaseAuthMethods, SnowflakeAuthMethods, SpannerServiceAccountParseError, TrinoAuthMethods, databaseIntegrationConfigSchema, databaseIntegrationTypes, databaseIntegrationTypesWithSslSupport, databaseMetadataSchemasByType, federatedAuthMethods, getEnvironmentVariablesForIntegrations, getSnowflakeFederatedAuthSqlAlchemyInput, getSqlAlchemyInput, isDatabaseIntegrationType, isDatabaseIntegrationTypeWithSslSupport, isFederatedAuthMetadata, isFederatedAuthMethod, isSqlIntegrationType, sqlIntegrationTypes };
|