directus-template-cli 0.7.0-beta.1 → 0.7.0-beta.10
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/bin/dev.js +6 -0
- package/bin/run.js +5 -0
- package/dist/commands/apply.d.ts +17 -17
- package/dist/commands/apply.js +165 -173
- package/dist/commands/base.d.ts +15 -0
- package/dist/commands/base.js +45 -0
- package/dist/commands/extract.d.ts +16 -7
- package/dist/commands/extract.js +81 -73
- package/dist/commands/init.d.ts +21 -15
- package/dist/commands/init.js +204 -155
- package/dist/flags/common.d.ts +8 -7
- package/dist/flags/common.js +13 -11
- package/dist/index.js +1 -5
- package/dist/lib/constants.d.ts +7 -5
- package/dist/lib/constants.js +17 -14
- package/dist/lib/extract/extract-access.js +11 -15
- package/dist/lib/extract/extract-assets.js +20 -25
- package/dist/lib/extract/extract-collections.js +12 -16
- package/dist/lib/extract/extract-content.js +14 -19
- package/dist/lib/extract/extract-dashboards.js +22 -28
- package/dist/lib/extract/extract-extensions.js +12 -16
- package/dist/lib/extract/extract-fields.js +13 -17
- package/dist/lib/extract/extract-files.js +15 -19
- package/dist/lib/extract/extract-flows.js +22 -28
- package/dist/lib/extract/extract-folders.js +15 -19
- package/dist/lib/extract/extract-permissions.js +12 -16
- package/dist/lib/extract/extract-policies.js +12 -16
- package/dist/lib/extract/extract-presets.js +12 -16
- package/dist/lib/extract/extract-relations.js +14 -18
- package/dist/lib/extract/extract-roles.js +15 -19
- package/dist/lib/extract/extract-schema.js +17 -21
- package/dist/lib/extract/extract-settings.js +12 -16
- package/dist/lib/extract/extract-translations.js +12 -16
- package/dist/lib/extract/extract-users.js +15 -19
- package/dist/lib/extract/index.js +47 -51
- package/dist/lib/init/config.d.ts +1 -1
- package/dist/lib/init/config.js +4 -7
- package/dist/lib/init/index.d.ts +10 -9
- package/dist/lib/init/index.js +129 -85
- package/dist/lib/init/types.js +1 -2
- package/dist/lib/load/apply-flags.js +17 -23
- package/dist/lib/load/index.d.ts +1 -12
- package/dist/lib/load/index.js +40 -44
- package/dist/lib/load/load-access.js +15 -20
- package/dist/lib/load/load-collections.js +27 -32
- package/dist/lib/load/load-dashboards.js +19 -25
- package/dist/lib/load/load-data.js +43 -49
- package/dist/lib/load/load-extensions.js +30 -38
- package/dist/lib/load/load-files.js +20 -24
- package/dist/lib/load/load-flows.js +23 -29
- package/dist/lib/load/load-folders.js +16 -20
- package/dist/lib/load/load-permissions.js +13 -17
- package/dist/lib/load/load-policies.js +14 -18
- package/dist/lib/load/load-presets.js +14 -18
- package/dist/lib/load/load-relations.d.ts +2 -0
- package/dist/lib/load/load-relations.js +16 -18
- package/dist/lib/load/load-roles.js +19 -23
- package/dist/lib/load/load-settings.js +18 -21
- package/dist/lib/load/load-translations.js +14 -18
- package/dist/lib/load/load-users.js +21 -25
- package/dist/lib/load/update-required-fields.js +13 -17
- package/dist/lib/sdk.d.ts +1 -2
- package/dist/lib/sdk.js +27 -27
- package/dist/lib/types/extension.js +1 -2
- package/dist/lib/types.d.ts +18 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/utils/animated-bunny.d.ts +2 -0
- package/dist/lib/utils/animated-bunny.js +62 -0
- package/dist/lib/utils/auth.d.ts +8 -6
- package/dist/lib/utils/auth.js +48 -39
- package/dist/lib/utils/catch-error.js +8 -11
- package/dist/lib/utils/check-template.js +4 -8
- package/dist/lib/utils/chunk-array.js +1 -5
- package/dist/lib/utils/ensure-dir.js +7 -12
- package/dist/lib/utils/filter-fields.js +1 -4
- package/dist/lib/utils/get-role-ids.d.ts +1 -1
- package/dist/lib/utils/get-role-ids.js +7 -12
- package/dist/lib/utils/get-template.js +33 -37
- package/dist/lib/utils/logger.js +11 -13
- package/dist/lib/utils/open-url.js +5 -8
- package/dist/lib/utils/parse-github-url.d.ts +10 -5
- package/dist/lib/utils/parse-github-url.js +80 -45
- package/dist/lib/utils/path.js +6 -10
- package/dist/lib/utils/protected-domains.js +1 -4
- package/dist/lib/utils/read-file.js +8 -12
- package/dist/lib/utils/read-templates.js +9 -15
- package/dist/lib/utils/sanitize-flags.d.ts +3 -0
- package/dist/lib/utils/sanitize-flags.js +4 -0
- package/dist/lib/utils/system-fields.js +19 -22
- package/dist/lib/utils/template-config.d.ts +16 -0
- package/dist/lib/utils/template-config.js +34 -0
- package/dist/lib/utils/template-defaults.d.ts +1 -1
- package/dist/lib/utils/template-defaults.js +5 -14
- package/dist/lib/utils/transform-github-url.js +1 -5
- package/dist/lib/utils/validate-url.js +3 -6
- package/dist/lib/utils/wait.js +1 -5
- package/dist/lib/utils/write-to-file.js +8 -11
- package/dist/services/docker.js +82 -29
- package/dist/services/github.d.ts +1 -1
- package/dist/services/github.js +53 -22
- package/dist/services/posthog.d.ts +37 -0
- package/dist/services/posthog.js +104 -0
- package/oclif.manifest.json +32 -13
- package/package.json +41 -31
- package/bin/dev +0 -17
- package/bin/run +0 -5
package/dist/flags/common.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export declare const directusToken: import("@oclif/core/
|
|
2
|
-
export declare const directusUrl: import("@oclif/core/
|
|
3
|
-
export declare const userEmail: import("@oclif/core/
|
|
4
|
-
export declare const userPassword: import("@oclif/core/
|
|
5
|
-
export declare const programmatic: import("@oclif/core/
|
|
6
|
-
export declare const templateLocation: import("@oclif/core/
|
|
7
|
-
export declare const templateName: import("@oclif/core/
|
|
1
|
+
export declare const directusToken: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
2
|
+
export declare const directusUrl: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
3
|
+
export declare const userEmail: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
4
|
+
export declare const userPassword: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
|
+
export declare const programmatic: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
6
|
+
export declare const templateLocation: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
export declare const templateName: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
export declare const disableTelemetry: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
package/dist/flags/common.js
CHANGED
|
@@ -1,41 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.templateName = exports.templateLocation = exports.programmatic = exports.userPassword = exports.userEmail = exports.directusUrl = exports.directusToken = void 0;
|
|
4
|
-
const core_1 = require("@oclif/core");
|
|
5
|
-
exports.directusToken = core_1.Flags.string({
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
export const directusToken = Flags.string({
|
|
6
3
|
description: 'Token to use for the Directus instance',
|
|
7
4
|
env: 'DIRECTUS_TOKEN',
|
|
8
5
|
exclusive: ['userEmail', 'userPassword'],
|
|
9
6
|
});
|
|
10
|
-
|
|
7
|
+
export const directusUrl = Flags.string({
|
|
11
8
|
description: 'URL of the Directus instance',
|
|
12
9
|
env: 'DIRECTUS_URL',
|
|
13
10
|
});
|
|
14
|
-
|
|
11
|
+
export const userEmail = Flags.string({
|
|
15
12
|
dependsOn: ['userPassword'],
|
|
16
13
|
description: 'Email for Directus authentication',
|
|
17
14
|
env: 'DIRECTUS_EMAIL',
|
|
18
15
|
exclusive: ['directusToken'],
|
|
19
16
|
});
|
|
20
|
-
|
|
17
|
+
export const userPassword = Flags.string({
|
|
21
18
|
dependsOn: ['userEmail'],
|
|
22
19
|
description: 'Password for Directus authentication',
|
|
23
20
|
env: 'DIRECTUS_PASSWORD',
|
|
24
21
|
exclusive: ['directusToken'],
|
|
25
22
|
});
|
|
26
|
-
|
|
23
|
+
export const programmatic = Flags.boolean({
|
|
27
24
|
char: 'p',
|
|
28
25
|
default: false,
|
|
29
26
|
description: 'Run in programmatic mode (non-interactive) for use cases such as CI/CD pipelines.',
|
|
30
27
|
summary: 'Run in programmatic mode',
|
|
31
28
|
});
|
|
32
|
-
|
|
29
|
+
export const templateLocation = Flags.string({
|
|
33
30
|
dependsOn: ['programmatic'],
|
|
34
31
|
description: 'Location of the template',
|
|
35
32
|
env: 'TEMPLATE_LOCATION',
|
|
36
33
|
});
|
|
37
|
-
|
|
34
|
+
export const templateName = Flags.string({
|
|
38
35
|
dependsOn: ['programmatic'],
|
|
39
36
|
description: 'Name of the template',
|
|
40
37
|
env: 'TEMPLATE_NAME',
|
|
41
38
|
});
|
|
39
|
+
export const disableTelemetry = Flags.boolean({
|
|
40
|
+
default: false,
|
|
41
|
+
description: 'Disable telemetry',
|
|
42
|
+
env: 'DISABLE_TELEMETRY',
|
|
43
|
+
});
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.run = void 0;
|
|
4
|
-
var core_1 = require("@oclif/core");
|
|
5
|
-
Object.defineProperty(exports, "run", { enumerable: true, get: function () { return core_1.run; } });
|
|
1
|
+
export { run } from '@oclif/core';
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
export declare const DIRECTUS_PURPLE = "#6644ff";
|
|
2
2
|
export declare const DIRECTUS_PINK = "#FF99DD";
|
|
3
3
|
export declare const SEPARATOR = "------------------";
|
|
4
|
+
export declare const pinkText: import("chalk").ChalkInstance;
|
|
5
|
+
export declare const purpleText: import("chalk").ChalkInstance;
|
|
4
6
|
export declare const COMMUNITY_TEMPLATE_REPO: {
|
|
5
7
|
string: string;
|
|
6
8
|
url: string;
|
|
7
9
|
};
|
|
8
|
-
export declare const STARTERS_TEMPLATE_REPO: {
|
|
9
|
-
branch: string;
|
|
10
|
-
string: string;
|
|
11
|
-
url: string;
|
|
12
|
-
};
|
|
13
10
|
export declare const DEFAULT_REPO: {
|
|
14
11
|
owner: string;
|
|
15
12
|
path: string;
|
|
@@ -17,3 +14,8 @@ export declare const DEFAULT_REPO: {
|
|
|
17
14
|
repo: string;
|
|
18
15
|
url: string;
|
|
19
16
|
};
|
|
17
|
+
export declare const POSTHOG_PUBLIC_KEY = "phc_STopE6gj6LDIjYonVF7493kQJK8S4v0Xrl6YPr2z9br";
|
|
18
|
+
export declare const POSTHOG_HOST = "https://us.i.posthog.com";
|
|
19
|
+
export declare const DEFAULT_BRANCH = "main";
|
|
20
|
+
export declare const BSL_LICENSE_URL = "https://directus.io/bsl";
|
|
21
|
+
export declare const BSL_LICENSE_TEXT: string;
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import terminalLink from 'terminal-link';
|
|
3
|
+
export const DIRECTUS_PURPLE = '#6644ff';
|
|
4
|
+
export const DIRECTUS_PINK = '#FF99DD';
|
|
5
|
+
export const SEPARATOR = '------------------';
|
|
6
|
+
export const pinkText = chalk.hex(DIRECTUS_PINK);
|
|
7
|
+
export const purpleText = chalk.hex(DIRECTUS_PURPLE);
|
|
8
|
+
export const COMMUNITY_TEMPLATE_REPO = {
|
|
8
9
|
string: 'github:directus-labs/directus-templates',
|
|
9
10
|
url: 'https://github.com/directus-labs/directus-templates',
|
|
10
11
|
};
|
|
11
|
-
|
|
12
|
-
branch: 'cms-template',
|
|
13
|
-
string: 'github:directus-labs/starters',
|
|
14
|
-
url: 'https://github.com/directus-labs/starters',
|
|
15
|
-
};
|
|
16
|
-
exports.DEFAULT_REPO = {
|
|
12
|
+
export const DEFAULT_REPO = {
|
|
17
13
|
owner: 'directus-labs',
|
|
18
14
|
path: '',
|
|
19
|
-
ref: '
|
|
15
|
+
ref: 'main',
|
|
20
16
|
repo: 'starters',
|
|
21
17
|
url: 'https://github.com/directus-labs/starters',
|
|
22
18
|
};
|
|
19
|
+
export const POSTHOG_PUBLIC_KEY = 'phc_STopE6gj6LDIjYonVF7493kQJK8S4v0Xrl6YPr2z9br';
|
|
20
|
+
export const POSTHOG_HOST = 'https://us.i.posthog.com';
|
|
21
|
+
export const DEFAULT_BRANCH = 'main';
|
|
22
|
+
export const BSL_LICENSE_URL = 'https://directus.io/bsl';
|
|
23
|
+
const BSL_LINK = terminalLink(BSL_LICENSE_URL, BSL_LICENSE_URL);
|
|
24
|
+
const BSL_MAILTO = terminalLink('sales-demo-with-evil-sales@directus.io', 'mailto:sales-demo-with-evil-sales@directus.io');
|
|
25
|
+
export const BSL_LICENSE_TEXT = `You REQUIRE a license to use Directus if your organisation has more than $5MM USD a year in revenue and/or funding.\nFor all organizations with less than $5MM USD a year in revenue and funding, Directus is free for personal projects, hobby projects and in production. This second group does not require a license. \nDirectus is licensed under BSL1.1. Visit ${pinkText(BSL_LINK)} for more information or reach out to us at ${pinkText(BSL_MAILTO)}.`;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
9
|
-
async function extractAccess(dir) {
|
|
10
|
-
core_1.ux.action.start(core_1.ux.colorize(constants_1.DIRECTUS_PINK, 'Extracting access'));
|
|
1
|
+
import { ux } from '@oclif/core';
|
|
2
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
3
|
+
import { api } from '../sdk.js';
|
|
4
|
+
import catchError from '../utils/catch-error.js';
|
|
5
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
6
|
+
export default async function extractAccess(dir) {
|
|
7
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting access'));
|
|
11
8
|
try {
|
|
12
|
-
const response = await
|
|
9
|
+
const response = await api.client.request(() => ({
|
|
13
10
|
method: 'GET',
|
|
14
11
|
path: '/access?limit=-1',
|
|
15
12
|
}));
|
|
@@ -17,11 +14,10 @@ async function extractAccess(dir) {
|
|
|
17
14
|
// for (const access of response) {
|
|
18
15
|
// delete access.id
|
|
19
16
|
// }
|
|
20
|
-
await (
|
|
17
|
+
await writeToFile('access', response, dir);
|
|
21
18
|
}
|
|
22
19
|
catch (error) {
|
|
23
|
-
(
|
|
20
|
+
catchError(error);
|
|
24
21
|
}
|
|
25
|
-
|
|
22
|
+
ux.action.stop();
|
|
26
23
|
}
|
|
27
|
-
exports.default = extractAccess;
|
|
@@ -1,46 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
9
|
-
const constants_1 = require("../constants");
|
|
10
|
-
const sdk_2 = require("../sdk");
|
|
11
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
1
|
+
import { readFiles } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'pathe';
|
|
5
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
6
|
+
import { api } from '../sdk.js';
|
|
7
|
+
import catchError from '../utils/catch-error.js';
|
|
12
8
|
async function getAssetList() {
|
|
13
|
-
return
|
|
9
|
+
return api.client.request(readFiles({ limit: -1 }));
|
|
14
10
|
}
|
|
15
11
|
async function downloadFile(file, dir) {
|
|
16
|
-
const response = await
|
|
12
|
+
const response = await api.client.request(() => ({
|
|
17
13
|
method: 'GET',
|
|
18
14
|
path: `/assets/${file.id}`,
|
|
19
15
|
}));
|
|
20
|
-
const fullPath =
|
|
16
|
+
const fullPath = path.join(dir, 'assets', file.filename_disk);
|
|
21
17
|
if (typeof response === 'string') {
|
|
22
|
-
|
|
18
|
+
fs.writeFileSync(fullPath, response);
|
|
23
19
|
}
|
|
24
20
|
else {
|
|
25
21
|
const data = await response.arrayBuffer();
|
|
26
|
-
|
|
22
|
+
fs.writeFileSync(fullPath, Buffer.from(data));
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
|
-
async function downloadAllFiles(dir) {
|
|
30
|
-
|
|
25
|
+
export async function downloadAllFiles(dir) {
|
|
26
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Downloading assets'));
|
|
31
27
|
try {
|
|
32
|
-
const fullPath =
|
|
33
|
-
if (
|
|
34
|
-
|
|
28
|
+
const fullPath = path.join(dir, 'assets');
|
|
29
|
+
if (path && !fs.existsSync(fullPath)) {
|
|
30
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
35
31
|
}
|
|
36
32
|
const fileList = await getAssetList();
|
|
37
33
|
await Promise.all(fileList.map(file => downloadFile(file, dir).catch(error => {
|
|
38
|
-
(
|
|
34
|
+
catchError(`Error downloading ${file.filename_disk}: ${error.message}`);
|
|
39
35
|
})));
|
|
40
36
|
}
|
|
41
37
|
catch (error) {
|
|
42
|
-
(
|
|
38
|
+
catchError(error);
|
|
43
39
|
}
|
|
44
|
-
|
|
40
|
+
ux.action.stop();
|
|
45
41
|
}
|
|
46
|
-
exports.downloadAllFiles = downloadAllFiles;
|
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const sdk_2 = require("../sdk");
|
|
8
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
9
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readCollections } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
10
7
|
/**
|
|
11
8
|
* Extract collections from the Directus instance
|
|
12
9
|
*/
|
|
13
|
-
async function extractCollections(dir) {
|
|
14
|
-
|
|
10
|
+
export default async function extractCollections(dir) {
|
|
11
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting collections'));
|
|
15
12
|
try {
|
|
16
|
-
const response = await
|
|
13
|
+
const response = await api.client.request(readCollections());
|
|
17
14
|
const collections = response.filter(collection => !collection.collection.startsWith('directus_'));
|
|
18
|
-
await (
|
|
15
|
+
await writeToFile('collections', collections, dir);
|
|
19
16
|
}
|
|
20
17
|
catch (error) {
|
|
21
|
-
(
|
|
18
|
+
catchError(error);
|
|
22
19
|
}
|
|
23
|
-
|
|
20
|
+
ux.action.stop();
|
|
24
21
|
}
|
|
25
|
-
exports.default = extractCollections;
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const constants_1 = require("../constants");
|
|
8
|
-
const sdk_2 = require("../sdk");
|
|
9
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
10
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readCollections, readItems } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
11
7
|
async function getCollections() {
|
|
12
|
-
const response = await
|
|
8
|
+
const response = await api.client.request(readCollections());
|
|
13
9
|
return response
|
|
14
10
|
.filter(item => !item.collection.startsWith('directus_', 0))
|
|
15
11
|
.filter(item => item.schema != null)
|
|
@@ -17,22 +13,21 @@ async function getCollections() {
|
|
|
17
13
|
}
|
|
18
14
|
async function getDataFromCollection(collection, dir) {
|
|
19
15
|
try {
|
|
20
|
-
const response = await
|
|
21
|
-
await (
|
|
16
|
+
const response = await api.client.request(readItems(collection, { limit: -1 }));
|
|
17
|
+
await writeToFile(`${collection}`, response, `${dir}/content/`);
|
|
22
18
|
}
|
|
23
19
|
catch (error) {
|
|
24
|
-
(
|
|
20
|
+
catchError(error);
|
|
25
21
|
}
|
|
26
22
|
}
|
|
27
|
-
async function extractContent(dir) {
|
|
28
|
-
|
|
23
|
+
export async function extractContent(dir) {
|
|
24
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting content'));
|
|
29
25
|
try {
|
|
30
26
|
const collections = await getCollections();
|
|
31
27
|
await Promise.all(collections.map(collection => getDataFromCollection(collection, dir)));
|
|
32
28
|
}
|
|
33
29
|
catch (error) {
|
|
34
|
-
(
|
|
30
|
+
catchError(error);
|
|
35
31
|
}
|
|
36
|
-
|
|
32
|
+
ux.action.stop();
|
|
37
33
|
}
|
|
38
|
-
exports.extractContent = extractContent;
|
|
@@ -1,44 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
10
|
-
const filter_fields_1 = tslib_1.__importDefault(require("../utils/filter-fields"));
|
|
11
|
-
const system_fields_1 = require("../utils/system-fields");
|
|
12
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readDashboards, readPanels } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import filterFields from '../utils/filter-fields.js';
|
|
7
|
+
import { directusDashboardFields, directusPanelFields } from '../utils/system-fields.js';
|
|
8
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
13
9
|
/**
|
|
14
10
|
* Extract dashboards from the Directus instance
|
|
15
11
|
*/
|
|
16
|
-
async function extractDashboards(dir) {
|
|
17
|
-
|
|
12
|
+
export async function extractDashboards(dir) {
|
|
13
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting dashboards'));
|
|
18
14
|
try {
|
|
19
|
-
const response = await
|
|
20
|
-
const dashboards = (
|
|
21
|
-
await (
|
|
15
|
+
const response = await api.client.request(readDashboards({ limit: -1 }));
|
|
16
|
+
const dashboards = filterFields(response, directusDashboardFields);
|
|
17
|
+
await writeToFile('dashboards', dashboards, dir);
|
|
22
18
|
}
|
|
23
19
|
catch (error) {
|
|
24
|
-
(
|
|
20
|
+
catchError(error);
|
|
25
21
|
}
|
|
26
|
-
|
|
22
|
+
ux.action.stop();
|
|
27
23
|
}
|
|
28
|
-
exports.extractDashboards = extractDashboards;
|
|
29
24
|
/**
|
|
30
25
|
* Extract panels from the Directus instance
|
|
31
26
|
*/
|
|
32
|
-
async function extractPanels(dir) {
|
|
33
|
-
|
|
27
|
+
export async function extractPanels(dir) {
|
|
28
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting panels'));
|
|
34
29
|
try {
|
|
35
|
-
const response = await
|
|
36
|
-
const panels = (
|
|
37
|
-
await (
|
|
30
|
+
const response = await api.client.request(readPanels({ limit: -1 }));
|
|
31
|
+
const panels = filterFields(response, directusPanelFields);
|
|
32
|
+
await writeToFile('panels', panels, dir);
|
|
38
33
|
}
|
|
39
34
|
catch (error) {
|
|
40
|
-
(
|
|
35
|
+
catchError(error);
|
|
41
36
|
}
|
|
42
|
-
|
|
37
|
+
ux.action.stop();
|
|
43
38
|
}
|
|
44
|
-
exports.extractPanels = extractPanels;
|
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const sdk_2 = require("../sdk");
|
|
8
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
9
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readExtensions } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
10
7
|
/**
|
|
11
8
|
* Extract extensions from the API
|
|
12
9
|
*/
|
|
13
|
-
async function extractExtensions(dir) {
|
|
14
|
-
|
|
10
|
+
export default async function extractExtensions(dir) {
|
|
11
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting extensions'));
|
|
15
12
|
try {
|
|
16
|
-
const response = await
|
|
17
|
-
await (
|
|
13
|
+
const response = await api.client.request(readExtensions());
|
|
14
|
+
await writeToFile('extensions', response, dir);
|
|
18
15
|
}
|
|
19
16
|
catch (error) {
|
|
20
|
-
(
|
|
17
|
+
catchError(error);
|
|
21
18
|
}
|
|
22
|
-
|
|
19
|
+
ux.action.stop();
|
|
23
20
|
}
|
|
24
|
-
exports.default = extractExtensions;
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const sdk_2 = require("../sdk");
|
|
8
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
9
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readFields } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
10
7
|
/**
|
|
11
8
|
* Extract fields from the Directus instance
|
|
12
9
|
*/
|
|
13
|
-
async function extractFields(dir) {
|
|
14
|
-
|
|
10
|
+
export default async function extractFields(dir) {
|
|
11
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting fields'));
|
|
15
12
|
try {
|
|
16
|
-
const response = await
|
|
13
|
+
const response = await api.client.request(readFields());
|
|
17
14
|
if (!Array.isArray(response)) {
|
|
18
15
|
throw new TypeError('Unexpected response format');
|
|
19
16
|
}
|
|
20
17
|
const fields = response
|
|
21
18
|
.filter(
|
|
22
|
-
// @ts-
|
|
19
|
+
// @ts-ignore
|
|
23
20
|
(i) => i.meta && !i.meta.system)
|
|
24
21
|
.map(i => {
|
|
25
22
|
if (i.meta) {
|
|
@@ -27,11 +24,10 @@ async function extractFields(dir) {
|
|
|
27
24
|
}
|
|
28
25
|
return i;
|
|
29
26
|
});
|
|
30
|
-
await (
|
|
27
|
+
await writeToFile('fields', fields, dir);
|
|
31
28
|
}
|
|
32
29
|
catch (error) {
|
|
33
|
-
(
|
|
30
|
+
catchError(error);
|
|
34
31
|
}
|
|
35
|
-
|
|
32
|
+
ux.action.stop();
|
|
36
33
|
}
|
|
37
|
-
exports.default = extractFields;
|
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const filter_fields_1 = tslib_1.__importDefault(require("../utils/filter-fields"));
|
|
10
|
-
const system_fields_1 = require("../utils/system-fields");
|
|
11
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readFiles } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import filterFields from '../utils/filter-fields.js';
|
|
7
|
+
import { directusFileFields } from '../utils/system-fields.js';
|
|
8
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
12
9
|
/**
|
|
13
10
|
* Extract files from the API
|
|
14
11
|
*/
|
|
15
|
-
async function extractFiles(dir) {
|
|
16
|
-
|
|
12
|
+
export default async function extractFiles(dir) {
|
|
13
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting files'));
|
|
17
14
|
try {
|
|
18
|
-
const response = await
|
|
19
|
-
const files = (
|
|
20
|
-
await (
|
|
15
|
+
const response = await api.client.request(readFiles({ limit: -1 }));
|
|
16
|
+
const files = filterFields(response, directusFileFields);
|
|
17
|
+
await writeToFile('files', files, dir);
|
|
21
18
|
}
|
|
22
19
|
catch (error) {
|
|
23
|
-
(
|
|
20
|
+
catchError(error);
|
|
24
21
|
}
|
|
25
|
-
|
|
22
|
+
ux.action.stop();
|
|
26
23
|
}
|
|
27
|
-
exports.default = extractFiles;
|
|
@@ -1,44 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const catch_error_1 = tslib_1.__importDefault(require("../utils/catch-error"));
|
|
10
|
-
const filter_fields_1 = tslib_1.__importDefault(require("../utils/filter-fields"));
|
|
11
|
-
const system_fields_1 = require("../utils/system-fields");
|
|
12
|
-
const write_to_file_1 = tslib_1.__importDefault(require("../utils/write-to-file"));
|
|
1
|
+
import { readFlows, readOperations } from '@directus/sdk';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { DIRECTUS_PINK } from '../constants.js';
|
|
4
|
+
import { api } from '../sdk.js';
|
|
5
|
+
import catchError from '../utils/catch-error.js';
|
|
6
|
+
import filterFields from '../utils/filter-fields.js';
|
|
7
|
+
import { directusFlowFields, directusOperationFields } from '../utils/system-fields.js';
|
|
8
|
+
import writeToFile from '../utils/write-to-file.js';
|
|
13
9
|
/**
|
|
14
10
|
* Extract flows from the Directus instance
|
|
15
11
|
*/
|
|
16
|
-
async function extractFlows(dir) {
|
|
17
|
-
|
|
12
|
+
export async function extractFlows(dir) {
|
|
13
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting flows'));
|
|
18
14
|
try {
|
|
19
|
-
const response = await
|
|
20
|
-
const flows = (
|
|
21
|
-
await (
|
|
15
|
+
const response = await api.client.request(readFlows({ limit: -1 }));
|
|
16
|
+
const flows = filterFields(response, directusFlowFields);
|
|
17
|
+
await writeToFile('flows', flows, dir);
|
|
22
18
|
}
|
|
23
19
|
catch (error) {
|
|
24
|
-
(
|
|
20
|
+
catchError(error);
|
|
25
21
|
}
|
|
26
|
-
|
|
22
|
+
ux.action.stop();
|
|
27
23
|
}
|
|
28
|
-
exports.extractFlows = extractFlows;
|
|
29
24
|
/**
|
|
30
25
|
* Extract operations from the Directus instance
|
|
31
26
|
*/
|
|
32
|
-
async function extractOperations(dir) {
|
|
33
|
-
|
|
27
|
+
export async function extractOperations(dir) {
|
|
28
|
+
ux.action.start(ux.colorize(DIRECTUS_PINK, 'Extracting operations'));
|
|
34
29
|
try {
|
|
35
|
-
const response = await
|
|
36
|
-
const operations = (
|
|
37
|
-
await (
|
|
30
|
+
const response = await api.client.request(readOperations({ limit: -1 }));
|
|
31
|
+
const operations = filterFields(response, directusOperationFields);
|
|
32
|
+
await writeToFile('operations', operations, dir);
|
|
38
33
|
}
|
|
39
34
|
catch (error) {
|
|
40
|
-
(
|
|
35
|
+
catchError(error);
|
|
41
36
|
}
|
|
42
|
-
|
|
37
|
+
ux.action.stop();
|
|
43
38
|
}
|
|
44
|
-
exports.extractOperations = extractOperations;
|