@dittowords/cli 3.4.2 → 3.6.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 +17 -14
- package/bin/api.js +5 -6
- package/bin/api.js.map +1 -1
- package/bin/http/fetchComponents.js +3 -5
- package/bin/http/fetchComponents.js.map +1 -1
- package/bin/http/fetchVariants.js +3 -5
- package/bin/http/fetchVariants.js.map +1 -1
- package/bin/init/project.js +3 -6
- package/bin/init/project.js.map +1 -1
- package/bin/init/token.js +1 -1
- package/bin/init/token.js.map +1 -1
- package/bin/lib/add-project.js +36 -0
- package/bin/lib/add-project.js.map +1 -0
- package/bin/lib/api.js +20 -0
- package/bin/lib/api.js.map +1 -0
- package/bin/lib/config.js +202 -0
- package/bin/lib/config.js.map +1 -0
- package/bin/lib/consts.js +21 -0
- package/bin/lib/consts.js.map +1 -0
- package/bin/lib/ditto.js +121 -0
- package/bin/lib/ditto.js.map +1 -0
- package/bin/lib/generate-suggestions.js +71 -0
- package/bin/lib/generate-suggestions.js.map +1 -0
- package/bin/lib/http/fetchComponents.js +13 -0
- package/bin/lib/http/fetchComponents.js.map +1 -0
- package/bin/lib/http/fetchVariants.js +26 -0
- package/bin/lib/http/fetchVariants.js.map +1 -0
- package/bin/lib/init/init.js +50 -0
- package/bin/lib/init/init.js.map +1 -0
- package/bin/lib/init/project.js +108 -0
- package/bin/lib/init/project.js.map +1 -0
- package/bin/lib/init/token.js +91 -0
- package/bin/lib/init/token.js.map +1 -0
- package/bin/lib/output.js +34 -0
- package/bin/lib/output.js.map +1 -0
- package/bin/lib/pull.js +264 -0
- package/bin/lib/pull.js.map +1 -0
- package/bin/lib/remove-project.js +35 -0
- package/bin/lib/remove-project.js.map +1 -0
- package/bin/lib/replace.js +107 -0
- package/bin/lib/replace.js.map +1 -0
- package/bin/lib/types.js +3 -0
- package/bin/lib/types.js.map +1 -0
- package/bin/lib/utils/cleanFileName.js +11 -0
- package/bin/lib/utils/cleanFileName.js.map +1 -0
- package/bin/lib/utils/generateJsDriver.js +56 -0
- package/bin/lib/utils/generateJsDriver.js.map +1 -0
- package/bin/lib/utils/getSelectedProjects.js +61 -0
- package/bin/lib/utils/getSelectedProjects.js.map +1 -0
- package/bin/lib/utils/processMetaOption.js +15 -0
- package/bin/lib/utils/processMetaOption.js.map +1 -0
- package/bin/lib/utils/projectsToText.js +25 -0
- package/bin/lib/utils/projectsToText.js.map +1 -0
- package/bin/lib/utils/promptForProject.js +43 -0
- package/bin/lib/utils/promptForProject.js.map +1 -0
- package/bin/lib/utils/quit.js +10 -0
- package/bin/lib/utils/quit.js.map +1 -0
- package/bin/lib/utils/sourcesToText.js +25 -0
- package/bin/lib/utils/sourcesToText.js.map +1 -0
- package/bin/package.json +76 -0
- package/bin/pull.js +11 -5
- package/bin/pull.js.map +1 -1
- package/lib/api.ts +5 -5
- package/lib/http/fetchComponents.ts +2 -1
- package/lib/http/fetchVariants.ts +2 -1
- package/lib/init/project.ts +3 -6
- package/lib/init/token.ts +2 -2
- package/lib/pull.test.ts +32 -7
- package/lib/pull.ts +13 -6
- package/lib/replace.test.ts +1 -0
- package/lib/types.ts +9 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,9 +7,9 @@ The Ditto CLI helps teams integrate [Ditto](https://dittowords.com/) into their
|
|
|
7
7
|
You can install the CLI from npm:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
# as a dev dependency (recommended)
|
|
10
|
+
# as a dev dependency (**recommended**)
|
|
11
11
|
npm install --save-dev @dittowords/cli
|
|
12
|
-
|
|
12
|
+
****
|
|
13
13
|
# as a global package
|
|
14
14
|
npm install --global @dittowords/cli
|
|
15
15
|
```
|
|
@@ -35,11 +35,11 @@ Thanks for authenticating.
|
|
|
35
35
|
We'll save the key to: /Users/{username}/.config/ditto
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
Once you've successfully authenticated, you'll be asked to choose a source (a project or your component library) to pull data from
|
|
38
|
+
Once you've successfully authenticated, you'll be asked to choose a source (a project or your component library) to pull data **from**:
|
|
39
39
|
|
|
40
40
|
```
|
|
41
41
|
Looks like there are no Ditto sources selected for your current directory: /Users/ditto
|
|
42
|
-
|
|
42
|
+
****
|
|
43
43
|
? Choose the source you'd like to sync text from:
|
|
44
44
|
- Ditto Component Library https://app.dittowords.com/components
|
|
45
45
|
- NUX Onboarding Flow https://app.dittowords.com/doc/609e9981c313f8018d0c346a
|
|
@@ -66,11 +66,11 @@ We don't recommend editing the authentication file by hand; if you need to remov
|
|
|
66
66
|
|
|
67
67
|
**Action:** Pulls data from Ditto according to configured sources.
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Generate files your local `ditto/` folder (file extension is determined by the `format` property specified in `config.yml`).
|
|
70
70
|
|
|
71
|
-
If no format is specified, the `flat` format will be used by default. Each time text is pulled from Ditto, the existing
|
|
71
|
+
If no format is specified, the `flat` format will be used by default. Each time text is pulled from Ditto, the existing files in the `ditto/` directory are removed before new files are created in their place.
|
|
72
72
|
|
|
73
|
-
For more details on files generated by this command, see [
|
|
73
|
+
For more details on files generated by this command, see [Output Files](#output-files).
|
|
74
74
|
|
|
75
75
|
### Add project
|
|
76
76
|
|
|
@@ -160,9 +160,10 @@ variants: true
|
|
|
160
160
|
The format that text data should be generated in. Accepted values:
|
|
161
161
|
|
|
162
162
|
- `structured`
|
|
163
|
-
|
|
163
|
+
\*\*\*\*- `flat`
|
|
164
164
|
- `android`
|
|
165
165
|
- `ios-strings`
|
|
166
|
+
- `ios-stringsdict` (will only include text that has pluralization enabled in Ditto)
|
|
166
167
|
|
|
167
168
|
Defaults to `flat` if not specified.
|
|
168
169
|
|
|
@@ -227,12 +228,14 @@ If you run the CLI in a directory that does not contain a `ditto/` folder, the f
|
|
|
227
228
|
|
|
228
229
|
The CLI outputs data from Ditto by writing files to disk in your `ditto/` directory. The format and extension of such files will correspond to the `format` property of your configuration.
|
|
229
230
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
231
|
+
| **Format** | **File Extension** | **Common Usage** |
|
|
232
|
+
| :-------------: | :----------------: | :-----------------: |
|
|
233
|
+
| flat | .json | Web apps |
|
|
234
|
+
| structured | .json | Web apps |
|
|
235
|
+
| icu | .json | Web apps |
|
|
236
|
+
| android | .xml | Native Android apps |
|
|
237
|
+
| ios-strings | .strings | Native iOS apps |
|
|
238
|
+
| ios-stringsdict | .stringsdict | Native iOS apps |
|
|
236
239
|
|
|
237
240
|
All files created will adhere to the following template:
|
|
238
241
|
|
package/bin/api.js
CHANGED
|
@@ -3,18 +3,17 @@ 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.
|
|
6
|
+
exports.createApiClient = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const config_1 = __importDefault(require("./config"));
|
|
9
9
|
const consts_1 = __importDefault(require("./consts"));
|
|
10
|
-
|
|
10
|
+
function createApiClient(token) {
|
|
11
11
|
return axios_1.default.create({
|
|
12
12
|
baseURL: consts_1.default.API_HOST,
|
|
13
13
|
headers: {
|
|
14
|
-
Authorization: `token ${token}`,
|
|
14
|
+
Authorization: `token ${token || config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST)}`,
|
|
15
15
|
},
|
|
16
16
|
});
|
|
17
|
-
}
|
|
18
|
-
exports.
|
|
19
|
-
exports.default = (0, exports.create)(config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST));
|
|
17
|
+
}
|
|
18
|
+
exports.createApiClient = createApiClient;
|
|
20
19
|
//# sourceMappingURL=api.js.map
|
package/bin/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../lib/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,sDAA8B;AAC9B,sDAA8B;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../lib/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,sDAA8B;AAC9B,sDAA8B;AAE9B,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,gBAAM,CAAC,QAAQ;QACxB,OAAO,EAAE;YACP,aAAa,EAAE,SACb,KAAK,IAAI,gBAAM,CAAC,QAAQ,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,CAC9D,EAAE;SACH;KACF,CAAC,CAAC;AACL,CAAC;AATD,0CASC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchComponents = void 0;
|
|
7
|
-
const api_1 =
|
|
4
|
+
const api_1 = require("../api");
|
|
8
5
|
async function fetchComponents() {
|
|
9
|
-
const
|
|
6
|
+
const api = (0, api_1.createApiClient)();
|
|
7
|
+
const { data } = await api.get("/components", {});
|
|
10
8
|
return data;
|
|
11
9
|
}
|
|
12
10
|
exports.fetchComponents = fetchComponents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchComponents.js","sourceRoot":"","sources":["../../lib/http/fetchComponents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchComponents.js","sourceRoot":"","sources":["../../lib/http/fetchComponents.ts"],"names":[],"mappings":";;;AAAA,gCAAyC;AAalC,KAAK,UAAU,eAAe;IACnC,MAAM,GAAG,GAAG,IAAA,qBAAe,GAAE,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAO3B,aAAa,EAAE,EAAE,CAAC,CAAC;IAEtB,OAAO,IAAI,CAAC;AACd,CAAC;AAZD,0CAYC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchVariants = void 0;
|
|
7
|
-
const api_1 =
|
|
4
|
+
const api_1 = require("../api");
|
|
8
5
|
async function fetchVariants(source, options = {}) {
|
|
6
|
+
const api = (0, api_1.createApiClient)();
|
|
9
7
|
if (!source.variants) {
|
|
10
8
|
return null;
|
|
11
9
|
}
|
|
@@ -19,7 +17,7 @@ async function fetchVariants(source, options = {}) {
|
|
|
19
17
|
if (validProjects.length && !shouldFetchComponentLibrary) {
|
|
20
18
|
config.params.projectIds = validProjects.map(({ id }) => id);
|
|
21
19
|
}
|
|
22
|
-
const { data } = await
|
|
20
|
+
const { data } = await api.get("/variants", config);
|
|
23
21
|
return data;
|
|
24
22
|
}
|
|
25
23
|
exports.fetchVariants = fetchVariants;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchVariants.js","sourceRoot":"","sources":["../../lib/http/fetchVariants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchVariants.js","sourceRoot":"","sources":["../../lib/http/fetchVariants.ts"],"names":[],"mappings":";;;AACA,gCAAyC;AAIlC,KAAK,UAAU,aAAa,CACjC,MAAyB,EACzB,UAAuB,EAAE;IAEzB,MAAM,GAAG,GAAG,IAAA,qBAAe,GAAE,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,2BAA2B,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE9D,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAC;IAEF,gFAAgF;IAChF,iFAAiF;IACjF,qBAAqB;IACrB,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KAC9D;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAsB,WAAW,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,IAAI,CAAC;AACd,CAAC;AAzBD,sCAyBC"}
|
package/bin/init/project.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports._testing = exports.collectAndSaveSource = exports.needsSource = void 0;
|
|
7
7
|
const ora_1 = __importDefault(require("ora"));
|
|
8
|
-
const api_1 =
|
|
8
|
+
const api_1 = require("../api");
|
|
9
9
|
const config_1 = __importDefault(require("../config"));
|
|
10
10
|
const consts_1 = __importDefault(require("../consts"));
|
|
11
11
|
const output_1 = __importDefault(require("../output"));
|
|
@@ -33,15 +33,12 @@ async function askForAnotherToken() {
|
|
|
33
33
|
await (0, token_1.collectAndSaveToken)(message);
|
|
34
34
|
}
|
|
35
35
|
async function listProjects(token, projectsAlreadySelected) {
|
|
36
|
+
const api = (0, api_1.createApiClient)();
|
|
36
37
|
const spinner = (0, ora_1.default)("Fetching sources in your workspace...");
|
|
37
38
|
spinner.start();
|
|
38
39
|
let response;
|
|
39
40
|
try {
|
|
40
|
-
response = await
|
|
41
|
-
headers: {
|
|
42
|
-
Authorization: `token ${token}`,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
41
|
+
response = await api.get("/project-names");
|
|
45
42
|
}
|
|
46
43
|
catch (e) {
|
|
47
44
|
spinner.stop();
|
package/bin/init/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../lib/init/project.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AAEtB,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../lib/init/project.ts"],"names":[],"mappings":"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"}
|
package/bin/init/token.js
CHANGED
|
@@ -28,7 +28,7 @@ const needsToken = (configFile, host = consts_1.default.API_HOST) => {
|
|
|
28
28
|
exports.needsToken = needsToken;
|
|
29
29
|
// Returns true if valid, otherwise an error message.
|
|
30
30
|
async function checkToken(token) {
|
|
31
|
-
const axios = (0, api_1.
|
|
31
|
+
const axios = (0, api_1.createApiClient)(token);
|
|
32
32
|
const endpoint = "/token-check";
|
|
33
33
|
let resOrError;
|
|
34
34
|
try {
|
package/bin/init/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../lib/init/token.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB,kDAA0B;AAE1B,uCAAkC;AAElC,
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../lib/init/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 project_1 = require("./init/project");
|
|
7
|
+
const projectsToText_1 = __importDefault(require("./utils/projectsToText"));
|
|
8
|
+
const getSelectedProjects_1 = require("./utils/getSelectedProjects");
|
|
9
|
+
const output_1 = __importDefault(require("./output"));
|
|
10
|
+
const quit_1 = require("./utils/quit");
|
|
11
|
+
const addProject = async () => {
|
|
12
|
+
const projects = (0, getSelectedProjects_1.getSelectedProjects)();
|
|
13
|
+
const usingComponents = (0, getSelectedProjects_1.getIsUsingComponents)();
|
|
14
|
+
try {
|
|
15
|
+
if (usingComponents) {
|
|
16
|
+
if (projects.length) {
|
|
17
|
+
console.log(`\nYou're currently syncing text from the ${output_1.default.info("Component Library")} and from the following projects: ${(0, projectsToText_1.default)(projects)}`);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.log(`\nYou're currently only syncing text from the ${output_1.default.info("Component Library")}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else if (projects.length) {
|
|
24
|
+
console.log(`\nYou're currently set up to sync text from the following projects: ${(0, projectsToText_1.default)(projects)}`);
|
|
25
|
+
}
|
|
26
|
+
await (0, project_1.collectAndSaveSource)({
|
|
27
|
+
components: false,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.log(`\nSorry, there was an error adding a project to your workspace: `, error);
|
|
32
|
+
(0, quit_1.quit)("Project selection was not updated.");
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.default = addProject;
|
|
36
|
+
//# sourceMappingURL=add-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../lib/add-project.ts"],"names":[],"mappings":";;;;;AAAA,4CAAsD;AACtD,4EAAoD;AACpD,qEAGqC;AACrC,sDAA8B;AAC9B,uCAAoC;AAEpC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC5B,MAAM,QAAQ,GAAG,IAAA,yCAAmB,GAAE,CAAC;IACvC,MAAM,eAAe,GAAG,IAAA,0CAAoB,GAAE,CAAC;IAE/C,IAAI;QACF,IAAI,eAAe,EAAE;YACnB,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,CAAC,GAAG,CACT,4CAA4C,gBAAM,CAAC,IAAI,CACrD,mBAAmB,CACpB,qCAAqC,IAAA,wBAAc,EAAC,QAAQ,CAAC,EAAE,CACjE,CAAC;aACH;iBAAM;gBACL,OAAO,CAAC,GAAG,CACT,iDAAiD,gBAAM,CAAC,IAAI,CAC1D,mBAAmB,CACpB,EAAE,CACJ,CAAC;aACH;SACF;aAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC1B,OAAO,CAAC,GAAG,CACT,uEAAuE,IAAA,wBAAc,EACnF,QAAQ,CACT,EAAE,CACJ,CAAC;SACH;QACD,MAAM,IAAA,8BAAoB,EAAC;YACzB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CACT,kEAAkE,EAClE,KAAK,CACN,CAAC;QACF,IAAA,WAAI,EAAC,oCAAoC,CAAC,CAAC;KAC5C;AACH,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
package/bin/lib/api.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
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.create = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const config_1 = __importDefault(require("./config"));
|
|
9
|
+
const consts_1 = __importDefault(require("./consts"));
|
|
10
|
+
const create = (token) => {
|
|
11
|
+
return axios_1.default.create({
|
|
12
|
+
baseURL: consts_1.default.API_HOST,
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: `token ${token}`,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.create = create;
|
|
19
|
+
exports.default = (0, exports.create)(config_1.default.getToken(consts_1.default.CONFIG_FILE, consts_1.default.API_HOST));
|
|
20
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,sDAA8B;AAC9B,sDAA8B;AAEvB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE;IACvC,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,gBAAM,CAAC,QAAQ;QACxB,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,KAAK,EAAE;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAPW,QAAA,MAAM,UAOjB;AAEF,kBAAe,IAAA,cAAM,EAAC,gBAAM,CAAC,QAAQ,CAAC,gBAAM,CAAC,WAAW,EAAE,gBAAM,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
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.DEFAULT_CONFIG = exports.DEFAULT_CONFIG_JSON = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const url_1 = __importDefault(require("url"));
|
|
10
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
11
|
+
const consts_1 = __importDefault(require("./consts"));
|
|
12
|
+
exports.DEFAULT_CONFIG_JSON = {
|
|
13
|
+
sources: {
|
|
14
|
+
components: { enabled: true },
|
|
15
|
+
},
|
|
16
|
+
variants: true,
|
|
17
|
+
format: "flat",
|
|
18
|
+
};
|
|
19
|
+
exports.DEFAULT_CONFIG = js_yaml_1.default.dump(exports.DEFAULT_CONFIG_JSON);
|
|
20
|
+
function createFileIfMissing(filename, defaultContents) {
|
|
21
|
+
const dir = path_1.default.dirname(filename);
|
|
22
|
+
// create the directory if it doesn't already exist
|
|
23
|
+
if (!fs_1.default.existsSync(dir))
|
|
24
|
+
fs_1.default.mkdirSync(dir);
|
|
25
|
+
// create the file if it doesn't already exist
|
|
26
|
+
if (!fs_1.default.existsSync(filename)) {
|
|
27
|
+
// create the file, writing the `defaultContents` if provided
|
|
28
|
+
fs_1.default.writeFileSync(filename, defaultContents || "", "utf-8");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function jsonIsConfigYAML(json) {
|
|
32
|
+
return typeof json === "object";
|
|
33
|
+
}
|
|
34
|
+
function jsonIsGlobalYAML(json) {
|
|
35
|
+
return (!!json &&
|
|
36
|
+
typeof json === "object" &&
|
|
37
|
+
Object.values(json).every((arr) => arr.every &&
|
|
38
|
+
arr.every((val) => typeof val === "object" && Object.keys(val).includes("token"))));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Read data from a project config file
|
|
42
|
+
* @param {string} file defaults to `PROJECT_CONFIG_FILE` defined in `constants.js`
|
|
43
|
+
* @param {*} defaultData defaults to `{}`
|
|
44
|
+
* @returns { ConfigYAML }
|
|
45
|
+
*/
|
|
46
|
+
function readProjectConfigData(file = consts_1.default.PROJECT_CONFIG_FILE, defaultData = {}) {
|
|
47
|
+
createFileIfMissing(file, exports.DEFAULT_CONFIG);
|
|
48
|
+
const fileContents = fs_1.default.readFileSync(file, "utf8");
|
|
49
|
+
const yamlData = js_yaml_1.default.load(fileContents);
|
|
50
|
+
if (jsonIsConfigYAML(yamlData)) {
|
|
51
|
+
return yamlData;
|
|
52
|
+
}
|
|
53
|
+
return defaultData;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Read data from a global config file
|
|
57
|
+
* @param {string} file defaults to `CONFIG_FILE` defined in `constants.js`
|
|
58
|
+
* @param {*} defaultData defaults to `{}`
|
|
59
|
+
* @returns { Record<string, { token: string }[]> }
|
|
60
|
+
*/
|
|
61
|
+
function readGlobalConfigData(file = consts_1.default.CONFIG_FILE, defaultData = {}) {
|
|
62
|
+
createFileIfMissing(file);
|
|
63
|
+
const fileContents = fs_1.default.readFileSync(file, "utf8");
|
|
64
|
+
const yamlData = js_yaml_1.default.load(fileContents);
|
|
65
|
+
if (jsonIsGlobalYAML(yamlData)) {
|
|
66
|
+
return yamlData;
|
|
67
|
+
}
|
|
68
|
+
return defaultData;
|
|
69
|
+
}
|
|
70
|
+
function writeProjectConfigData(file, data) {
|
|
71
|
+
createFileIfMissing(file, exports.DEFAULT_CONFIG);
|
|
72
|
+
const existingData = readProjectConfigData(file);
|
|
73
|
+
const configData = {
|
|
74
|
+
...existingData,
|
|
75
|
+
...data,
|
|
76
|
+
sources: {
|
|
77
|
+
...existingData.sources,
|
|
78
|
+
...data.sources,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
const yamlStr = js_yaml_1.default.dump(configData);
|
|
82
|
+
fs_1.default.writeFileSync(file, yamlStr, "utf8");
|
|
83
|
+
}
|
|
84
|
+
function writeGlobalConfigData(file, data) {
|
|
85
|
+
createFileIfMissing(file);
|
|
86
|
+
const existingData = readGlobalConfigData(file);
|
|
87
|
+
const yamlStr = js_yaml_1.default.dump({ ...existingData, ...data });
|
|
88
|
+
fs_1.default.writeFileSync(file, yamlStr, "utf8");
|
|
89
|
+
}
|
|
90
|
+
function justTheHost(host) {
|
|
91
|
+
if (!host.includes("://"))
|
|
92
|
+
return host;
|
|
93
|
+
return url_1.default.parse(host).hostname || "";
|
|
94
|
+
}
|
|
95
|
+
function deleteToken(file, host) {
|
|
96
|
+
const data = readGlobalConfigData(file);
|
|
97
|
+
const hostParsed = justTheHost(host);
|
|
98
|
+
data[hostParsed] = [];
|
|
99
|
+
data[hostParsed][0] = { token: "" };
|
|
100
|
+
writeGlobalConfigData(file, data);
|
|
101
|
+
}
|
|
102
|
+
function saveToken(file, host, token) {
|
|
103
|
+
const data = readGlobalConfigData(file);
|
|
104
|
+
const hostParsed = justTheHost(host);
|
|
105
|
+
data[hostParsed] = []; // only allow one token per host
|
|
106
|
+
data[hostParsed][0] = { token };
|
|
107
|
+
writeGlobalConfigData(file, data);
|
|
108
|
+
}
|
|
109
|
+
function getTokenFromEnv() {
|
|
110
|
+
return process.env.DITTO_API_KEY;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
*
|
|
114
|
+
* @param {string} file
|
|
115
|
+
* @param {string} host
|
|
116
|
+
* @returns {Token}
|
|
117
|
+
*/
|
|
118
|
+
function getToken(file, host) {
|
|
119
|
+
const tokenFromEnv = getTokenFromEnv();
|
|
120
|
+
if (tokenFromEnv) {
|
|
121
|
+
return tokenFromEnv;
|
|
122
|
+
}
|
|
123
|
+
const data = readGlobalConfigData(file);
|
|
124
|
+
const hostEntry = data[justTheHost(host)];
|
|
125
|
+
if (!hostEntry)
|
|
126
|
+
return undefined;
|
|
127
|
+
const { length } = hostEntry;
|
|
128
|
+
return hostEntry[length - 1].token;
|
|
129
|
+
}
|
|
130
|
+
const IS_DUPLICATE = /-(\d+$)/;
|
|
131
|
+
function dedupeProjectName(projectNames, projectName) {
|
|
132
|
+
let dedupedName = projectName;
|
|
133
|
+
if (projectNames.has(dedupedName)) {
|
|
134
|
+
while (projectNames.has(dedupedName)) {
|
|
135
|
+
const [_, numberStr] = dedupedName.match(IS_DUPLICATE) || [];
|
|
136
|
+
if (numberStr && !isNaN(parseInt(numberStr))) {
|
|
137
|
+
dedupedName = `${dedupedName.replace(IS_DUPLICATE, "")}-${parseInt(numberStr) + 1}`;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
dedupedName = `${dedupedName}-1`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return dedupedName;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Reads from the config file, filters out
|
|
148
|
+
* invalid projects, dedupes those remaining, and returns:
|
|
149
|
+
* - whether or not the data required to `pull` is present
|
|
150
|
+
* - whether or not the component library should be fetched
|
|
151
|
+
* - an array of valid, deduped projects
|
|
152
|
+
* - the `variants` and `format` config options
|
|
153
|
+
*/
|
|
154
|
+
function parseSourceInformation(file) {
|
|
155
|
+
const { sources, variants, format, status, richText, projects: projectsRoot, components: componentsRoot, } = readProjectConfigData(file);
|
|
156
|
+
const projects = sources?.projects || [];
|
|
157
|
+
const projectNames = new Set();
|
|
158
|
+
const validProjects = [];
|
|
159
|
+
let hasComponentLibraryInProjects = false;
|
|
160
|
+
(projects || []).forEach((project) => {
|
|
161
|
+
const isValid = project.id && project.name;
|
|
162
|
+
if (!isValid) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (project.id === "ditto_component_library") {
|
|
166
|
+
hasComponentLibraryInProjects = true;
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
project.fileName = dedupeProjectName(projectNames, project.name);
|
|
170
|
+
projectNames.add(project.fileName);
|
|
171
|
+
validProjects.push(project);
|
|
172
|
+
});
|
|
173
|
+
const shouldFetchComponentLibrary = Boolean(sources?.components?.enabled);
|
|
174
|
+
const hasSourceData = !!validProjects.length || shouldFetchComponentLibrary;
|
|
175
|
+
return {
|
|
176
|
+
hasSourceData,
|
|
177
|
+
validProjects,
|
|
178
|
+
shouldFetchComponentLibrary,
|
|
179
|
+
variants: variants || false,
|
|
180
|
+
format,
|
|
181
|
+
status,
|
|
182
|
+
richText,
|
|
183
|
+
hasTopLevelProjectsField: !!projectsRoot,
|
|
184
|
+
hasTopLevelComponentsField: !!componentsRoot,
|
|
185
|
+
hasComponentLibraryInProjects,
|
|
186
|
+
componentFolders: sources?.components?.folders || null,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
exports.default = {
|
|
190
|
+
createFileIfMissing,
|
|
191
|
+
readProjectConfigData,
|
|
192
|
+
readGlobalConfigData,
|
|
193
|
+
writeGlobalConfigData,
|
|
194
|
+
writeProjectConfigData,
|
|
195
|
+
justTheHost,
|
|
196
|
+
saveToken,
|
|
197
|
+
deleteToken,
|
|
198
|
+
getToken,
|
|
199
|
+
getTokenFromEnv,
|
|
200
|
+
parseSourceInformation,
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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.TEXT_FILE = exports.TEXT_DIR = exports.PROJECT_CONFIG_FILE = exports.CONFIG_FILE = exports.API_HOST = void 0;
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
exports.API_HOST = process.env.DITTO_API_HOST || "https://api.dittowords.com";
|
|
10
|
+
exports.CONFIG_FILE = process.env.DITTO_CONFIG_FILE || path_1.default.join((0, os_1.homedir)(), ".config", "ditto");
|
|
11
|
+
exports.PROJECT_CONFIG_FILE = path_1.default.normalize(path_1.default.join("ditto", "config.yml"));
|
|
12
|
+
exports.TEXT_DIR = process.env.DITTO_TEXT_DIR || "ditto";
|
|
13
|
+
exports.TEXT_FILE = path_1.default.normalize(path_1.default.join(exports.TEXT_DIR, "text.json"));
|
|
14
|
+
exports.default = {
|
|
15
|
+
API_HOST: exports.API_HOST,
|
|
16
|
+
CONFIG_FILE: exports.CONFIG_FILE,
|
|
17
|
+
PROJECT_CONFIG_FILE: exports.PROJECT_CONFIG_FILE,
|
|
18
|
+
TEXT_DIR: exports.TEXT_DIR,
|
|
19
|
+
TEXT_FILE: exports.TEXT_FILE,
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../lib/consts.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA6B;AAC7B,gDAAwB;AAEX,QAAA,QAAQ,GACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,4BAA4B,CAAC;AAChD,QAAA,WAAW,GACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/D,QAAA,mBAAmB,GAAG,cAAI,CAAC,SAAS,CAC/C,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CACjC,CAAC;AACW,QAAA,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;AACjD,QAAA,SAAS,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1E,kBAAe;IACb,QAAQ,EAAR,gBAAQ;IACR,WAAW,EAAX,mBAAW;IACX,mBAAmB,EAAnB,2BAAmB;IACnB,QAAQ,EAAR,gBAAQ;IACR,SAAS,EAAT,iBAAS;CACV,CAAC"}
|