@dittowords/cli 3.2.2-alpha → 3.3.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.
- package/bin/ditto.js +31 -15
- package/bin/ditto.js.map +1 -1
- package/bin/generate-suggestions.js +19 -10
- package/bin/generate-suggestions.js.map +1 -1
- package/bin/http/fetchComponents.js.map +1 -1
- package/bin/replace.js +9 -3
- package/bin/replace.js.map +1 -1
- package/lib/ditto.ts +48 -13
- package/lib/generate-suggestions.test.ts +25 -24
- package/lib/generate-suggestions.ts +41 -24
- package/lib/http/fetchComponents.ts +12 -1
- package/lib/replace.test.ts +22 -3
- package/lib/replace.ts +15 -3
- package/package.json +1 -1
- package/testfiles/test1.jsx +18 -0
- package/testfiles/test2.jsx +9 -0
- package/bin/lib/add-project.js +0 -36
- package/bin/lib/add-project.js.map +0 -1
- package/bin/lib/api.js +0 -20
- package/bin/lib/api.js.map +0 -1
- package/bin/lib/config.js +0 -202
- package/bin/lib/config.js.map +0 -1
- package/bin/lib/consts.js +0 -21
- package/bin/lib/consts.js.map +0 -1
- package/bin/lib/ditto.js +0 -121
- package/bin/lib/ditto.js.map +0 -1
- package/bin/lib/generate-suggestions.js +0 -71
- package/bin/lib/generate-suggestions.js.map +0 -1
- package/bin/lib/http/fetchComponents.js +0 -13
- package/bin/lib/http/fetchComponents.js.map +0 -1
- package/bin/lib/http/fetchVariants.js +0 -26
- package/bin/lib/http/fetchVariants.js.map +0 -1
- package/bin/lib/init/init.js +0 -50
- package/bin/lib/init/init.js.map +0 -1
- package/bin/lib/init/project.js +0 -108
- package/bin/lib/init/project.js.map +0 -1
- package/bin/lib/init/token.js +0 -91
- package/bin/lib/init/token.js.map +0 -1
- package/bin/lib/output.js +0 -34
- package/bin/lib/output.js.map +0 -1
- package/bin/lib/pull.js +0 -264
- package/bin/lib/pull.js.map +0 -1
- package/bin/lib/remove-project.js +0 -35
- package/bin/lib/remove-project.js.map +0 -1
- package/bin/lib/replace.js +0 -107
- package/bin/lib/replace.js.map +0 -1
- package/bin/lib/types.js +0 -3
- package/bin/lib/types.js.map +0 -1
- package/bin/lib/utils/cleanFileName.js +0 -11
- package/bin/lib/utils/cleanFileName.js.map +0 -1
- package/bin/lib/utils/generateJsDriver.js +0 -56
- package/bin/lib/utils/generateJsDriver.js.map +0 -1
- package/bin/lib/utils/getSelectedProjects.js +0 -61
- package/bin/lib/utils/getSelectedProjects.js.map +0 -1
- package/bin/lib/utils/processMetaOption.js +0 -15
- package/bin/lib/utils/processMetaOption.js.map +0 -1
- package/bin/lib/utils/projectsToText.js +0 -25
- package/bin/lib/utils/projectsToText.js.map +0 -1
- package/bin/lib/utils/promptForProject.js +0 -43
- package/bin/lib/utils/promptForProject.js.map +0 -1
- package/bin/lib/utils/quit.js +0 -10
- package/bin/lib/utils/quit.js.map +0 -1
- package/bin/lib/utils/sourcesToText.js +0 -25
- package/bin/lib/utils/sourcesToText.js.map +0 -1
- package/bin/package.json +0 -76
package/bin/lib/init/init.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.init = exports.needsTokenOrSource = void 0;
|
|
7
|
-
// Related to initializing a user/environment to ditto.
|
|
8
|
-
// expected to be run once per project.
|
|
9
|
-
const boxen_1 = __importDefault(require("boxen"));
|
|
10
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const project_1 = require("./project");
|
|
12
|
-
const token_1 = require("./token");
|
|
13
|
-
const config_1 = __importDefault(require("../config"));
|
|
14
|
-
const output_1 = __importDefault(require("../output"));
|
|
15
|
-
const sourcesToText_1 = __importDefault(require("../utils/sourcesToText"));
|
|
16
|
-
const quit_1 = require("../utils/quit");
|
|
17
|
-
const needsTokenOrSource = () => (0, token_1.needsToken)() || (0, project_1.needsSource)();
|
|
18
|
-
exports.needsTokenOrSource = needsTokenOrSource;
|
|
19
|
-
function welcome() {
|
|
20
|
-
const msg = chalk_1.default.white(`${chalk_1.default.bold("Welcome to the", chalk_1.default.magentaBright("Ditto CLI"))}.
|
|
21
|
-
|
|
22
|
-
We're glad to have you here.`);
|
|
23
|
-
console.log((0, boxen_1.default)(msg, { padding: 1 }));
|
|
24
|
-
}
|
|
25
|
-
const init = async () => {
|
|
26
|
-
welcome();
|
|
27
|
-
if ((0, token_1.needsToken)()) {
|
|
28
|
-
await (0, token_1.collectAndSaveToken)();
|
|
29
|
-
}
|
|
30
|
-
const { hasSourceData, validProjects, shouldFetchComponentLibrary, hasTopLevelComponentsField, hasTopLevelProjectsField, } = config_1.default.parseSourceInformation();
|
|
31
|
-
if (hasTopLevelProjectsField) {
|
|
32
|
-
return (0, quit_1.quit)(`${output_1.default.errorText(`Support for ${output_1.default.warnText("projects")} as a top-level field has been removed; please configure ${output_1.default.warnText("sources.projects")} instead.`)}
|
|
33
|
-
See ${output_1.default.url("https://github.com/dittowords/cli")} for more information.`);
|
|
34
|
-
}
|
|
35
|
-
if (hasTopLevelComponentsField) {
|
|
36
|
-
return (0, quit_1.quit)(`${output_1.default.errorText("Support for `components` as a top-level field has been removed; please configure `sources.components` instead.")}
|
|
37
|
-
See ${output_1.default.url("https://github.com/dittowords/cli")} for more information.`);
|
|
38
|
-
}
|
|
39
|
-
if (!hasSourceData) {
|
|
40
|
-
console.log(`Looks like there are no Ditto sources selected for your current directory: ${output_1.default.info(process.cwd())}.`);
|
|
41
|
-
await (0, project_1.collectAndSaveSource)({ initialize: true, components: true });
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const message = "You're currently set up to sync text from " +
|
|
45
|
-
(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary);
|
|
46
|
-
console.log(message);
|
|
47
|
-
};
|
|
48
|
-
exports.init = init;
|
|
49
|
-
exports.default = { init: exports.init };
|
|
50
|
-
//# sourceMappingURL=init.js.map
|
package/bin/lib/init/init.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../lib/init/init.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uCAAuC;AACvC,kDAA0B;AAC1B,kDAA0B;AAG1B,uCAA8D;AAC9D,mCAA0D;AAE1D,uDAA+B;AAC/B,uDAA+B;AAC/B,2EAAmD;AACnD,wCAAqC;AAE9B,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,GAAE,IAAI,IAAA,qBAAW,GAAE,CAAC;AAAzD,QAAA,kBAAkB,sBAAuC;AAEtE,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CACnC,gBAAgB,EAChB,eAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CACjC;;6BAE0B,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,IAAA,eAAK,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAEM,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IAC7B,OAAO,EAAE,CAAC;IAEV,IAAI,IAAA,kBAAU,GAAE,EAAE;QAChB,MAAM,IAAA,2BAAmB,GAAE,CAAC;KAC7B;IAED,MAAM,EACJ,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,GACzB,GAAG,gBAAM,CAAC,sBAAsB,EAAE,CAAC;IAEpC,IAAI,wBAAwB,EAAE;QAC5B,OAAO,IAAA,WAAI,EAAC,GAAG,gBAAM,CAAC,SAAS,CAC7B,eAAe,gBAAM,CAAC,QAAQ,CAC5B,UAAU,CACX,4DAA4D,gBAAM,CAAC,QAAQ,CAC1E,kBAAkB,CACnB,WAAW,CACb;MACC,gBAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,wBAAwB,CAAC,CAAC;KAC5E;IAED,IAAI,0BAA0B,EAAE;QAC9B,OAAO,IAAA,WAAI,EACT,GAAG,gBAAM,CAAC,SAAS,CACjB,gHAAgH,CACjH;MACD,gBAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,wBAAwB,CACxE,CAAC;KACH;IAED,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,CAAC,GAAG,CACT,8EAA8E,gBAAM,CAAC,IAAI,CACvF,OAAO,CAAC,GAAG,EAAE,CACd,GAAG,CACL,CAAC;QACF,MAAM,IAAA,8BAAoB,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO;KACR;IAED,MAAM,OAAO,GACX,4CAA4C;QAC5C,IAAA,uBAAa,EAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC;AAlDW,QAAA,IAAI,QAkDf;AAEF,kBAAe,EAAE,IAAI,EAAJ,YAAI,EAAE,CAAC"}
|
package/bin/lib/init/project.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports._testing = exports.collectAndSaveSource = exports.needsSource = void 0;
|
|
7
|
-
const ora_1 = __importDefault(require("ora"));
|
|
8
|
-
const api_1 = __importDefault(require("../api"));
|
|
9
|
-
const config_1 = __importDefault(require("../config"));
|
|
10
|
-
const consts_1 = __importDefault(require("../consts"));
|
|
11
|
-
const output_1 = __importDefault(require("../output"));
|
|
12
|
-
const token_1 = require("./token");
|
|
13
|
-
const getSelectedProjects_1 = require("../utils/getSelectedProjects");
|
|
14
|
-
const promptForProject_1 = __importDefault(require("../utils/promptForProject"));
|
|
15
|
-
const quit_1 = require("../utils/quit");
|
|
16
|
-
function saveProject(file, name, id) {
|
|
17
|
-
if (id === "components") {
|
|
18
|
-
config_1.default.writeProjectConfigData(file, {
|
|
19
|
-
sources: { components: { enabled: true } },
|
|
20
|
-
});
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const projects = [...(0, getSelectedProjects_1.getSelectedProjects)(file), { name, id }];
|
|
24
|
-
config_1.default.writeProjectConfigData(file, { sources: { projects } });
|
|
25
|
-
}
|
|
26
|
-
const needsSource = () => {
|
|
27
|
-
return !config_1.default.parseSourceInformation().hasSourceData;
|
|
28
|
-
};
|
|
29
|
-
exports.needsSource = needsSource;
|
|
30
|
-
async function askForAnotherToken() {
|
|
31
|
-
config_1.default.deleteToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
|
|
32
|
-
const message = "Looks like the API key you have saved no longer works. Please enter another one.";
|
|
33
|
-
await (0, token_1.collectAndSaveToken)(message);
|
|
34
|
-
}
|
|
35
|
-
async function listProjects(token, projectsAlreadySelected) {
|
|
36
|
-
const spinner = (0, ora_1.default)("Fetching sources in your workspace...");
|
|
37
|
-
spinner.start();
|
|
38
|
-
let response;
|
|
39
|
-
try {
|
|
40
|
-
response = await api_1.default.get("/project-names", {
|
|
41
|
-
headers: {
|
|
42
|
-
Authorization: `token ${token}`,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
spinner.stop();
|
|
48
|
-
throw e;
|
|
49
|
-
}
|
|
50
|
-
const projectsAlreadySelectedSet = projectsAlreadySelected.reduce((set, project) => set.add(project.id.toString()), new Set());
|
|
51
|
-
const result = response.data.filter(({ id }) =>
|
|
52
|
-
// covers an edge case where v0 of the API includes the component library
|
|
53
|
-
// in the response from the `/project-names` endpoint
|
|
54
|
-
id !== "ditto_component_library" &&
|
|
55
|
-
!projectsAlreadySelectedSet.has(id.toString()));
|
|
56
|
-
spinner.stop();
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
async function collectSource(token, includeComponents) {
|
|
60
|
-
const projectsAlreadySelected = (0, getSelectedProjects_1.getSelectedProjects)();
|
|
61
|
-
const componentSourceSelected = (0, getSelectedProjects_1.getIsUsingComponents)();
|
|
62
|
-
let sources = await listProjects(token, projectsAlreadySelected);
|
|
63
|
-
if (includeComponents && !componentSourceSelected) {
|
|
64
|
-
sources = [
|
|
65
|
-
{ id: "ditto_component_library", name: "Ditto Component Library" },
|
|
66
|
-
...sources,
|
|
67
|
-
];
|
|
68
|
-
}
|
|
69
|
-
if (!sources?.length) {
|
|
70
|
-
console.log("You're currently syncing all projects in your workspace.");
|
|
71
|
-
console.log(output_1.default.warnText("Not seeing a project that you were expecting? Verify that developer mode is enabled on that project. More info: https://www.dittowords.com/docs/ditto-developer-mode"));
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
return (0, promptForProject_1.default)({
|
|
75
|
-
projects: sources,
|
|
76
|
-
message: "Choose the source you'd like to sync text from",
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
const collectAndSaveSource = async ({ components = false } = {
|
|
80
|
-
components: false,
|
|
81
|
-
}) => {
|
|
82
|
-
try {
|
|
83
|
-
const token = config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
|
|
84
|
-
const project = await collectSource(token, components);
|
|
85
|
-
if (!project) {
|
|
86
|
-
(0, quit_1.quit)("", 0);
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
console.log("\n" +
|
|
90
|
-
`Thanks for adding ${output_1.default.info(project.name)} to your selected sources.\n` +
|
|
91
|
-
`We saved your updated configuration to: ${output_1.default.info(consts_1.default.PROJECT_CONFIG_FILE)}\n`);
|
|
92
|
-
saveProject(consts_1.default.PROJECT_CONFIG_FILE, project.name, project.id);
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
console.log(e);
|
|
96
|
-
if (e.response && e.response.status === 404) {
|
|
97
|
-
await askForAnotherToken();
|
|
98
|
-
await (0, exports.collectAndSaveSource)({ components });
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
(0, quit_1.quit)("", 2);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
exports.collectAndSaveSource = collectAndSaveSource;
|
|
106
|
-
exports._testing = { saveProject, needsSource: exports.needsSource };
|
|
107
|
-
exports.default = { needsSource: exports.needsSource, collectAndSaveSource: exports.collectAndSaveSource };
|
|
108
|
-
//# sourceMappingURL=project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../lib/init/project.ts"],"names":[],"mappings":"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"}
|
package/bin/lib/init/token.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.collectAndSaveToken = exports.needsToken = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const enquirer_1 = require("enquirer");
|
|
10
|
-
const api_1 = require("../api");
|
|
11
|
-
const consts_1 = __importDefault(require("../consts"));
|
|
12
|
-
const output_1 = __importDefault(require("../output"));
|
|
13
|
-
const config_1 = __importDefault(require("../config"));
|
|
14
|
-
const quit_1 = require("../utils/quit");
|
|
15
|
-
const needsToken = (configFile, host = consts_1.default.API_HOST) => {
|
|
16
|
-
if (config_1.default.getTokenFromEnv()) {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
const file = configFile || consts_1.default.CONFIG_FILE;
|
|
20
|
-
if (!fs_1.default.existsSync(file))
|
|
21
|
-
return true;
|
|
22
|
-
const configData = config_1.default.readGlobalConfigData(file);
|
|
23
|
-
if (!configData[config_1.default.justTheHost(host)] ||
|
|
24
|
-
configData[config_1.default.justTheHost(host)][0].token === "")
|
|
25
|
-
return true;
|
|
26
|
-
return false;
|
|
27
|
-
};
|
|
28
|
-
exports.needsToken = needsToken;
|
|
29
|
-
// Returns true if valid, otherwise an error message.
|
|
30
|
-
async function checkToken(token) {
|
|
31
|
-
const axios = (0, api_1.create)(token);
|
|
32
|
-
const endpoint = "/token-check";
|
|
33
|
-
let resOrError;
|
|
34
|
-
try {
|
|
35
|
-
resOrError = await axios.get(endpoint).catch((error) => {
|
|
36
|
-
if (error.code === "ENOTFOUND") {
|
|
37
|
-
return output_1.default.errorText(`Can't connect to API: ${output_1.default.url(error.hostname)}`);
|
|
38
|
-
}
|
|
39
|
-
if (error.response.status === 401 || error.response.status === 404) {
|
|
40
|
-
return output_1.default.errorText("This API key isn't valid. Please try another.");
|
|
41
|
-
}
|
|
42
|
-
return output_1.default.warnText("We're having trouble reaching the Ditto API.");
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
output_1.default.errorText(e);
|
|
47
|
-
output_1.default.errorText("Sorry! We're having trouble reaching the Ditto API.");
|
|
48
|
-
}
|
|
49
|
-
if (typeof resOrError === "string") {
|
|
50
|
-
return resOrError;
|
|
51
|
-
}
|
|
52
|
-
if (resOrError?.status === 200) {
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
return output_1.default.errorText("This API key isn't valid. Please try another.");
|
|
56
|
-
}
|
|
57
|
-
async function collectToken(message) {
|
|
58
|
-
const blue = output_1.default.info;
|
|
59
|
-
const apiUrl = output_1.default.url("https://app.dittowords.com/account/user");
|
|
60
|
-
const breadcrumbs = `${blue("User")}`;
|
|
61
|
-
const tokenDescription = message ||
|
|
62
|
-
`To get started, you'll need your Ditto API key. You can find this at: ${apiUrl} > ${breadcrumbs} under "${chalk_1.default.bold("API Keys")}".`;
|
|
63
|
-
console.log(tokenDescription);
|
|
64
|
-
const response = await (0, enquirer_1.prompt)({
|
|
65
|
-
type: "input",
|
|
66
|
-
name: "token",
|
|
67
|
-
message: "What is your API key?",
|
|
68
|
-
validate: (token) => checkToken(token),
|
|
69
|
-
});
|
|
70
|
-
return response.token;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
* @param {string | null} message
|
|
75
|
-
* @returns
|
|
76
|
-
*/
|
|
77
|
-
const collectAndSaveToken = async (message = null) => {
|
|
78
|
-
try {
|
|
79
|
-
const token = await collectToken(message);
|
|
80
|
-
console.log(`Thanks for authenticating. We'll save the key to: ${output_1.default.info(consts_1.default.CONFIG_FILE)}`);
|
|
81
|
-
output_1.default.nl();
|
|
82
|
-
config_1.default.saveToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST, token);
|
|
83
|
-
return token;
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
(0, quit_1.quit)("API token was not saved");
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
exports.collectAndSaveToken = collectAndSaveToken;
|
|
90
|
-
exports.default = { needsToken: exports.needsToken, collectAndSaveToken: exports.collectAndSaveToken };
|
|
91
|
-
//# sourceMappingURL=token.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../lib/init/token.ts"],"names":[],"mappings":"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"}
|
package/bin/lib/output.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.nl = exports.write = exports.subtle = exports.url = exports.success = exports.info = exports.warnText = exports.errorText = void 0;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const errorText = (msg) => chalk_1.default.magenta(msg);
|
|
9
|
-
exports.errorText = errorText;
|
|
10
|
-
const warnText = (msg) => chalk_1.default.yellow(msg);
|
|
11
|
-
exports.warnText = warnText;
|
|
12
|
-
const info = (msg) => chalk_1.default.blueBright(msg);
|
|
13
|
-
exports.info = info;
|
|
14
|
-
const success = (msg) => chalk_1.default.green(msg);
|
|
15
|
-
exports.success = success;
|
|
16
|
-
const url = (msg) => chalk_1.default.blueBright.underline(msg);
|
|
17
|
-
exports.url = url;
|
|
18
|
-
const subtle = (msg) => chalk_1.default.grey(msg);
|
|
19
|
-
exports.subtle = subtle;
|
|
20
|
-
const write = (msg) => chalk_1.default.white(msg);
|
|
21
|
-
exports.write = write;
|
|
22
|
-
const nl = () => console.log("\n");
|
|
23
|
-
exports.nl = nl;
|
|
24
|
-
exports.default = {
|
|
25
|
-
errorText: exports.errorText,
|
|
26
|
-
warnText: exports.warnText,
|
|
27
|
-
info: exports.info,
|
|
28
|
-
success: exports.success,
|
|
29
|
-
url: exports.url,
|
|
30
|
-
subtle: exports.subtle,
|
|
31
|
-
write: exports.write,
|
|
32
|
-
nl: exports.nl,
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=output.js.map
|
package/bin/lib/output.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../lib/output.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEnB,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAAhD,QAAA,SAAS,aAAuC;AACtD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAA9C,QAAA,QAAQ,YAAsC;AACpD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAA9C,QAAA,IAAI,QAA0C;AACpD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAA5C,QAAA,OAAO,WAAqC;AAClD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAAvD,QAAA,GAAG,OAAoD;AAC7D,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAA1C,QAAA,MAAM,UAAoC;AAChD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAA1C,QAAA,KAAK,SAAqC;AAChD,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAA7B,QAAA,EAAE,MAA2B;AAE1C,kBAAe;IACb,SAAS,EAAT,iBAAS;IACT,QAAQ,EAAR,gBAAQ;IACR,IAAI,EAAJ,YAAI;IACJ,OAAO,EAAP,eAAO;IACP,GAAG,EAAH,WAAG;IACH,MAAM,EAAN,cAAM;IACN,KAAK,EAAL,aAAK;IACL,EAAE,EAAF,UAAE;CACH,CAAC"}
|
package/bin/lib/pull.js
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.pull = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const ora_1 = __importDefault(require("ora"));
|
|
10
|
-
const api_1 = __importDefault(require("./api"));
|
|
11
|
-
const config_1 = __importDefault(require("./config"));
|
|
12
|
-
const consts_1 = __importDefault(require("./consts"));
|
|
13
|
-
const output_1 = __importDefault(require("./output"));
|
|
14
|
-
const token_1 = require("./init/token");
|
|
15
|
-
const sourcesToText_1 = __importDefault(require("./utils/sourcesToText"));
|
|
16
|
-
const generateJsDriver_1 = require("./utils/generateJsDriver");
|
|
17
|
-
const cleanFileName_1 = require("./utils/cleanFileName");
|
|
18
|
-
const fetchVariants_1 = require("./http/fetchVariants");
|
|
19
|
-
const SUPPORTED_FORMATS = [
|
|
20
|
-
"flat",
|
|
21
|
-
"structured",
|
|
22
|
-
"android",
|
|
23
|
-
"ios-strings",
|
|
24
|
-
];
|
|
25
|
-
const JSON_FORMATS = ["flat", "structured"];
|
|
26
|
-
const FORMAT_EXTENSIONS = {
|
|
27
|
-
flat: ".json",
|
|
28
|
-
structured: ".json",
|
|
29
|
-
android: ".xml",
|
|
30
|
-
"ios-strings": ".strings",
|
|
31
|
-
};
|
|
32
|
-
const getFormatDataIsValid = {
|
|
33
|
-
flat: (data) => data !== "{}",
|
|
34
|
-
structured: (data) => data !== "{}",
|
|
35
|
-
android: (data) => data.includes("<string"),
|
|
36
|
-
"ios-strings": (data) => !!data,
|
|
37
|
-
};
|
|
38
|
-
const getFormat = (formatFromSource) => {
|
|
39
|
-
const f = formatFromSource;
|
|
40
|
-
if (f && SUPPORTED_FORMATS.includes(f)) {
|
|
41
|
-
return f;
|
|
42
|
-
}
|
|
43
|
-
return "flat";
|
|
44
|
-
};
|
|
45
|
-
const getFormatExtension = (format) => {
|
|
46
|
-
return FORMAT_EXTENSIONS[format];
|
|
47
|
-
};
|
|
48
|
-
const DEFAULT_FORMAT_KEYS = ["projects", "exported_at"];
|
|
49
|
-
const hasVariantData = (data) => {
|
|
50
|
-
const hasTopLevelKeys = Object.keys(data).filter((key) => !DEFAULT_FORMAT_KEYS.includes(key))
|
|
51
|
-
.length > 0;
|
|
52
|
-
const hasProjectKeys = data.projects && Object.keys(data.projects).length > 0;
|
|
53
|
-
return hasTopLevelKeys || hasProjectKeys;
|
|
54
|
-
};
|
|
55
|
-
async function askForAnotherToken() {
|
|
56
|
-
config_1.default.deleteToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
|
|
57
|
-
const message = "Looks like the API key you have saved no longer works. Please enter another one.";
|
|
58
|
-
await (0, token_1.collectAndSaveToken)(message);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* For a given variant:
|
|
62
|
-
* - if format is unspecified, fetch data for all projects from `/projects` and
|
|
63
|
-
* save in `{variantApiId}.json`
|
|
64
|
-
* - if format is `flat` or `structured`, fetch data for each project from `/project/:project_id` and
|
|
65
|
-
* save in `{projectName}-${variantApiId}.json`
|
|
66
|
-
*/
|
|
67
|
-
async function downloadAndSaveVariant(variantApiId, projects, format, status, richText, token) {
|
|
68
|
-
const params = { variant: variantApiId };
|
|
69
|
-
if (format)
|
|
70
|
-
params.format = format;
|
|
71
|
-
if (status)
|
|
72
|
-
params.status = status;
|
|
73
|
-
if (richText)
|
|
74
|
-
params.includeRichText = richText.toString();
|
|
75
|
-
const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
|
|
76
|
-
const { data } = await api_1.default.get(`/projects/${id}`, {
|
|
77
|
-
params,
|
|
78
|
-
headers: { Authorization: `token ${token}` },
|
|
79
|
-
});
|
|
80
|
-
if (!hasVariantData(data)) {
|
|
81
|
-
return "";
|
|
82
|
-
}
|
|
83
|
-
const extension = getFormatExtension(format);
|
|
84
|
-
const filename = (0, cleanFileName_1.cleanFileName)(fileName + ("__" + (variantApiId || "base")) + extension);
|
|
85
|
-
const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
|
|
86
|
-
let dataString = data;
|
|
87
|
-
if (extension === ".json") {
|
|
88
|
-
dataString = JSON.stringify(data, null, 2);
|
|
89
|
-
}
|
|
90
|
-
const dataIsValid = getFormatDataIsValid[format];
|
|
91
|
-
if (!dataIsValid(dataString)) {
|
|
92
|
-
return "";
|
|
93
|
-
}
|
|
94
|
-
fs_1.default.writeFileSync(filepath, dataString);
|
|
95
|
-
return getSavedMessage(filename);
|
|
96
|
-
}));
|
|
97
|
-
return savedMessages.join("");
|
|
98
|
-
}
|
|
99
|
-
async function downloadAndSaveVariants(variants, projects, format, status, richText, token) {
|
|
100
|
-
const messages = await Promise.all([
|
|
101
|
-
downloadAndSaveVariant(null, projects, format, status, richText, token),
|
|
102
|
-
...variants.map(({ apiID }) => downloadAndSaveVariant(apiID, projects, format, status, richText, token)),
|
|
103
|
-
]);
|
|
104
|
-
return messages.join("");
|
|
105
|
-
}
|
|
106
|
-
async function downloadAndSaveBase(projects, format, status, richText, token, options) {
|
|
107
|
-
const params = { ...options?.meta };
|
|
108
|
-
if (format)
|
|
109
|
-
params.format = format;
|
|
110
|
-
if (status)
|
|
111
|
-
params.status = status;
|
|
112
|
-
if (richText)
|
|
113
|
-
params.includeRichText = richText.toString();
|
|
114
|
-
const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
|
|
115
|
-
const { data } = await api_1.default.get(`/projects/${id}`, {
|
|
116
|
-
params,
|
|
117
|
-
headers: { Authorization: `token ${token}` },
|
|
118
|
-
});
|
|
119
|
-
const extension = getFormatExtension(format);
|
|
120
|
-
const filename = (0, cleanFileName_1.cleanFileName)(`${fileName}__base${extension}`);
|
|
121
|
-
const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
|
|
122
|
-
let dataString = data;
|
|
123
|
-
if (extension === ".json") {
|
|
124
|
-
dataString = JSON.stringify(data, null, 2);
|
|
125
|
-
}
|
|
126
|
-
const dataIsValid = getFormatDataIsValid[format];
|
|
127
|
-
if (!dataIsValid(dataString)) {
|
|
128
|
-
return "";
|
|
129
|
-
}
|
|
130
|
-
fs_1.default.writeFileSync(filepath, dataString);
|
|
131
|
-
return getSavedMessage(filename);
|
|
132
|
-
}));
|
|
133
|
-
return savedMessages.join("");
|
|
134
|
-
}
|
|
135
|
-
function getSavedMessage(file) {
|
|
136
|
-
return `Successfully saved to ${output_1.default.info(file)}\n`;
|
|
137
|
-
}
|
|
138
|
-
function cleanOutputFiles() {
|
|
139
|
-
if (!fs_1.default.existsSync(consts_1.default.TEXT_DIR)) {
|
|
140
|
-
fs_1.default.mkdirSync(consts_1.default.TEXT_DIR);
|
|
141
|
-
}
|
|
142
|
-
const fileNames = fs_1.default.readdirSync(consts_1.default.TEXT_DIR);
|
|
143
|
-
fileNames.forEach((fileName) => {
|
|
144
|
-
if (/\.js(on)?|\.xml|\.strings$/.test(fileName)) {
|
|
145
|
-
fs_1.default.unlinkSync(path_1.default.resolve(consts_1.default.TEXT_DIR, fileName));
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
return "Cleaning old output files..\n";
|
|
149
|
-
}
|
|
150
|
-
async function downloadAndSave(source, token, options) {
|
|
151
|
-
const { validProjects, format: formatFromSource, shouldFetchComponentLibrary, status, richText, componentFolders, } = source;
|
|
152
|
-
const format = getFormat(formatFromSource);
|
|
153
|
-
let msg = "";
|
|
154
|
-
const spinner = (0, ora_1.default)(msg);
|
|
155
|
-
spinner.start();
|
|
156
|
-
const variants = await (0, fetchVariants_1.fetchVariants)(source);
|
|
157
|
-
try {
|
|
158
|
-
msg += cleanOutputFiles();
|
|
159
|
-
msg += `\nFetching the latest text from ${(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary)}\n`;
|
|
160
|
-
const meta = options ? options.meta : {};
|
|
161
|
-
if (shouldFetchComponentLibrary) {
|
|
162
|
-
// Always include a variant with an apiID of undefined to ensure that we
|
|
163
|
-
// fetch the base text for the component library.
|
|
164
|
-
const componentVariants = [{ apiID: undefined }, ...(variants || [])];
|
|
165
|
-
const params = new URLSearchParams();
|
|
166
|
-
if (options?.meta)
|
|
167
|
-
Object.entries(options.meta).forEach(([k, v]) => params.append(k, v));
|
|
168
|
-
if (format)
|
|
169
|
-
params.append("format", format);
|
|
170
|
-
if (status)
|
|
171
|
-
params.append("status", status);
|
|
172
|
-
if (richText)
|
|
173
|
-
params.append("includeRichText", richText.toString());
|
|
174
|
-
if (componentFolders) {
|
|
175
|
-
componentFolders.forEach(({ id }) => params.append("folder_id[]", id));
|
|
176
|
-
}
|
|
177
|
-
const messages = await Promise.all(componentVariants.map(async ({ apiID: variantApiId }) => {
|
|
178
|
-
const p = new URLSearchParams(params);
|
|
179
|
-
if (variantApiId)
|
|
180
|
-
p.append("variant", variantApiId);
|
|
181
|
-
const { data } = await api_1.default.get(`/components`, { params: p });
|
|
182
|
-
const nameExt = getFormatExtension(format);
|
|
183
|
-
const nameBase = "ditto-component-library";
|
|
184
|
-
const namePostfix = `__${variantApiId || "base"}`;
|
|
185
|
-
const fileName = (0, cleanFileName_1.cleanFileName)(`${nameBase}${namePostfix}${nameExt}`);
|
|
186
|
-
const filePath = path_1.default.join(consts_1.default.TEXT_DIR, fileName);
|
|
187
|
-
let dataString = data;
|
|
188
|
-
if (nameExt === ".json") {
|
|
189
|
-
dataString = JSON.stringify(data, null, 2);
|
|
190
|
-
}
|
|
191
|
-
const dataIsValid = getFormatDataIsValid[format];
|
|
192
|
-
if (!dataIsValid(dataString)) {
|
|
193
|
-
return "";
|
|
194
|
-
}
|
|
195
|
-
await new Promise((r) => fs_1.default.writeFile(filePath, dataString, r));
|
|
196
|
-
return getSavedMessage(fileName);
|
|
197
|
-
}));
|
|
198
|
-
msg += messages.join("");
|
|
199
|
-
}
|
|
200
|
-
if (validProjects.length) {
|
|
201
|
-
msg += variants
|
|
202
|
-
? await downloadAndSaveVariants(variants, validProjects, format, status, richText, token)
|
|
203
|
-
: await downloadAndSaveBase(validProjects, format, status, richText, token, {
|
|
204
|
-
meta,
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
const sources = [...validProjects];
|
|
208
|
-
if (shouldFetchComponentLibrary) {
|
|
209
|
-
sources.push({
|
|
210
|
-
id: "ditto_component_library",
|
|
211
|
-
name: "Ditto Component Library",
|
|
212
|
-
fileName: "ditto-component-library",
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
if (JSON_FORMATS.includes(format))
|
|
216
|
-
msg += (0, generateJsDriver_1.generateJsDriver)(sources);
|
|
217
|
-
msg += `\n${output_1.default.success("Done")}!`;
|
|
218
|
-
spinner.stop();
|
|
219
|
-
return console.log(msg);
|
|
220
|
-
}
|
|
221
|
-
catch (e) {
|
|
222
|
-
console.error(e);
|
|
223
|
-
spinner.stop();
|
|
224
|
-
let error = e.message;
|
|
225
|
-
if (e.response && e.response.status === 404) {
|
|
226
|
-
await askForAnotherToken();
|
|
227
|
-
(0, exports.pull)();
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
if (e.response && e.response.status === 401) {
|
|
231
|
-
error = "You don't have access to the selected projects";
|
|
232
|
-
msg = `${output_1.default.errorText(error)}.\nChoose others using the ${output_1.default.info("project")} command, or update your API key.`;
|
|
233
|
-
return console.log(msg);
|
|
234
|
-
}
|
|
235
|
-
if (e.response && e.response.status === 403) {
|
|
236
|
-
error =
|
|
237
|
-
"One or more of the requested projects don't have Developer Mode enabled";
|
|
238
|
-
msg = `${output_1.default.errorText(error)}.\nPlease choose different projects using the ${output_1.default.info("project")} command, or turn on Developer Mode for all selected projects. Learn more here: ${output_1.default.subtle("https://www.dittowords.com/docs/ditto-developer-mode")}.`;
|
|
239
|
-
return console.log(msg);
|
|
240
|
-
}
|
|
241
|
-
if (e.response && e.response.status === 400) {
|
|
242
|
-
error = "projects not found";
|
|
243
|
-
}
|
|
244
|
-
msg = `We hit an error fetching text from the projects: ${output_1.default.errorText(error)}.\nChoose others using the ${output_1.default.info("project")} command.`;
|
|
245
|
-
return console.log(msg);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
const pull = (options) => {
|
|
249
|
-
const meta = options ? options.meta : {};
|
|
250
|
-
const token = config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
|
|
251
|
-
const sourceInformation = config_1.default.parseSourceInformation();
|
|
252
|
-
return downloadAndSave(sourceInformation, token, { meta });
|
|
253
|
-
};
|
|
254
|
-
exports.pull = pull;
|
|
255
|
-
exports.default = {
|
|
256
|
-
pull: exports.pull,
|
|
257
|
-
_testing: {
|
|
258
|
-
cleanOutputFiles,
|
|
259
|
-
downloadAndSaveVariant,
|
|
260
|
-
downloadAndSaveVariants,
|
|
261
|
-
downloadAndSaveBase,
|
|
262
|
-
},
|
|
263
|
-
};
|
|
264
|
-
//# sourceMappingURL=pull.js.map
|
package/bin/lib/pull.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../lib/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const config_1 = __importDefault(require("./config"));
|
|
7
|
-
const consts_1 = __importDefault(require("./consts"));
|
|
8
|
-
const output_1 = __importDefault(require("./output"));
|
|
9
|
-
const getSelectedProjects_1 = require("./utils/getSelectedProjects");
|
|
10
|
-
const promptForProject_1 = __importDefault(require("./utils/promptForProject"));
|
|
11
|
-
async function removeProject() {
|
|
12
|
-
const projects = (0, getSelectedProjects_1.getSelectedProjects)();
|
|
13
|
-
const isUsingComponents = (0, getSelectedProjects_1.getIsUsingComponents)();
|
|
14
|
-
if (!projects.length && !isUsingComponents) {
|
|
15
|
-
console.log("\n" +
|
|
16
|
-
"No projects found in your current configuration.\n" +
|
|
17
|
-
`Try adding one with: ${output_1.default.info("ditto-cli project add")}\n`);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const projectToRemove = await (0, promptForProject_1.default)({
|
|
21
|
-
projects,
|
|
22
|
-
message: "Select a project to remove",
|
|
23
|
-
});
|
|
24
|
-
if (!projectToRemove)
|
|
25
|
-
return;
|
|
26
|
-
config_1.default.writeProjectConfigData(consts_1.default.PROJECT_CONFIG_FILE, {
|
|
27
|
-
components: isUsingComponents && projectToRemove.id !== "components",
|
|
28
|
-
projects: projects.filter(({ id }) => id !== projectToRemove.id),
|
|
29
|
-
});
|
|
30
|
-
console.log(`\n${output_1.default.info(projectToRemove.name)} has been removed from your selected projects. ` +
|
|
31
|
-
`\nWe saved your updated configuration to: ${output_1.default.info(consts_1.default.PROJECT_CONFIG_FILE)}` +
|
|
32
|
-
"\n");
|
|
33
|
-
}
|
|
34
|
-
exports.default = removeProject;
|
|
35
|
-
//# sourceMappingURL=remove-project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remove-project.js","sourceRoot":"","sources":["../../lib/remove-project.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,sDAA8B;AAC9B,sDAA8B;AAC9B,qEAGqC;AACrC,gFAAwD;AAExD,KAAK,UAAU,aAAa;IAC1B,MAAM,QAAQ,GAAG,IAAA,yCAAmB,GAAE,CAAC;IACvC,MAAM,iBAAiB,GAAG,IAAA,0CAAoB,GAAE,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE;QAC1C,OAAO,CAAC,GAAG,CACT,IAAI;YACF,oDAAoD;YACpD,wBAAwB,gBAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACnE,CAAC;QACF,OAAO;KACR;IAED,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAgB,EAAC;QAC7C,QAAQ;QACR,OAAO,EAAE,4BAA4B;KACtC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,gBAAM,CAAC,sBAAsB,CAAC,gBAAM,CAAC,mBAAmB,EAAE;QACxD,UAAU,EAAE,iBAAiB,IAAI,eAAe,CAAC,EAAE,KAAK,YAAY;QACpE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,KAAK,gBAAM,CAAC,IAAI,CACd,eAAe,CAAC,IAAI,CACrB,iDAAiD;QAChD,6CAA6C,gBAAM,CAAC,IAAI,CACtD,gBAAM,CAAC,mBAAmB,CAC3B,EAAE;QACH,IAAI,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,aAAa,CAAC"}
|