@lightdash/cli 2.614.0 → 2.615.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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentAsCode, ChartAsCode, DashboardAsCode, ExternalConnectionAsCode, type SpaceAsCode } from '@lightdash/common';
|
|
1
|
+
import { AgentAsCode, ChartAsCode, DashboardAsCode, ExternalConnectionAsCode, type DataAppCode, type SpaceAsCode } from '@lightdash/common';
|
|
2
2
|
import { type ContentAsCodeOutputVariant } from '../terminal/contentAsCodeOutput';
|
|
3
3
|
import { assertUniqueSpacePaths, downloadSpaces, getFlatSpaceFileNames, readSpaceFiles, readSpaceNames, shouldFallBackToEmbeddedSpaces, sortSpaceFilesParentFirst, upsertSpaces, validateSpaceIdentity, writeSpaceFiles } from './spacesAsCode';
|
|
4
4
|
export type DownloadHandlerOptions = {
|
|
@@ -35,6 +35,7 @@ export type DownloadHandlerOptions = {
|
|
|
35
35
|
languageMap: boolean;
|
|
36
36
|
skipSpaceCreate: boolean;
|
|
37
37
|
skipSpaceAccess?: boolean;
|
|
38
|
+
skipAppAccess?: boolean;
|
|
38
39
|
public: boolean;
|
|
39
40
|
includeCharts: boolean;
|
|
40
41
|
nested: boolean;
|
|
@@ -151,6 +152,12 @@ declare const getDashboardAppSlugs: (dashboardSlugs: string[], customPath?: stri
|
|
|
151
152
|
})[]) => Promise<string[]>;
|
|
152
153
|
declare const isFilteredWithNoDashboards: (hasFilters: boolean, dashboardSlugs: string[]) => boolean;
|
|
153
154
|
declare const reportOpenDraftsForUpload: (projectUuid: string) => Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* `--skip-app-access`: the bundle without its manifest access block, so the
|
|
157
|
+
* upload leaves the app's existing sharing untouched. Bundles without a
|
|
158
|
+
* block are returned as they are.
|
|
159
|
+
*/
|
|
160
|
+
export declare const withoutManifestAccess: (code: DataAppCode) => DataAppCode;
|
|
154
161
|
export declare const uploadHandler: (options: DownloadHandlerOptions) => Promise<void>;
|
|
155
162
|
export declare const testHelpers: {
|
|
156
163
|
assertUniqueSpacePaths: typeof assertUniqueSpacePaths;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,WAAW,EA4BX,WAAW,EAIX,eAAe,EAKf,wBAAwB,
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.testHelpers = exports.uploadHandler = exports.downloadHandler = exports.getExternalConnectionSecretEnvVar = exports.downloadContent = void 0;
|
|
3
|
+
exports.testHelpers = exports.uploadHandler = exports.withoutManifestAccess = exports.downloadHandler = exports.getExternalConnectionSecretEnvVar = exports.downloadContent = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/* eslint-disable no-await-in-loop */
|
|
6
6
|
/* eslint-disable no-param-reassign */
|
|
@@ -2261,6 +2261,20 @@ const getStampedContentPath = (uploadRoot) => {
|
|
|
2261
2261
|
}
|
|
2262
2262
|
return (0, common_1.normalizeContentAsCodePath)(relative.split(path.sep).join('/'));
|
|
2263
2263
|
};
|
|
2264
|
+
/**
|
|
2265
|
+
* `--skip-app-access`: the bundle without its manifest access block, so the
|
|
2266
|
+
* upload leaves the app's existing sharing untouched. Bundles without a
|
|
2267
|
+
* block are returned as they are.
|
|
2268
|
+
*/
|
|
2269
|
+
const withoutManifestAccess = (code) => {
|
|
2270
|
+
if (code.manifest.access === undefined) {
|
|
2271
|
+
return code;
|
|
2272
|
+
}
|
|
2273
|
+
const manifest = { ...code.manifest };
|
|
2274
|
+
delete manifest.access;
|
|
2275
|
+
return { ...code, manifest };
|
|
2276
|
+
};
|
|
2277
|
+
exports.withoutManifestAccess = withoutManifestAccess;
|
|
2264
2278
|
const uploadHandler = async (options) => {
|
|
2265
2279
|
(0, credentials_1.refuseAgentConnection)();
|
|
2266
2280
|
globalState_1.default.setVerbose(options.verbose);
|
|
@@ -2671,7 +2685,18 @@ const uploadHandler = async (options) => {
|
|
|
2671
2685
|
const folderPath = path.join(appsDir, subDir.name);
|
|
2672
2686
|
try {
|
|
2673
2687
|
// eslint-disable-next-line no-await-in-loop
|
|
2674
|
-
const
|
|
2688
|
+
const bundle = await (0, appCodeFiles_1.readBundleFromDir)(folderPath);
|
|
2689
|
+
// --skip-app-access: applying the manifest's access block
|
|
2690
|
+
// needs sharing-management rights on the app; drop it so
|
|
2691
|
+
// the upload leaves the app's existing sharing untouched.
|
|
2692
|
+
const skipAccess = options.skipAppAccess === true &&
|
|
2693
|
+
bundle.manifest.access !== undefined;
|
|
2694
|
+
const code = skipAccess
|
|
2695
|
+
? (0, exports.withoutManifestAccess)(bundle)
|
|
2696
|
+
: bundle;
|
|
2697
|
+
if (skipAccess) {
|
|
2698
|
+
globalState_1.default.log(styles.warning(`Skipping the access block in "${subDir.name}" — the app's existing sharing is preserved.`));
|
|
2699
|
+
}
|
|
2675
2700
|
if (!(0, appsDownload_1.uploadFilterMatches)(uploadFilter, code.manifest)) {
|
|
2676
2701
|
const isAutoPushCandidate = code.manifest.slug !== undefined &&
|
|
2677
2702
|
phase.autoPushSlugs.includes(code.manifest.slug);
|
|
@@ -2861,6 +2886,11 @@ const uploadHandler = async (options) => {
|
|
|
2861
2886
|
hint =
|
|
2862
2887
|
' — gave up waiting for a free build slot; re-run the upload once builds finish (unchanged apps are skipped)';
|
|
2863
2888
|
}
|
|
2889
|
+
else if (status === 403 &&
|
|
2890
|
+
(0, common_1.getErrorMessage)(appErr).includes('access block')) {
|
|
2891
|
+
hint =
|
|
2892
|
+
" — remove the access block from lightdash-app.yml, or re-run with --skip-app-access to leave the app's existing sharing untouched";
|
|
2893
|
+
}
|
|
2864
2894
|
globalState_1.default.log(styles.error(`Failed to upload app folder "${subDir.name}"${status ? ` [HTTP ${status}]` : ''}: ${(0, common_1.getErrorMessage)(appErr)}${hint}`));
|
|
2865
2895
|
}
|
|
2866
2896
|
}
|
package/dist/index.js
CHANGED
|
@@ -503,6 +503,7 @@ const uploadCommand = commander_1.program
|
|
|
503
503
|
.option('--project <project uuid or slug>', 'specify a project (UUID or slug) to upload to', parseProjectArgument, undefined)
|
|
504
504
|
.option('--skip-space-create', 'Skip space creation if it does not exist', false)
|
|
505
505
|
.option('--skip-space-access', 'upload spaces without applying their access policies', false)
|
|
506
|
+
.option('--skip-app-access', "upload data apps without applying the access block in their manifest (the app's existing sharing is preserved)", false)
|
|
506
507
|
.option('--skip-spaces', 'skip uploading space definitions and access', false)
|
|
507
508
|
.option('--spaces-only', 'upload only space definitions and access', false)
|
|
508
509
|
.option('--public', 'Create new spaces as public instead of private', false)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightdash/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.615.0",
|
|
4
4
|
"description": "Lightdash CLI tool",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"@actions/core": "1.11.1",
|
|
23
23
|
"@aws-sdk/credential-providers": "3.995.0",
|
|
24
24
|
"@casl/ability": "6.8.0",
|
|
25
|
-
"@lightdash/common": "2.
|
|
26
|
-
"@lightdash/warehouses": "2.
|
|
25
|
+
"@lightdash/common": "2.615.0",
|
|
26
|
+
"@lightdash/warehouses": "2.615.0",
|
|
27
27
|
"@sidvind/better-ajv-errors": "7.0.0",
|
|
28
28
|
"@types/columnify": "1.5.1",
|
|
29
29
|
"ajv": "8.18.0",
|