@dittowords/cli 2.8.0 → 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.
Files changed (50) hide show
  1. package/README.md +150 -141
  2. package/bin/add-project.js +5 -7
  3. package/bin/add-project.js.map +1 -1
  4. package/bin/config.js +37 -11
  5. package/bin/config.js.map +1 -1
  6. package/bin/ditto.js +66 -57
  7. package/bin/ditto.js.map +1 -1
  8. package/bin/http/fetchVariants.js +26 -0
  9. package/bin/http/fetchVariants.js.map +1 -0
  10. package/bin/init/init.js +17 -6
  11. package/bin/init/init.js.map +1 -1
  12. package/bin/init/project.js +38 -45
  13. package/bin/init/project.js.map +1 -1
  14. package/bin/init/token.js +22 -20
  15. package/bin/init/token.js.map +1 -1
  16. package/bin/pull.js +136 -193
  17. package/bin/pull.js.map +1 -1
  18. package/bin/remove-project.js +2 -7
  19. package/bin/remove-project.js.map +1 -1
  20. package/bin/utils/cleanFileName.js +11 -0
  21. package/bin/utils/cleanFileName.js.map +1 -0
  22. package/bin/utils/generateJsDriver.js +56 -0
  23. package/bin/utils/generateJsDriver.js.map +1 -0
  24. package/bin/utils/getSelectedProjects.js +3 -18
  25. package/bin/utils/getSelectedProjects.js.map +1 -1
  26. package/bin/utils/projectsToText.js +10 -1
  27. package/bin/utils/projectsToText.js.map +1 -1
  28. package/bin/utils/promptForProject.js +2 -3
  29. package/bin/utils/promptForProject.js.map +1 -1
  30. package/bin/utils/quit.js +10 -0
  31. package/bin/utils/quit.js.map +1 -0
  32. package/lib/add-project.ts +6 -9
  33. package/lib/config.ts +56 -19
  34. package/lib/ditto.ts +74 -58
  35. package/lib/http/fetchVariants.ts +30 -0
  36. package/lib/init/init.ts +38 -6
  37. package/lib/init/project.test.ts +3 -3
  38. package/lib/init/project.ts +47 -58
  39. package/lib/init/token.ts +17 -16
  40. package/lib/pull.ts +199 -279
  41. package/lib/remove-project.ts +2 -8
  42. package/lib/types.ts +22 -3
  43. package/lib/utils/cleanFileName.ts +6 -0
  44. package/lib/utils/generateJsDriver.ts +68 -0
  45. package/lib/utils/getSelectedProjects.ts +5 -24
  46. package/lib/utils/projectsToText.ts +11 -1
  47. package/lib/utils/promptForProject.ts +2 -3
  48. package/lib/utils/quit.ts +5 -0
  49. package/package.json +1 -1
  50. 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 NON_DEFAULT_FORMATS = ["flat", "structured", "android", "ios-strings"];
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
@@ -43,63 +65,38 @@ function getExtension(format) {
43
65
  * save in `{projectName}-${variantApiId}.json`
44
66
  */
45
67
  async function downloadAndSaveVariant(variantApiId, projects, format, status, richText, token) {
46
- const params = {
47
- variant: variantApiId,
48
- };
49
- if (format) {
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
- if (richText) {
73
+ if (richText)
56
74
  params.includeRichText = richText.toString();
57
- }
58
- if (format && NON_DEFAULT_FORMATS.includes(format)) {
59
- const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
60
- const { data } = await api_1.default.get(`/projects/${id}`, {
61
- params,
62
- headers: { Authorization: `token ${token}` },
63
- });
64
- if (!hasVariantData(data)) {
65
- return "";
66
- }
67
- const extension = getExtension(format);
68
- const filename = fileName + ("__" + (variantApiId || "base")) + extension;
69
- const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
70
- let dataString = data;
71
- if (extension === ".json") {
72
- dataString = JSON.stringify(data, null, 2);
73
- }
74
- fs_1.default.writeFileSync(filepath, dataString);
75
- return getSavedMessage(filename);
76
- }));
77
- return savedMessages.join("");
78
- }
79
- else {
80
- const { data } = await api_1.default.get("/projects", {
81
- params: { ...params, projectIds: projects.map(({ id }) => id) },
75
+ const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
76
+ const { data } = await api_1.default.get(`/projects/${id}`, {
77
+ params,
82
78
  headers: { Authorization: `token ${token}` },
83
79
  });
84
80
  if (!hasVariantData(data)) {
85
81
  return "";
86
82
  }
87
- const filename = `${variantApiId || "base"}.json`;
83
+ const extension = getFormatExtension(format);
84
+ const filename = (0, cleanFileName_1.cleanFileName)(fileName + ("__" + (variantApiId || "base")) + extension);
88
85
  const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
89
- const dataString = JSON.stringify(data, null, 2);
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
+ }
90
94
  fs_1.default.writeFileSync(filepath, dataString);
91
95
  return getSavedMessage(filename);
92
- }
96
+ }));
97
+ return savedMessages.join("");
93
98
  }
94
- async function downloadAndSaveVariants(projects, format, status, richText, token, options) {
95
- const meta = options ? options.meta : {};
96
- const { data: variants } = await api_1.default.get("/variants", {
97
- params: {
98
- ...meta,
99
- projectIds: projects.map(({ id }) => id),
100
- },
101
- headers: { Authorization: `token ${token}` },
102
- });
99
+ async function downloadAndSaveVariants(variants, projects, format, status, richText, token) {
103
100
  const messages = await Promise.all([
104
101
  downloadAndSaveVariant(null, projects, format, status, richText, token),
105
102
  ...variants.map(({ apiID }) => downloadAndSaveVariant(apiID, projects, format, status, richText, token)),
@@ -107,46 +104,33 @@ async function downloadAndSaveVariants(projects, format, status, richText, token
107
104
  return messages.join("");
108
105
  }
109
106
  async function downloadAndSaveBase(projects, format, status, richText, token, options) {
110
- const meta = options ? options.meta : {};
111
- const params = {
112
- ...meta,
113
- };
114
- if (format) {
107
+ const params = { ...options?.meta };
108
+ if (format)
115
109
  params.format = format;
116
- }
117
- if (status) {
110
+ if (status)
118
111
  params.status = status;
119
- }
120
- if (richText) {
112
+ if (richText)
121
113
  params.includeRichText = richText.toString();
122
- }
123
- if (format && NON_DEFAULT_FORMATS.includes(format)) {
124
- const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
125
- const { data } = await api_1.default.get(`/projects/${id}`, {
126
- params,
127
- headers: { Authorization: `token ${token}` },
128
- });
129
- const extension = getExtension(format);
130
- const filename = `${fileName}${extension}`;
131
- const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
132
- let dataString = data;
133
- if (extension === ".json") {
134
- dataString = JSON.stringify(data, null, 2);
135
- }
136
- fs_1.default.writeFileSync(filepath, dataString);
137
- return getSavedMessage(filename);
138
- }));
139
- return savedMessages.join("");
140
- }
141
- else {
142
- const { data } = await api_1.default.get(`/projects`, {
143
- params: { ...params, projectIds: projects.map(({ id }) => id) },
114
+ const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
115
+ const { data } = await api_1.default.get(`/projects/${id}`, {
116
+ params,
144
117
  headers: { Authorization: `token ${token}` },
145
118
  });
146
- const dataString = JSON.stringify(data, null, 2);
147
- fs_1.default.writeFileSync(consts_1.default.TEXT_FILE, dataString);
148
- return getSavedMessage("text.json");
149
- }
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("");
150
134
  }
151
135
  function getSavedMessage(file) {
152
136
  return `Successfully saved to ${output_1.default.info(file)}\n`;
@@ -163,120 +147,79 @@ function cleanOutputFiles() {
163
147
  });
164
148
  return "Cleaning old output files..\n";
165
149
  }
166
- // compatability with legacy method of specifying project ids
167
- // that is still used by the default format
168
- const stringifyProjectId = (projectId) => projectId === "ditto_component_library" ? projectId : `project_${projectId}`;
169
- /**
170
- * Generates an index.js file that can be consumed
171
- * by an SDK - this is a big DX improvement because
172
- * it provides a single entry point to get all data
173
- * (including variants) instead of having to import
174
- * each generated file individually.
175
- *
176
- * The generated file will have a unified format
177
- * independent of the CLI configuration used to fetch
178
- * data from Ditto.
179
- */
180
- function generateJsDriver(projects, variants, format) {
181
- const fileNames = fs_1.default
182
- .readdirSync(consts_1.default.TEXT_DIR)
183
- .filter((fileName) => /\.json$/.test(fileName));
184
- const projectIdsByName = projects.reduce((agg, project) => {
185
- if (project.fileName) {
186
- return { ...agg, [project.fileName]: project.id };
187
- }
188
- return agg;
189
- }, {});
190
- const data = fileNames.reduce((obj, fileName) => {
191
- // filename format: {project-name}__{variant-api-id}.json
192
- // file format: flat or structured
193
- if (variants && format) {
194
- const [projectName, rest] = fileName.split("__");
195
- const [variantApiId] = rest.split(".");
196
- const projectId = projectIdsByName[projectName];
197
- if (!projectId) {
198
- throw new Error(`Couldn't find id for ${projectName}`);
199
- }
200
- const projectIdStr = stringifyProjectId(projectId);
201
- if (!obj[projectIdStr]) {
202
- obj[projectIdStr] = {};
203
- }
204
- obj[projectIdStr][variantApiId] = `require('./${fileName}')`;
205
- }
206
- // filename format: {variant-api-id}.json
207
- // file format: default
208
- else if (variants) {
209
- const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
210
- const [variantApiId] = fileName.split(".");
211
- Object.keys(file.projects).forEach((projectId) => {
212
- if (!obj[projectId]) {
213
- obj[projectId] = {};
214
- }
215
- const project = file.projects[projectId];
216
- obj[projectId][variantApiId] = project.frames || project.components;
217
- });
218
- }
219
- // filename format: {project-name}.json
220
- // file format: flat or structured
221
- else if (format) {
222
- const [projectName] = fileName.split(".");
223
- const projectId = projectIdsByName[projectName];
224
- if (!projectId) {
225
- throw new Error(`Couldn't find id for ${projectName}`);
226
- }
227
- obj[stringifyProjectId(projectId)] = {
228
- base: `require('./${fileName}')`,
229
- };
230
- }
231
- // filename format: text.json (single file)
232
- // file format: default
233
- else {
234
- const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
235
- Object.keys(file.projects).forEach((projectId) => {
236
- const project = file.projects[projectId];
237
- obj[projectId] = { base: project.frames || project.components };
238
- });
239
- }
240
- return obj;
241
- }, {});
242
- let dataString = `module.exports = ${JSON.stringify(data, null, 2)}`
243
- // remove quotes around require statements
244
- .replace(/"require\((.*)\)"/g, "require($1)");
245
- const filePath = path_1.default.resolve(consts_1.default.TEXT_DIR, "index.js");
246
- fs_1.default.writeFileSync(filePath, dataString, { encoding: "utf8" });
247
- return `Generated .js SDK driver at ${output_1.default.info(filePath)}`;
248
- }
249
- async function downloadAndSave(sourceInformation, token, options) {
250
- const { validProjects, variants, format, shouldFetchComponentLibrary, status, richText, } = sourceInformation;
251
- 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 = "";
252
154
  const spinner = (0, ora_1.default)(msg);
253
155
  spinner.start();
254
- // We'll need to move away from this solution if at some
255
- // point down the road we stop allowing the component
256
- // library to be returned from the /projects endpoint
257
- if (shouldFetchComponentLibrary) {
258
- validProjects.push({
259
- id: "ditto_component_library",
260
- name: "Ditto Component Library",
261
- fileName: "ditto-component-library",
262
- });
263
- }
156
+ const variants = await (0, fetchVariants_1.fetchVariants)(source);
264
157
  try {
265
158
  msg += cleanOutputFiles();
159
+ msg += `\nFetching the latest text from ${(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary)}\n`;
266
160
  const meta = options ? options.meta : {};
267
- msg += variants
268
- ? await downloadAndSaveVariants(validProjects, format, status, richText, token, {
269
- meta,
270
- })
271
- : await downloadAndSaveBase(validProjects, format, status, richText, token, {
272
- 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",
273
213
  });
274
- msg += generateJsDriver(validProjects, variants, format);
214
+ }
215
+ if (JSON_FORMATS.includes(format))
216
+ msg += (0, generateJsDriver_1.generateJsDriver)(sources);
275
217
  msg += `\n${output_1.default.success("Done")}!`;
276
218
  spinner.stop();
277
219
  return console.log(msg);
278
220
  }
279
221
  catch (e) {
222
+ console.error(e);
280
223
  spinner.stop();
281
224
  let error = e.message;
282
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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"}
@@ -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: allProjects,
25
- message: isUsingComponents
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,WAAW,GAAG,iBAAiB;QACnC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,GAAG,QAAQ,CAAC;QACtE,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAgB,EAAC;QAC7C,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,iBAAiB;YACxB,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,4BAA4B;KACjC,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"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,mDAA8C;AAE9C,sCAAgD;AAGhD,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,CACjC,UAAU,GAAG,4BAAmB,EACrB,EAAE;IACb,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;QAC1C,OAAO,EAAE,CAAC;KACX;IAED,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AAbW,QAAA,mBAAmB,uBAa9B;AAEK,MAAM,oBAAoB,GAAG,CAClC,UAAU,GAAG,4BAAmB,EACvB,EAAE;IACX,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7C,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;AACnD,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B"}
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("https://app.dittowords.com/doc/" + id)), "") + "\n");
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":";;;;;AAAA,uDAA+B;AAG/B,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,iCAAiC,GAAG,EAAE,CAAC,CAAC,EAC1D,EAAE,CACH,GAAG,IAAI,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
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) {