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.
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import FormData from 'form-data';
2
+ export declare const fetchGlotstack: (url: string, apiKey: string, body?: Record<string, any> | FormData, overrideHeaders?: Record<string, any>) => Promise<import("undici").Response>;
@@ -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"}
@@ -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
- console.info('Loading config file at ', configPath);
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
- console.info('Loaded config file', configPath, dropKeys(config, ["apiKey"]));
108
+ logging_1.default.info('Loaded config file', configPath, dropKeys(config, ["apiKey"]));
105
109
  return config;
106
110
  }
107
111
  catch (err) {
108
- console.warn('Could not load config', configPath);
112
+ logging_1.default.warn('Could not load config', configPath);
109
113
  }
110
114
  }
111
- console.warn('Could not find any .glotstack config files');
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":"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"}
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"}
@@ -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>;
@@ -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
@@ -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,2 @@
1
+ import { Translations } from "../types";
2
+ export declare function waitForFile(url: string, apiKey: string): Promise<Translations>;
@@ -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.12",
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": "^18.3.1",
22
- "@types/react-dom": "^18.3.1",
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": "^18.3.1",
31
- "react-dom": "^18.3.1"
34
+ "react": ">=19",
35
+ "react-dom": ">=19",
36
+ "react-native": ">=0.81"
32
37
  },
33
- "bin": {
34
- "glotstack": "dist/cli.js"
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
@@ -1,10 +0,0 @@
1
- {
2
- "tabWidth": 2,
3
- "useTabs": false,
4
- "semi": false,
5
- "singleQuote": true,
6
- "jsxSingleQuote": true,
7
- "jsxBracketSameLine": false,
8
- "quoteProps": "as-needed",
9
- "printWidth": 80
10
- }
@@ -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
- ]);
@@ -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"