@dittowords/cli 4.5.1 → 5.0.0-beta.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 +6 -5
- package/bin/ditto.js +110 -285
- package/package.json +16 -10
- package/.github/actions/install-node-dependencies/action.yml +0 -24
- package/.github/workflows/required-checks.yml +0 -24
- package/.husky/pre-commit +0 -4
- package/.prettierignore +0 -0
- package/.prettierrc.json +0 -1
- package/__mocks__/fs.js +0 -2
- package/babel.config.js +0 -6
- package/bin/__mocks__/api.js +0 -48
- package/bin/__mocks__/api.js.map +0 -1
- package/bin/add-project.js +0 -104
- package/bin/add-project.js.map +0 -1
- package/bin/api.js +0 -53
- package/bin/api.js.map +0 -1
- package/bin/component-folders.js +0 -59
- package/bin/component-folders.js.map +0 -1
- package/bin/config.js +0 -242
- package/bin/config.js.map +0 -1
- package/bin/config.test.js +0 -93
- package/bin/config.test.js.map +0 -1
- package/bin/consts.js +0 -57
- package/bin/consts.js.map +0 -1
- package/bin/ditto.js.map +0 -1
- package/bin/generate-suggestions.js +0 -183
- package/bin/generate-suggestions.js.map +0 -1
- package/bin/generate-suggestions.test.js +0 -200
- package/bin/generate-suggestions.test.js.map +0 -1
- package/bin/http/__mocks__/fetchComponentFolders.js +0 -71
- package/bin/http/__mocks__/fetchComponentFolders.js.map +0 -1
- package/bin/http/__mocks__/fetchComponents.js +0 -73
- package/bin/http/__mocks__/fetchComponents.js.map +0 -1
- package/bin/http/__mocks__/fetchVariants.js +0 -71
- package/bin/http/__mocks__/fetchVariants.js.map +0 -1
- package/bin/http/fetchComponentFolders.js +0 -64
- package/bin/http/fetchComponentFolders.js.map +0 -1
- package/bin/http/fetchComponents.js +0 -78
- package/bin/http/fetchComponents.js.map +0 -1
- package/bin/http/fetchVariants.js +0 -87
- package/bin/http/fetchVariants.js.map +0 -1
- package/bin/http/http.test.js +0 -159
- package/bin/http/http.test.js.map +0 -1
- package/bin/http/importComponents.js +0 -114
- package/bin/http/importComponents.js.map +0 -1
- package/bin/importComponents.js +0 -65
- package/bin/importComponents.js.map +0 -1
- package/bin/init/init.js +0 -126
- package/bin/init/init.js.map +0 -1
- package/bin/init/project.js +0 -182
- package/bin/init/project.js.map +0 -1
- package/bin/init/project.test.js +0 -26
- package/bin/init/project.test.js.map +0 -1
- package/bin/init/token.js +0 -196
- package/bin/init/token.js.map +0 -1
- package/bin/init/token.test.js +0 -147
- package/bin/init/token.test.js.map +0 -1
- package/bin/output.js +0 -76
- package/bin/output.js.map +0 -1
- package/bin/pull-lib.test.js +0 -379
- package/bin/pull-lib.test.js.map +0 -1
- package/bin/pull.js +0 -562
- package/bin/pull.js.map +0 -1
- package/bin/pull.test.js +0 -151
- package/bin/pull.test.js.map +0 -1
- package/bin/remove-project.js +0 -99
- package/bin/remove-project.js.map +0 -1
- package/bin/replace.js +0 -171
- package/bin/replace.js.map +0 -1
- package/bin/replace.test.js +0 -197
- package/bin/replace.test.js.map +0 -1
- package/bin/types.js +0 -21
- package/bin/types.js.map +0 -1
- package/bin/utils/cleanFileName.js +0 -40
- package/bin/utils/cleanFileName.js.map +0 -1
- package/bin/utils/cleanFileName.test.js +0 -15
- package/bin/utils/cleanFileName.test.js.map +0 -1
- package/bin/utils/createSentryContext.js +0 -43
- package/bin/utils/createSentryContext.js.map +0 -1
- package/bin/utils/determineModuleType.js +0 -79
- package/bin/utils/determineModuleType.js.map +0 -1
- package/bin/utils/determineModuleType.test.js +0 -60
- package/bin/utils/determineModuleType.test.js.map +0 -1
- package/bin/utils/generateIOSBundles.js +0 -147
- package/bin/utils/generateIOSBundles.js.map +0 -1
- package/bin/utils/generateJsDriver.js +0 -178
- package/bin/utils/generateJsDriver.js.map +0 -1
- package/bin/utils/generateJsDriverTypeFile.js +0 -105
- package/bin/utils/generateJsDriverTypeFile.js.map +0 -1
- package/bin/utils/generateSwiftDriver.js +0 -93
- package/bin/utils/generateSwiftDriver.js.map +0 -1
- package/bin/utils/getSelectedProjects.js +0 -67
- package/bin/utils/getSelectedProjects.js.map +0 -1
- package/bin/utils/processMetaOption.js +0 -40
- package/bin/utils/processMetaOption.js.map +0 -1
- package/bin/utils/processMetaOption.test.js +0 -45
- package/bin/utils/processMetaOption.test.js.map +0 -1
- package/bin/utils/projectsToText.js +0 -58
- package/bin/utils/projectsToText.js.map +0 -1
- package/bin/utils/promptForProject.js +0 -96
- package/bin/utils/promptForProject.js.map +0 -1
- package/bin/utils/quit.js +0 -73
- package/bin/utils/quit.js.map +0 -1
- package/bin/utils/sourcesToText.js +0 -57
- package/bin/utils/sourcesToText.js.map +0 -1
- package/etsc.config.js +0 -13
- package/jest.config.ts +0 -16
- package/jsconfig.json +0 -5
- package/lib/__mocks__/api.ts +0 -12
- package/lib/add-project.ts +0 -48
- package/lib/api.ts +0 -15
- package/lib/component-folders.ts +0 -9
- package/lib/config.test.ts +0 -79
- package/lib/config.ts +0 -279
- package/lib/consts.ts +0 -22
- package/lib/ditto.ts +0 -285
- package/lib/generate-suggestions.test.ts +0 -169
- package/lib/generate-suggestions.ts +0 -166
- package/lib/http/__mocks__/fetchComponentFolders.ts +0 -23
- package/lib/http/__mocks__/fetchComponents.ts +0 -24
- package/lib/http/__mocks__/fetchVariants.ts +0 -21
- package/lib/http/fetchComponentFolders.ts +0 -23
- package/lib/http/fetchComponents.ts +0 -43
- package/lib/http/fetchVariants.ts +0 -42
- package/lib/http/http.test.ts +0 -122
- package/lib/http/importComponents.ts +0 -79
- package/lib/importComponents.ts +0 -24
- package/lib/init/init.ts +0 -79
- package/lib/init/project.test.ts +0 -26
- package/lib/init/project.ts +0 -136
- package/lib/init/token.test.ts +0 -99
- package/lib/init/token.ts +0 -156
- package/lib/output.ts +0 -21
- package/lib/pull-lib.test.ts +0 -367
- package/lib/pull.test.ts +0 -117
- package/lib/pull.ts +0 -629
- package/lib/remove-project.ts +0 -44
- package/lib/replace.test.ts +0 -157
- package/lib/replace.ts +0 -140
- package/lib/types.ts +0 -83
- package/lib/utils/cleanFileName.test.ts +0 -11
- package/lib/utils/cleanFileName.ts +0 -8
- package/lib/utils/createSentryContext.ts +0 -20
- package/lib/utils/determineModuleType.test.ts +0 -48
- package/lib/utils/determineModuleType.ts +0 -55
- package/lib/utils/generateIOSBundles.ts +0 -122
- package/lib/utils/generateJsDriver.ts +0 -207
- package/lib/utils/generateJsDriverTypeFile.ts +0 -75
- package/lib/utils/generateSwiftDriver.ts +0 -48
- package/lib/utils/getSelectedProjects.ts +0 -36
- package/lib/utils/processMetaOption.test.ts +0 -18
- package/lib/utils/processMetaOption.ts +0 -16
- package/lib/utils/projectsToText.ts +0 -29
- package/lib/utils/promptForProject.ts +0 -61
- package/lib/utils/quit.ts +0 -7
- package/lib/utils/sourcesToText.ts +0 -25
- package/pull_request_template.md +0 -20
- package/testfiles/en.json +0 -5
- package/testfiles/es.json +0 -5
- package/testfiles/fr.json +0 -5
- package/testfiles/test1.jsx +0 -18
- package/testfiles/test2.jsx +0 -9
- package/testing/.gitkeep +0 -0
- package/testing/fixtures/bad-yaml.yml +0 -6
- package/testing/fixtures/ditto-config-no-token +0 -2
- package/testing/fixtures/project-config-empty-projects.yml +0 -1
- package/testing/fixtures/project-config-no-id.yml +0 -2
- package/testing/fixtures/project-config-no-name.yml +0 -2
- package/testing/fixtures/project-config-pull.yml +0 -0
- package/testing/fixtures/project-config-working.yml +0 -3
- package/tsconfig.json +0 -16
package/.husky/pre-commit
DELETED
package/.prettierignore
DELETED
|
File without changes
|
package/.prettierrc.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
package/__mocks__/fs.js
DELETED
package/babel.config.js
DELETED
package/bin/__mocks__/api.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="51c68d0d-369a-5afd-94e3-53c6ae77c043")}catch(e){}}();
|
|
3
|
-
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __export = (target, all) => {
|
|
11
|
-
for (var name in all)
|
|
12
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
-
};
|
|
14
|
-
var __copyProps = (to, from, except, desc) => {
|
|
15
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
-
for (let key of __getOwnPropNames(from))
|
|
17
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
-
mod
|
|
29
|
-
));
|
|
30
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
-
var api_exports = {};
|
|
32
|
-
__export(api_exports, {
|
|
33
|
-
createApiClient: () => createApiClient
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(api_exports);
|
|
36
|
-
var import_axios = __toESM(require("axios"));
|
|
37
|
-
var import_globals = require("@jest/globals");
|
|
38
|
-
import_globals.jest.mock("axios");
|
|
39
|
-
function createApiClient(_token) {
|
|
40
|
-
return import_axios.default;
|
|
41
|
-
}
|
|
42
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
43
|
-
0 && (module.exports = {
|
|
44
|
-
createApiClient
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=api.js.map
|
|
47
|
-
|
|
48
|
-
//# debugId=51c68d0d-369a-5afd-94e3-53c6ae77c043
|
package/bin/__mocks__/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/__mocks__/api.ts"],"sourcesContent":["import axios from \"axios\";\nimport { jest } from \"@jest/globals\";\n\njest.mock(\"axios\");\n\n// by returning the mocked module directly, we can mock responses in tests\n// like `axios.get.mockResolvedValue()`; otherwise, we'd be unable to mock\n// responses because `createApiClient` would be returning an axios instance\n// unaffected by mocks applied to the `axios` module itself.\nexport function createApiClient(_token?: string) {\n return axios;\n}\n"],"names":["axios"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,qBAAqB;AAErB,oBAAK,KAAK,OAAO;AAMV,SAAS,gBAAgB,QAAiB;AAC/C,SAAO,aAAAA;AACT","debug_id":"51c68d0d-369a-5afd-94e3-53c6ae77c043"}
|
package/bin/add-project.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="72f8d6ab-72cd-57e6-be16-5c5600e1cd7a")}catch(e){}}();
|
|
3
|
-
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __export = (target, all) => {
|
|
11
|
-
for (var name in all)
|
|
12
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
-
};
|
|
14
|
-
var __copyProps = (to, from, except, desc) => {
|
|
15
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
-
for (let key of __getOwnPropNames(from))
|
|
17
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
-
mod
|
|
29
|
-
));
|
|
30
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
-
var __async = (__this, __arguments, generator) => {
|
|
32
|
-
return new Promise((resolve, reject) => {
|
|
33
|
-
var fulfilled = (value) => {
|
|
34
|
-
try {
|
|
35
|
-
step(generator.next(value));
|
|
36
|
-
} catch (e) {
|
|
37
|
-
reject(e);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var rejected = (value) => {
|
|
41
|
-
try {
|
|
42
|
-
step(generator.throw(value));
|
|
43
|
-
} catch (e) {
|
|
44
|
-
reject(e);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
48
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
var add_project_exports = {};
|
|
52
|
-
__export(add_project_exports, {
|
|
53
|
-
default: () => add_project_default
|
|
54
|
-
});
|
|
55
|
-
module.exports = __toCommonJS(add_project_exports);
|
|
56
|
-
var import_project = require("./init/project");
|
|
57
|
-
var import_projectsToText = __toESM(require("./utils/projectsToText"));
|
|
58
|
-
var import_getSelectedProjects = require("./utils/getSelectedProjects");
|
|
59
|
-
var import_output = __toESM(require("./output"));
|
|
60
|
-
var import_quit = require("./utils/quit");
|
|
61
|
-
const addProject = () => __async(void 0, null, function* () {
|
|
62
|
-
const projects = (0, import_getSelectedProjects.getSelectedProjects)();
|
|
63
|
-
const usingComponents = (0, import_getSelectedProjects.getIsUsingComponents)();
|
|
64
|
-
try {
|
|
65
|
-
if (usingComponents) {
|
|
66
|
-
if (projects.length) {
|
|
67
|
-
console.log(
|
|
68
|
-
`
|
|
69
|
-
You're currently syncing text from the ${import_output.default.info(
|
|
70
|
-
"Component Library"
|
|
71
|
-
)} and from the following projects: ${(0, import_projectsToText.default)(projects)}`
|
|
72
|
-
);
|
|
73
|
-
} else {
|
|
74
|
-
console.log(
|
|
75
|
-
`
|
|
76
|
-
You're currently only syncing text from the ${import_output.default.info(
|
|
77
|
-
"Component Library"
|
|
78
|
-
)}`
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
} else if (projects.length) {
|
|
82
|
-
console.log(
|
|
83
|
-
`
|
|
84
|
-
You're currently set up to sync text from the following projects: ${(0, import_projectsToText.default)(
|
|
85
|
-
projects
|
|
86
|
-
)}`
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
yield (0, import_project.collectAndSaveSource)({
|
|
90
|
-
components: false
|
|
91
|
-
});
|
|
92
|
-
} catch (error) {
|
|
93
|
-
console.log(
|
|
94
|
-
`
|
|
95
|
-
Sorry, there was an error adding a project to your workspace: `,
|
|
96
|
-
error
|
|
97
|
-
);
|
|
98
|
-
yield (0, import_quit.quit)("Project selection was not updated.");
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
var add_project_default = addProject;
|
|
102
|
-
//# sourceMappingURL=add-project.js.map
|
|
103
|
-
|
|
104
|
-
//# debugId=72f8d6ab-72cd-57e6-be16-5c5600e1cd7a
|
package/bin/add-project.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/add-project.ts"],"sourcesContent":["import { collectAndSaveSource } from \"./init/project\";\nimport projectsToText from \"./utils/projectsToText\";\nimport {\n getSelectedProjects,\n getIsUsingComponents,\n} from \"./utils/getSelectedProjects\";\nimport output from \"./output\";\nimport { quit } from \"./utils/quit\";\n\nconst addProject = async () => {\n const projects = getSelectedProjects();\n const usingComponents = getIsUsingComponents();\n\n try {\n if (usingComponents) {\n if (projects.length) {\n console.log(\n `\\nYou're currently syncing text from the ${output.info(\n \"Component Library\"\n )} and from the following projects: ${projectsToText(projects)}`\n );\n } else {\n console.log(\n `\\nYou're currently only syncing text from the ${output.info(\n \"Component Library\"\n )}`\n );\n }\n } else if (projects.length) {\n console.log(\n `\\nYou're currently set up to sync text from the following projects: ${projectsToText(\n projects\n )}`\n );\n }\n await collectAndSaveSource({\n components: false,\n });\n } catch (error) {\n console.log(\n `\\nSorry, there was an error adding a project to your workspace: `,\n error\n );\n await quit(\"Project selection was not updated.\");\n }\n};\n\nexport default addProject;\n"],"names":["output","projectsToText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAqC;AACrC,4BAA2B;AAC3B,iCAGO;AACP,oBAAmB;AACnB,kBAAqB;AAErB,MAAM,aAAa,MAAY;AAC7B,QAAM,eAAW,gDAAoB;AACrC,QAAM,sBAAkB,iDAAqB;AAE7C,MAAI;AACF,QAAI,iBAAiB;AACnB,UAAI,SAAS,QAAQ;AACnB,gBAAQ;AAAA,UACN;AAAA,yCAA4C,cAAAA,QAAO;AAAA,YACjD;AAAA,UACF,CAAC,yCAAqC,sBAAAC,SAAe,QAAQ,CAAC;AAAA,QAChE;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,UACN;AAAA,8CAAiD,cAAAD,QAAO;AAAA,YACtD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,WAAW,SAAS,QAAQ;AAC1B,cAAQ;AAAA,QACN;AAAA,wEAAuE,sBAAAC;AAAA,UACrE;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,cAAM,qCAAqB;AAAA,MACzB,YAAY;AAAA,IACd,CAAC;AAAA,EACH,SAAS,OAAO;AACd,YAAQ;AAAA,MACN;AAAA;AAAA,MACA;AAAA,IACF;AACA,cAAM,kBAAK,oCAAoC;AAAA,EACjD;AACF;AAEA,IAAO,sBAAQ","debug_id":"72f8d6ab-72cd-57e6-be16-5c5600e1cd7a"}
|
package/bin/api.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="60c0c8b2-1610-5e22-a814-c819798eb831")}catch(e){}}();
|
|
3
|
-
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __export = (target, all) => {
|
|
11
|
-
for (var name in all)
|
|
12
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
-
};
|
|
14
|
-
var __copyProps = (to, from, except, desc) => {
|
|
15
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
-
for (let key of __getOwnPropNames(from))
|
|
17
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
-
mod
|
|
29
|
-
));
|
|
30
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
-
var api_exports = {};
|
|
32
|
-
__export(api_exports, {
|
|
33
|
-
createApiClient: () => createApiClient
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(api_exports);
|
|
36
|
-
var import_axios = __toESM(require("axios"));
|
|
37
|
-
var import_config = __toESM(require("./config"));
|
|
38
|
-
var import_consts = __toESM(require("./consts"));
|
|
39
|
-
function createApiClient(token) {
|
|
40
|
-
return import_axios.default.create({
|
|
41
|
-
baseURL: import_consts.default.API_HOST,
|
|
42
|
-
headers: {
|
|
43
|
-
Authorization: `token ${token || import_config.default.getToken(import_consts.default.CONFIG_FILE, import_consts.default.API_HOST)}`
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
-
0 && (module.exports = {
|
|
49
|
-
createApiClient
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=api.js.map
|
|
52
|
-
|
|
53
|
-
//# debugId=60c0c8b2-1610-5e22-a814-c819798eb831
|
package/bin/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/api.ts"],"sourcesContent":["import axios from \"axios\";\n\nimport config from \"./config\";\nimport consts from \"./consts\";\n\nexport function createApiClient(token?: string) {\n return axios.create({\n baseURL: consts.API_HOST,\n headers: {\n Authorization: `token ${\n token || config.getToken(consts.CONFIG_FILE, consts.API_HOST)\n }`,\n },\n });\n}\n"],"names":["axios","consts","config"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,oBAAmB;AACnB,oBAAmB;AAEZ,SAAS,gBAAgB,OAAgB;AAC9C,SAAO,aAAAA,QAAM,OAAO;AAAA,IAClB,SAAS,cAAAC,QAAO;AAAA,IAChB,SAAS;AAAA,MACP,eAAe,SACb,SAAS,cAAAC,QAAO,SAAS,cAAAD,QAAO,aAAa,cAAAA,QAAO,QAAQ,CAC9D;AAAA,IACF;AAAA,EACF,CAAC;AACH","debug_id":"60c0c8b2-1610-5e22-a814-c819798eb831"}
|
package/bin/component-folders.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4fb8a198-5e49-52eb-9feb-bd5a168607c5")}catch(e){}}();
|
|
3
|
-
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
-
var __async = (__this, __arguments, generator) => {
|
|
22
|
-
return new Promise((resolve, reject) => {
|
|
23
|
-
var fulfilled = (value) => {
|
|
24
|
-
try {
|
|
25
|
-
step(generator.next(value));
|
|
26
|
-
} catch (e) {
|
|
27
|
-
reject(e);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
var rejected = (value) => {
|
|
31
|
-
try {
|
|
32
|
-
step(generator.throw(value));
|
|
33
|
-
} catch (e) {
|
|
34
|
-
reject(e);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
38
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
var component_folders_exports = {};
|
|
42
|
-
__export(component_folders_exports, {
|
|
43
|
-
showComponentFolders: () => showComponentFolders
|
|
44
|
-
});
|
|
45
|
-
module.exports = __toCommonJS(component_folders_exports);
|
|
46
|
-
var import_fetchComponentFolders = require("./http/fetchComponentFolders");
|
|
47
|
-
function showComponentFolders(options) {
|
|
48
|
-
return __async(this, null, function* () {
|
|
49
|
-
const folders = yield (0, import_fetchComponentFolders.fetchComponentFolders)(options);
|
|
50
|
-
console.log(JSON.stringify(folders));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
-
0 && (module.exports = {
|
|
55
|
-
showComponentFolders
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=component-folders.js.map
|
|
58
|
-
|
|
59
|
-
//# debugId=4fb8a198-5e49-52eb-9feb-bd5a168607c5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/component-folders.ts"],"sourcesContent":["import { fetchComponentFolders } from \"./http/fetchComponentFolders\";\n\nasync function showComponentFolders(options: { showSampleData?: boolean }) {\n const folders = await fetchComponentFolders(options);\n\n console.log(JSON.stringify(folders));\n}\n\nexport { showComponentFolders };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAAsC;AAEtC,SAAe,qBAAqB,SAAuC;AAAA;AACzE,UAAM,UAAU,UAAM,oDAAsB,OAAO;AAEnD,YAAQ,IAAI,KAAK,UAAU,OAAO,CAAC;AAAA,EACrC;AAAA","debug_id":"4fb8a198-5e49-52eb-9feb-bd5a168607c5"}
|
package/bin/config.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e8a84d0c-2e74-5c27-aee1-a1e1a393e89e")}catch(e){}}();
|
|
3
|
-
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __defProps = Object.defineProperties;
|
|
7
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
9
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
12
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
14
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
-
var __spreadValues = (a, b) => {
|
|
16
|
-
for (var prop in b || (b = {}))
|
|
17
|
-
if (__hasOwnProp.call(b, prop))
|
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
|
19
|
-
if (__getOwnPropSymbols)
|
|
20
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
-
if (__propIsEnum.call(b, prop))
|
|
22
|
-
__defNormalProp(a, prop, b[prop]);
|
|
23
|
-
}
|
|
24
|
-
return a;
|
|
25
|
-
};
|
|
26
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
|
-
var __export = (target, all) => {
|
|
28
|
-
for (var name in all)
|
|
29
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
30
|
-
};
|
|
31
|
-
var __copyProps = (to, from, except, desc) => {
|
|
32
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
33
|
-
for (let key of __getOwnPropNames(from))
|
|
34
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
35
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
36
|
-
}
|
|
37
|
-
return to;
|
|
38
|
-
};
|
|
39
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
40
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
41
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
42
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
43
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
44
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
45
|
-
mod
|
|
46
|
-
));
|
|
47
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
48
|
-
var config_exports = {};
|
|
49
|
-
__export(config_exports, {
|
|
50
|
-
DEFAULT_CONFIG: () => DEFAULT_CONFIG,
|
|
51
|
-
DEFAULT_CONFIG_JSON: () => DEFAULT_CONFIG_JSON,
|
|
52
|
-
default: () => config_default
|
|
53
|
-
});
|
|
54
|
-
module.exports = __toCommonJS(config_exports);
|
|
55
|
-
var import_fs = __toESM(require("fs"));
|
|
56
|
-
var import_path = __toESM(require("path"));
|
|
57
|
-
var import_url = __toESM(require("url"));
|
|
58
|
-
var import_js_yaml = __toESM(require("js-yaml"));
|
|
59
|
-
var Sentry = __toESM(require("@sentry/node"));
|
|
60
|
-
var import_consts = __toESM(require("./consts"));
|
|
61
|
-
var import_createSentryContext = require("./utils/createSentryContext");
|
|
62
|
-
const DEFAULT_CONFIG_JSON = {
|
|
63
|
-
sources: {
|
|
64
|
-
components: true
|
|
65
|
-
},
|
|
66
|
-
variants: true,
|
|
67
|
-
format: "flat"
|
|
68
|
-
};
|
|
69
|
-
const DEFAULT_CONFIG = import_js_yaml.default.dump(DEFAULT_CONFIG_JSON);
|
|
70
|
-
function createFileIfMissing(filename, defaultContents) {
|
|
71
|
-
const dir = import_path.default.dirname(filename);
|
|
72
|
-
if (!import_fs.default.existsSync(dir))
|
|
73
|
-
import_fs.default.mkdirSync(dir);
|
|
74
|
-
if (!import_fs.default.existsSync(filename)) {
|
|
75
|
-
import_fs.default.writeFileSync(filename, defaultContents || "", "utf-8");
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function jsonIsConfigYAML(json) {
|
|
79
|
-
return typeof json === "object";
|
|
80
|
-
}
|
|
81
|
-
function jsonIsGlobalYAML(json) {
|
|
82
|
-
return !!json && typeof json === "object" && Object.values(json).every(
|
|
83
|
-
(arr) => arr.every && arr.every(
|
|
84
|
-
(val) => typeof val === "object" && Object.keys(val).includes("token")
|
|
85
|
-
)
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
function readProjectConfigData(file = import_consts.default.PROJECT_CONFIG_FILE, defaultData = {}) {
|
|
89
|
-
createFileIfMissing(file, DEFAULT_CONFIG);
|
|
90
|
-
const fileContents = import_fs.default.readFileSync(file, "utf8");
|
|
91
|
-
const yamlData = import_js_yaml.default.load(fileContents);
|
|
92
|
-
if (jsonIsConfigYAML(yamlData)) {
|
|
93
|
-
return yamlData;
|
|
94
|
-
}
|
|
95
|
-
return defaultData;
|
|
96
|
-
}
|
|
97
|
-
function readGlobalConfigData(file = import_consts.default.CONFIG_FILE, defaultData = {}) {
|
|
98
|
-
createFileIfMissing(file);
|
|
99
|
-
const fileContents = import_fs.default.readFileSync(file, "utf8");
|
|
100
|
-
const yamlData = import_js_yaml.default.load(fileContents);
|
|
101
|
-
if (jsonIsGlobalYAML(yamlData)) {
|
|
102
|
-
return yamlData;
|
|
103
|
-
}
|
|
104
|
-
return defaultData;
|
|
105
|
-
}
|
|
106
|
-
function writeProjectConfigData(file, data) {
|
|
107
|
-
createFileIfMissing(file, DEFAULT_CONFIG);
|
|
108
|
-
const existingData = readProjectConfigData(file);
|
|
109
|
-
const configData = __spreadProps(__spreadValues(__spreadValues({}, existingData), data), {
|
|
110
|
-
sources: __spreadValues(__spreadValues({}, existingData.sources), data.sources)
|
|
111
|
-
});
|
|
112
|
-
const yamlStr = import_js_yaml.default.dump(configData);
|
|
113
|
-
import_fs.default.writeFileSync(file, yamlStr, "utf8");
|
|
114
|
-
}
|
|
115
|
-
function writeGlobalConfigData(file, data) {
|
|
116
|
-
createFileIfMissing(file);
|
|
117
|
-
const existingData = readGlobalConfigData(file);
|
|
118
|
-
const yamlStr = import_js_yaml.default.dump(__spreadValues(__spreadValues({}, existingData), data));
|
|
119
|
-
import_fs.default.writeFileSync(file, yamlStr, "utf8");
|
|
120
|
-
}
|
|
121
|
-
function justTheHost(host) {
|
|
122
|
-
if (!host.includes("://"))
|
|
123
|
-
return host;
|
|
124
|
-
return import_url.default.parse(host).hostname || "";
|
|
125
|
-
}
|
|
126
|
-
function deleteToken(file, host) {
|
|
127
|
-
const data = readGlobalConfigData(file);
|
|
128
|
-
const hostParsed = justTheHost(host);
|
|
129
|
-
data[hostParsed] = [];
|
|
130
|
-
data[hostParsed][0] = { token: "" };
|
|
131
|
-
writeGlobalConfigData(file, data);
|
|
132
|
-
}
|
|
133
|
-
function saveToken(file, host, token) {
|
|
134
|
-
const data = readGlobalConfigData(file);
|
|
135
|
-
const hostParsed = justTheHost(host);
|
|
136
|
-
data[hostParsed] = [];
|
|
137
|
-
data[hostParsed][0] = { token };
|
|
138
|
-
writeGlobalConfigData(file, data);
|
|
139
|
-
}
|
|
140
|
-
function getTokenFromEnv() {
|
|
141
|
-
return process.env.DITTO_API_KEY;
|
|
142
|
-
}
|
|
143
|
-
function getToken(file, host) {
|
|
144
|
-
const tokenFromEnv = getTokenFromEnv();
|
|
145
|
-
if (tokenFromEnv) {
|
|
146
|
-
return tokenFromEnv;
|
|
147
|
-
}
|
|
148
|
-
const data = readGlobalConfigData(file);
|
|
149
|
-
const hostEntry = data[justTheHost(host)];
|
|
150
|
-
if (!hostEntry)
|
|
151
|
-
return void 0;
|
|
152
|
-
const { length } = hostEntry;
|
|
153
|
-
return hostEntry[length - 1].token;
|
|
154
|
-
}
|
|
155
|
-
const IS_DUPLICATE = /-(\d+$)/;
|
|
156
|
-
function dedupeProjectName(projectNames, projectName) {
|
|
157
|
-
let dedupedName = projectName;
|
|
158
|
-
if (projectNames.has(dedupedName)) {
|
|
159
|
-
while (projectNames.has(dedupedName)) {
|
|
160
|
-
const [_, numberStr] = dedupedName.match(IS_DUPLICATE) || [];
|
|
161
|
-
if (numberStr && !isNaN(parseInt(numberStr))) {
|
|
162
|
-
dedupedName = `${dedupedName.replace(IS_DUPLICATE, "")}-${parseInt(numberStr) + 1}`;
|
|
163
|
-
} else {
|
|
164
|
-
dedupedName = `${dedupedName}-1`;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return dedupedName;
|
|
169
|
-
}
|
|
170
|
-
function parseSourceInformation(file) {
|
|
171
|
-
const {
|
|
172
|
-
sources,
|
|
173
|
-
variants,
|
|
174
|
-
format,
|
|
175
|
-
status,
|
|
176
|
-
richText,
|
|
177
|
-
iosLocales,
|
|
178
|
-
projects: projectsRoot,
|
|
179
|
-
components: componentsRoot,
|
|
180
|
-
disableJsDriver
|
|
181
|
-
} = readProjectConfigData(file);
|
|
182
|
-
const projects = (sources == null ? void 0 : sources.projects) || [];
|
|
183
|
-
const projectNames = /* @__PURE__ */ new Set();
|
|
184
|
-
const validProjects = [];
|
|
185
|
-
let hasComponentLibraryInProjects = false;
|
|
186
|
-
(projects || []).forEach((project) => {
|
|
187
|
-
const isValid = project.id && project.name;
|
|
188
|
-
if (!isValid) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
if (project.id === "ditto_component_library") {
|
|
192
|
-
hasComponentLibraryInProjects = true;
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
project.fileName = dedupeProjectName(projectNames, project.name);
|
|
196
|
-
projectNames.add(project.fileName);
|
|
197
|
-
validProjects.push(project);
|
|
198
|
-
});
|
|
199
|
-
const shouldFetchComponentLibrary = Boolean(sources == null ? void 0 : sources.components);
|
|
200
|
-
const componentRoot = typeof (sources == null ? void 0 : sources.components) === "object" ? sources.components.root : void 0;
|
|
201
|
-
const componentFolders = typeof (sources == null ? void 0 : sources.components) === "object" ? sources.components.folders : void 0;
|
|
202
|
-
const hasSourceData = !!validProjects.length || shouldFetchComponentLibrary;
|
|
203
|
-
const result = {
|
|
204
|
-
hasSourceData,
|
|
205
|
-
validProjects,
|
|
206
|
-
shouldFetchComponentLibrary,
|
|
207
|
-
variants: variants || false,
|
|
208
|
-
format,
|
|
209
|
-
status,
|
|
210
|
-
richText,
|
|
211
|
-
hasTopLevelProjectsField: !!projectsRoot,
|
|
212
|
-
hasTopLevelComponentsField: !!componentsRoot,
|
|
213
|
-
hasComponentLibraryInProjects,
|
|
214
|
-
componentRoot,
|
|
215
|
-
componentFolders,
|
|
216
|
-
localeByVariantApiId: iosLocales ? iosLocales.reduce((acc, e) => __spreadValues(__spreadValues({}, acc), e), {}) : void 0,
|
|
217
|
-
disableJsDriver
|
|
218
|
-
};
|
|
219
|
-
Sentry.setContext("config", (0, import_createSentryContext.createSentryContext)(result));
|
|
220
|
-
return result;
|
|
221
|
-
}
|
|
222
|
-
var config_default = {
|
|
223
|
-
createFileIfMissing,
|
|
224
|
-
readProjectConfigData,
|
|
225
|
-
readGlobalConfigData,
|
|
226
|
-
writeGlobalConfigData,
|
|
227
|
-
writeProjectConfigData,
|
|
228
|
-
justTheHost,
|
|
229
|
-
saveToken,
|
|
230
|
-
deleteToken,
|
|
231
|
-
getToken,
|
|
232
|
-
getTokenFromEnv,
|
|
233
|
-
parseSourceInformation
|
|
234
|
-
};
|
|
235
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
236
|
-
0 && (module.exports = {
|
|
237
|
-
DEFAULT_CONFIG,
|
|
238
|
-
DEFAULT_CONFIG_JSON
|
|
239
|
-
});
|
|
240
|
-
//# sourceMappingURL=config.js.map
|
|
241
|
-
|
|
242
|
-
//# debugId=e8a84d0c-2e74-5c27-aee1-a1e1a393e89e
|
package/bin/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/config.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport url from \"url\";\nimport yaml from \"js-yaml\";\nimport * as Sentry from \"@sentry/node\";\n\nimport consts from \"./consts\";\nimport { createSentryContext } from \"./utils/createSentryContext\";\nimport { Project, ConfigYAML, SourceInformation, Source } from \"./types\";\n\nexport const DEFAULT_CONFIG_JSON: ConfigYAML = {\n sources: {\n components: true,\n },\n variants: true,\n format: \"flat\",\n};\n\nexport const DEFAULT_CONFIG = yaml.dump(DEFAULT_CONFIG_JSON);\n\nfunction createFileIfMissing(filename: string, defaultContents?: any) {\n const dir = path.dirname(filename);\n\n // create the directory if it doesn't already exist\n if (!fs.existsSync(dir)) fs.mkdirSync(dir);\n\n // create the file if it doesn't already exist\n if (!fs.existsSync(filename)) {\n // create the file, writing the `defaultContents` if provided\n fs.writeFileSync(filename, defaultContents || \"\", \"utf-8\");\n }\n}\n\nfunction jsonIsConfigYAML(json: unknown): json is ConfigYAML {\n return typeof json === \"object\";\n}\n\nfunction jsonIsGlobalYAML(\n json: unknown\n): json is Record<string, { token: string }[]> {\n return (\n !!json &&\n typeof json === \"object\" &&\n Object.values(json).every(\n (arr) =>\n (arr as any).every &&\n arr.every(\n (val: any) =>\n typeof val === \"object\" && Object.keys(val).includes(\"token\")\n )\n )\n );\n}\n\n/**\n * Read data from a project config file\n * @param {string} file defaults to `PROJECT_CONFIG_FILE` defined in `constants.js`\n * @param {*} defaultData defaults to `{}`\n * @returns { ConfigYAML }\n */\nfunction readProjectConfigData(\n file = consts.PROJECT_CONFIG_FILE,\n defaultData = {}\n): ConfigYAML {\n createFileIfMissing(file, DEFAULT_CONFIG);\n const fileContents = fs.readFileSync(file, \"utf8\");\n const yamlData = yaml.load(fileContents);\n if (jsonIsConfigYAML(yamlData)) {\n return yamlData;\n }\n return defaultData;\n}\n\n/**\n * Read data from a global config file\n * @param {string} file defaults to `CONFIG_FILE` defined in `constants.js`\n * @param {*} defaultData defaults to `{}`\n * @returns { Record<string, { token: string }[]> }\n */\nfunction readGlobalConfigData(\n file = consts.CONFIG_FILE,\n defaultData = {}\n): Record<string, { token: string }[]> {\n createFileIfMissing(file);\n const fileContents = fs.readFileSync(file, \"utf8\");\n const yamlData = yaml.load(fileContents);\n if (jsonIsGlobalYAML(yamlData)) {\n return yamlData;\n }\n return defaultData;\n}\n\nfunction writeProjectConfigData(file: string, data: Partial<ConfigYAML>) {\n createFileIfMissing(file, DEFAULT_CONFIG);\n const existingData = readProjectConfigData(file);\n\n const configData: ConfigYAML = {\n ...existingData,\n ...data,\n sources: {\n ...existingData.sources,\n ...data.sources,\n },\n };\n\n const yamlStr = yaml.dump(configData);\n fs.writeFileSync(file, yamlStr, \"utf8\");\n}\n\nfunction writeGlobalConfigData(file: string, data: object) {\n createFileIfMissing(file);\n const existingData = readGlobalConfigData(file);\n const yamlStr = yaml.dump({ ...existingData, ...data });\n fs.writeFileSync(file, yamlStr, \"utf8\");\n}\n\nfunction justTheHost(host: string) {\n if (!host.includes(\"://\")) return host;\n return url.parse(host).hostname || \"\";\n}\n\nfunction deleteToken(file: string, host: string) {\n const data = readGlobalConfigData(file);\n const hostParsed = justTheHost(host);\n data[hostParsed] = [];\n data[hostParsed][0] = { token: \"\" };\n writeGlobalConfigData(file, data);\n}\n\nfunction saveToken(file: string, host: string, token: string) {\n const data = readGlobalConfigData(file);\n const hostParsed = justTheHost(host);\n data[hostParsed] = []; // only allow one token per host\n data[hostParsed][0] = { token };\n writeGlobalConfigData(file, data);\n}\n\nfunction getTokenFromEnv() {\n return process.env.DITTO_API_KEY;\n}\n\n/**\n *\n * @param {string} file\n * @param {string} host\n * @returns {Token}\n */\nfunction getToken(file: string, host: string) {\n const tokenFromEnv = getTokenFromEnv();\n if (tokenFromEnv) {\n return tokenFromEnv;\n }\n\n const data = readGlobalConfigData(file);\n const hostEntry = data[justTheHost(host)];\n if (!hostEntry) return undefined;\n const { length } = hostEntry;\n\n return hostEntry[length - 1].token;\n}\n\nconst IS_DUPLICATE = /-(\\d+$)/;\n\nfunction dedupeProjectName(projectNames: Set<string>, projectName: string) {\n let dedupedName = projectName;\n\n if (projectNames.has(dedupedName)) {\n while (projectNames.has(dedupedName)) {\n const [_, numberStr] = dedupedName.match(IS_DUPLICATE) || [];\n if (numberStr && !isNaN(parseInt(numberStr))) {\n dedupedName = `${dedupedName.replace(IS_DUPLICATE, \"\")}-${\n parseInt(numberStr) + 1\n }`;\n } else {\n dedupedName = `${dedupedName}-1`;\n }\n }\n }\n\n return dedupedName;\n}\n\n/**\n * Reads from the config file, filters out\n * invalid projects, dedupes those remaining, and returns:\n * - whether or not the data required to `pull` is present\n * - whether or not the component library should be fetched\n * - an array of valid, deduped projects\n * - the `variants` and `format` config options\n */\nfunction parseSourceInformation(file?: string): SourceInformation {\n const {\n sources,\n variants,\n format,\n status,\n richText,\n iosLocales,\n projects: projectsRoot,\n components: componentsRoot,\n disableJsDriver,\n } = readProjectConfigData(file);\n\n const projects = sources?.projects || [];\n\n const projectNames = new Set<string>();\n const validProjects: Project[] = [];\n let hasComponentLibraryInProjects = false;\n\n (projects || []).forEach((project) => {\n const isValid = project.id && project.name;\n if (!isValid) {\n return;\n }\n\n if (project.id === \"ditto_component_library\") {\n hasComponentLibraryInProjects = true;\n return;\n }\n\n project.fileName = dedupeProjectName(projectNames, project.name);\n projectNames.add(project.fileName);\n\n validProjects.push(project);\n });\n\n const shouldFetchComponentLibrary = Boolean(sources?.components);\n const componentRoot =\n typeof sources?.components === \"object\"\n ? sources.components.root\n : undefined;\n const componentFolders =\n typeof sources?.components === \"object\"\n ? sources.components.folders\n : undefined;\n\n /**\n * If it's not specified to fetch projects or the component library, then there\n * is no source data to pull.\n */\n const hasSourceData = !!validProjects.length || shouldFetchComponentLibrary;\n\n const result: SourceInformation = {\n hasSourceData,\n validProjects,\n shouldFetchComponentLibrary,\n variants: variants || false,\n format,\n status,\n richText,\n hasTopLevelProjectsField: !!projectsRoot,\n hasTopLevelComponentsField: !!componentsRoot,\n hasComponentLibraryInProjects,\n componentRoot,\n componentFolders,\n localeByVariantApiId: iosLocales\n ? iosLocales.reduce((acc, e) => ({ ...acc, ...e }), {} as any)\n : undefined,\n disableJsDriver,\n };\n\n Sentry.setContext(\"config\", createSentryContext(result));\n\n return result;\n}\n\nexport default {\n createFileIfMissing,\n readProjectConfigData,\n readGlobalConfigData,\n writeGlobalConfigData,\n writeProjectConfigData,\n justTheHost,\n saveToken,\n deleteToken,\n getToken,\n getTokenFromEnv,\n parseSourceInformation,\n};\n"],"names":["yaml","path","fs","consts","url"],"mappings":"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","debug_id":"e8a84d0c-2e74-5c27-aee1-a1e1a393e89e"}
|