@dittowords/cli 2.5.1 → 2.5.2

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 (71) hide show
  1. package/README.md +14 -7
  2. package/babel.config.js +2 -8
  3. package/bin/add-project.js +38 -0
  4. package/bin/add-project.js.map +1 -0
  5. package/bin/api.js +20 -0
  6. package/bin/api.js.map +1 -0
  7. package/bin/config.js +174 -0
  8. package/bin/config.js.map +1 -0
  9. package/bin/consts.js +21 -0
  10. package/bin/consts.js.map +1 -0
  11. package/bin/ditto.js +71 -74
  12. package/bin/ditto.js.map +1 -0
  13. package/bin/init/init.js +39 -0
  14. package/bin/init/init.js.map +1 -0
  15. package/bin/init/project.js +115 -0
  16. package/bin/init/project.js.map +1 -0
  17. package/bin/init/token.js +89 -0
  18. package/bin/init/token.js.map +1 -0
  19. package/bin/output.js +34 -0
  20. package/bin/output.js.map +1 -0
  21. package/bin/pull.js +288 -0
  22. package/bin/pull.js.map +1 -0
  23. package/bin/remove-project.js +40 -0
  24. package/bin/remove-project.js.map +1 -0
  25. package/bin/types.js +3 -0
  26. package/bin/types.js.map +1 -0
  27. package/bin/utils/getSelectedProjects.js +76 -0
  28. package/bin/utils/getSelectedProjects.js.map +1 -0
  29. package/bin/utils/processMetaOption.js +15 -0
  30. package/bin/utils/processMetaOption.js.map +1 -0
  31. package/bin/utils/projectsToText.js +16 -0
  32. package/bin/utils/projectsToText.js.map +1 -0
  33. package/bin/utils/promptForProject.js +44 -0
  34. package/bin/utils/promptForProject.js.map +1 -0
  35. package/bin/utils/sourcesToText.js +25 -0
  36. package/bin/utils/sourcesToText.js.map +1 -0
  37. package/jest.config.js +1 -1
  38. package/lib/{add-project.js → add-project.ts} +8 -8
  39. package/lib/api.ts +15 -0
  40. package/lib/{config.test.js → config.test.ts} +14 -25
  41. package/lib/config.ts +214 -0
  42. package/lib/consts.ts +20 -0
  43. package/lib/ditto.ts +97 -0
  44. package/lib/init/{init.js → init.ts} +11 -12
  45. package/lib/init/project.test.ts +49 -0
  46. package/lib/init/{project.js → project.ts} +31 -29
  47. package/lib/init/{token.test.js → token.test.ts} +3 -3
  48. package/lib/init/{token.js → token.ts} +23 -19
  49. package/lib/output.ts +21 -0
  50. package/lib/pull.test.ts +142 -0
  51. package/lib/{pull.js → pull.ts} +119 -92
  52. package/lib/{remove-project.js → remove-project.ts} +11 -15
  53. package/lib/types.ts +23 -0
  54. package/lib/utils/getSelectedProjects.ts +55 -0
  55. package/lib/utils/processMetaOption.test.ts +18 -0
  56. package/lib/utils/processMetaOption.ts +16 -0
  57. package/lib/utils/{projectsToText.js → projectsToText.ts} +5 -4
  58. package/lib/utils/{promptForProject.js → promptForProject.ts} +18 -9
  59. package/lib/utils/{sourcesToText.js → sourcesToText.ts} +6 -5
  60. package/package.json +20 -15
  61. package/testing/fixtures/project-config-pull.yml +0 -0
  62. package/tsconfig.json +12 -0
  63. package/lib/api.js +0 -18
  64. package/lib/config.js +0 -169
  65. package/lib/consts.js +0 -14
  66. package/lib/init/project.test.js +0 -99
  67. package/lib/output.js +0 -21
  68. package/lib/pull.test.js +0 -173
  69. package/lib/utils/getSelectedProjects.js +0 -44
  70. package/lib/utils/processMetaOption.js +0 -16
  71. package/lib/utils/processMetaOption.test.js +0 -16
@@ -0,0 +1,115 @@
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.collectAndSaveProject = 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
+ function quit(exitCode = 2) {
16
+ console.log("\nExiting Ditto CLI...\n");
17
+ process.exitCode = exitCode;
18
+ process.exit();
19
+ }
20
+ function saveProject(file, name, id) {
21
+ // old functionality included "ditto_component_library" in the `projects`
22
+ // array, but we want to always treat the component library as a separate
23
+ // entity and use the new notation of a top-level `components` key
24
+ if (id === "components") {
25
+ config_1.default.writeProjectConfigData(file, { components: true });
26
+ return;
27
+ }
28
+ const projects = [...(0, getSelectedProjects_1.getSelectedProjects)(), { name, id }];
29
+ config_1.default.writeProjectConfigData(file, { projects });
30
+ }
31
+ const needsSource = () => {
32
+ return !config_1.default.parseSourceInformation().hasSourceData;
33
+ };
34
+ exports.needsSource = needsSource;
35
+ async function askForAnotherToken() {
36
+ config_1.default.deleteToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
37
+ const message = "Looks like the API key you have saved no longer works. Please enter another one.";
38
+ await (0, token_1.collectAndSaveToken)(message);
39
+ }
40
+ async function listProjects(token, projectsAlreadySelected, componentsSelected) {
41
+ const spinner = (0, ora_1.default)("Fetching projects in your workspace...");
42
+ spinner.start();
43
+ let response;
44
+ try {
45
+ response = await api_1.default.get("/project-names", {
46
+ headers: {
47
+ Authorization: `token ${token}`,
48
+ },
49
+ });
50
+ }
51
+ catch (e) {
52
+ spinner.stop();
53
+ throw e;
54
+ }
55
+ spinner.stop();
56
+ return response.data.filter(({ id }) => {
57
+ if (id === "ditto_component_library") {
58
+ return !componentsSelected;
59
+ }
60
+ else {
61
+ return !projectsAlreadySelected.some((project) => project.id === id);
62
+ }
63
+ });
64
+ }
65
+ async function collectProject(token, initialize) {
66
+ const path = process.cwd();
67
+ if (initialize) {
68
+ console.log(`Looks like there are no Ditto projects selected for your current directory: ${output_1.default.info(path)}.`);
69
+ }
70
+ const projectsAlreadySelected = (0, getSelectedProjects_1.getSelectedProjects)();
71
+ const usingComponents = (0, getSelectedProjects_1.getIsUsingComponents)();
72
+ const projects = await listProjects(token, projectsAlreadySelected, usingComponents);
73
+ if (!(projects && projects.length)) {
74
+ console.log("You're currently syncing all projects in your workspace.");
75
+ 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"));
76
+ return null;
77
+ }
78
+ const nonInitPrompt = usingComponents
79
+ ? "Add a project"
80
+ : "Add a project or library";
81
+ return (0, promptForProject_1.default)({
82
+ projects,
83
+ message: initialize
84
+ ? "Choose the project or library you'd like to sync text from"
85
+ : nonInitPrompt,
86
+ });
87
+ }
88
+ const collectAndSaveProject = async (initialize = false) => {
89
+ try {
90
+ const token = config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
91
+ const project = await collectProject(token, initialize);
92
+ if (!project) {
93
+ quit(0);
94
+ return;
95
+ }
96
+ console.log("\n" +
97
+ `Thanks for adding ${output_1.default.info(project.name)} to your selected projects.\n` +
98
+ `We saved your updated configuration to: ${output_1.default.info(consts_1.default.PROJECT_CONFIG_FILE)}\n`);
99
+ saveProject(consts_1.default.PROJECT_CONFIG_FILE, project.name, project.id);
100
+ }
101
+ catch (e) {
102
+ console.log(e);
103
+ if (e.response && e.response.status === 404) {
104
+ await askForAnotherToken();
105
+ await (0, exports.collectAndSaveProject)();
106
+ }
107
+ else {
108
+ quit();
109
+ }
110
+ }
111
+ };
112
+ exports.collectAndSaveProject = collectAndSaveProject;
113
+ exports._testing = { saveProject, needsSource: exports.needsSource };
114
+ exports.default = { needsSource: exports.needsSource, collectAndSaveProject: exports.collectAndSaveProject };
115
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../lib/init/project.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AAEtB,iDAAyB;AACzB,uDAA+B;AAC/B,uDAA+B;AAC/B,uDAA+B;AAC/B,mCAA8C;AAC9C,sEAGsC;AACtC,iFAAyD;AAIzD,SAAS,IAAI,CAAC,QAAQ,GAAG,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;IACzD,yEAAyE;IACzE,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,EAAE,KAAK,YAAY,EAAE;QACvB,gBAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAA,yCAAmB,GAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAE1D,gBAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AAEM,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,OAAO,CAAC,gBAAM,CAAC,sBAAsB,EAAE,CAAC,aAAa,CAAC;AACxD,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEF,KAAK,UAAU,kBAAkB;IAC/B,gBAAM,CAAC,WAAW,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,OAAO,GACX,kFAAkF,CAAC;IACrF,MAAM,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,KAAY,EACZ,uBAAkC,EAClC,kBAA2B;IAE3B,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,wCAAwC,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,QAAuD,CAAC;IAC5D,IAAI;QACF,QAAQ,GAAG,MAAM,aAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE;YACzC,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,KAAK,EAAE;aAChC;SACF,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,CAAC;KACT;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAW,EAAE,EAAE;QAC9C,IAAI,EAAE,KAAK,yBAAyB,EAAE;YACpC,OAAO,CAAC,kBAAkB,CAAC;SAC5B;aAAM;YACL,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SACtE;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAY,EAAE,UAAmB;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,UAAU,EAAE;QACd,OAAO,CAAC,GAAG,CACT,+EAA+E,gBAAM,CAAC,IAAI,CACxF,IAAI,CACL,GAAG,CACL,CAAC;KACH;IAED,MAAM,uBAAuB,GAAG,IAAA,yCAAmB,GAAE,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,0CAAoB,GAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,EACL,uBAAuB,EACvB,eAAe,CAChB,CAAC;IAEF,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CACT,gBAAM,CAAC,QAAQ,CACb,sKAAsK,CACvK,CACF,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,aAAa,GAAG,eAAe;QACnC,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,0BAA0B,CAAC;IAE/B,OAAO,IAAA,0BAAgB,EAAC;QACtB,QAAQ;QACR,OAAO,EAAE,UAAU;YACjB,CAAC,CAAC,4DAA4D;YAC9D,CAAC,CAAC,aAAa;KAClB,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,qBAAqB,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,EAAE;IAChE,IAAI;QACF,MAAM,KAAK,GAAG,gBAAM,CAAC,QAAQ,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,CAAC,CAAC,CAAC;YACR,OAAO;SACR;QAED,OAAO,CAAC,GAAG,CACT,IAAI;YACF,qBAAqB,gBAAM,CAAC,IAAI,CAC9B,OAAO,CAAC,IAAI,CACb,+BAA+B;YAChC,2CAA2C,gBAAM,CAAC,IAAI,CACpD,gBAAM,CAAC,mBAAmB,CAC3B,IAAI,CACR,CAAC;QAEF,WAAW,CAAC,gBAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KACnE;IAAC,OAAO,CAAM,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3C,MAAM,kBAAkB,EAAE,CAAC;YAC3B,MAAM,IAAA,6BAAqB,GAAE,CAAC;SAC/B;aAAM;YACL,IAAI,EAAE,CAAC;SACR;KACF;AACH,CAAC,CAAC;AA7BW,QAAA,qBAAqB,yBA6BhC;AAEW,QAAA,QAAQ,GAAG,EAAE,WAAW,EAAE,WAAW,EAAX,mBAAW,EAAE,CAAC;AAErD,kBAAe,EAAE,WAAW,EAAX,mBAAW,EAAE,qBAAqB,EAArB,6BAAqB,EAAE,CAAC"}
@@ -0,0 +1,89 @@
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 needsToken = (configFile, host = consts_1.default.API_HOST) => {
15
+ if (config_1.default.getTokenFromEnv()) {
16
+ return false;
17
+ }
18
+ const file = configFile || consts_1.default.CONFIG_FILE;
19
+ if (!fs_1.default.existsSync(file))
20
+ return true;
21
+ const configData = config_1.default.readGlobalConfigData(file);
22
+ if (!configData[config_1.default.justTheHost(host)] ||
23
+ configData[config_1.default.justTheHost(host)][0].token === "")
24
+ return true;
25
+ return false;
26
+ };
27
+ exports.needsToken = needsToken;
28
+ // Returns true if valid, otherwise an error message.
29
+ async function checkToken(token) {
30
+ const axios = (0, api_1.create)(token);
31
+ const endpoint = "/token-check";
32
+ const resOrError = await axios
33
+ .get(endpoint)
34
+ .catch((error) => {
35
+ if (error.code === "ENOTFOUND") {
36
+ return output_1.default.errorText(`Can't connect to API: ${output_1.default.url(error.hostname)}`);
37
+ }
38
+ if (error.response.status === 401 || error.response.status === 404) {
39
+ return output_1.default.errorText("This API key isn't valid. Please try another.");
40
+ }
41
+ return output_1.default.warnText("We're having trouble reaching the Ditto API.");
42
+ })
43
+ .catch(() => output_1.default.errorText("Sorry! We're having trouble reaching the Ditto API."));
44
+ if (typeof resOrError === "string")
45
+ return resOrError;
46
+ if (resOrError.status === 200)
47
+ return true;
48
+ return output_1.default.errorText("This API key isn't valid. Please try another.");
49
+ }
50
+ async function collectToken(message) {
51
+ const blue = output_1.default.info;
52
+ const apiUrl = output_1.default.url("https://app.dittowords.com/account/user");
53
+ const breadcrumbs = `${blue("User")}`;
54
+ const tokenDescription = message ||
55
+ `To get started, you'll need your Ditto API key. You can find this at: ${apiUrl} > ${breadcrumbs} under "${chalk_1.default.bold("API Keys")}".`;
56
+ console.log(tokenDescription);
57
+ const response = await (0, enquirer_1.prompt)({
58
+ type: "input",
59
+ name: "token",
60
+ message: "What is your API key?",
61
+ validate: (token) => checkToken(token),
62
+ });
63
+ return response.token;
64
+ }
65
+ function quit(exitCode = 2) {
66
+ console.log("API key was not saved.");
67
+ process.exitCode = exitCode;
68
+ process.exit();
69
+ }
70
+ /**
71
+ *
72
+ * @param {string | null} message
73
+ * @returns
74
+ */
75
+ const collectAndSaveToken = async (message = null) => {
76
+ try {
77
+ const token = await collectToken(message);
78
+ console.log(`Thanks for authenticating. We'll save the key to: ${output_1.default.info(consts_1.default.CONFIG_FILE)}`);
79
+ output_1.default.nl();
80
+ config_1.default.saveToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST, token);
81
+ return token;
82
+ }
83
+ catch (error) {
84
+ quit();
85
+ }
86
+ };
87
+ exports.collectAndSaveToken = collectAndSaveToken;
88
+ exports.default = { needsToken: exports.needsToken, collectAndSaveToken: exports.collectAndSaveToken };
89
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../lib/init/token.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB,kDAA0B;AAE1B,uCAAkC;AAElC,gCAAgC;AAChC,uDAA+B;AAC/B,uDAA+B;AAC/B,uDAA+B;AAExB,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAE,IAAI,GAAG,gBAAM,CAAC,QAAQ,EAAE,EAAE;IACxE,IAAI,gBAAM,CAAC,eAAe,EAAE,EAAE;QAC5B,OAAO,KAAK,CAAC;KACd;IAED,MAAM,IAAI,GAAG,UAAU,IAAI,gBAAM,CAAC,WAAW,CAAC;IAC9C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,gBAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACrD,IACE,CAAC,UAAU,CAAC,gBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,UAAU,CAAC,gBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;QAEpD,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,UAAU,cAcrB;AAEF,qDAAqD;AACrD,KAAK,UAAU,UAAU,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,IAAA,YAAM,EAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC;IAEhC,MAAM,UAAU,GAAG,MAAM,KAAK;SAC3B,GAAG,CAAC,QAAQ,CAAC;SACb,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;YAC9B,OAAO,gBAAM,CAAC,SAAS,CACrB,yBAAyB,gBAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CACtD,CAAC;SACH;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAClE,OAAO,gBAAM,CAAC,SAAS,CACrB,+CAA+C,CAChD,CAAC;SACH;QACD,OAAO,gBAAM,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;IACzE,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,CACV,gBAAM,CAAC,SAAS,CAAC,qDAAqD,CAAC,CACxE,CAAC;IACJ,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IAEtD,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,gBAAM,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAsB;IAChD,MAAM,IAAI,GAAG,gBAAM,CAAC,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,gBAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACtC,MAAM,gBAAgB,GACpB,OAAO;QACP,yEAAyE,MAAM,MAAM,WAAW,WAAW,eAAK,CAAC,IAAI,CACnH,UAAU,CACX,IAAI,CAAC;IACR,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAM,EAAoB;QAC/C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;KACvC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED,SAAS,IAAI,CAAC,QAAQ,GAAG,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAAyB,IAAI,EAAE,EAAE;IACzE,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CACT,sDAAsD,gBAAM,CAAC,IAAI,CAC/D,gBAAM,CAAC,WAAW,CACnB,EAAE,CACJ,CAAC;QACF,gBAAM,CAAC,EAAE,EAAE,CAAC;QAEZ,gBAAM,CAAC,SAAS,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;KACd;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,EAAE,CAAC;KACR;AACH,CAAC,CAAC;AAfW,QAAA,mBAAmB,uBAe9B;AAEF,kBAAe,EAAE,UAAU,EAAV,kBAAU,EAAE,mBAAmB,EAAnB,2BAAmB,EAAE,CAAC"}
package/bin/output.js ADDED
@@ -0,0 +1,34 @@
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
@@ -0,0 +1 @@
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/pull.js ADDED
@@ -0,0 +1,288 @@
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 NON_DEFAULT_FORMATS = ["flat", "structured"];
17
+ const DEFAULT_FORMAT_KEYS = ["projects", "exported_at"];
18
+ const hasVariantData = (data) => {
19
+ const hasTopLevelKeys = Object.keys(data).filter((key) => !DEFAULT_FORMAT_KEYS.includes(key))
20
+ .length > 0;
21
+ const hasProjectKeys = data.projects && Object.keys(data.projects).length > 0;
22
+ return hasTopLevelKeys || hasProjectKeys;
23
+ };
24
+ async function askForAnotherToken() {
25
+ config_1.default.deleteToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
26
+ const message = "Looks like the API key you have saved no longer works. Please enter another one.";
27
+ await (0, token_1.collectAndSaveToken)(message);
28
+ }
29
+ /**
30
+ * For a given variant:
31
+ * - if format is unspecified, fetch data for all projects from `/projects` and
32
+ * save in `{variantApiId}.json`
33
+ * - if format is `flat` or `structured`, fetch data for each project from `/project/:project_id` and
34
+ * save in `{projectName}-${variantApiId}.json`
35
+ */
36
+ async function downloadAndSaveVariant(variantApiId, projects, format, token) {
37
+ const params = {
38
+ variant: variantApiId,
39
+ };
40
+ if (format) {
41
+ params.format = format;
42
+ }
43
+ if (format && NON_DEFAULT_FORMATS.includes(format)) {
44
+ const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
45
+ const { data } = await api_1.default.get(`/projects/${id}`, {
46
+ params,
47
+ headers: { Authorization: `token ${token}` },
48
+ });
49
+ if (!hasVariantData(data)) {
50
+ return "";
51
+ }
52
+ const filename = fileName + ("__" + (variantApiId || "base")) + ".json";
53
+ const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
54
+ const dataString = JSON.stringify(data, null, 2);
55
+ fs_1.default.writeFileSync(filepath, dataString);
56
+ return getSavedMessage(filename);
57
+ }));
58
+ return savedMessages.join("");
59
+ }
60
+ else {
61
+ const { data } = await api_1.default.get("/projects", {
62
+ params: { ...params, projectIds: projects.map(({ id }) => id) },
63
+ headers: { Authorization: `token ${token}` },
64
+ });
65
+ if (!hasVariantData(data)) {
66
+ return "";
67
+ }
68
+ const filename = `${variantApiId || "base"}.json`;
69
+ const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
70
+ const dataString = JSON.stringify(data, null, 2);
71
+ fs_1.default.writeFileSync(filepath, dataString);
72
+ return getSavedMessage(filename);
73
+ }
74
+ }
75
+ async function downloadAndSaveVariants(projects, format, token, options) {
76
+ const meta = options ? options.meta : {};
77
+ const { data: variants } = await api_1.default.get("/variants", {
78
+ params: {
79
+ ...meta,
80
+ projectIds: projects.map(({ id }) => id),
81
+ },
82
+ headers: { Authorization: `token ${token}` },
83
+ });
84
+ const messages = await Promise.all([
85
+ downloadAndSaveVariant(null, projects, format, token),
86
+ ...variants.map(({ apiID }) => downloadAndSaveVariant(apiID, projects, format, token)),
87
+ ]);
88
+ return messages.join("");
89
+ }
90
+ async function downloadAndSaveBase(projects, format, token, options) {
91
+ const meta = options ? options.meta : {};
92
+ const params = {
93
+ ...meta,
94
+ };
95
+ if (format) {
96
+ params.format = format;
97
+ }
98
+ if (format && NON_DEFAULT_FORMATS.includes(format)) {
99
+ const savedMessages = await Promise.all(projects.map(async ({ id, fileName }) => {
100
+ const { data } = await api_1.default.get(`/projects/${id}`, {
101
+ params,
102
+ headers: { Authorization: `token ${token}` },
103
+ });
104
+ const filename = `${fileName}.json`;
105
+ const filepath = path_1.default.join(consts_1.default.TEXT_DIR, filename);
106
+ const dataString = JSON.stringify(data, null, 2);
107
+ fs_1.default.writeFileSync(filepath, dataString);
108
+ return getSavedMessage(filename);
109
+ }));
110
+ return savedMessages.join("");
111
+ }
112
+ else {
113
+ const { data } = await api_1.default.get(`/projects`, {
114
+ params: { ...params, projectIds: projects.map(({ id }) => id) },
115
+ headers: { Authorization: `token ${token}` },
116
+ });
117
+ const dataString = JSON.stringify(data, null, 2);
118
+ fs_1.default.writeFileSync(consts_1.default.TEXT_FILE, dataString);
119
+ return getSavedMessage("text.json");
120
+ }
121
+ }
122
+ function getSavedMessage(file) {
123
+ return `Successfully saved to ${output_1.default.info(file)}\n`;
124
+ }
125
+ function cleanOutputFiles() {
126
+ if (!fs_1.default.existsSync(consts_1.default.TEXT_DIR)) {
127
+ fs_1.default.mkdirSync(consts_1.default.TEXT_DIR);
128
+ }
129
+ const fileNames = fs_1.default.readdirSync(consts_1.default.TEXT_DIR);
130
+ fileNames.forEach((fileName) => {
131
+ if (/\.js(on)?$/.test(fileName)) {
132
+ fs_1.default.unlinkSync(path_1.default.resolve(consts_1.default.TEXT_DIR, fileName));
133
+ }
134
+ });
135
+ return "Cleaning old output files..\n";
136
+ }
137
+ // compatability with legacy method of specifying project ids
138
+ // that is still used by the default format
139
+ const stringifyProjectId = (projectId) => projectId === "ditto_component_library" ? projectId : `project_${projectId}`;
140
+ /**
141
+ * Generates an index.js file that can be consumed
142
+ * by an SDK - this is a big DX improvement because
143
+ * it provides a single entry point to get all data
144
+ * (including variants) instead of having to import
145
+ * each generated file individually.
146
+ *
147
+ * The generated file will have a unified format
148
+ * independent of the CLI configuration used to fetch
149
+ * data from Ditto.
150
+ */
151
+ function generateJsDriver(projects, variants, format) {
152
+ const fileNames = fs_1.default
153
+ .readdirSync(consts_1.default.TEXT_DIR)
154
+ .filter((fileName) => /\.json$/.test(fileName));
155
+ const projectIdsByName = projects.reduce((agg, project) => {
156
+ if (project.fileName) {
157
+ return { ...agg, [project.fileName]: project.id };
158
+ }
159
+ return agg;
160
+ }, {});
161
+ const data = fileNames.reduce((obj, fileName) => {
162
+ // filename format: {project-name}__{variant-api-id}.json
163
+ // file format: flat or structured
164
+ if (variants && format) {
165
+ const [projectName, rest] = fileName.split("__");
166
+ const [variantApiId] = rest.split(".");
167
+ const projectId = projectIdsByName[projectName];
168
+ if (!projectId) {
169
+ throw new Error(`Couldn't find id for ${projectName}`);
170
+ }
171
+ const projectIdStr = stringifyProjectId(projectId);
172
+ if (!obj[projectIdStr]) {
173
+ obj[projectIdStr] = {};
174
+ }
175
+ obj[projectIdStr][variantApiId] = `require('./${fileName}')`;
176
+ }
177
+ // filename format: {variant-api-id}.json
178
+ // file format: default
179
+ else if (variants) {
180
+ const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
181
+ const [variantApiId] = fileName.split(".");
182
+ Object.keys(file.projects).forEach((projectId) => {
183
+ if (!obj[projectId]) {
184
+ obj[projectId] = {};
185
+ }
186
+ const project = file.projects[projectId];
187
+ obj[projectId][variantApiId] = project.frames || project.components;
188
+ });
189
+ }
190
+ // filename format: {project-name}.json
191
+ // file format: flat or structured
192
+ else if (format) {
193
+ const [projectName] = fileName.split(".");
194
+ const projectId = projectIdsByName[projectName];
195
+ if (!projectId) {
196
+ throw new Error(`Couldn't find id for ${projectName}`);
197
+ }
198
+ obj[stringifyProjectId(projectId)] = {
199
+ base: `require('./${fileName}')`,
200
+ };
201
+ }
202
+ // filename format: text.json (single file)
203
+ // file format: default
204
+ else {
205
+ const file = require(path_1.default.resolve(consts_1.default.TEXT_DIR, `./${fileName}`));
206
+ Object.keys(file.projects).forEach((projectId) => {
207
+ const project = file.projects[projectId];
208
+ obj[projectId] = { base: project.frames || project.components };
209
+ });
210
+ }
211
+ return obj;
212
+ }, {});
213
+ let dataString = `module.exports = ${JSON.stringify(data, null, 2)}`
214
+ // remove quotes around require statements
215
+ .replace(/"require\((.*)\)"/g, "require($1)");
216
+ const filePath = path_1.default.resolve(consts_1.default.TEXT_DIR, "index.js");
217
+ fs_1.default.writeFileSync(filePath, dataString, { encoding: "utf8" });
218
+ return `Generated .js SDK driver at ${output_1.default.info(filePath)}`;
219
+ }
220
+ async function downloadAndSave(sourceInformation, token, options) {
221
+ const { validProjects, variants, format, shouldFetchComponentLibrary } = sourceInformation;
222
+ let msg = `\nFetching the latest text from ${(0, sourcesToText_1.default)(validProjects, shouldFetchComponentLibrary)}\n`;
223
+ const spinner = (0, ora_1.default)(msg);
224
+ spinner.start();
225
+ // We'll need to move away from this solution if at some
226
+ // point down the road we stop allowing the component
227
+ // library to be returned from the /projects endpoint
228
+ if (shouldFetchComponentLibrary) {
229
+ validProjects.push({
230
+ id: "ditto_component_library",
231
+ name: "Ditto Component Library",
232
+ fileName: "ditto-component-library",
233
+ });
234
+ }
235
+ try {
236
+ msg += cleanOutputFiles();
237
+ const meta = options ? options.meta : {};
238
+ msg += variants
239
+ ? await downloadAndSaveVariants(validProjects, format, token, { meta })
240
+ : await downloadAndSaveBase(validProjects, format, token, { meta });
241
+ msg += generateJsDriver(validProjects, variants, format);
242
+ msg += `\n${output_1.default.success("Done")}!`;
243
+ spinner.stop();
244
+ return console.log(msg);
245
+ }
246
+ catch (e) {
247
+ spinner.stop();
248
+ let error = e.message;
249
+ if (e.response && e.response.status === 404) {
250
+ await askForAnotherToken();
251
+ (0, exports.pull)();
252
+ return;
253
+ }
254
+ if (e.response && e.response.status === 401) {
255
+ error = "You don't have access to the selected projects";
256
+ msg = `${output_1.default.errorText(error)}.\nChoose others using the ${output_1.default.info("project")} command, or update your API key.`;
257
+ return console.log(msg);
258
+ }
259
+ if (e.response && e.response.status === 403) {
260
+ error =
261
+ "One or more of the requested projects don't have Developer Mode enabled";
262
+ 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")}.`;
263
+ return console.log(msg);
264
+ }
265
+ if (e.response && e.response.status === 400) {
266
+ error = "projects not found";
267
+ }
268
+ 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.`;
269
+ return console.log(msg);
270
+ }
271
+ }
272
+ const pull = (options) => {
273
+ const meta = options ? options.meta : {};
274
+ const token = config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST);
275
+ const sourceInformation = config_1.default.parseSourceInformation();
276
+ return downloadAndSave(sourceInformation, token, { meta });
277
+ };
278
+ exports.pull = pull;
279
+ exports.default = {
280
+ pull: exports.pull,
281
+ _testing: {
282
+ cleanOutputFiles,
283
+ downloadAndSaveVariant,
284
+ downloadAndSaveVariants,
285
+ downloadAndSaveBase,
286
+ },
287
+ };
288
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../lib/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
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 allProjects = isUsingComponents
21
+ ? [{ id: "components", name: "Ditto Component Library" }, ...projects]
22
+ : projects;
23
+ 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",
28
+ });
29
+ if (!projectToRemove)
30
+ return;
31
+ config_1.default.writeProjectConfigData(consts_1.default.PROJECT_CONFIG_FILE, {
32
+ components: isUsingComponents && projectToRemove.id !== "components",
33
+ projects: projects.filter(({ id }) => id !== projectToRemove.id),
34
+ });
35
+ console.log(`\n${output_1.default.info(projectToRemove.name)} has been removed from your selected projects. ` +
36
+ `\nWe saved your updated configuration to: ${output_1.default.info(consts_1.default.PROJECT_CONFIG_FILE)}` +
37
+ "\n");
38
+ }
39
+ exports.default = removeProject;
40
+ //# sourceMappingURL=remove-project.js.map
@@ -0,0 +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"}
package/bin/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":""}