@fabricorg/databricks-testkit 0.2.0 → 0.2.2
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 +214 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.js +209 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -332,4 +332,22 @@ interface PollOptions {
|
|
|
332
332
|
}
|
|
333
333
|
declare function waitForPipelineUpdate(client: WorkspaceClientLike, pipelineId: string, updateId: string, options?: PollOptions): Promise<Record<string, unknown>>;
|
|
334
334
|
|
|
335
|
-
|
|
335
|
+
/** Measure the real Statement Execution path and fail when its p95 exceeds the declared budget. */
|
|
336
|
+
declare function performanceBudgetCheck(): LiveCheck;
|
|
337
|
+
/** Prove a failed statement does not poison the session or the next workload. */
|
|
338
|
+
declare function failureRecoveryCheck(): LiveCheck;
|
|
339
|
+
/** Rotate a disposable secret key and remove it. Values are never returned or written to evidence. */
|
|
340
|
+
interface SecretRotationCheckOptions {
|
|
341
|
+
randomId?: () => string;
|
|
342
|
+
}
|
|
343
|
+
declare function secretRotationCheck(options?: SecretRotationCheckOptions): LiveCheck;
|
|
344
|
+
/** Exercise a complete Delta backup, destructive loss, and restore cycle in the scratch schema. */
|
|
345
|
+
declare function backupRestoreCheck(): LiveCheck;
|
|
346
|
+
/** Prove Delta time-travel rollback returns a corrupted scratch table to its known-good version. */
|
|
347
|
+
declare function rollbackCheck(): LiveCheck;
|
|
348
|
+
/** Certify that the configured SQL warehouse is serverless and usable by the test identity. */
|
|
349
|
+
declare function serverlessComputeCheck(): LiveCheck;
|
|
350
|
+
/** Launch a disposable classic job cluster and require the shared notebook probe to succeed. */
|
|
351
|
+
declare function classicComputeCheck(): LiveCheck;
|
|
352
|
+
|
|
353
|
+
export { type AppHealthCheckOptions, type AutoLoaderCheckOptions, type CreateContextOptions, type DefinedLiveSuite, type DeltaColumnContract, type DuckDbConnectionLike, type DuckDbContextOptions, type EphemeralLakebaseBranch, type ExecutionContext, type LakebaseBranchOptions, type LakebaseCheckOptions, type LakebaseControlClient, type LiveCheck, type LiveCheckContext, type LiveCheckResult, type LiveCheckStatus, type LiveEvidence, type LiveSuiteRuntime, type LiveSuiteSpec, type MockDatabricksClient, type PollOptions, type RecordedCall, type SecretRotationCheckOptions, TableFixture, type TestProfile, type VolumeIOCheckOptions, type WorkspaceClientLike, type WorkspaceContextOptions, appHealthCheck, assertDeltaContract, autoLoaderIngestionCheck, backupRestoreCheck, classicComputeCheck, compareToGolden, createClientFromEnv, createDuckDbContext, createEphemeralLakebaseBranch, createExecutionContext, createLakebaseTestProvider, createMockDatabricksClient, createWorkspaceContext, customLiveCheck, dbtBuildCheck, defineLiveSuite, deleteEphemeralLakebaseBranch, deleteVolumeFile, deltaContractCheck, ensureVolumeDirectory, expectQueryToMatchGolden, expectTable, failureRecoveryCheck, jobRunCheck, lakebaseCredentialCheck, lakebaseRoundTripCheck, normalizeRow, normalizeVolumeRoot, notebookSubmitCheck, parseStatementRows, performanceBudgetCheck, pipelineRefreshCheck, renderJUnit, resolveLakebaseProject, resolveProfile, resolveTokenProvider, restrictedPrincipalCheck, rollbackCheck, runLiveSuite, secretRotationCheck, secretScopeCheck, serverlessComputeCheck, sqlRoundTripCheck, toLakebaseBranchId, toNamedParameters, unityCatalogAccessCheck, uploadVolumeFile, volumeIOCheck, waitForPipelineUpdate };
|
package/dist/index.d.ts
CHANGED
|
@@ -332,4 +332,22 @@ interface PollOptions {
|
|
|
332
332
|
}
|
|
333
333
|
declare function waitForPipelineUpdate(client: WorkspaceClientLike, pipelineId: string, updateId: string, options?: PollOptions): Promise<Record<string, unknown>>;
|
|
334
334
|
|
|
335
|
-
|
|
335
|
+
/** Measure the real Statement Execution path and fail when its p95 exceeds the declared budget. */
|
|
336
|
+
declare function performanceBudgetCheck(): LiveCheck;
|
|
337
|
+
/** Prove a failed statement does not poison the session or the next workload. */
|
|
338
|
+
declare function failureRecoveryCheck(): LiveCheck;
|
|
339
|
+
/** Rotate a disposable secret key and remove it. Values are never returned or written to evidence. */
|
|
340
|
+
interface SecretRotationCheckOptions {
|
|
341
|
+
randomId?: () => string;
|
|
342
|
+
}
|
|
343
|
+
declare function secretRotationCheck(options?: SecretRotationCheckOptions): LiveCheck;
|
|
344
|
+
/** Exercise a complete Delta backup, destructive loss, and restore cycle in the scratch schema. */
|
|
345
|
+
declare function backupRestoreCheck(): LiveCheck;
|
|
346
|
+
/** Prove Delta time-travel rollback returns a corrupted scratch table to its known-good version. */
|
|
347
|
+
declare function rollbackCheck(): LiveCheck;
|
|
348
|
+
/** Certify that the configured SQL warehouse is serverless and usable by the test identity. */
|
|
349
|
+
declare function serverlessComputeCheck(): LiveCheck;
|
|
350
|
+
/** Launch a disposable classic job cluster and require the shared notebook probe to succeed. */
|
|
351
|
+
declare function classicComputeCheck(): LiveCheck;
|
|
352
|
+
|
|
353
|
+
export { type AppHealthCheckOptions, type AutoLoaderCheckOptions, type CreateContextOptions, type DefinedLiveSuite, type DeltaColumnContract, type DuckDbConnectionLike, type DuckDbContextOptions, type EphemeralLakebaseBranch, type ExecutionContext, type LakebaseBranchOptions, type LakebaseCheckOptions, type LakebaseControlClient, type LiveCheck, type LiveCheckContext, type LiveCheckResult, type LiveCheckStatus, type LiveEvidence, type LiveSuiteRuntime, type LiveSuiteSpec, type MockDatabricksClient, type PollOptions, type RecordedCall, type SecretRotationCheckOptions, TableFixture, type TestProfile, type VolumeIOCheckOptions, type WorkspaceClientLike, type WorkspaceContextOptions, appHealthCheck, assertDeltaContract, autoLoaderIngestionCheck, backupRestoreCheck, classicComputeCheck, compareToGolden, createClientFromEnv, createDuckDbContext, createEphemeralLakebaseBranch, createExecutionContext, createLakebaseTestProvider, createMockDatabricksClient, createWorkspaceContext, customLiveCheck, dbtBuildCheck, defineLiveSuite, deleteEphemeralLakebaseBranch, deleteVolumeFile, deltaContractCheck, ensureVolumeDirectory, expectQueryToMatchGolden, expectTable, failureRecoveryCheck, jobRunCheck, lakebaseCredentialCheck, lakebaseRoundTripCheck, normalizeRow, normalizeVolumeRoot, notebookSubmitCheck, parseStatementRows, performanceBudgetCheck, pipelineRefreshCheck, renderJUnit, resolveLakebaseProject, resolveProfile, resolveTokenProvider, restrictedPrincipalCheck, rollbackCheck, runLiveSuite, secretRotationCheck, secretScopeCheck, serverlessComputeCheck, sqlRoundTripCheck, toLakebaseBranchId, toNamedParameters, unityCatalogAccessCheck, uploadVolumeFile, volumeIOCheck, waitForPipelineUpdate };
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { dirname, resolve, basename } from 'path';
|
|
|
9
9
|
import { waitForDatabricksRun } from '@fabric-harness/databricks';
|
|
10
10
|
export { waitForDatabricksRun, waitForDatabricksStatement } from '@fabric-harness/databricks';
|
|
11
11
|
import { LakebaseDatabaseProvider, exchangeLakebaseCredential } from '@fabricorg/experiments-db-pool';
|
|
12
|
-
import { randomUUID } from 'crypto';
|
|
12
|
+
import { randomUUID, randomBytes } from 'crypto';
|
|
13
13
|
|
|
14
14
|
// src/context.ts
|
|
15
15
|
function resolveProfile(env = process.env) {
|
|
@@ -839,7 +839,214 @@ function autoLoaderIngestionCheck(options = {}) {
|
|
|
839
839
|
}
|
|
840
840
|
};
|
|
841
841
|
}
|
|
842
|
+
function safeName(prefix) {
|
|
843
|
+
return `${prefix}_${randomUUID().replaceAll("-", "_")}`;
|
|
844
|
+
}
|
|
845
|
+
function performanceBudgetCheck() {
|
|
846
|
+
return {
|
|
847
|
+
id: "performance",
|
|
848
|
+
description: "SQL Statement Execution p95 stays within the configured latency budget",
|
|
849
|
+
configured: (env) => Boolean(env.DBX_TEST_PERFORMANCE_P95_MS),
|
|
850
|
+
async run({ env, warehouse }) {
|
|
851
|
+
const budgetMs = Number(env.DBX_TEST_PERFORMANCE_P95_MS);
|
|
852
|
+
const runs = Number(env.DBX_TEST_PERFORMANCE_RUNS ?? 7);
|
|
853
|
+
if (!Number.isFinite(budgetMs) || budgetMs <= 0) {
|
|
854
|
+
throw new Error("DBX_TEST_PERFORMANCE_P95_MS must be a positive number");
|
|
855
|
+
}
|
|
856
|
+
if (!Number.isInteger(runs) || runs < 3 || runs > 100) {
|
|
857
|
+
throw new Error("DBX_TEST_PERFORMANCE_RUNS must be an integer from 3 to 100");
|
|
858
|
+
}
|
|
859
|
+
await warehouse.query("SELECT 1 AS warmup");
|
|
860
|
+
const durations = [];
|
|
861
|
+
for (let index = 0; index < runs; index += 1) {
|
|
862
|
+
const started = performance.now();
|
|
863
|
+
await warehouse.query("SELECT 1 AS performance_probe");
|
|
864
|
+
durations.push(performance.now() - started);
|
|
865
|
+
}
|
|
866
|
+
durations.sort((left, right) => left - right);
|
|
867
|
+
const p95 = durations[Math.ceil(durations.length * 0.95) - 1] ?? 0;
|
|
868
|
+
if (p95 > budgetMs) {
|
|
869
|
+
throw new Error(`SQL p95 ${Math.round(p95)}ms exceeded ${budgetMs}ms budget`);
|
|
870
|
+
}
|
|
871
|
+
return {
|
|
872
|
+
runs,
|
|
873
|
+
p50Ms: Math.round(durations[Math.floor(durations.length * 0.5)] ?? 0),
|
|
874
|
+
p95Ms: Math.round(p95),
|
|
875
|
+
budgetMs
|
|
876
|
+
};
|
|
877
|
+
}
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
function failureRecoveryCheck() {
|
|
881
|
+
return {
|
|
882
|
+
id: "failure-recovery",
|
|
883
|
+
description: "A failed statement is isolated and a subsequent statement recovers",
|
|
884
|
+
async run({ warehouse }) {
|
|
885
|
+
let failedAsExpected = false;
|
|
886
|
+
try {
|
|
887
|
+
await warehouse.query("SELECT * FROM __fabric_experiments_expected_missing_table__");
|
|
888
|
+
} catch {
|
|
889
|
+
failedAsExpected = true;
|
|
890
|
+
}
|
|
891
|
+
if (!failedAsExpected) throw new Error("Injected failure unexpectedly succeeded");
|
|
892
|
+
const rows = await warehouse.query("SELECT 1 AS recovered");
|
|
893
|
+
if (Number(rows[0]?.recovered) !== 1) {
|
|
894
|
+
throw new Error("Statement execution did not recover after the injected failure");
|
|
895
|
+
}
|
|
896
|
+
return { injectedFailure: true, recovered: true };
|
|
897
|
+
}
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
function secretRotationCheck(options = {}) {
|
|
901
|
+
return {
|
|
902
|
+
id: "secret-rotation",
|
|
903
|
+
description: "Databricks secret put, overwrite, metadata verification, and cleanup",
|
|
904
|
+
configured: (env) => Boolean(env.DBX_TEST_ROTATION_SECRET_SCOPE),
|
|
905
|
+
async run({ env, client }) {
|
|
906
|
+
const scope = env.DBX_TEST_ROTATION_SECRET_SCOPE;
|
|
907
|
+
const key = options.randomId?.() ?? safeName("fx_rotation_probe");
|
|
908
|
+
const put = async (value) => client.post("/api/2.0/secrets/put", { scope, key, string_value: value });
|
|
909
|
+
try {
|
|
910
|
+
await put(randomBytes(32).toString("base64url"));
|
|
911
|
+
await put(randomBytes(32).toString("base64url"));
|
|
912
|
+
const listed = await client.get("/api/2.0/secrets/list", {
|
|
913
|
+
scope
|
|
914
|
+
});
|
|
915
|
+
if (!(listed.secrets ?? []).some((secret) => secret.key === key)) {
|
|
916
|
+
throw new Error(`Rotated secret metadata was not visible in scope ${scope}`);
|
|
917
|
+
}
|
|
918
|
+
return { scope, rotated: true, cleanedUp: true };
|
|
919
|
+
} finally {
|
|
920
|
+
await client.post("/api/2.0/secrets/delete", { scope, key }).catch(() => void 0);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
function backupRestoreCheck() {
|
|
926
|
+
return {
|
|
927
|
+
id: "backup-restore",
|
|
928
|
+
description: "Delta DEEP CLONE backup restores a dropped scratch table",
|
|
929
|
+
async run({ warehouse }) {
|
|
930
|
+
const source = warehouse.qual(safeName("backup_source"));
|
|
931
|
+
const backup = warehouse.qual(safeName("backup_clone"));
|
|
932
|
+
try {
|
|
933
|
+
await warehouse.exec(`CREATE TABLE ${source} USING DELTA AS SELECT 7 AS value`);
|
|
934
|
+
await warehouse.exec(`CREATE TABLE ${backup} DEEP CLONE ${source}`);
|
|
935
|
+
await warehouse.exec(`DROP TABLE ${source}`);
|
|
936
|
+
await warehouse.exec(`CREATE TABLE ${source} DEEP CLONE ${backup}`);
|
|
937
|
+
const rows = await warehouse.query(`SELECT value FROM ${source}`);
|
|
938
|
+
if (Number(rows[0]?.value) !== 7) throw new Error("Restored Delta table lost its data");
|
|
939
|
+
return { restoredRows: rows.length, deepClone: true };
|
|
940
|
+
} finally {
|
|
941
|
+
await warehouse.exec(`DROP TABLE IF EXISTS ${source}`).catch(() => void 0);
|
|
942
|
+
await warehouse.exec(`DROP TABLE IF EXISTS ${backup}`).catch(() => void 0);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
};
|
|
946
|
+
}
|
|
947
|
+
function rollbackCheck() {
|
|
948
|
+
return {
|
|
949
|
+
id: "rollback",
|
|
950
|
+
description: "Delta time-travel rollback restores a known-good table version",
|
|
951
|
+
async run({ warehouse }) {
|
|
952
|
+
const table = warehouse.qual(safeName("rollback_probe"));
|
|
953
|
+
try {
|
|
954
|
+
await warehouse.exec(`CREATE TABLE ${table} (value INT) USING DELTA`);
|
|
955
|
+
await warehouse.exec(`INSERT INTO ${table} VALUES (1)`);
|
|
956
|
+
const history = await warehouse.query(`DESCRIBE HISTORY ${table} LIMIT 1`);
|
|
957
|
+
const knownGoodVersion = Number(history[0]?.version);
|
|
958
|
+
if (!Number.isInteger(knownGoodVersion)) {
|
|
959
|
+
throw new Error("Delta history did not return a known-good version");
|
|
960
|
+
}
|
|
961
|
+
await warehouse.exec(`INSERT INTO ${table} VALUES (999)`);
|
|
962
|
+
await warehouse.exec(`RESTORE TABLE ${table} TO VERSION AS OF ${knownGoodVersion}`);
|
|
963
|
+
const rows = await warehouse.query(`SELECT value FROM ${table} ORDER BY value`);
|
|
964
|
+
if (rows.length !== 1 || Number(rows[0]?.value) !== 1) {
|
|
965
|
+
throw new Error("Delta rollback did not restore the known-good contents");
|
|
966
|
+
}
|
|
967
|
+
return { knownGoodVersion, restoredRows: rows.length };
|
|
968
|
+
} finally {
|
|
969
|
+
await warehouse.exec(`DROP TABLE IF EXISTS ${table}`).catch(() => void 0);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
};
|
|
973
|
+
}
|
|
974
|
+
function serverlessComputeCheck() {
|
|
975
|
+
return {
|
|
976
|
+
id: "azure-serverless",
|
|
977
|
+
description: "Azure Databricks serverless SQL warehouse is enabled and executes SQL",
|
|
978
|
+
configured: (env) => Boolean(env.DATABRICKS_WAREHOUSE_ID),
|
|
979
|
+
async run({ env, client, warehouse }) {
|
|
980
|
+
const id = env.DATABRICKS_WAREHOUSE_ID;
|
|
981
|
+
const details = await client.get(`/api/2.0/sql/warehouses/${encodeURIComponent(id)}`);
|
|
982
|
+
if (details.enable_serverless_compute !== true) {
|
|
983
|
+
throw new Error(`SQL warehouse ${id} is not configured for serverless compute`);
|
|
984
|
+
}
|
|
985
|
+
const rows = await warehouse.query("SELECT current_catalog() AS catalog");
|
|
986
|
+
return { warehouseId: id, name: details.name, state: details.state, rows: rows.length };
|
|
987
|
+
}
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
function classicComputeCheck() {
|
|
991
|
+
return {
|
|
992
|
+
id: "azure-classic",
|
|
993
|
+
description: "Azure Databricks classic job cluster starts and completes a notebook workload",
|
|
994
|
+
configured: (env) => Boolean(
|
|
995
|
+
env.DBX_TEST_CLASSIC_SPARK_VERSION && env.DBX_TEST_CLASSIC_NODE_TYPE && env.DBX_TEST_NOTEBOOK_PATH
|
|
996
|
+
),
|
|
997
|
+
async run({ env, client }) {
|
|
998
|
+
const numWorkers = Number(env.DBX_TEST_CLASSIC_WORKERS ?? 1);
|
|
999
|
+
const alternateNodeTypes = (env.DBX_TEST_CLASSIC_ALTERNATE_NODE_TYPES ?? "").split(",").map((value) => value.trim()).filter(Boolean);
|
|
1000
|
+
const singleNode = numWorkers === 0;
|
|
1001
|
+
const submitted = await client.post("/api/2.1/jobs/runs/submit", {
|
|
1002
|
+
run_name: `fabric-experiments-classic-certification-${Date.now()}`,
|
|
1003
|
+
tasks: [
|
|
1004
|
+
{
|
|
1005
|
+
task_key: "classic_notebook",
|
|
1006
|
+
new_cluster: {
|
|
1007
|
+
spark_version: env.DBX_TEST_CLASSIC_SPARK_VERSION,
|
|
1008
|
+
node_type_id: env.DBX_TEST_CLASSIC_NODE_TYPE,
|
|
1009
|
+
num_workers: numWorkers,
|
|
1010
|
+
data_security_mode: env.DBX_TEST_CLASSIC_SECURITY_MODE ?? "SINGLE_USER",
|
|
1011
|
+
...env.DBX_TEST_CLASSIC_SINGLE_USER_NAME ? { single_user_name: env.DBX_TEST_CLASSIC_SINGLE_USER_NAME } : {},
|
|
1012
|
+
...singleNode ? {
|
|
1013
|
+
spark_conf: {
|
|
1014
|
+
"spark.databricks.cluster.profile": "singleNode",
|
|
1015
|
+
"spark.master": "local[*]"
|
|
1016
|
+
},
|
|
1017
|
+
custom_tags: { ResourceClass: "SingleNode" }
|
|
1018
|
+
} : {},
|
|
1019
|
+
...alternateNodeTypes.length ? {
|
|
1020
|
+
worker_node_type_flexibility: {
|
|
1021
|
+
alternate_node_type_ids: alternateNodeTypes
|
|
1022
|
+
},
|
|
1023
|
+
driver_node_type_flexibility: {
|
|
1024
|
+
alternate_node_type_ids: alternateNodeTypes
|
|
1025
|
+
}
|
|
1026
|
+
} : {}
|
|
1027
|
+
},
|
|
1028
|
+
notebook_task: { notebook_path: env.DBX_TEST_NOTEBOOK_PATH }
|
|
1029
|
+
}
|
|
1030
|
+
]
|
|
1031
|
+
});
|
|
1032
|
+
if (!submitted.run_id) throw new Error("Classic compute submit returned no run_id");
|
|
1033
|
+
const run = await waitForDatabricksRun(client, submitted.run_id, {
|
|
1034
|
+
timeoutMs: Number(env.DBX_TEST_CLASSIC_TIMEOUT_MS ?? 18e5),
|
|
1035
|
+
pollIntervalMs: Number(env.DBX_TEST_POLL_INTERVAL_MS ?? 15e3)
|
|
1036
|
+
});
|
|
1037
|
+
const result = run.state?.result_state;
|
|
1038
|
+
if (result !== "SUCCESS") {
|
|
1039
|
+
throw new Error(`Classic compute run ended in ${result ?? "UNKNOWN"}`);
|
|
1040
|
+
}
|
|
1041
|
+
return {
|
|
1042
|
+
runId: submitted.run_id,
|
|
1043
|
+
sparkVersion: env.DBX_TEST_CLASSIC_SPARK_VERSION,
|
|
1044
|
+
nodeType: env.DBX_TEST_CLASSIC_NODE_TYPE
|
|
1045
|
+
};
|
|
1046
|
+
}
|
|
1047
|
+
};
|
|
1048
|
+
}
|
|
842
1049
|
|
|
843
|
-
export { appHealthCheck, assertDeltaContract, autoLoaderIngestionCheck, createEphemeralLakebaseBranch, createExecutionContext, createLakebaseTestProvider, createMockDatabricksClient, customLiveCheck, dbtBuildCheck, defineLiveSuite, deleteEphemeralLakebaseBranch, deleteVolumeFile, deltaContractCheck, ensureVolumeDirectory, expectQueryToMatchGolden, expectTable, jobRunCheck, lakebaseCredentialCheck, lakebaseRoundTripCheck, normalizeVolumeRoot, notebookSubmitCheck, pipelineRefreshCheck, renderJUnit, resolveLakebaseProject, resolveProfile, restrictedPrincipalCheck, runLiveSuite, secretScopeCheck, sqlRoundTripCheck, toLakebaseBranchId, unityCatalogAccessCheck, uploadVolumeFile, volumeIOCheck, waitForPipelineUpdate };
|
|
1050
|
+
export { appHealthCheck, assertDeltaContract, autoLoaderIngestionCheck, backupRestoreCheck, classicComputeCheck, createEphemeralLakebaseBranch, createExecutionContext, createLakebaseTestProvider, createMockDatabricksClient, customLiveCheck, dbtBuildCheck, defineLiveSuite, deleteEphemeralLakebaseBranch, deleteVolumeFile, deltaContractCheck, ensureVolumeDirectory, expectQueryToMatchGolden, expectTable, failureRecoveryCheck, jobRunCheck, lakebaseCredentialCheck, lakebaseRoundTripCheck, normalizeVolumeRoot, notebookSubmitCheck, performanceBudgetCheck, pipelineRefreshCheck, renderJUnit, resolveLakebaseProject, resolveProfile, restrictedPrincipalCheck, rollbackCheck, runLiveSuite, secretRotationCheck, secretScopeCheck, serverlessComputeCheck, sqlRoundTripCheck, toLakebaseBranchId, unityCatalogAccessCheck, uploadVolumeFile, volumeIOCheck, waitForPipelineUpdate };
|
|
844
1051
|
//# sourceMappingURL=index.js.map
|
|
845
1052
|
//# sourceMappingURL=index.js.map
|