@uniformdev/tms-sdk 19.154.1-alpha.18 → 19.154.1-alpha.22

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/index.esm.js CHANGED
@@ -3,20 +3,207 @@ import {
3
3
  bindVariables,
4
4
  walkNodeTree
5
5
  } from "@uniformdev/canvas";
6
+ import { isRichTextValue, isRichTextValueConsideredEmpty as isRichTextValueConsideredEmpty2 } from "@uniformdev/richtext";
6
7
 
7
8
  // src/constants.ts
8
9
  var TRANSLATION_PAYLOAD_SOURCE_KEY = "source";
9
10
  var TRANSLATION_PAYLOAD_TARGET_KEY = "target";
10
11
  var TRANSLATION_PAYLOAD_ORIGINAL_TARGET_KEY = "originalTarget";
12
+ var SUPPORTED_PARAM_TYPES = {
13
+ text: "text",
14
+ richText: "richText"
15
+ };
11
16
 
12
- // src/collectTranslationPayload.ts
17
+ // src/translationHelpers.ts
18
+ import { isRichTextValueConsideredEmpty } from "@uniformdev/richtext";
19
+ import { dequal } from "dequal/lite";
13
20
  var MERGE_TRANSLATION_ERRORS = {
14
21
  unknown: "Unknown error",
15
22
  "invalid-args": "Invalid arguments",
16
- "entity-source-locale-missing": "Entity does not include specified Uniform source locale"
23
+ "project-id-mismatch": "Project ID mismatch",
24
+ "entity-id-mismatch": "Enity ID mismatch",
25
+ "entity-locales-mismatch": "Entity does not include required locales"
17
26
  };
18
27
  var createErrorResult = (errorKind) => {
19
- return { errorKind, errorText: MERGE_TRANSLATION_ERRORS[errorKind] };
28
+ return { updated: false, errorKind, errorText: MERGE_TRANSLATION_ERRORS[errorKind] };
29
+ };
30
+ var processComponentTranslation = ({
31
+ uniformSourceLocale,
32
+ uniformTargetLocale,
33
+ overrideModifiedTargetLocale,
34
+ originalNode,
35
+ translatedComponent
36
+ }) => {
37
+ var _a, _b;
38
+ let updated = false;
39
+ if (!originalNode.type || !originalNode._id) {
40
+ return { updated };
41
+ }
42
+ const componentParameters = "parameters" in originalNode ? originalNode.parameters : void 0;
43
+ const entryFields = "fields" in originalNode ? originalNode.fields : void 0;
44
+ const originalParametersOrFields = componentParameters != null ? componentParameters : entryFields;
45
+ Object.entries((_a = translatedComponent.parameters) != null ? _a : {}).forEach(([paramKey, parameter]) => {
46
+ const originalParameter = originalParametersOrFields == null ? void 0 : originalParametersOrFields[paramKey];
47
+ if (!originalParameter) {
48
+ return;
49
+ }
50
+ const result = processParameterTranslation({
51
+ uniformSourceLocale,
52
+ uniformTargetLocale,
53
+ overrideModifiedTargetLocale,
54
+ originalParameter,
55
+ parameter
56
+ });
57
+ if (result.updated) {
58
+ updated = true;
59
+ }
60
+ });
61
+ Object.entries((_b = translatedComponent._overrides) != null ? _b : {}).forEach(([overrideKey, override]) => {
62
+ var _a2;
63
+ const originalOverride = (_a2 = originalNode._overrides) == null ? void 0 : _a2[overrideKey];
64
+ if (!originalOverride) {
65
+ return;
66
+ }
67
+ const result = processOverrideTranslation({
68
+ uniformSourceLocale,
69
+ uniformTargetLocale,
70
+ overrideModifiedTargetLocale,
71
+ originalOverride,
72
+ override
73
+ });
74
+ if (result.updated) {
75
+ updated = true;
76
+ }
77
+ });
78
+ return { updated };
79
+ };
80
+ var processParameterTranslation = ({
81
+ uniformSourceLocale,
82
+ uniformTargetLocale,
83
+ overrideModifiedTargetLocale,
84
+ originalParameter,
85
+ parameter
86
+ }) => {
87
+ var _a, _b, _c;
88
+ if (!originalParameter.locales) {
89
+ return { updated: false };
90
+ }
91
+ if (originalParameter.type !== parameter.type) {
92
+ return { updated: false };
93
+ }
94
+ const sourceValue = (_a = parameter.locales) == null ? void 0 : _a[TRANSLATION_PAYLOAD_SOURCE_KEY];
95
+ const targetValue = (_b = parameter.locales) == null ? void 0 : _b[TRANSLATION_PAYLOAD_TARGET_KEY];
96
+ const originalTargetValue = (_c = parameter.locales) == null ? void 0 : _c[TRANSLATION_PAYLOAD_ORIGINAL_TARGET_KEY];
97
+ const isSourceValueUntouched = isSameParameterValue({
98
+ parameterType: originalParameter.type,
99
+ left: originalParameter.locales[uniformSourceLocale],
100
+ right: sourceValue
101
+ });
102
+ const isTargetValueUntouched = overrideModifiedTargetLocale || isSameParameterValue({
103
+ parameterType: originalParameter.type,
104
+ left: originalParameter.locales[uniformTargetLocale],
105
+ right: originalTargetValue
106
+ });
107
+ if (targetValue && isSourceValueUntouched && isTargetValueUntouched) {
108
+ originalParameter.locales[uniformTargetLocale] = targetValue;
109
+ return { updated: true };
110
+ }
111
+ return { updated: false };
112
+ };
113
+ var processOverrideTranslation = ({
114
+ uniformSourceLocale,
115
+ uniformTargetLocale,
116
+ overrideModifiedTargetLocale,
117
+ originalOverride,
118
+ override
119
+ }) => {
120
+ var _a, _b;
121
+ let updated = false;
122
+ Object.entries((_a = override.parameters) != null ? _a : {}).forEach(([paramKey, parameter]) => {
123
+ var _a2, _b2, _c, _d;
124
+ const originalParameter = (_a2 = originalOverride.parameters) == null ? void 0 : _a2[paramKey];
125
+ if (!originalParameter || !originalParameter.locales) {
126
+ return;
127
+ }
128
+ if (originalParameter.type !== parameter.type) {
129
+ return;
130
+ }
131
+ const sourceValue = (_b2 = parameter.locales) == null ? void 0 : _b2[TRANSLATION_PAYLOAD_SOURCE_KEY];
132
+ const targetValue = (_c = parameter.locales) == null ? void 0 : _c[TRANSLATION_PAYLOAD_TARGET_KEY];
133
+ const originalTargetValue = (_d = parameter.locales) == null ? void 0 : _d[TRANSLATION_PAYLOAD_ORIGINAL_TARGET_KEY];
134
+ const isSourceValueUntouched = isSameParameterValue({
135
+ parameterType: originalParameter.type,
136
+ left: originalParameter.locales[uniformSourceLocale],
137
+ right: sourceValue
138
+ });
139
+ const isTargetValueUntouched = overrideModifiedTargetLocale || isSameParameterValue({
140
+ parameterType: originalParameter.type,
141
+ left: originalParameter.locales[uniformTargetLocale],
142
+ right: originalTargetValue
143
+ });
144
+ if (targetValue && isSourceValueUntouched && isTargetValueUntouched) {
145
+ originalParameter.locales[uniformTargetLocale] = targetValue;
146
+ updated = true;
147
+ }
148
+ });
149
+ Object.entries((_b = override.slots) != null ? _b : {}).forEach(([slotKey, slotComponents]) => {
150
+ var _a2;
151
+ const originalSlotComponents = (_a2 = originalOverride.slots) == null ? void 0 : _a2[slotKey];
152
+ if (!(originalSlotComponents == null ? void 0 : originalSlotComponents.length)) {
153
+ return;
154
+ }
155
+ slotComponents.forEach((slotComponent) => {
156
+ if (!slotComponent.type || !slotComponent._id) {
157
+ return;
158
+ }
159
+ const originalComponent = originalSlotComponents.find(
160
+ (x) => x._id === slotComponent._id && x.type === slotComponent.type
161
+ );
162
+ if (!originalComponent) {
163
+ return;
164
+ }
165
+ const { updated: isComponentUpdated } = processComponentTranslation({
166
+ uniformSourceLocale,
167
+ uniformTargetLocale,
168
+ overrideModifiedTargetLocale,
169
+ originalNode: originalComponent,
170
+ translatedComponent: slotComponent
171
+ });
172
+ if (isComponentUpdated) {
173
+ updated = true;
174
+ }
175
+ });
176
+ });
177
+ return { updated };
178
+ };
179
+ var isSameParameterValue = ({
180
+ parameterType,
181
+ left,
182
+ right
183
+ }) => {
184
+ switch (parameterType) {
185
+ case SUPPORTED_PARAM_TYPES.text:
186
+ return left === right || !left && !right;
187
+ break;
188
+ case SUPPORTED_PARAM_TYPES.richText:
189
+ if (isRichTextValueConsideredEmpty(left) && isRichTextValueConsideredEmpty(right)) {
190
+ return true;
191
+ }
192
+ return dequal(left, right);
193
+ break;
194
+ default:
195
+ return left === right;
196
+ }
197
+ };
198
+
199
+ // src/collectTranslationPayload.ts
200
+ var MERGE_TRANSLATION_ERRORS2 = {
201
+ unknown: "Unknown error",
202
+ "invalid-args": "Invalid arguments",
203
+ "entity-source-locale-missing": "Entity does not include specified Uniform source locale"
204
+ };
205
+ var createErrorResult2 = (errorKind) => {
206
+ return { errorKind, errorText: MERGE_TRANSLATION_ERRORS2[errorKind] };
20
207
  };
21
208
  var collectTranslationPayload = ({
22
209
  uniformProjectId,
@@ -29,10 +216,10 @@ var collectTranslationPayload = ({
29
216
  overrideModifiedTargetLocale
30
217
  }) => {
31
218
  if (!uniformSourceLocale || !uniformTargetLocale || !targetLang || !entity) {
32
- return createErrorResult("invalid-args");
219
+ return createErrorResult2("invalid-args");
33
220
  }
34
221
  if (!entity._locales || !entity._locales.includes(uniformSourceLocale)) {
35
- return createErrorResult("entity-source-locale-missing");
222
+ return createErrorResult2("entity-source-locale-missing");
36
223
  }
37
224
  const payload = {
38
225
  schemaVersion: 1,
@@ -90,7 +277,7 @@ var collectFromNode = ({
90
277
  if (!canTranslateParameterValue(param, sourceLocaleValue)) {
91
278
  return;
92
279
  }
93
- if (!overrideModifiedTargetLocale && !isTargetLocaleUntouched(sourceLocaleValue, targetLocaleValue)) {
280
+ if (!overrideModifiedTargetLocale && !isTargetLocaleUntouched(param.type, sourceLocaleValue, targetLocaleValue)) {
94
281
  return;
95
282
  }
96
283
  parameters[paramKey] = {
@@ -111,7 +298,7 @@ var collectFromNode = ({
111
298
  if (!canTranslateParameterValue(param, sourceLocaleValue)) {
112
299
  return;
113
300
  }
114
- if (!overrideModifiedTargetLocale && !isTargetLocaleUntouched(sourceLocaleValue, targetLocaleValue)) {
301
+ if (!overrideModifiedTargetLocale && !isTargetLocaleUntouched(param.type, sourceLocaleValue, targetLocaleValue)) {
115
302
  return;
116
303
  }
117
304
  (_c = overrides[overrideKey]) != null ? _c : overrides[overrideKey] = {};
@@ -162,7 +349,7 @@ var collectFromNode = ({
162
349
  };
163
350
  };
164
351
  var canTranslateParameterValue = (parameter, value) => {
165
- if (parameter.type === "text") {
352
+ if (parameter.type === SUPPORTED_PARAM_TYPES.text) {
166
353
  if (typeof value !== "string" || !value) {
167
354
  return false;
168
355
  }
@@ -179,13 +366,26 @@ var canTranslateParameterValue = (parameter, value) => {
179
366
  return false;
180
367
  }
181
368
  return true;
182
- } else if (parameter.type === "richText") {
183
- return typeof value === "object" && !!value;
369
+ } else if (parameter.type === SUPPORTED_PARAM_TYPES.richText) {
370
+ return isRichTextValue(value) && !isRichTextValueConsideredEmpty2(value);
184
371
  }
185
372
  return false;
186
373
  };
187
- var isTargetLocaleUntouched = (sourceLocaleValue, targetLocaleValue) => {
188
- return targetLocaleValue === void 0 || targetLocaleValue === null || targetLocaleValue === "" || targetLocaleValue === sourceLocaleValue;
374
+ var isTargetLocaleUntouched = (parameterType, sourceLocaleValue, targetLocaleValue) => {
375
+ if (targetLocaleValue === void 0 || targetLocaleValue === null) {
376
+ return true;
377
+ }
378
+ if (parameterType === SUPPORTED_PARAM_TYPES.text && !targetLocaleValue) {
379
+ return true;
380
+ }
381
+ if (parameterType === SUPPORTED_PARAM_TYPES.richText && isRichTextValueConsideredEmpty2(targetLocaleValue)) {
382
+ return true;
383
+ }
384
+ return isSameParameterValue({
385
+ parameterType,
386
+ left: sourceLocaleValue,
387
+ right: targetLocaleValue
388
+ });
189
389
  };
190
390
 
191
391
  // src/getCompositionForTranslation.ts
@@ -244,180 +444,6 @@ import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE4 } from "@uniformdev/canvas";
244
444
  // src/translateComposition.ts
245
445
  import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE3, walkNodeTree as walkNodeTree2 } from "@uniformdev/canvas";
246
446
  import { produce } from "immer";
247
-
248
- // src/translationHelpers.ts
249
- import { dequal } from "dequal/lite";
250
- var MERGE_TRANSLATION_ERRORS2 = {
251
- unknown: "Unknown error",
252
- "invalid-args": "Invalid arguments",
253
- "project-id-mismatch": "Project ID mismatch",
254
- "entity-id-mismatch": "Enity ID mismatch",
255
- "entity-locales-mismatch": "Entity does not include required locales"
256
- };
257
- var createErrorResult2 = (errorKind) => {
258
- return { updated: false, errorKind, errorText: MERGE_TRANSLATION_ERRORS2[errorKind] };
259
- };
260
- var processComponentTranslation = ({
261
- uniformSourceLocale,
262
- uniformTargetLocale,
263
- overrideModifiedTargetLocale,
264
- originalNode,
265
- translatedComponent
266
- }) => {
267
- var _a, _b;
268
- let updated = false;
269
- if (!originalNode.type || !originalNode._id) {
270
- return { updated };
271
- }
272
- const componentParameters = "parameters" in originalNode ? originalNode.parameters : void 0;
273
- const entryFields = "fields" in originalNode ? originalNode.fields : void 0;
274
- const originalParametersOrFields = componentParameters != null ? componentParameters : entryFields;
275
- Object.entries((_a = translatedComponent.parameters) != null ? _a : {}).forEach(([paramKey, parameter]) => {
276
- const originalParameter = originalParametersOrFields == null ? void 0 : originalParametersOrFields[paramKey];
277
- if (!originalParameter) {
278
- return;
279
- }
280
- const result = processParameterTranslation({
281
- uniformSourceLocale,
282
- uniformTargetLocale,
283
- overrideModifiedTargetLocale,
284
- originalParameter,
285
- parameter
286
- });
287
- if (result.updated) {
288
- updated = true;
289
- }
290
- });
291
- Object.entries((_b = translatedComponent._overrides) != null ? _b : {}).forEach(([overrideKey, override]) => {
292
- var _a2;
293
- const originalOverride = (_a2 = originalNode._overrides) == null ? void 0 : _a2[overrideKey];
294
- if (!originalOverride) {
295
- return;
296
- }
297
- const result = processOverrideTranslation({
298
- uniformSourceLocale,
299
- uniformTargetLocale,
300
- overrideModifiedTargetLocale,
301
- originalOverride,
302
- override
303
- });
304
- if (result.updated) {
305
- updated = true;
306
- }
307
- });
308
- return { updated };
309
- };
310
- var processParameterTranslation = ({
311
- uniformSourceLocale,
312
- uniformTargetLocale,
313
- overrideModifiedTargetLocale,
314
- originalParameter,
315
- parameter
316
- }) => {
317
- var _a, _b, _c;
318
- if (!originalParameter.locales) {
319
- return { updated: false };
320
- }
321
- const sourceValue = (_a = parameter.locales) == null ? void 0 : _a[TRANSLATION_PAYLOAD_SOURCE_KEY];
322
- const targetValue = (_b = parameter.locales) == null ? void 0 : _b[TRANSLATION_PAYLOAD_TARGET_KEY];
323
- const originalTargetValue = (_c = parameter.locales) == null ? void 0 : _c[TRANSLATION_PAYLOAD_ORIGINAL_TARGET_KEY];
324
- const isSourceValueUntouched = isSameParameterValue({
325
- parameterType: originalParameter.type,
326
- originalValue: originalParameter.locales[uniformSourceLocale],
327
- value: sourceValue
328
- });
329
- const isTargetValueUntouched = overrideModifiedTargetLocale || isSameParameterValue({
330
- parameterType: originalParameter.type,
331
- originalValue: originalParameter.locales[uniformTargetLocale],
332
- value: originalTargetValue
333
- });
334
- if (targetValue && isSourceValueUntouched && isTargetValueUntouched) {
335
- originalParameter.locales[uniformTargetLocale] = targetValue;
336
- return { updated: true };
337
- }
338
- return { updated: false };
339
- };
340
- var processOverrideTranslation = ({
341
- uniformSourceLocale,
342
- uniformTargetLocale,
343
- overrideModifiedTargetLocale,
344
- originalOverride,
345
- override
346
- }) => {
347
- var _a, _b;
348
- let updated = false;
349
- Object.entries((_a = override.parameters) != null ? _a : {}).forEach(([paramKey, parameter]) => {
350
- var _a2, _b2, _c, _d;
351
- const originalParameter = (_a2 = originalOverride.parameters) == null ? void 0 : _a2[paramKey];
352
- if (!originalParameter || !originalParameter.locales) {
353
- return;
354
- }
355
- const sourceValue = (_b2 = parameter.locales) == null ? void 0 : _b2[TRANSLATION_PAYLOAD_SOURCE_KEY];
356
- const targetValue = (_c = parameter.locales) == null ? void 0 : _c[TRANSLATION_PAYLOAD_TARGET_KEY];
357
- const originalTargetValue = (_d = parameter.locales) == null ? void 0 : _d[TRANSLATION_PAYLOAD_ORIGINAL_TARGET_KEY];
358
- const isSourceValueUntouched = isSameParameterValue({
359
- parameterType: originalParameter.type,
360
- originalValue: originalParameter.locales[uniformSourceLocale],
361
- value: sourceValue
362
- });
363
- const isTargetValueUntouched = overrideModifiedTargetLocale || isSameParameterValue({
364
- parameterType: originalParameter.type,
365
- originalValue: originalParameter.locales[uniformTargetLocale],
366
- value: originalTargetValue
367
- });
368
- if (targetValue && isSourceValueUntouched && isTargetValueUntouched) {
369
- originalParameter.locales[uniformTargetLocale] = targetValue;
370
- updated = true;
371
- }
372
- });
373
- Object.entries((_b = override.slots) != null ? _b : {}).forEach(([slotKey, slotComponents]) => {
374
- var _a2;
375
- const originalSlotComponents = (_a2 = originalOverride.slots) == null ? void 0 : _a2[slotKey];
376
- if (!(originalSlotComponents == null ? void 0 : originalSlotComponents.length)) {
377
- return;
378
- }
379
- slotComponents.forEach((slotComponent) => {
380
- if (!slotComponent.type || !slotComponent._id) {
381
- return;
382
- }
383
- const originalComponent = originalSlotComponents.find(
384
- (x) => x._id === slotComponent._id && x.type === slotComponent.type
385
- );
386
- if (!originalComponent) {
387
- return;
388
- }
389
- const { updated: isComponentUpdated } = processComponentTranslation({
390
- uniformSourceLocale,
391
- uniformTargetLocale,
392
- overrideModifiedTargetLocale,
393
- originalNode: originalComponent,
394
- translatedComponent: slotComponent
395
- });
396
- if (isComponentUpdated) {
397
- updated = true;
398
- }
399
- });
400
- });
401
- return { updated };
402
- };
403
- var isSameParameterValue = ({
404
- parameterType,
405
- originalValue,
406
- value
407
- }) => {
408
- switch (parameterType) {
409
- case "text":
410
- return originalValue === value || !originalValue && !value;
411
- break;
412
- case "richText":
413
- return dequal(originalValue, value);
414
- break;
415
- default:
416
- return originalValue === value;
417
- }
418
- };
419
-
420
- // src/translateComposition.ts
421
447
  var translateComposition = ({
422
448
  composition,
423
449
  translationPayload,
@@ -425,19 +451,19 @@ var translateComposition = ({
425
451
  }) => {
426
452
  var _a;
427
453
  if (!composition || !composition.composition || !translationPayload) {
428
- return createErrorResult2("invalid-args");
454
+ return createErrorResult("invalid-args");
429
455
  }
430
456
  if (composition.projectId !== translationPayload.metadata.uniformProjectId) {
431
- return createErrorResult2("project-id-mismatch");
457
+ return createErrorResult("project-id-mismatch");
432
458
  }
433
459
  if (composition.composition._id !== translationPayload.metadata.entity.id) {
434
- return createErrorResult2("entity-id-mismatch");
460
+ return createErrorResult("entity-id-mismatch");
435
461
  }
436
462
  const compositionLocales = (_a = composition.composition._locales) != null ? _a : [];
437
463
  const uniformSourceLocale = translationPayload.metadata.uniformSourceLocale;
438
464
  const uniformTargetLocale = translationPayload.metadata.uniformTargetLocale;
439
465
  if (!compositionLocales.includes(uniformSourceLocale)) {
440
- return createErrorResult2("entity-locales-mismatch");
466
+ return createErrorResult("entity-locales-mismatch");
441
467
  }
442
468
  let updated = false;
443
469
  const translatedComposition = produce(composition, (draft) => {
@@ -555,19 +581,19 @@ var translateEntry = ({
555
581
  }) => {
556
582
  var _a;
557
583
  if (!entry || !translationPayload) {
558
- return createErrorResult2("invalid-args");
584
+ return createErrorResult("invalid-args");
559
585
  }
560
586
  if (entry.projectId !== translationPayload.metadata.uniformProjectId) {
561
- return createErrorResult2("project-id-mismatch");
587
+ return createErrorResult("project-id-mismatch");
562
588
  }
563
589
  if ((entry == null ? void 0 : entry.entry._id) !== translationPayload.metadata.entity.id) {
564
- return createErrorResult2("entity-id-mismatch");
590
+ return createErrorResult("entity-id-mismatch");
565
591
  }
566
592
  const entryLocales = (_a = entry.entry._locales) != null ? _a : [];
567
593
  const uniformSourceLocale = translationPayload.metadata.uniformSourceLocale;
568
594
  const uniformTargetLocale = translationPayload.metadata.uniformTargetLocale;
569
595
  if (!entryLocales.includes(uniformSourceLocale)) {
570
- return createErrorResult2("entity-locales-mismatch");
596
+ return createErrorResult("entity-locales-mismatch");
571
597
  }
572
598
  let updated = false;
573
599
  const translatedEntry = produce2(entry, (draft) => {