glotstack 0.0.12 → 0.0.14
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/dist/cli.js +35 -79
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +4 -30
- package/dist/index.js +74 -57
- package/dist/index.js.map +1 -1
- package/dist/logging.d.ts +15 -0
- package/dist/logging.js +44 -0
- package/dist/logging.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/util/fetchGlotstack.d.ts +2 -0
- package/dist/util/fetchGlotstack.js +36 -0
- package/dist/util/fetchGlotstack.js.map +1 -0
- package/dist/util/findConfig.js +8 -4
- package/dist/util/findConfig.js.map +1 -1
- package/dist/util/object.d.ts +1 -0
- package/dist/util/object.js +21 -1
- package/dist/util/object.js.map +1 -1
- package/dist/util/waitForFile.d.ts +2 -0
- package/dist/util/waitForFile.js +58 -0
- package/dist/util/waitForFile.js.map +1 -0
- package/package.json +21 -12
- package/.prettierrc +0 -10
- package/eslint-raw-string.mjs +0 -15
- package/scripts/fix-shebang.sh +0 -28
- package/src/cli.tsx +0 -311
- package/src/index.tsx +0 -518
- package/src/util/findConfig.ts +0 -97
- package/src/util/object.ts +0 -47
- package/src/util/yaml.ts +0 -11
- package/tsconfig.json +0 -23
- package/types/global.d.ts +0 -7
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface JSONArray extends Array<JSONValue> {
|
|
3
|
+
}
|
|
4
|
+
export type LocaleRegion = string;
|
|
5
|
+
export interface TranslationLeaf {
|
|
6
|
+
value: string;
|
|
7
|
+
context?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Translations {
|
|
10
|
+
[key: string]: Translations | TranslationLeaf;
|
|
11
|
+
}
|
|
12
|
+
export interface TranslateOptsBase {
|
|
13
|
+
locale?: LocaleRegion;
|
|
14
|
+
assigns?: Record<string, React.ReactNode>;
|
|
15
|
+
}
|
|
16
|
+
export type TranslateFn = {
|
|
17
|
+
(key: string, opts: TranslateOptsBase & {
|
|
18
|
+
asString: true;
|
|
19
|
+
}): string;
|
|
20
|
+
(key: string, opts?: TranslateOptsBase & {
|
|
21
|
+
asString?: false;
|
|
22
|
+
}): React.ReactNode;
|
|
23
|
+
};
|
|
24
|
+
export type JSONValue = string | number | boolean | null | JSONArray | JSONObject;
|
|
25
|
+
export interface JSONObject {
|
|
26
|
+
[key: string]: JSONValue;
|
|
27
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.fetchGlotstack = void 0;
|
|
16
|
+
const undici_1 = require("undici");
|
|
17
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
18
|
+
const fetchGlotstack = function (url, apiKey, body, overrideHeaders) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const headers = Object.assign({ 'authorization': `Bearer ${apiKey}` }, (overrideHeaders == null ? {} : overrideHeaders));
|
|
21
|
+
let payloadBody = undefined;
|
|
22
|
+
let method = 'GET';
|
|
23
|
+
headers['content-type'] = 'application/json';
|
|
24
|
+
if (body && !(body instanceof form_data_1.default)) {
|
|
25
|
+
method = 'POST';
|
|
26
|
+
payloadBody = JSON.stringify(body);
|
|
27
|
+
}
|
|
28
|
+
else if (body != null) {
|
|
29
|
+
method = 'POST';
|
|
30
|
+
payloadBody = body;
|
|
31
|
+
}
|
|
32
|
+
return (0, undici_1.fetch)(url, { method, body: payloadBody, headers });
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.fetchGlotstack = fetchGlotstack;
|
|
36
|
+
//# sourceMappingURL=fetchGlotstack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchGlotstack.js","sourceRoot":"","sources":["../../src/util/fetchGlotstack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAA4B;AAC5B,0DAAgC;AAGzB,MAAM,cAAc,GAAG,UAAgB,GAAW,EAAE,MAAc,EAAE,IAAqC,EAAE,eAAqC;;QACrJ,MAAM,OAAO,mBACX,eAAe,EAAE,UAAU,MAAM,EAAE,IAChC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CACpD,CAAA;QAED,IAAI,WAAW,GAAkC,SAAS,CAAA;QAC1D,IAAI,MAAM,GAAG,KAAK,CAAA;QAElB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAE5C,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,mBAAQ,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,MAAM,CAAA;YACf,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,CAAA;YACf,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;QAED,OAAO,IAAA,cAAK,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC;CAAA,CAAA;AApBY,QAAA,cAAc,kBAoB1B"}
|
package/dist/util/findConfig.js
CHANGED
|
@@ -31,12 +31,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
31
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
34
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
38
|
exports.findGlotstackConfig = void 0;
|
|
36
39
|
const fs_1 = require("fs");
|
|
37
40
|
const promises_1 = require("fs/promises");
|
|
38
41
|
const path = __importStar(require("path"));
|
|
39
42
|
const yaml_1 = require("./yaml");
|
|
43
|
+
const logging_1 = __importDefault(require("../logging"));
|
|
40
44
|
function dropKeys(input, keysToDrop) {
|
|
41
45
|
const obj = typeof input === 'string' ? JSON.parse(input) : structuredClone(input);
|
|
42
46
|
for (const path of keysToDrop) {
|
|
@@ -91,7 +95,7 @@ function findGlotstackConfig() {
|
|
|
91
95
|
}
|
|
92
96
|
let config;
|
|
93
97
|
if (configPath != null) {
|
|
94
|
-
|
|
98
|
+
logging_1.default.info('Loading config file at ', configPath);
|
|
95
99
|
try {
|
|
96
100
|
const content = yield (0, promises_1.readFile)(configPath);
|
|
97
101
|
const text = content.toString();
|
|
@@ -101,14 +105,14 @@ function findGlotstackConfig() {
|
|
|
101
105
|
else {
|
|
102
106
|
config = JSON.parse(text);
|
|
103
107
|
}
|
|
104
|
-
|
|
108
|
+
logging_1.default.info('Loaded config file', configPath, dropKeys(config, ["apiKey"]));
|
|
105
109
|
return config;
|
|
106
110
|
}
|
|
107
111
|
catch (err) {
|
|
108
|
-
|
|
112
|
+
logging_1.default.warn('Could not load config', configPath);
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
|
-
|
|
115
|
+
logging_1.default.warn('Could not find any .glotstack config files');
|
|
112
116
|
return null;
|
|
113
117
|
});
|
|
114
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findConfig.js","sourceRoot":"","sources":["../../src/util/findConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"findConfig.js","sourceRoot":"","sources":["../../src/util/findConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA+B;AAC/B,0CAAsC;AACtC,2CAA4B;AAC5B,iCAAiC;AACjC,yDAAgC;AAGhC,SAAS,QAAQ,CAAI,KAAiB,EAAE,UAAoB;IAC1D,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAElF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,MAAM,GAAQ,GAAG,CAAA;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEnD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,GAAG,SAAS,CAAA;gBAClB,MAAK;YACP,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAaD;;;;GAIG;AACH,SAAsB,mBAAmB;yDAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;QACxE,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,UAAU,GAAG,IAAI,CAAA;QAErB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YAC9D,MAAM,UAAU,GAAG,IAAA,eAAU,EAAC,aAAa,CAAC,CAAA;YAC5C,MAAM,UAAU,GAAG,IAAA,eAAU,EAAC,aAAa,CAAC,CAAA;YAC5C,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,+EAA+E,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;gBAC1I,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;YAEvE,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,UAAU,GAAG,aAAa,CAAA;YAC5B,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,UAAU,GAAG,aAAa,CAAA;YAC5B,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAC1C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAK,CAAC,eAAe;YACvB,CAAC;YACD,UAAU,GAAG,SAAS,CAAA;QACxB,CAAC;QAED,IAAI,MAAuB,CAAA;QAE3B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,iBAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAA;YACnD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,UAAU,CAAC,CAAA;gBAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC3C,MAAM,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAoB,CAAA;gBAC5C,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC3B,CAAC;gBACD,iBAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC5E,OAAO,MAAM,CAAA;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,iBAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;QACD,iBAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AA9CD,kDA8CC"}
|
package/dist/util/object.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare function isObject(val: any): val is Record<string, any>;
|
|
2
2
|
export declare function merge<T extends object>(target: T, ...sources: Partial<T>[]): T;
|
|
3
3
|
export declare function isEqual(a: any, b: any): boolean;
|
|
4
|
+
export declare function unflatten(flat: Record<string, any>): Record<string, any>;
|
package/dist/util/object.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isEqual = exports.merge = exports.isObject = void 0;
|
|
3
|
+
exports.unflatten = exports.isEqual = exports.merge = exports.isObject = void 0;
|
|
4
4
|
function isObject(val) {
|
|
5
5
|
return typeof val === 'object' && val !== null && !Array.isArray(val);
|
|
6
6
|
}
|
|
@@ -47,4 +47,24 @@ function isEqual(a, b) {
|
|
|
47
47
|
return false;
|
|
48
48
|
}
|
|
49
49
|
exports.isEqual = isEqual;
|
|
50
|
+
function unflatten(flat) {
|
|
51
|
+
const result = {};
|
|
52
|
+
for (const flatKey in flat) {
|
|
53
|
+
const parts = flatKey.split('.');
|
|
54
|
+
let current = result;
|
|
55
|
+
parts.forEach((part, idx) => {
|
|
56
|
+
if (idx === parts.length - 1) {
|
|
57
|
+
current[part] = flat[flatKey];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (!(part in current)) {
|
|
61
|
+
current[part] = {};
|
|
62
|
+
}
|
|
63
|
+
current = current[part];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
exports.unflatten = unflatten;
|
|
50
70
|
//# sourceMappingURL=object.js.map
|
package/dist/util/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAFD,4BAEC;AAED,SAAS,MAAM,CAAC,MAAW,EAAE,MAAW;IACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE1D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAiB,KAAK,CAAmB,MAAS,EAAE,GAAG,OAAqB;IAC1E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,CAAM,CAAA;AACtF,CAAC;AAFD,sBAEC;AAED,SAAgB,OAAO,CAAC,CAAM,EAAE,CAAM;IACpC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAElE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAEhD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,0BAmBC"}
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.waitForFile = void 0;
|
|
13
|
+
const fetchGlotstack_1 = require("./fetchGlotstack");
|
|
14
|
+
const TIMEOUT = 5 * 60 * 1000;
|
|
15
|
+
class FileWaitError extends Error {
|
|
16
|
+
constructor(message, response) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.response = response;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function waitForFile(url, apiKey) {
|
|
22
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
let resolved = false;
|
|
24
|
+
let fetching = false;
|
|
25
|
+
let timeout = undefined;
|
|
26
|
+
let interval = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
if (resolved) {
|
|
28
|
+
clearInterval(interval);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (fetching) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
fetching = true;
|
|
35
|
+
const response = yield (0, fetchGlotstack_1.fetchGlotstack)(url, apiKey);
|
|
36
|
+
fetching = false;
|
|
37
|
+
if (response.status === 404) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (response.status === 200) {
|
|
41
|
+
const translations = (yield response.json()).data;
|
|
42
|
+
resolved = true;
|
|
43
|
+
clearTimeout(timeout);
|
|
44
|
+
clearInterval(interval);
|
|
45
|
+
resolve(translations);
|
|
46
|
+
}
|
|
47
|
+
}), 500);
|
|
48
|
+
timeout = setTimeout(() => {
|
|
49
|
+
if (!resolved) {
|
|
50
|
+
resolved = true;
|
|
51
|
+
clearInterval(interval);
|
|
52
|
+
reject(new Error(`Timed out waiting for file: ${url}`));
|
|
53
|
+
}
|
|
54
|
+
}, TIMEOUT);
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
exports.waitForFile = waitForFile;
|
|
58
|
+
//# sourceMappingURL=waitForFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForFile.js","sourceRoot":"","sources":["../../src/util/waitForFile.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAiD;AAGjD,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAE7B,MAAM,aAAc,SAAQ,KAAK;IAG/B,YAAY,OAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED,SAAgB,WAAW,CAAC,GAAW,EAAE,MAAc;IACrD,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAA+B,SAAS,CAAC;QAEpD,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAS,EAAE;YACpC,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,CAAC,QAAQ,CAAC,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAM;YACR,CAAC;YAED,QAAQ,GAAG,IAAI,CAAA;YACf,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAc,EAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAClD,QAAQ,GAAG,KAAK,CAAA;YAEhB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAA2B,CAAA,CAAC,IAAI,CAAA;gBACzE,QAAQ,GAAG,IAAI,CAAC;gBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,aAAa,CAAC,QAAQ,CAAC,CAAA;gBACvB,OAAO,CAAC,YAAY,CAAC,CAAA;YACvB,CAAC;QACH,CAAC,CAAA,EAAE,GAAG,CAAC,CAAA;QAEP,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAA;gBACf,aAAa,CAAC,QAAQ,CAAC,CAAA;gBACvB,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC,CAAA;YACzD,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,CAAA;IAEb,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC;AAzCD,kCAyCC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glotstack",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"main": "dist/index.js",
|
|
5
|
-
"types": "dist/index.d.ts",
|
|
3
|
+
"version": "0.0.14",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"types": "./dist/index.d.ts",
|
|
6
|
+
"react-native": "./dist/index.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
6
10
|
"author": "JD Cumpson",
|
|
7
11
|
"license": "MIT",
|
|
8
|
-
"private": false,
|
|
9
12
|
"dependencies": {
|
|
10
13
|
"@eslint/js": "^9.26.0",
|
|
11
14
|
"commander": "^13.1.0",
|
|
@@ -18,25 +21,31 @@
|
|
|
18
21
|
"devDependencies": {
|
|
19
22
|
"@types/js-yaml": "^4.0.9",
|
|
20
23
|
"@types/node": "^22.15.17",
|
|
21
|
-
"@types/react": "^
|
|
22
|
-
"@types/react-dom": "^
|
|
24
|
+
"@types/react": "^19.1.0",
|
|
25
|
+
"@types/react-dom": "^19.1.0",
|
|
23
26
|
"globals": "^16.1.0",
|
|
24
27
|
"js-yaml": "^4.1.0",
|
|
25
28
|
"nodemon": "^3.1.10",
|
|
29
|
+
"react": "19.1.0",
|
|
26
30
|
"typescript": "5.4.4",
|
|
27
31
|
"typescript-eslint": "^8.32.1"
|
|
28
32
|
},
|
|
29
33
|
"peerDependencies": {
|
|
30
|
-
"react": "
|
|
31
|
-
"react-dom": "
|
|
34
|
+
"react": ">=19",
|
|
35
|
+
"react-dom": ">=19",
|
|
36
|
+
"react-native": ">=0.81"
|
|
32
37
|
},
|
|
33
|
-
"
|
|
34
|
-
"
|
|
38
|
+
"peerDependenciesMeta": {
|
|
39
|
+
"react-native": {
|
|
40
|
+
"optional": true
|
|
41
|
+
}
|
|
35
42
|
},
|
|
43
|
+
"bin": "dist/cli.js",
|
|
36
44
|
"scripts": {
|
|
37
45
|
"build": "tsc && scripts/fix-shebang.sh dist/cli.js",
|
|
38
46
|
"watch": "nodemon --watch src --ext ts,tsx,mjs,json --exec \"bash -c 'yarn build'\"",
|
|
39
47
|
"prepublishOnly": "yarn build",
|
|
40
48
|
"glotstack": "node dist/cli.js"
|
|
41
|
-
}
|
|
42
|
-
|
|
49
|
+
},
|
|
50
|
+
"packageManager": "yarn@4.12.0"
|
|
51
|
+
}
|
package/.prettierrc
DELETED
package/eslint-raw-string.mjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import globals from "globals";
|
|
2
|
-
import tseslint from "typescript-eslint";
|
|
3
|
-
import { defineConfig, globalIgnores } from "eslint/config";
|
|
4
|
-
import i18next from 'eslint-plugin-i18next';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default defineConfig([
|
|
8
|
-
{ files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"], languageOptions: { globals: globals.browser } },
|
|
9
|
-
globalIgnores([
|
|
10
|
-
'node_modules/*', // ignore node modules
|
|
11
|
-
'**/*.d.ts', // ignore type definitions
|
|
12
|
-
]),
|
|
13
|
-
tseslint.configs.base,
|
|
14
|
-
i18next.configs['flat/recommended'],
|
|
15
|
-
]);
|
package/scripts/fix-shebang.sh
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
FILE="$1"
|
|
4
|
-
SHEBANG='#!/usr/bin/env node'
|
|
5
|
-
|
|
6
|
-
if [ -z "$FILE" ]; then
|
|
7
|
-
echo "Usage: $0 <file>"
|
|
8
|
-
exit 1
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
if [ ! -f "$FILE" ]; then
|
|
12
|
-
echo "File not found: $FILE"
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
FIRST_LINE=$(head -n 1 "$FILE")
|
|
17
|
-
|
|
18
|
-
if [ "$FIRST_LINE" != "$SHEBANG" ]; then
|
|
19
|
-
echo "Injecting shebang into $FILE"
|
|
20
|
-
TMP_FILE=$(mktemp)
|
|
21
|
-
echo "$SHEBANG" > "$TMP_FILE"
|
|
22
|
-
cat "$FILE" >> "$TMP_FILE"
|
|
23
|
-
mv "$TMP_FILE" "$FILE"
|
|
24
|
-
else
|
|
25
|
-
echo "Shebang already present in $FILE"
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
chmod +x "$FILE"
|