@messagevisor/core 0.0.1 → 0.1.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.
Files changed (211) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +7 -0
  4. package/jest.config.js +8 -0
  5. package/lib/benchmark/index.d.ts +2 -0
  6. package/lib/benchmark/index.js +417 -0
  7. package/lib/benchmark/index.js.map +1 -0
  8. package/lib/builder/index.d.ts +70 -0
  9. package/lib/builder/index.js +831 -0
  10. package/lib/builder/index.js.map +1 -0
  11. package/lib/cli/index.d.ts +28 -0
  12. package/lib/cli/index.js +182 -0
  13. package/lib/cli/index.js.map +1 -0
  14. package/lib/config/index.d.ts +61 -0
  15. package/lib/config/index.js +255 -0
  16. package/lib/config/index.js.map +1 -0
  17. package/lib/create/index.d.ts +2 -0
  18. package/lib/create/index.js +405 -0
  19. package/lib/create/index.js.map +1 -0
  20. package/lib/datasource/filesystemAdapter.d.ts +44 -0
  21. package/lib/datasource/filesystemAdapter.js +424 -0
  22. package/lib/datasource/filesystemAdapter.js.map +1 -0
  23. package/lib/datasource/index.d.ts +39 -0
  24. package/lib/datasource/index.js +96 -0
  25. package/lib/datasource/index.js.map +1 -0
  26. package/lib/error.d.ts +6 -0
  27. package/lib/error.js +49 -0
  28. package/lib/error.js.map +1 -0
  29. package/lib/evaluate/cli.d.ts +8 -0
  30. package/lib/evaluate/cli.js +179 -0
  31. package/lib/evaluate/cli.js.map +1 -0
  32. package/lib/evaluate/index.d.ts +10 -0
  33. package/lib/evaluate/index.js +131 -0
  34. package/lib/evaluate/index.js.map +1 -0
  35. package/lib/examples/coerceExampleIsoDates.d.ts +12 -0
  36. package/lib/examples/coerceExampleIsoDates.js +81 -0
  37. package/lib/examples/coerceExampleIsoDates.js.map +1 -0
  38. package/lib/examples/index.d.ts +63 -0
  39. package/lib/examples/index.js +713 -0
  40. package/lib/examples/index.js.map +1 -0
  41. package/lib/exporter/index.d.ts +60 -0
  42. package/lib/exporter/index.js +610 -0
  43. package/lib/exporter/index.js.map +1 -0
  44. package/lib/find-duplicates/index.d.ts +41 -0
  45. package/lib/find-duplicates/index.js +297 -0
  46. package/lib/find-duplicates/index.js.map +1 -0
  47. package/lib/generate-code/index.d.ts +11 -0
  48. package/lib/generate-code/index.js +157 -0
  49. package/lib/generate-code/index.js.map +1 -0
  50. package/lib/generate-code/typescript.d.ts +14 -0
  51. package/lib/generate-code/typescript.js +307 -0
  52. package/lib/generate-code/typescript.js.map +1 -0
  53. package/lib/importer/index.d.ts +64 -0
  54. package/lib/importer/index.js +1092 -0
  55. package/lib/importer/index.js.map +1 -0
  56. package/lib/index.d.ts +18 -0
  57. package/lib/index.js +35 -0
  58. package/lib/index.js.map +1 -0
  59. package/lib/info/index.d.ts +17 -0
  60. package/lib/info/index.js +132 -0
  61. package/lib/info/index.js.map +1 -0
  62. package/lib/init/index.d.ts +30 -0
  63. package/lib/init/index.js +348 -0
  64. package/lib/init/index.js.map +1 -0
  65. package/lib/lint/index.d.ts +1 -0
  66. package/lib/lint/index.js +6 -0
  67. package/lib/lint/index.js.map +1 -0
  68. package/lib/linter/attributeSchema.d.ts +7 -0
  69. package/lib/linter/attributeSchema.js +36 -0
  70. package/lib/linter/attributeSchema.js.map +1 -0
  71. package/lib/linter/checkLocaleCircularDependency.d.ts +7 -0
  72. package/lib/linter/checkLocaleCircularDependency.js +42 -0
  73. package/lib/linter/checkLocaleCircularDependency.js.map +1 -0
  74. package/lib/linter/conditionSchema.d.ts +3 -0
  75. package/lib/linter/conditionSchema.js +283 -0
  76. package/lib/linter/conditionSchema.js.map +1 -0
  77. package/lib/linter/formatSchema.d.ts +325 -0
  78. package/lib/linter/formatSchema.js +165 -0
  79. package/lib/linter/formatSchema.js.map +1 -0
  80. package/lib/linter/icuStyleLint.d.ts +6 -0
  81. package/lib/linter/icuStyleLint.js +226 -0
  82. package/lib/linter/icuStyleLint.js.map +1 -0
  83. package/lib/linter/index.d.ts +34 -0
  84. package/lib/linter/index.js +557 -0
  85. package/lib/linter/index.js.map +1 -0
  86. package/lib/linter/localeSchema.d.ts +672 -0
  87. package/lib/linter/localeSchema.js +50 -0
  88. package/lib/linter/localeSchema.js.map +1 -0
  89. package/lib/linter/messageSchema.d.ts +35 -0
  90. package/lib/linter/messageSchema.js +115 -0
  91. package/lib/linter/messageSchema.js.map +1 -0
  92. package/lib/linter/printError.d.ts +8 -0
  93. package/lib/linter/printError.js +41 -0
  94. package/lib/linter/printError.js.map +1 -0
  95. package/lib/linter/schema.d.ts +33 -0
  96. package/lib/linter/schema.js +192 -0
  97. package/lib/linter/schema.js.map +1 -0
  98. package/lib/linter/segmentSchema.d.ts +8 -0
  99. package/lib/linter/segmentSchema.js +18 -0
  100. package/lib/linter/segmentSchema.js.map +1 -0
  101. package/lib/linter/targetSchema.d.ts +337 -0
  102. package/lib/linter/targetSchema.js +39 -0
  103. package/lib/linter/targetSchema.js.map +1 -0
  104. package/lib/linter/testSchema.d.ts +71 -0
  105. package/lib/linter/testSchema.js +165 -0
  106. package/lib/linter/testSchema.js.map +1 -0
  107. package/lib/linter/zodHelpers.d.ts +2 -0
  108. package/lib/linter/zodHelpers.js +15 -0
  109. package/lib/linter/zodHelpers.js.map +1 -0
  110. package/lib/list/index.d.ts +8 -0
  111. package/lib/list/index.js +524 -0
  112. package/lib/list/index.js.map +1 -0
  113. package/lib/matrix.d.ts +4 -0
  114. package/lib/matrix.js +66 -0
  115. package/lib/matrix.js.map +1 -0
  116. package/lib/promoter/index.d.ts +65 -0
  117. package/lib/promoter/index.js +1208 -0
  118. package/lib/promoter/index.js.map +1 -0
  119. package/lib/prune/index.d.ts +37 -0
  120. package/lib/prune/index.js +673 -0
  121. package/lib/prune/index.js.map +1 -0
  122. package/lib/sets.d.ts +10 -0
  123. package/lib/sets.js +120 -0
  124. package/lib/sets.js.map +1 -0
  125. package/lib/tester/cliFormat.d.ts +8 -0
  126. package/lib/tester/cliFormat.js +15 -0
  127. package/lib/tester/cliFormat.js.map +1 -0
  128. package/lib/tester/index.d.ts +35 -0
  129. package/lib/tester/index.js +713 -0
  130. package/lib/tester/index.js.map +1 -0
  131. package/lib/tester/matrix.d.ts +14 -0
  132. package/lib/tester/matrix.js +76 -0
  133. package/lib/tester/matrix.js.map +1 -0
  134. package/lib/tester/prettyDuration.d.ts +1 -0
  135. package/lib/tester/prettyDuration.js +30 -0
  136. package/lib/tester/prettyDuration.js.map +1 -0
  137. package/lib/tester/printTestResult.d.ts +2 -0
  138. package/lib/tester/printTestResult.js +32 -0
  139. package/lib/tester/printTestResult.js.map +1 -0
  140. package/lib/tester/types.d.ts +29 -0
  141. package/lib/tester/types.js +3 -0
  142. package/lib/tester/types.js.map +1 -0
  143. package/package.json +41 -13
  144. package/src/benchmark/index.spec.ts +375 -0
  145. package/src/benchmark/index.ts +433 -0
  146. package/src/builder/index.spec.ts +822 -0
  147. package/src/builder/index.ts +920 -0
  148. package/src/cli/index.spec.ts +54 -0
  149. package/src/cli/index.ts +150 -0
  150. package/src/config/index.spec.ts +70 -0
  151. package/src/config/index.ts +259 -0
  152. package/src/create/index.spec.ts +272 -0
  153. package/src/create/index.ts +295 -0
  154. package/src/datasource/filesystemAdapter.ts +313 -0
  155. package/src/datasource/index.ts +135 -0
  156. package/src/error.ts +33 -0
  157. package/src/evaluate/cli.spec.ts +368 -0
  158. package/src/evaluate/cli.ts +130 -0
  159. package/src/evaluate/index.ts +161 -0
  160. package/src/examples/coerceExampleIsoDates.spec.ts +81 -0
  161. package/src/examples/coerceExampleIsoDates.ts +98 -0
  162. package/src/examples/index.spec.ts +453 -0
  163. package/src/examples/index.ts +854 -0
  164. package/src/exporter/index.spec.ts +443 -0
  165. package/src/exporter/index.ts +643 -0
  166. package/src/find-duplicates/index.spec.ts +289 -0
  167. package/src/find-duplicates/index.ts +314 -0
  168. package/src/generate-code/index.ts +92 -0
  169. package/src/generate-code/typescript.spec.ts +241 -0
  170. package/src/generate-code/typescript.ts +284 -0
  171. package/src/importer/index.spec.ts +1101 -0
  172. package/src/importer/index.ts +1190 -0
  173. package/src/index.ts +18 -0
  174. package/src/info/index.ts +67 -0
  175. package/src/init/index.spec.ts +279 -0
  176. package/src/init/index.ts +292 -0
  177. package/src/lint/index.ts +1 -0
  178. package/src/linter/attributeSchema.ts +38 -0
  179. package/src/linter/checkLocaleCircularDependency.ts +51 -0
  180. package/src/linter/conditionSchema.ts +386 -0
  181. package/src/linter/formatSchema.ts +170 -0
  182. package/src/linter/icuStyleLint.ts +312 -0
  183. package/src/linter/index.spec.ts +824 -0
  184. package/src/linter/index.ts +460 -0
  185. package/src/linter/localeSchema.ts +70 -0
  186. package/src/linter/messageSchema.ts +152 -0
  187. package/src/linter/printError.ts +52 -0
  188. package/src/linter/schema.ts +230 -0
  189. package/src/linter/segmentSchema.ts +15 -0
  190. package/src/linter/targetSchema.ts +50 -0
  191. package/src/linter/testSchema.spec.ts +405 -0
  192. package/src/linter/testSchema.ts +239 -0
  193. package/src/linter/zodHelpers.ts +16 -0
  194. package/src/list/index.spec.ts +431 -0
  195. package/src/list/index.ts +463 -0
  196. package/src/matrix.ts +69 -0
  197. package/src/promoter/index.spec.ts +584 -0
  198. package/src/promoter/index.ts +1267 -0
  199. package/src/prune/index.spec.ts +418 -0
  200. package/src/prune/index.ts +693 -0
  201. package/src/sets.ts +74 -0
  202. package/src/tester/cliFormat.ts +11 -0
  203. package/src/tester/featurevisorIntegration.spec.ts +101 -0
  204. package/src/tester/index.spec.ts +577 -0
  205. package/src/tester/index.ts +679 -0
  206. package/src/tester/matrix.ts +106 -0
  207. package/src/tester/prettyDuration.ts +34 -0
  208. package/src/tester/printTestResult.ts +40 -0
  209. package/src/tester/types.ts +32 -0
  210. package/tsconfig.cjs.json +11 -0
  211. package/tsconfig.typecheck.json +4 -0
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __generator = (this && this.__generator) || function (thisArg, body) {
45
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
46
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
+ function verb(n) { return function (v) { return step([n, v]); }; }
48
+ function step(op) {
49
+ if (f) throw new TypeError("Generator is already executing.");
50
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
52
+ if (y = 0, t) op = [op[0] & 2, t.value];
53
+ switch (op[0]) {
54
+ case 0: case 1: t = op; break;
55
+ case 4: _.label++; return { value: op[1], done: false };
56
+ case 5: _.label++; y = op[1]; op = [0]; continue;
57
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
+ default:
59
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
+ if (t[2]) _.ops.pop();
64
+ _.trys.pop(); continue;
65
+ }
66
+ op = body.call(thisArg, _);
67
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
+ }
70
+ };
71
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
72
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
73
+ if (ar || !(i in from)) {
74
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
75
+ ar[i] = from[i];
76
+ }
77
+ }
78
+ return to.concat(ar || Array.prototype.slice.call(from));
79
+ };
80
+ Object.defineProperty(exports, "__esModule", { value: true });
81
+ exports.generateTypeScriptCodeForProject = generateTypeScriptCodeForProject;
82
+ var fs = __importStar(require("fs"));
83
+ var path = __importStar(require("path"));
84
+ var error_1 = require("../error");
85
+ var sets_1 = require("../sets");
86
+ function toArray(value) {
87
+ if (typeof value === "undefined")
88
+ return [];
89
+ return Array.isArray(value) ? value : [value];
90
+ }
91
+ function matchesPattern(key, patterns) {
92
+ if (!patterns || patterns.length === 0) {
93
+ return false;
94
+ }
95
+ return patterns.some(function (pattern) {
96
+ var escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
97
+ return new RegExp("^".concat(escaped, "$")).test(key);
98
+ });
99
+ }
100
+ function isAvailable(message) {
101
+ return !message.archived;
102
+ }
103
+ function sortUnique(values) {
104
+ return Array.from(new Set(values)).sort();
105
+ }
106
+ function resolveSelectedSet(projectConfig, value) {
107
+ var sets = toArray(value);
108
+ if (!projectConfig.sets && sets.length > 0) {
109
+ throw new error_1.MessagevisorCLIError("Option --set can only be used when project sets are enabled.");
110
+ }
111
+ if (sets.length > 1) {
112
+ throw new error_1.MessagevisorCLIError("Only one --set value can be used for code generation.");
113
+ }
114
+ return sets[0];
115
+ }
116
+ function collectTargetMessageKeys(datasource, targetKeys, allMessageKeys) {
117
+ return __awaiter(this, void 0, void 0, function () {
118
+ var selected, _i, targetKeys_1, targetKey, target, includeMessages, excludeMessages, _a, allMessageKeys_1, messageKey;
119
+ var _b;
120
+ return __generator(this, function (_c) {
121
+ switch (_c.label) {
122
+ case 0:
123
+ if (targetKeys.length === 0) {
124
+ return [2 /*return*/, allMessageKeys];
125
+ }
126
+ selected = [];
127
+ _i = 0, targetKeys_1 = targetKeys;
128
+ _c.label = 1;
129
+ case 1:
130
+ if (!(_i < targetKeys_1.length)) return [3 /*break*/, 4];
131
+ targetKey = targetKeys_1[_i];
132
+ return [4 /*yield*/, datasource.readTarget(targetKey)];
133
+ case 2:
134
+ target = (_c.sent());
135
+ includeMessages = ((_b = target.includeMessages) === null || _b === void 0 ? void 0 : _b.length) ? target.includeMessages : ["*"];
136
+ excludeMessages = target.excludeMessages || [];
137
+ for (_a = 0, allMessageKeys_1 = allMessageKeys; _a < allMessageKeys_1.length; _a++) {
138
+ messageKey = allMessageKeys_1[_a];
139
+ if (matchesPattern(messageKey, includeMessages) &&
140
+ !matchesPattern(messageKey, excludeMessages)) {
141
+ selected.push(messageKey);
142
+ }
143
+ }
144
+ _c.label = 3;
145
+ case 3:
146
+ _i++;
147
+ return [3 /*break*/, 1];
148
+ case 4: return [2 /*return*/, sortUnique(selected)];
149
+ }
150
+ });
151
+ });
152
+ }
153
+ function collectMessageKeysForDatasource(datasource, options) {
154
+ return __awaiter(this, void 0, void 0, function () {
155
+ var allMessageKeys, messages, _i, allMessageKeys_2, messageKey, _a, _b, messageKeys, includeMessages, excludeMessages;
156
+ return __generator(this, function (_c) {
157
+ switch (_c.label) {
158
+ case 0: return [4 /*yield*/, datasource.listMessages()];
159
+ case 1:
160
+ allMessageKeys = _c.sent();
161
+ messages = {};
162
+ _i = 0, allMessageKeys_2 = allMessageKeys;
163
+ _c.label = 2;
164
+ case 2:
165
+ if (!(_i < allMessageKeys_2.length)) return [3 /*break*/, 5];
166
+ messageKey = allMessageKeys_2[_i];
167
+ _a = messages;
168
+ _b = messageKey;
169
+ return [4 /*yield*/, datasource.readMessage(messageKey)];
170
+ case 3:
171
+ _a[_b] = _c.sent();
172
+ _c.label = 4;
173
+ case 4:
174
+ _i++;
175
+ return [3 /*break*/, 2];
176
+ case 5: return [4 /*yield*/, collectTargetMessageKeys(datasource, toArray(options.target), allMessageKeys)];
177
+ case 6:
178
+ messageKeys = _c.sent();
179
+ includeMessages = toArray(options.includeMessages);
180
+ excludeMessages = toArray(options.excludeMessages);
181
+ if (includeMessages.length > 0) {
182
+ messageKeys = messageKeys.filter(function (messageKey) { return matchesPattern(messageKey, includeMessages); });
183
+ }
184
+ if (excludeMessages.length > 0) {
185
+ messageKeys = messageKeys.filter(function (messageKey) { return !matchesPattern(messageKey, excludeMessages); });
186
+ }
187
+ return [2 /*return*/, messageKeys.filter(function (messageKey) { return isAvailable(messages[messageKey]); })];
188
+ }
189
+ });
190
+ });
191
+ }
192
+ function collectMessageKeys(projectConfig, datasource, options) {
193
+ return __awaiter(this, void 0, void 0, function () {
194
+ var selectedSet, executions, messageKeys, _i, executions_1, execution, _a, _b, _c;
195
+ return __generator(this, function (_d) {
196
+ switch (_d.label) {
197
+ case 0:
198
+ selectedSet = resolveSelectedSet(projectConfig, options.set);
199
+ return [4 /*yield*/, (0, sets_1.getProjectSetExecutions)(projectConfig, datasource, selectedSet)];
200
+ case 1:
201
+ executions = _d.sent();
202
+ messageKeys = [];
203
+ _i = 0, executions_1 = executions;
204
+ _d.label = 2;
205
+ case 2:
206
+ if (!(_i < executions_1.length)) return [3 /*break*/, 5];
207
+ execution = executions_1[_i];
208
+ _b = (_a = messageKeys.push).apply;
209
+ _c = [messageKeys];
210
+ return [4 /*yield*/, collectMessageKeysForDatasource(execution.datasource, options)];
211
+ case 3:
212
+ _b.apply(_a, _c.concat([(_d.sent())]));
213
+ _d.label = 4;
214
+ case 4:
215
+ _i++;
216
+ return [3 /*break*/, 2];
217
+ case 5: return [2 /*return*/, sortUnique(messageKeys)];
218
+ }
219
+ });
220
+ });
221
+ }
222
+ function renderMessageKeyType(messageKeys) {
223
+ if (messageKeys.length === 0) {
224
+ return "export type MessagevisorMessageKey = never;\n";
225
+ }
226
+ return __spreadArray(__spreadArray([
227
+ "export type MessagevisorMessageKey ="
228
+ ], messageKeys.map(function (messageKey, index) {
229
+ var suffix = index === messageKeys.length - 1 ? ";" : "";
230
+ return " | ".concat(JSON.stringify(messageKey)).concat(suffix);
231
+ }), true), [
232
+ "",
233
+ ], false).join("\n");
234
+ }
235
+ function renderSdkFile() {
236
+ return "import type {\n TranslateOptions,\n MessageFormatResult,\n MessagePrimitiveValue,\n MessageValues,\n Messagevisor,\n} from \"@messagevisor/sdk\";\nimport type { MessagevisorMessageKey } from \"./messages\";\n\nlet instance: Messagevisor | undefined;\n\nexport function setInstance(messagevisor: Messagevisor) {\n instance = messagevisor;\n}\n\nexport function getInstance() {\n if (!instance) {\n throw new Error(\"Messagevisor instance is not set. Call setInstance(instance) first.\");\n }\n\n return instance;\n}\n\nexport function translate(\n messageKey: MessagevisorMessageKey,\n values?: Record<string, MessagePrimitiveValue>,\n options?: TranslateOptions,\n): string;\nexport function translate<T>(\n messageKey: MessagevisorMessageKey,\n values: MessageValues<T>,\n options?: TranslateOptions,\n): MessageFormatResult<T>;\nexport function translate<T>(\n messageKey: MessagevisorMessageKey,\n values?: MessageValues<T>,\n options?: TranslateOptions,\n) {\n return getInstance().translate(messageKey, values, options);\n}\n\nexport const t = translate;\n";
237
+ }
238
+ function renderReactFile() {
239
+ return "import type * as React from \"react\";\nimport type {\n TranslateOptions,\n MessageFormatResult,\n MessagePrimitiveValue,\n MessageValues,\n} from \"@messagevisor/sdk\";\nimport {\n useMessagevisor as useBaseMessagevisor,\n useTranslation as useBaseTranslation,\n} from \"@messagevisor/react\";\nimport type { MessagevisorMessageKey } from \"./messages\";\n\nexport function useTranslation(\n messageKey: MessagevisorMessageKey,\n values?: Record<string, MessagePrimitiveValue>,\n options?: TranslateOptions,\n): string;\nexport function useTranslation<T>(\n messageKey: MessagevisorMessageKey,\n values: MessageValues<T>,\n options?: TranslateOptions,\n): MessageFormatResult<T> | React.ReactNode;\nexport function useTranslation<T>(\n messageKey: MessagevisorMessageKey,\n values?: MessageValues<T>,\n options?: TranslateOptions,\n) {\n return useBaseTranslation(messageKey, values as any, options);\n}\n\nexport function useMessagevisor() {\n const messagevisor = useBaseMessagevisor();\n\n return {\n ...messagevisor,\n t: messagevisor.t as typeof useTranslation,\n };\n}\n";
240
+ }
241
+ function renderIndexFile(react) {
242
+ return [
243
+ 'export type * from "./messages";',
244
+ 'export * from "./sdk";',
245
+ react ? 'export * from "./react";' : "",
246
+ "",
247
+ ]
248
+ .filter(function (line) { return line !== ""; })
249
+ .join("\n");
250
+ }
251
+ function writeGeneratedFile(outDir, fileName, content) {
252
+ return __awaiter(this, void 0, void 0, function () {
253
+ var filePath;
254
+ return __generator(this, function (_a) {
255
+ switch (_a.label) {
256
+ case 0:
257
+ filePath = path.join(outDir, fileName);
258
+ return [4 /*yield*/, fs.promises.mkdir(path.dirname(filePath), { recursive: true })];
259
+ case 1:
260
+ _a.sent();
261
+ return [4 /*yield*/, fs.promises.writeFile(filePath, content.endsWith("\n") ? content : "".concat(content, "\n"))];
262
+ case 2:
263
+ _a.sent();
264
+ return [2 /*return*/, filePath];
265
+ }
266
+ });
267
+ });
268
+ }
269
+ function generateTypeScriptCodeForProject(projectConfig_1, datasource_1, outDir_1) {
270
+ return __awaiter(this, arguments, void 0, function (projectConfig, datasource, outDir, options) {
271
+ var messageKeys, files, _a, _b, _c;
272
+ if (options === void 0) { options = {}; }
273
+ return __generator(this, function (_d) {
274
+ switch (_d.label) {
275
+ case 0: return [4 /*yield*/, collectMessageKeys(projectConfig, datasource, options)];
276
+ case 1:
277
+ messageKeys = _d.sent();
278
+ return [4 /*yield*/, writeGeneratedFile(outDir, "messages.ts", renderMessageKeyType(messageKeys))];
279
+ case 2:
280
+ _a = [
281
+ _d.sent()
282
+ ];
283
+ return [4 /*yield*/, writeGeneratedFile(outDir, "sdk.ts", renderSdkFile())];
284
+ case 3:
285
+ _a = _a.concat([
286
+ _d.sent()
287
+ ]);
288
+ return [4 /*yield*/, writeGeneratedFile(outDir, "index.ts", renderIndexFile(options.react))];
289
+ case 4:
290
+ files = _a.concat([
291
+ _d.sent()
292
+ ]);
293
+ if (!options.react) return [3 /*break*/, 6];
294
+ _c = (_b = files).push;
295
+ return [4 /*yield*/, writeGeneratedFile(outDir, "react.ts", renderReactFile())];
296
+ case 5:
297
+ _c.apply(_b, [_d.sent()]);
298
+ _d.label = 6;
299
+ case 6: return [2 /*return*/, {
300
+ messageKeys: messageKeys,
301
+ files: files,
302
+ }];
303
+ }
304
+ });
305
+ });
306
+ }
307
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/generate-code/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Message } from "@messagevisor/types";
2
+ import type { ProjectConfig } from "../config";
3
+ import type { Datasource } from "../datasource";
4
+ export interface ImportProjectOptions {
5
+ input?: string;
6
+ set?: string | string[];
7
+ locale?: string | string[];
8
+ createMissing?: boolean;
9
+ apply?: boolean;
10
+ prune?: boolean;
11
+ fromJson?: boolean;
12
+ jsonPath?: string;
13
+ delimiter?: string;
14
+ bom?: boolean;
15
+ }
16
+ interface ImportPlanEntry {
17
+ set?: string;
18
+ key: string;
19
+ original?: Message;
20
+ updated: Message;
21
+ createdMessage: boolean;
22
+ createdOverrides: string[];
23
+ changedLocales: string[];
24
+ changedOverrideLocales: Array<{
25
+ overrideKey: string;
26
+ locale: string;
27
+ }>;
28
+ prunedLocales: string[];
29
+ prunedOverrideLocales: Array<{
30
+ overrideKey: string;
31
+ locale: string;
32
+ }>;
33
+ }
34
+ export interface ImportProjectResult {
35
+ inputFilePath: string;
36
+ apply: boolean;
37
+ duration: number;
38
+ summary: {
39
+ rows: number;
40
+ changedMessages: number;
41
+ changedOverrides: number;
42
+ createdMessages: number;
43
+ createdOverrides: number;
44
+ changedTranslations: number;
45
+ prunedTranslations: number;
46
+ skippedRows: number;
47
+ skippedCells: number;
48
+ warnings: number;
49
+ sets: string[];
50
+ };
51
+ warnings: string[];
52
+ plans: ImportPlanEntry[];
53
+ }
54
+ export declare function importProject(projectConfig: ProjectConfig, datasource: Datasource, options?: ImportProjectOptions, parsed?: any): Promise<ImportProjectResult>;
55
+ export declare function importProjectSets(projectConfig: ProjectConfig, datasource: Datasource, options?: ImportProjectOptions, parsed?: any): Promise<ImportProjectResult>;
56
+ export declare const importPlugin: {
57
+ command: string;
58
+ handler: ({ projectConfig, datasource, parsed }: any) => Promise<boolean>;
59
+ examples: {
60
+ command: string;
61
+ description: string;
62
+ }[];
63
+ };
64
+ export {};