@dittowords/cli 2.7.1 → 3.0.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/README.md +150 -137
- package/bin/add-project.js +5 -7
- package/bin/add-project.js.map +1 -1
- package/bin/api.js +0 -5
- package/bin/api.js.map +1 -1
- package/bin/config.js +38 -11
- package/bin/config.js.map +1 -1
- package/bin/ditto.js +66 -57
- package/bin/ditto.js.map +1 -1
- package/bin/http/fetchVariants.js +26 -0
- package/bin/http/fetchVariants.js.map +1 -0
- package/bin/init/init.js +17 -6
- package/bin/init/init.js.map +1 -1
- package/bin/init/project.js +38 -45
- package/bin/init/project.js.map +1 -1
- package/bin/init/token.js +22 -20
- package/bin/init/token.js.map +1 -1
- package/bin/pull.js +142 -193
- package/bin/pull.js.map +1 -1
- package/bin/remove-project.js +2 -7
- package/bin/remove-project.js.map +1 -1
- package/bin/utils/cleanFileName.js +11 -0
- package/bin/utils/cleanFileName.js.map +1 -0
- package/bin/utils/generateJsDriver.js +56 -0
- package/bin/utils/generateJsDriver.js.map +1 -0
- package/bin/utils/getSelectedProjects.js +3 -18
- package/bin/utils/getSelectedProjects.js.map +1 -1
- package/bin/utils/projectsToText.js +10 -1
- package/bin/utils/projectsToText.js.map +1 -1
- package/bin/utils/promptForProject.js +2 -3
- package/bin/utils/promptForProject.js.map +1 -1
- package/bin/utils/quit.js +10 -0
- package/bin/utils/quit.js.map +1 -0
- package/lib/add-project.ts +6 -9
- package/lib/api.ts +0 -5
- package/lib/config.ts +57 -19
- package/lib/ditto.ts +74 -58
- package/lib/http/fetchVariants.ts +30 -0
- package/lib/init/init.ts +38 -6
- package/lib/init/project.test.ts +3 -3
- package/lib/init/project.ts +47 -58
- package/lib/init/token.ts +17 -16
- package/lib/pull.ts +205 -261
- package/lib/remove-project.ts +2 -8
- package/lib/types.ts +24 -3
- package/lib/utils/cleanFileName.ts +6 -0
- package/lib/utils/generateJsDriver.ts +68 -0
- package/lib/utils/getSelectedProjects.ts +5 -24
- package/lib/utils/projectsToText.ts +11 -1
- package/lib/utils/promptForProject.ts +2 -3
- package/lib/utils/quit.ts +5 -0
- package/package.json +1 -1
- package/tsconfig.json +2 -1
package/bin/pull.js
CHANGED
|
@@ -13,7 +13,38 @@ const consts_1 = __importDefault(require("./consts"));
|
|
|
13
13
|
const output_1 = __importDefault(require("./output"));
|
|
14
14
|
const token_1 = require("./init/token");
|
|
15
15
|
const sourcesToText_1 = __importDefault(require("./utils/sourcesToText"));
|
|
16
|
-
const
|
|
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
|
+
};
|
|
17
48
|
const DEFAULT_FORMAT_KEYS = ["projects", "exported_at"];
|
|
18
49
|
const hasVariantData = (data) => {
|
|
19
50
|
const hasTopLevelKeys = Object.keys(data).filter((key) => !DEFAULT_FORMAT_KEYS.includes(key))
|
|
@@ -26,15 +57,6 @@ async function askForAnotherToken() {
|
|
|
26
57
|
const message = "Looks like the API key you have saved no longer works. Please enter another one.";
|
|
27
58
|
await (0, token_1.collectAndSaveToken)(message);
|
|
28
59
|
}
|
|
29
|
-
function getExtension(format) {
|
|
30
|
-
if (format === "android") {
|
|
31
|
-
return ".xml";
|
|
32
|
-
}
|
|
33
|
-
if (format === "ios-strings") {
|
|
34
|
-
return ".strings";
|
|
35
|
-
}
|
|
36
|
-
return ".json";
|
|
37
|
-
}
|
|
38
60
|
/**
|
|
39
61
|
* For a given variant:
|
|
40
62
|
* - if format is unspecified, fetch data for all projects from `/projects` and
|
|
@@ -42,105 +64,73 @@ function getExtension(format) {
|
|
|
42
64
|
* - if format is `flat` or `structured`, fetch data for each project from `/project/:project_id` and
|
|
43
65
|
* save in `{projectName}-${variantApiId}.json`
|
|
44
66
|
*/
|
|
45
|
-
async function downloadAndSaveVariant(variantApiId, projects, format, status, token) {
|
|
46
|
-
const params = {
|
|
47
|
-
|
|
48
|
-
};
|
|
49
|
-
if (format) {
|
|
67
|
+
async function downloadAndSaveVariant(variantApiId, projects, format, status, richText, token) {
|
|
68
|
+
const params = { variant: variantApiId };
|
|
69
|
+
if (format)
|
|
50
70
|
params.format = format;
|
|
51
|
-
|
|
52
|
-
if (status) {
|
|
71
|
+
if (status)
|
|
53
72
|
params.status = status;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
headers: { Authorization: `token ${token}` },
|
|
60
|
-
});
|
|
61
|
-
if (!hasVariantData(data)) {
|
|
62
|
-
return "";
|
|
63
|
-
}
|
|
64
|
-
const extension = getExtension(format);
|
|
65
|
-
const filename = fileName + ("__" + (variantApiId || "base")) + extension;
|
|
66
|
-
const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
|
|
67
|
-
let dataString = data;
|
|
68
|
-
if (extension === ".json") {
|
|
69
|
-
dataString = JSON.stringify(data, null, 2);
|
|
70
|
-
}
|
|
71
|
-
fs_1.default.writeFileSync(filepath, dataString);
|
|
72
|
-
return getSavedMessage(filename);
|
|
73
|
-
}));
|
|
74
|
-
return savedMessages.join("");
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const { data } = await api_1.default.get("/projects", {
|
|
78
|
-
params: { ...params, projectIds: projects.map(({ id }) => id) },
|
|
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,
|
|
79
78
|
headers: { Authorization: `token ${token}` },
|
|
80
79
|
});
|
|
81
80
|
if (!hasVariantData(data)) {
|
|
82
81
|
return "";
|
|
83
82
|
}
|
|
84
|
-
const
|
|
83
|
+
const extension = getFormatExtension(format);
|
|
84
|
+
const filename = (0, cleanFileName_1.cleanFileName)(fileName + ("__" + (variantApiId || "base")) + extension);
|
|
85
85
|
const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
|
|
86
|
-
|
|
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
|
+
}
|
|
87
94
|
fs_1.default.writeFileSync(filepath, dataString);
|
|
88
95
|
return getSavedMessage(filename);
|
|
89
|
-
}
|
|
96
|
+
}));
|
|
97
|
+
return savedMessages.join("");
|
|
90
98
|
}
|
|
91
|
-
async function downloadAndSaveVariants(projects, format, status,
|
|
92
|
-
const meta = options ? options.meta : {};
|
|
93
|
-
const { data: variants } = await api_1.default.get("/variants", {
|
|
94
|
-
params: {
|
|
95
|
-
...meta,
|
|
96
|
-
projectIds: projects.map(({ id }) => id),
|
|
97
|
-
},
|
|
98
|
-
headers: { Authorization: `token ${token}` },
|
|
99
|
-
});
|
|
99
|
+
async function downloadAndSaveVariants(variants, projects, format, status, richText, token) {
|
|
100
100
|
const messages = await Promise.all([
|
|
101
|
-
downloadAndSaveVariant(null, projects, format, status, token),
|
|
102
|
-
...variants.map(({ apiID }) => downloadAndSaveVariant(apiID, projects, format, status, token)),
|
|
101
|
+
downloadAndSaveVariant(null, projects, format, status, richText, token),
|
|
102
|
+
...variants.map(({ apiID }) => downloadAndSaveVariant(apiID, projects, format, status, richText, token)),
|
|
103
103
|
]);
|
|
104
104
|
return messages.join("");
|
|
105
105
|
}
|
|
106
|
-
async function downloadAndSaveBase(projects, format, status, token, options) {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
...meta,
|
|
110
|
-
};
|
|
111
|
-
if (format) {
|
|
106
|
+
async function downloadAndSaveBase(projects, format, status, richText, token, options) {
|
|
107
|
+
const params = { ...options?.meta };
|
|
108
|
+
if (format)
|
|
112
109
|
params.format = format;
|
|
113
|
-
|
|
114
|
-
if (status) {
|
|
110
|
+
if (status)
|
|
115
111
|
params.status = status;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
headers: { Authorization: `token ${token}` },
|
|
122
|
-
});
|
|
123
|
-
const extension = getExtension(format);
|
|
124
|
-
const filename = `${fileName}${extension}`;
|
|
125
|
-
const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
|
|
126
|
-
let dataString = data;
|
|
127
|
-
if (extension === ".json") {
|
|
128
|
-
dataString = JSON.stringify(data, null, 2);
|
|
129
|
-
}
|
|
130
|
-
fs_1.default.writeFileSync(filepath, dataString);
|
|
131
|
-
return getSavedMessage(filename);
|
|
132
|
-
}));
|
|
133
|
-
return savedMessages.join("");
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
const { data } = await api_1.default.get(`/projects`, {
|
|
137
|
-
params: { ...params, projectIds: projects.map(({ id }) => id) },
|
|
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,
|
|
138
117
|
headers: { Authorization: `token ${token}` },
|
|
139
118
|
});
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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("");
|
|
144
134
|
}
|
|
145
135
|
function getSavedMessage(file) {
|
|
146
136
|
return `Successfully saved to ${output_1.default.info(file)}\n`;
|
|
@@ -157,120 +147,79 @@ function cleanOutputFiles() {
|
|
|
157
147
|
});
|
|
158
148
|
return "Cleaning old output files..\n";
|
|
159
149
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
* Generates an index.js file that can be consumed
|
|
165
|
-
* by an SDK - this is a big DX improvement because
|
|
166
|
-
* it provides a single entry point to get all data
|
|
167
|
-
* (including variants) instead of having to import
|
|
168
|
-
* each generated file individually.
|
|
169
|
-
*
|
|
170
|
-
* The generated file will have a unified format
|
|
171
|
-
* independent of the CLI configuration used to fetch
|
|
172
|
-
* data from Ditto.
|
|
173
|
-
*/
|
|
174
|
-
function generateJsDriver(projects, variants, format) {
|
|
175
|
-
const fileNames = fs_1.default
|
|
176
|
-
.readdirSync(consts_1.default.TEXT_DIR)
|
|
177
|
-
.filter((fileName) => /\.json$/.test(fileName));
|
|
178
|
-
const projectIdsByName = projects.reduce((agg, project) => {
|
|
179
|
-
if (project.fileName) {
|
|
180
|
-
return { ...agg, [project.fileName]: project.id };
|
|
181
|
-
}
|
|
182
|
-
return agg;
|
|
183
|
-
}, {});
|
|
184
|
-
const data = fileNames.reduce((obj, fileName) => {
|
|
185
|
-
// filename format: {project-name}__{variant-api-id}.json
|
|
186
|
-
// file format: flat or structured
|
|
187
|
-
if (variants && format) {
|
|
188
|
-
const [projectName, rest] = fileName.split("__");
|
|
189
|
-
const [variantApiId] = rest.split(".");
|
|
190
|
-
const projectId = projectIdsByName[projectName];
|
|
191
|
-
if (!projectId) {
|
|
192
|
-
throw new Error(`Couldn't find id for ${projectName}`);
|
|
193
|
-
}
|
|
194
|
-
const projectIdStr = stringifyProjectId(projectId);
|
|
195
|
-
if (!obj[projectIdStr]) {
|
|
196
|
-
obj[projectIdStr] = {};
|
|
197
|
-
}
|
|
198
|
-
obj[projectIdStr][variantApiId] = `require('./${fileName}')`;
|
|
199
|
-
}
|
|
200
|
-
// filename format: {variant-api-id}.json
|
|
201
|
-
// file format: default
|
|
202
|
-
else if (variants) {
|
|
203
|
-
const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
|
|
204
|
-
const [variantApiId] = fileName.split(".");
|
|
205
|
-
Object.keys(file.projects).forEach((projectId) => {
|
|
206
|
-
if (!obj[projectId]) {
|
|
207
|
-
obj[projectId] = {};
|
|
208
|
-
}
|
|
209
|
-
const project = file.projects[projectId];
|
|
210
|
-
obj[projectId][variantApiId] = project.frames || project.components;
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
// filename format: {project-name}.json
|
|
214
|
-
// file format: flat or structured
|
|
215
|
-
else if (format) {
|
|
216
|
-
const [projectName] = fileName.split(".");
|
|
217
|
-
const projectId = projectIdsByName[projectName];
|
|
218
|
-
if (!projectId) {
|
|
219
|
-
throw new Error(`Couldn't find id for ${projectName}`);
|
|
220
|
-
}
|
|
221
|
-
obj[stringifyProjectId(projectId)] = {
|
|
222
|
-
base: `require('./${fileName}')`,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
// filename format: text.json (single file)
|
|
226
|
-
// file format: default
|
|
227
|
-
else {
|
|
228
|
-
const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
|
|
229
|
-
Object.keys(file.projects).forEach((projectId) => {
|
|
230
|
-
const project = file.projects[projectId];
|
|
231
|
-
obj[projectId] = { base: project.frames || project.components };
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
return obj;
|
|
235
|
-
}, {});
|
|
236
|
-
let dataString = `module.exports = ${JSON.stringify(data, null, 2)}`
|
|
237
|
-
// remove quotes around require statements
|
|
238
|
-
.replace(/"require\((.*)\)"/g, "require($1)");
|
|
239
|
-
const filePath = path_1.default.resolve(consts_1.default.TEXT_DIR, "index.js");
|
|
240
|
-
fs_1.default.writeFileSync(filePath, dataString, { encoding: "utf8" });
|
|
241
|
-
return `Generated .js SDK driver at ${output_1.default.info(filePath)}`;
|
|
242
|
-
}
|
|
243
|
-
async function downloadAndSave(sourceInformation, token, options) {
|
|
244
|
-
const { validProjects, variants, format, shouldFetchComponentLibrary, status, } = sourceInformation;
|
|
245
|
-
let msg = `\nFetching the latest text from ${(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary)}\n`;
|
|
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 = "";
|
|
246
154
|
const spinner = (0, ora_1.default)(msg);
|
|
247
155
|
spinner.start();
|
|
248
|
-
|
|
249
|
-
// point down the road we stop allowing the component
|
|
250
|
-
// library to be returned from the /projects endpoint
|
|
251
|
-
if (shouldFetchComponentLibrary) {
|
|
252
|
-
validProjects.push({
|
|
253
|
-
id: "ditto_component_library",
|
|
254
|
-
name: "Ditto Component Library",
|
|
255
|
-
fileName: "ditto-component-library",
|
|
256
|
-
});
|
|
257
|
-
}
|
|
156
|
+
const variants = await (0, fetchVariants_1.fetchVariants)(source);
|
|
258
157
|
try {
|
|
259
158
|
msg += cleanOutputFiles();
|
|
159
|
+
msg += `\nFetching the latest text from ${(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary)}\n`;
|
|
260
160
|
const meta = options ? options.meta : {};
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
})
|
|
265
|
-
|
|
266
|
-
|
|
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",
|
|
267
213
|
});
|
|
268
|
-
|
|
214
|
+
}
|
|
215
|
+
if (JSON_FORMATS.includes(format))
|
|
216
|
+
msg += (0, generateJsDriver_1.generateJsDriver)(sources);
|
|
269
217
|
msg += `\n${output_1.default.success("Done")}!`;
|
|
270
218
|
spinner.stop();
|
|
271
219
|
return console.log(msg);
|
|
272
220
|
}
|
|
273
221
|
catch (e) {
|
|
222
|
+
console.error(e);
|
|
274
223
|
spinner.stop();
|
|
275
224
|
let error = e.message;
|
|
276
225
|
if (e.response && e.response.status === 404) {
|
package/bin/pull.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../lib/pull.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../lib/pull.ts"],"names":[],"mappings":"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"}
|
package/bin/remove-project.js
CHANGED
|
@@ -17,14 +17,9 @@ async function removeProject() {
|
|
|
17
17
|
`Try adding one with: ${output_1.default.info("ditto-cli project add")}\n`);
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
const allProjects = isUsingComponents
|
|
21
|
-
? [{ id: "components", name: "Ditto Component Library" }, ...projects]
|
|
22
|
-
: projects;
|
|
23
20
|
const projectToRemove = await (0, promptForProject_1.default)({
|
|
24
|
-
projects
|
|
25
|
-
message:
|
|
26
|
-
? "Select a project or library to remove"
|
|
27
|
-
: "Select a project to remove",
|
|
21
|
+
projects,
|
|
22
|
+
message: "Select a project to remove",
|
|
28
23
|
});
|
|
29
24
|
if (!projectToRemove)
|
|
30
25
|
return;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanFileName = void 0;
|
|
4
|
+
function cleanFileName(fileName) {
|
|
5
|
+
return fileName
|
|
6
|
+
.replace(/\s{1,}/g, "-")
|
|
7
|
+
.replace(/[^a-zA-Z0-9-_.]/g, "")
|
|
8
|
+
.toLowerCase();
|
|
9
|
+
}
|
|
10
|
+
exports.cleanFileName = cleanFileName;
|
|
11
|
+
//# sourceMappingURL=cleanFileName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanFileName.js","sourceRoot":"","sources":["../../lib/utils/cleanFileName.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,QAAQ;SACZ,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,WAAW,EAAE,CAAC;AACnB,CAAC;AALD,sCAKC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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.generateJsDriver = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const consts_1 = __importDefault(require("../consts"));
|
|
10
|
+
const output_1 = __importDefault(require("../output"));
|
|
11
|
+
const cleanFileName_1 = require("./cleanFileName");
|
|
12
|
+
// compatability with legacy method of specifying project ids
|
|
13
|
+
// that is still used by the default format
|
|
14
|
+
const stringifySourceId = (projectId) => projectId === "ditto_component_library" ? projectId : `project_${projectId}`;
|
|
15
|
+
/**
|
|
16
|
+
* Generates an index.js file that can be consumed
|
|
17
|
+
* by an SDK - this is a big DX improvement because
|
|
18
|
+
* it provides a single entry point to get all data
|
|
19
|
+
* (including variants) instead of having to import
|
|
20
|
+
* each generated file individually.
|
|
21
|
+
*
|
|
22
|
+
* The generated file will have a unified format
|
|
23
|
+
* independent of the CLI configuration used to fetch
|
|
24
|
+
* data from Ditto.
|
|
25
|
+
*/
|
|
26
|
+
// TODO: support ESM
|
|
27
|
+
function generateJsDriver(sources) {
|
|
28
|
+
const fileNames = fs_1.default
|
|
29
|
+
.readdirSync(consts_1.default.TEXT_DIR)
|
|
30
|
+
.filter((fileName) => /\.json$/.test(fileName));
|
|
31
|
+
const sourceIdsByName = sources.reduce((agg, source) => {
|
|
32
|
+
if (source.fileName) {
|
|
33
|
+
return { ...agg, [(0, cleanFileName_1.cleanFileName)(source.fileName)]: source.id };
|
|
34
|
+
}
|
|
35
|
+
return agg;
|
|
36
|
+
}, {});
|
|
37
|
+
const data = fileNames.reduce((obj, fileName) => {
|
|
38
|
+
const [sourceId, rest] = fileName.split("__");
|
|
39
|
+
const [variantApiId] = rest.split(".");
|
|
40
|
+
const projectId = sourceIdsByName[sourceId];
|
|
41
|
+
const projectIdStr = stringifySourceId(projectId);
|
|
42
|
+
if (!obj[projectIdStr]) {
|
|
43
|
+
obj[projectIdStr] = {};
|
|
44
|
+
}
|
|
45
|
+
obj[projectIdStr][variantApiId] = `require('./${fileName}')`;
|
|
46
|
+
return obj;
|
|
47
|
+
}, {});
|
|
48
|
+
let dataString = `module.exports = ${JSON.stringify(data, null, 2)}`
|
|
49
|
+
// remove quotes around require statements
|
|
50
|
+
.replace(/"require\((.*)\)"/g, "require($1)");
|
|
51
|
+
const filePath = path_1.default.resolve(consts_1.default.TEXT_DIR, "index.js");
|
|
52
|
+
fs_1.default.writeFileSync(filePath, dataString, { encoding: "utf8" });
|
|
53
|
+
return `Generated .js SDK driver at ${output_1.default.info(filePath)}`;
|
|
54
|
+
}
|
|
55
|
+
exports.generateJsDriver = generateJsDriver;
|
|
56
|
+
//# sourceMappingURL=generateJsDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateJsDriver.js","sourceRoot":"","sources":["../../lib/utils/generateJsDriver.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,uDAA+B;AAC/B,uDAA+B;AAE/B,mDAAgD;AAEhD,6DAA6D;AAC7D,2CAA2C;AAC3C,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAC9C,SAAS,KAAK,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,EAAE,CAAC;AAE/E;;;;;;;;;;GAUG;AAEH,oBAAoB;AACpB,SAAgB,gBAAgB,CAAC,OAAiB;IAChD,MAAM,SAAS,GAAG,YAAE;SACjB,WAAW,CAAC,gBAAM,CAAC,QAAQ,CAAC;SAC5B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElD,MAAM,eAAe,GAA2B,OAAO,CAAC,MAAM,CAC5D,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACd,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,IAAA,6BAAa,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;SAChE;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAC3B,CAAC,GAA2C,EAAE,QAAQ,EAAE,EAAE;QACxD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACtB,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,GAAG,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,GAAG,cAAc,QAAQ,IAAI,CAAC;QAC7D,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,IAAI,UAAU,GAAG,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAClE,0CAA0C;SACzC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,gBAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3D,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE7D,OAAO,+BAA+B,gBAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChE,CAAC;AA1CD,4CA0CC"}
|
|
@@ -27,9 +27,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.getIsUsingComponents = exports.getSelectedProjects = void 0;
|
|
30
|
-
const fs_1 = __importDefault(require("fs"));
|
|
31
30
|
const js_yaml_1 = __importStar(require("js-yaml"));
|
|
32
31
|
const consts_1 = require("../consts");
|
|
32
|
+
const config_1 = __importDefault(require("../config"));
|
|
33
33
|
function jsonIsConfigYAML(json) {
|
|
34
34
|
return typeof json === "object";
|
|
35
35
|
}
|
|
@@ -54,23 +54,8 @@ function yamlToJson(_yaml) {
|
|
|
54
54
|
* Returns an array containing all valid projects ({ id, name })
|
|
55
55
|
* currently contained in the project config file.
|
|
56
56
|
*/
|
|
57
|
-
const getSelectedProjects = (configFile = consts_1.PROJECT_CONFIG_FILE) =>
|
|
58
|
-
if (!fs_1.default.existsSync(configFile))
|
|
59
|
-
return [];
|
|
60
|
-
const contentYaml = fs_1.default.readFileSync(configFile, "utf8");
|
|
61
|
-
const contentJson = yamlToJson(contentYaml);
|
|
62
|
-
if (!(contentJson && contentJson.projects)) {
|
|
63
|
-
return [];
|
|
64
|
-
}
|
|
65
|
-
return contentJson.projects.filter(({ name, id }) => name && id);
|
|
66
|
-
};
|
|
57
|
+
const getSelectedProjects = (configFile = consts_1.PROJECT_CONFIG_FILE) => config_1.default.parseSourceInformation(configFile).validProjects;
|
|
67
58
|
exports.getSelectedProjects = getSelectedProjects;
|
|
68
|
-
const getIsUsingComponents = (configFile = consts_1.PROJECT_CONFIG_FILE) =>
|
|
69
|
-
if (!fs_1.default.existsSync(configFile))
|
|
70
|
-
return false;
|
|
71
|
-
const contentYaml = fs_1.default.readFileSync(configFile, "utf8");
|
|
72
|
-
const contentJson = yamlToJson(contentYaml);
|
|
73
|
-
return !!contentJson && !!contentJson.components;
|
|
74
|
-
};
|
|
59
|
+
const getIsUsingComponents = (configFile = consts_1.PROJECT_CONFIG_FILE) => config_1.default.parseSourceInformation(configFile).shouldFetchComponentLibrary;
|
|
75
60
|
exports.getIsUsingComponents = getIsUsingComponents;
|
|
76
61
|
//# sourceMappingURL=getSelectedProjects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectedProjects.js","sourceRoot":"","sources":["../../lib/utils/getSelectedProjects.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"getSelectedProjects.js","sourceRoot":"","sources":["../../lib/utils/getSelectedProjects.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAA8C;AAE9C,sCAAgD;AAEhD,uDAAwD;AAExD,SAAS,gBAAgB,CAAC,IAAa;IACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI;QACF,IAAI,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;YACjC,OAAO,EAAE,CAAC;SACX;QACD,OAAO,UAAU,CAAC;KACnB;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,uBAAa,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAED;;;GAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,UAAU,GAAG,4BAAmB,EAAE,EAAE,CACtE,gBAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;AAD7C,QAAA,mBAAmB,uBAC0B;AAEnD,MAAM,oBAAoB,GAAG,CAAC,UAAU,GAAG,4BAAmB,EAAE,EAAE,CACvE,gBAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,2BAA2B,CAAC;AAD3D,QAAA,oBAAoB,wBACuC"}
|
|
@@ -3,14 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getSourceUrl = void 0;
|
|
6
7
|
const output_1 = __importDefault(require("../output"));
|
|
8
|
+
const getSourceUrl = (sourceId) => {
|
|
9
|
+
let base = "https://app.dittowords.com";
|
|
10
|
+
if (sourceId === "ditto_component_library") {
|
|
11
|
+
return `${base}/components`;
|
|
12
|
+
}
|
|
13
|
+
return `${base}/doc/${sourceId}`;
|
|
14
|
+
};
|
|
15
|
+
exports.getSourceUrl = getSourceUrl;
|
|
7
16
|
const projectsToText = (projects) => {
|
|
8
17
|
return ((projects || []).reduce((outputString, { name, id }) => outputString +
|
|
9
18
|
("\n" +
|
|
10
19
|
"- " +
|
|
11
20
|
output_1.default.info(name) +
|
|
12
21
|
" " +
|
|
13
|
-
output_1.default.subtle(
|
|
22
|
+
output_1.default.subtle((0, exports.getSourceUrl)(id))), "") + "\n");
|
|
14
23
|
};
|
|
15
24
|
exports.default = projectsToText;
|
|
16
25
|
//# sourceMappingURL=projectsToText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectsToText.js","sourceRoot":"","sources":["../../lib/utils/projectsToText.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectsToText.js","sourceRoot":"","sources":["../../lib/utils/projectsToText.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA+B;AAGxB,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC/C,IAAI,IAAI,GAAG,4BAA4B,CAAC;IAExC,IAAI,QAAQ,KAAK,yBAAyB,EAAE;QAC1C,OAAO,GAAG,IAAI,aAAa,CAAC;KAC7B;IAED,OAAO,GAAG,IAAI,QAAQ,QAAQ,EAAE,CAAC;AACnC,CAAC,CAAC;AARW,QAAA,YAAY,gBAQvB;AAEF,MAAM,cAAc,GAAG,CAAC,QAAmB,EAAE,EAAE;IAC7C,OAAO,CACL,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACrB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7B,YAAY;QACZ,CAAC,IAAI;YACH,IAAI;YACJ,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACjB,GAAG;YACH,gBAAM,CAAC,MAAM,CAAC,IAAA,oBAAY,EAAC,EAAE,CAAC,CAAC,CAAC,EACpC,EAAE,CACH,GAAG,IAAI,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
|
|
@@ -5,10 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const { AutoComplete } = require("enquirer");
|
|
7
7
|
const output_1 = __importDefault(require("../output"));
|
|
8
|
+
const projectsToText_1 = require("./projectsToText");
|
|
8
9
|
function formatProjectChoice(project) {
|
|
9
|
-
return (project.name +
|
|
10
|
-
" " +
|
|
11
|
-
output_1.default.subtle(project.url || `https://app.dittowords.com/doc/${project.id}`));
|
|
10
|
+
return (project.name + " " + output_1.default.subtle(project.url || (0, projectsToText_1.getSourceUrl)(project.id)));
|
|
12
11
|
}
|
|
13
12
|
function parseResponse(response) {
|
|
14
13
|
if (!response) {
|