gt-react 2.0.120

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 (148) hide show
  1. package/README.md +7 -0
  2. package/dist/client/ClientProvider.d.ts +11 -0
  3. package/dist/client/ClientProvider.d.ts.map +1 -0
  4. package/dist/client/ClientProvider.js +17 -0
  5. package/dist/client/ClientProvider.js.map +1 -0
  6. package/dist/client/GTProvider.d.ts +12 -0
  7. package/dist/client/GTProvider.d.ts.map +1 -0
  8. package/dist/client/GTProvider.js +56 -0
  9. package/dist/client/GTProvider.js.map +1 -0
  10. package/dist/client/t.d.ts +2 -0
  11. package/dist/client/t.d.ts.map +1 -0
  12. package/dist/client/t.js +14 -0
  13. package/dist/client/t.js.map +1 -0
  14. package/dist/client.d.ts +7 -0
  15. package/dist/client.d.ts.map +1 -0
  16. package/dist/client.js +17 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/config/I18NConfig.d.ts +90 -0
  19. package/dist/config/I18NConfig.d.ts.map +1 -0
  20. package/dist/config/I18NConfig.js +219 -0
  21. package/dist/config/I18NConfig.js.map +1 -0
  22. package/dist/config/PageManager.d.ts +16 -0
  23. package/dist/config/PageManager.d.ts.map +1 -0
  24. package/dist/config/PageManager.js +66 -0
  25. package/dist/config/PageManager.js.map +1 -0
  26. package/dist/config/local/getConfigData.d.ts +8 -0
  27. package/dist/config/local/getConfigData.d.ts.map +1 -0
  28. package/dist/config/local/getConfigData.js +29 -0
  29. package/dist/config/local/getConfigData.js.map +1 -0
  30. package/dist/config/local/getDefaultFromEnv.d.ts +12 -0
  31. package/dist/config/local/getDefaultFromEnv.d.ts.map +1 -0
  32. package/dist/config/local/getDefaultFromEnv.js +21 -0
  33. package/dist/config/local/getDefaultFromEnv.js.map +1 -0
  34. package/dist/config/local/getI18NPage.d.ts +10 -0
  35. package/dist/config/local/getI18NPage.d.ts.map +1 -0
  36. package/dist/config/local/getI18NPage.js +34 -0
  37. package/dist/config/local/getI18NPage.js.map +1 -0
  38. package/dist/config/placeholderCache.d.ts +8 -0
  39. package/dist/config/placeholderCache.d.ts.map +1 -0
  40. package/dist/config/placeholderCache.js +71 -0
  41. package/dist/config/placeholderCache.js.map +1 -0
  42. package/dist/index.d.ts +9 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +21 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/intl/intl.d.ts +14 -0
  47. package/dist/intl/intl.d.ts.map +1 -0
  48. package/dist/intl/intl.js +38 -0
  49. package/dist/intl/intl.js.map +1 -0
  50. package/dist/next/NextGTProvider.d.ts +15 -0
  51. package/dist/next/NextGTProvider.d.ts.map +1 -0
  52. package/dist/next/NextGTProvider.js +48 -0
  53. package/dist/next/NextGTProvider.js.map +1 -0
  54. package/dist/next/NextI18N.d.ts +15 -0
  55. package/dist/next/NextI18N.d.ts.map +1 -0
  56. package/dist/next/NextI18N.js +48 -0
  57. package/dist/next/NextI18N.js.map +1 -0
  58. package/dist/next/headerFunctions.d.ts +21 -0
  59. package/dist/next/headerFunctions.d.ts.map +1 -0
  60. package/dist/next/headerFunctions.js +77 -0
  61. package/dist/next/headerFunctions.js.map +1 -0
  62. package/dist/next/intl.d.ts +8 -0
  63. package/dist/next/intl.d.ts.map +1 -0
  64. package/dist/next/intl.js +47 -0
  65. package/dist/next/intl.js.map +1 -0
  66. package/dist/next.d.ts +9 -0
  67. package/dist/next.d.ts.map +1 -0
  68. package/dist/next.js +21 -0
  69. package/dist/next.js.map +1 -0
  70. package/dist/primitives/numeric/Numeric.d.ts +23 -0
  71. package/dist/primitives/numeric/Numeric.d.ts.map +1 -0
  72. package/dist/primitives/numeric/Numeric.js +42 -0
  73. package/dist/primitives/numeric/Numeric.js.map +1 -0
  74. package/dist/primitives/numeric/client/ClientNumeric.d.ts +23 -0
  75. package/dist/primitives/numeric/client/ClientNumeric.d.ts.map +1 -0
  76. package/dist/primitives/numeric/client/ClientNumeric.js +43 -0
  77. package/dist/primitives/numeric/client/ClientNumeric.js.map +1 -0
  78. package/dist/primitives/numeric/getNumericBranch.d.ts +14 -0
  79. package/dist/primitives/numeric/getNumericBranch.d.ts.map +1 -0
  80. package/dist/primitives/numeric/getNumericBranch.js +84 -0
  81. package/dist/primitives/numeric/getNumericBranch.js.map +1 -0
  82. package/dist/primitives/private/Private.d.ts +19 -0
  83. package/dist/primitives/private/Private.d.ts.map +1 -0
  84. package/dist/primitives/private/Private.js +29 -0
  85. package/dist/primitives/private/Private.js.map +1 -0
  86. package/dist/primitives/value/Value.d.ts +21 -0
  87. package/dist/primitives/value/Value.d.ts.map +1 -0
  88. package/dist/primitives/value/Value.js +42 -0
  89. package/dist/primitives/value/Value.js.map +1 -0
  90. package/dist/primitives/value/client/ClientValue.d.ts +21 -0
  91. package/dist/primitives/value/client/ClientValue.d.ts.map +1 -0
  92. package/dist/primitives/value/client/ClientValue.js +43 -0
  93. package/dist/primitives/value/client/ClientValue.js.map +1 -0
  94. package/dist/primitives/value/client/renderClientVariable.d.ts +9 -0
  95. package/dist/primitives/value/client/renderClientVariable.d.ts.map +1 -0
  96. package/dist/primitives/value/client/renderClientVariable.js +60 -0
  97. package/dist/primitives/value/client/renderClientVariable.js.map +1 -0
  98. package/dist/primitives/value/getValueBranch.d.ts +9 -0
  99. package/dist/primitives/value/getValueBranch.d.ts.map +1 -0
  100. package/dist/primitives/value/getValueBranch.js +64 -0
  101. package/dist/primitives/value/getValueBranch.js.map +1 -0
  102. package/dist/primitives/value/isValidReactNode.d.ts +15 -0
  103. package/dist/primitives/value/isValidReactNode.d.ts.map +1 -0
  104. package/dist/primitives/value/isValidReactNode.js +27 -0
  105. package/dist/primitives/value/isValidReactNode.js.map +1 -0
  106. package/dist/primitives/value/processBranches.d.ts +9 -0
  107. package/dist/primitives/value/processBranches.d.ts.map +1 -0
  108. package/dist/primitives/value/processBranches.js +44 -0
  109. package/dist/primitives/value/processBranches.js.map +1 -0
  110. package/dist/primitives/value/renderVariable.d.ts +8 -0
  111. package/dist/primitives/value/renderVariable.d.ts.map +1 -0
  112. package/dist/primitives/value/renderVariable.js +57 -0
  113. package/dist/primitives/value/renderVariable.js.map +1 -0
  114. package/dist/primitives/variable/Variable.d.ts +13 -0
  115. package/dist/primitives/variable/Variable.d.ts.map +1 -0
  116. package/dist/primitives/variable/Variable.js +24 -0
  117. package/dist/primitives/variable/Variable.js.map +1 -0
  118. package/dist/server/ServerI18N.d.ts +18 -0
  119. package/dist/server/ServerI18N.d.ts.map +1 -0
  120. package/dist/server/ServerI18N.js +81 -0
  121. package/dist/server/ServerI18N.js.map +1 -0
  122. package/dist/server/helpers/addGTIdentifier.d.ts +11 -0
  123. package/dist/server/helpers/addGTIdentifier.d.ts.map +1 -0
  124. package/dist/server/helpers/addGTIdentifier.js +152 -0
  125. package/dist/server/helpers/addGTIdentifier.js.map +1 -0
  126. package/dist/server/helpers/generateHash.d.ts +12 -0
  127. package/dist/server/helpers/generateHash.d.ts.map +1 -0
  128. package/dist/server/helpers/generateHash.js +34 -0
  129. package/dist/server/helpers/generateHash.js.map +1 -0
  130. package/dist/server/helpers/writeChildrenAsObjects.d.ts +11 -0
  131. package/dist/server/helpers/writeChildrenAsObjects.d.ts.map +1 -0
  132. package/dist/server/helpers/writeChildrenAsObjects.js +129 -0
  133. package/dist/server/helpers/writeChildrenAsObjects.js.map +1 -0
  134. package/dist/server/renderChildren.d.ts +19 -0
  135. package/dist/server/renderChildren.d.ts.map +1 -0
  136. package/dist/server/renderChildren.js +153 -0
  137. package/dist/server/renderChildren.js.map +1 -0
  138. package/dist/server/resolvers/I18NResolver.d.ts +13 -0
  139. package/dist/server/resolvers/I18NResolver.d.ts.map +1 -0
  140. package/dist/server/resolvers/I18NResolver.js +41 -0
  141. package/dist/server/resolvers/I18NResolver.js.map +1 -0
  142. package/dist/server/resolvers/renderResolvedChildren.d.ts +19 -0
  143. package/dist/server/resolvers/renderResolvedChildren.d.ts.map +1 -0
  144. package/dist/server/resolvers/renderResolvedChildren.js +157 -0
  145. package/dist/server/resolvers/renderResolvedChildren.js.map +1 -0
  146. package/package.json +39 -0
  147. package/scratchpad.js +33 -0
  148. package/tsconfig.json +20 -0
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.default = addGTIdentifier;
18
+ const react_1 = __importDefault(require("react"));
19
+ const processBranches_1 = __importDefault(require("../../primitives/value/processBranches"));
20
+ /**
21
+ * Helper function to validate the properties of the component to prevent nested translations
22
+ * @param props - The properties of the current React element
23
+ */
24
+ const validateProps = (props) => {
25
+ if (props && props['data-generaltranslation'] && typeof props['data-generaltranslation'].id === 'number') {
26
+ throw new Error(`Nesting of I18N components is not permitted. This prevents components from being translated twice.
27
+ Found nested component with ID: ${props['data-generaltranslation'].id}`);
28
+ }
29
+ };
30
+ /**
31
+ * Main function to add GT (General Translation) identifiers to the children
32
+ * @param children - The children elements to which GT identifiers will be added
33
+ * @returns - The children with added GT identifiers
34
+ */
35
+ function addGTIdentifier(children) {
36
+ // Object to keep track of the current index for GT IDs
37
+ let indexObject = { index: 0 };
38
+ /**
39
+ * Function to create a GTProp object for a ReactElement
40
+ * @param child - The ReactElement for which the GTProp is created
41
+ * @returns - The GTProp object
42
+ */
43
+ const createGTProp = (child) => {
44
+ const { type, props } = child;
45
+ indexObject.index += 1;
46
+ let result = { id: indexObject.index };
47
+ const transformation = typeof type === 'function' ? (type.gtTransformation || '') : '';
48
+ if (transformation) {
49
+ result.transformation = transformation;
50
+ if (transformation === "private") {
51
+ if (typeof props.label === 'string') {
52
+ result.label = props.label;
53
+ }
54
+ }
55
+ }
56
+ return result;
57
+ };
58
+ /**
59
+ * Function to handle valid React elements and add GT identifiers
60
+ * @param child - The ReactElement to handle
61
+ * @returns - The new ReactElement with added GT identifiers
62
+ */
63
+ const handleValidReactElement = (child) => {
64
+ // Destructure the props from the child element
65
+ const { props } = child;
66
+ // Validate the props to ensure there are no nested translations
67
+ validateProps(props);
68
+ // Create new props for the element, including the GT identifier and a key
69
+ let generaltranslation = createGTProp(child);
70
+ let newProps = Object.assign(Object.assign({}, props), { 'data-generaltranslation': generaltranslation, key: generaltranslation.id });
71
+ // If branches are needed for a number or value variable
72
+ const transformation = generaltranslation.transformation;
73
+ if (transformation === "numeric" || transformation === "value") {
74
+ // Updates indices to keep a consistent identification system across branches
75
+ let frozenIndex = indexObject.index;
76
+ let championIndex = indexObject.index;
77
+ const updateIndices = () => {
78
+ if (indexObject.index > frozenIndex) {
79
+ if (indexObject.index > championIndex) {
80
+ championIndex = indexObject.index;
81
+ }
82
+ indexObject.index = frozenIndex;
83
+ }
84
+ };
85
+ // Adds ID to children
86
+ if (props.children) {
87
+ newProps.children = addIdentifierRecursively(props.children);
88
+ }
89
+ // define branches
90
+ let branches = {};
91
+ // add identifier to number branches (e.g. singular, plural, ranges)
92
+ if (transformation === "numeric") {
93
+ const { n, children } = props, options = __rest(props, ["n", "children"]);
94
+ let { ranges } = options, others = __rest(options, ["ranges"]);
95
+ if (ranges)
96
+ branches.ranges = options.ranges.map((range) => {
97
+ updateIndices();
98
+ return { min: range.min, max: range.max, children: addIdentifierRecursively(range.children) };
99
+ });
100
+ for (const option of Object.keys(others)) {
101
+ updateIndices();
102
+ branches[option] = addIdentifierRecursively(others[option]);
103
+ }
104
+ newProps = Object.assign(Object.assign({}, newProps), branches);
105
+ }
106
+ // or add identifier to value branches, e.g. name={"Kernighan"}
107
+ else if (transformation === "value") {
108
+ const { "branches": rawBranches } = props;
109
+ branches = (0, processBranches_1.default)(rawBranches, (branch) => { updateIndices(); return addIdentifierRecursively(branch); });
110
+ newProps.branches = branches;
111
+ }
112
+ // modify newProps if necessary
113
+ if (Object.keys(branches).length > 0)
114
+ newProps['data-generaltranslation'].branches = branches;
115
+ if (newProps.children)
116
+ newProps['data-generaltranslation'].defaultChildren = newProps.children;
117
+ // reset index
118
+ indexObject.index = championIndex;
119
+ }
120
+ // if no transformation is required
121
+ if (!transformation) {
122
+ if (props.children) {
123
+ newProps.children = addIdentifierRecursively(props.children);
124
+ }
125
+ }
126
+ // return the element with new props
127
+ return react_1.default.cloneElement(child, newProps);
128
+ };
129
+ /**
130
+ * Function to handle a single child element and determine if it's a valid React element
131
+ * @param child - The child element to handle
132
+ * @returns - The handled child element
133
+ */
134
+ const handleSingleChild = (child) => {
135
+ if (react_1.default.isValidElement(child))
136
+ return handleValidReactElement(child);
137
+ return child;
138
+ };
139
+ /**
140
+ * Recursive function to add GT identifiers to all child elements
141
+ * @param children - The children elements to process
142
+ * @returns - The children elements with added GT identifiers
143
+ */
144
+ const addIdentifierRecursively = (children) => {
145
+ if (Array.isArray(children)) {
146
+ return children.map(child => handleSingleChild(child));
147
+ }
148
+ return handleSingleChild(children);
149
+ };
150
+ return addIdentifierRecursively(children);
151
+ }
152
+ //# sourceMappingURL=addGTIdentifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addGTIdentifier.js","sourceRoot":"","sources":["../../../src/server/helpers/addGTIdentifier.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Generates a SHA-256 hash for the given message.
3
+ *
4
+ * @param {any} message - The message to be hashed. This can be of any type.
5
+ * If the message is an object or array, it will be
6
+ * converted to a JSON string.
7
+ * @returns {Promise<string>} A promise that resolves to the SHA-256 hash of the
8
+ * message in hexadecimal format. If the message is
9
+ * falsy, an empty string is returned.
10
+ */
11
+ export default function generateHash(message: any): Promise<string>;
12
+ //# sourceMappingURL=generateHash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHash.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/generateHash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAA8B,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAOxE"}
@@ -0,0 +1,34 @@
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.default = generateHash;
13
+ /**
14
+ * Generates a SHA-256 hash for the given message.
15
+ *
16
+ * @param {any} message - The message to be hashed. This can be of any type.
17
+ * If the message is an object or array, it will be
18
+ * converted to a JSON string.
19
+ * @returns {Promise<string>} A promise that resolves to the SHA-256 hash of the
20
+ * message in hexadecimal format. If the message is
21
+ * falsy, an empty string is returned.
22
+ */
23
+ function generateHash(message) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ message = JSON.stringify(message);
26
+ const msgBuffer = new TextEncoder().encode(message);
27
+ const hashBuffer = yield crypto.subtle.digest('SHA-256', msgBuffer);
28
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
29
+ const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
30
+ return hashHex;
31
+ });
32
+ }
33
+ ;
34
+ //# sourceMappingURL=generateHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHash.js","sourceRoot":"","sources":["../../../src/server/helpers/generateHash.ts"],"names":[],"mappings":";;;;;;;;;;;AAUA,+BAOC;AAjBD;;;;;;;;;GASG;AACH,SAA8B,YAAY,CAAC,OAAY;;QACnD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAc,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAAA,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ type Child = ReactNode | Record<string, any>;
3
+ type Children = Child | Child[];
4
+ /**
5
+ * Transforms children elements into objects, processing each child recursively if needed.
6
+ * @param {Children} children - The children to process.
7
+ * @returns {object} - The processed children as objects.
8
+ */
9
+ export default function writeChildrenAsObjects(children: Children): any;
10
+ export {};
11
+ //# sourceMappingURL=writeChildrenAsObjects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeChildrenAsObjects.d.ts","sourceRoot":"","sources":["../../../src/server/helpers/writeChildrenAsObjects.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAA;AAGtD,KAAK,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AA6GhC;;;;EAIE;AACF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAKtE"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.default = writeChildrenAsObjects;
18
+ const react_1 = __importDefault(require("react"));
19
+ const processBranches_1 = __importDefault(require("../../primitives/value/processBranches"));
20
+ /**
21
+ * Checks if the props indicate that the component should be not be processed.
22
+ * @param {Record<string, any>} props - The props to check.
23
+ * @returns {boolean} - True if the component is private, otherwise false.
24
+ */
25
+ const isPrivate = (props) => { var _a; return ((_a = props['data-generaltranslation']) === null || _a === void 0 ? void 0 : _a.transformation) === "private"; };
26
+ /**
27
+ * Gets the tag name of a React element.
28
+ * @param {ReactElement} child - The React element.
29
+ * @returns {string} - The tag name of the React element.
30
+ */
31
+ const getTagName = (child) => {
32
+ var _a;
33
+ if (!child)
34
+ return '';
35
+ const { type, props } = child;
36
+ if (type && typeof type === 'function') {
37
+ if ('displayName' in type && typeof type.displayName === 'string' && type.displayName)
38
+ return type.displayName;
39
+ if ('name' in type && typeof type.name === 'string' && type.name)
40
+ return type.name;
41
+ }
42
+ if (type && typeof type === 'string')
43
+ return type;
44
+ if (props.href)
45
+ return 'a';
46
+ if ((_a = props['data-generaltranslation']) === null || _a === void 0 ? void 0 : _a.id)
47
+ return `C${props['data-generaltranslation'].id}`;
48
+ return 'function';
49
+ };
50
+ /**
51
+ * Handles processing of a valid React element, transforming its properties and children as needed.
52
+ * @param {ReactElement} child - The React element to process.
53
+ * @returns {object} - The processed element with its type and transformed props.
54
+ */
55
+ const handleValidReactElement = (child) => {
56
+ const { props } = child;
57
+ let newProps = {};
58
+ // Transform children if they exist and are not private
59
+ if (props.children && !isPrivate(props)) {
60
+ newProps.children = writeChildrenAsObjects(props.children);
61
+ }
62
+ // Write the branches of 'data-generaltranslation' as objects
63
+ if (props['data-generaltranslation']) {
64
+ const generaltranslation = props['data-generaltranslation'];
65
+ let result = Object.assign({}, generaltranslation);
66
+ if (generaltranslation.transformation && generaltranslation.transformation === "variable") {
67
+ if (props.name) {
68
+ return { variable: true, keys: [props.name] };
69
+ }
70
+ }
71
+ // Write all the branches as objects
72
+ if (generaltranslation.transformation && generaltranslation.branches) {
73
+ const transformation = generaltranslation.transformation;
74
+ // Write the branches of a number variable transformation
75
+ if (transformation === "numeric") {
76
+ const _a = generaltranslation.branches, { ranges } = _a, others = __rest(_a, ["ranges"]);
77
+ if (ranges) {
78
+ result.branches.ranges = ranges.map((range) => {
79
+ return { min: range.min, max: range.max, children: writeChildrenAsObjects(range.children) };
80
+ });
81
+ }
82
+ for (const option of Object.keys(others)) {
83
+ result.branches[option] = writeChildrenAsObjects(others[option]);
84
+ }
85
+ }
86
+ // Write the branches of a value variable transformation
87
+ else if (transformation === "value") {
88
+ if (generaltranslation.branches) {
89
+ result.branches = (0, processBranches_1.default)(generaltranslation.branches, (branch) => writeChildrenAsObjects(branch));
90
+ }
91
+ }
92
+ // Write defaultChildren
93
+ if (generaltranslation.defaultChildren) {
94
+ result.defaultChildren = writeChildrenAsObjects(generaltranslation.defaultChildren);
95
+ }
96
+ }
97
+ newProps['data-generaltranslation'] = result;
98
+ }
99
+ return {
100
+ type: getTagName(child),
101
+ props: newProps
102
+ };
103
+ };
104
+ /**
105
+ * Handles processing of a single child, determining if it is a valid React element or an object.
106
+ * @param {any} child - The child to process.
107
+ * @returns {object} - The processed child or the original child if no transformation is needed.
108
+ */
109
+ const handleSingleChild = (child) => {
110
+ if (react_1.default.isValidElement(child))
111
+ return handleValidReactElement(child);
112
+ else if (child && typeof child === 'object') {
113
+ return { variable: true, keys: Object.keys(child) };
114
+ }
115
+ else
116
+ return child;
117
+ };
118
+ /**
119
+ * Transforms children elements into objects, processing each child recursively if needed.
120
+ * @param {Children} children - The children to process.
121
+ * @returns {object} - The processed children as objects.
122
+ */
123
+ function writeChildrenAsObjects(children) {
124
+ if (Array.isArray(children)) {
125
+ return children.map(child => handleSingleChild(child));
126
+ }
127
+ return handleSingleChild(children);
128
+ }
129
+ //# sourceMappingURL=writeChildrenAsObjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeChildrenAsObjects.js","sourceRoot":"","sources":["../../../src/server/helpers/writeChildrenAsObjects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ type TargetElement = Record<string, any>;
3
+ type TargetChild = TargetElement | string | number | boolean | object;
4
+ type Target = TargetChild | TargetChild[];
5
+ type SourceChild = ReactNode | Record<string, any>;
6
+ type Source = SourceChild | SourceChild[];
7
+ /**
8
+ * Renders children elements based on the provided source and target.
9
+ * Handles transformations and branching for number and value variables.
10
+ *
11
+ * @param {Source} source - The source elements to be rendered.
12
+ * @param {Target} [target] - The target elements that may alter the rendering of the source.
13
+ * @param {Record<string, Source>} [variables] - An optional set of variables for transformations and branching.
14
+ *
15
+ * @returns {ReactNode} The rendered children elements.
16
+ */
17
+ export default function renderChildren(source: Source, target?: Target, variables?: Record<string, Source>): ReactNode;
18
+ export {};
19
+ //# sourceMappingURL=renderChildren.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChildren.d.ts","sourceRoot":"","sources":["../../src/server/renderChildren.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACtE,KAAK,MAAM,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC;AAE1C,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnD,KAAK,MAAM,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC;AAyE1C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,SAAS,CA2EX"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.default = renderChildren;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_1 = __importDefault(require("react"));
20
+ const getNumericBranch_1 = __importDefault(require("../primitives/numeric/getNumericBranch"));
21
+ const getValueBranch_1 = __importDefault(require("../primitives/value/getValueBranch"));
22
+ const isValidReactNode_1 = __importDefault(require("../primitives/value/isValidReactNode"));
23
+ const Variable_1 = __importDefault(require("../primitives/variable/Variable"));
24
+ /**
25
+ * Renders a React element based on the provided source and target elements.
26
+ * Handles transformation and variable branching if necessary.
27
+ *
28
+ * @param {ReactElement} sourceElement - The original React element to be rendered.
29
+ * @param {TargetElement} targetElement - The target element that may alter the rendering of the source element.
30
+ * @param {Record<string, Source>} variables - An optional set of variables for transformations and branching.
31
+ *
32
+ * @returns {ReactElement} The rendered React element.
33
+ */
34
+ const renderElement = (sourceElement, targetElement, variables) => {
35
+ var _a, _b;
36
+ const { props } = sourceElement;
37
+ if (((_a = props === null || props === void 0 ? void 0 : props['data-generaltranslation']) === null || _a === void 0 ? void 0 : _a.transformation) === "private") {
38
+ return sourceElement;
39
+ }
40
+ if (props.children) {
41
+ const { 'data-generaltranslation': generaltranslation } = props;
42
+ const targetProps = targetElement === null || targetElement === void 0 ? void 0 : targetElement.props;
43
+ const targetChildren = targetProps === null || targetProps === void 0 ? void 0 : targetProps.children;
44
+ const targetBranches = (_b = targetProps === null || targetProps === void 0 ? void 0 : targetProps['data-generaltranslation']) === null || _b === void 0 ? void 0 : _b.branches;
45
+ // If an alternative branch (from a transformation) is necessary
46
+ if ((generaltranslation === null || generaltranslation === void 0 ? void 0 : generaltranslation.transformation) && targetBranches) {
47
+ const transformation = generaltranslation.transformation;
48
+ // handle number variable branching
49
+ if (transformation === "numeric") {
50
+ const { 'data-generaltranslation': generaltranslation, n } = props, branches = __rest(props, ['data-generaltranslation', "n"]); // 'data-generaltranslation' necessary here to fully destructure relevant ...branches
51
+ const sourceBranch = (0, getNumericBranch_1.default)(n, branches) || props.children;
52
+ const targetBranch = (0, getNumericBranch_1.default)(n, targetBranches) || targetChildren;
53
+ const children = renderChildren(sourceBranch, targetBranch, Object.assign(Object.assign({}, variables), { n: n }));
54
+ return react_1.default.createElement('span', {
55
+ children: children
56
+ });
57
+ }
58
+ // or handle value variable branching
59
+ if (transformation === "value") {
60
+ const { 'data-generaltranslation': generaltranslation, branches } = props, values = __rest(props, ['data-generaltranslation', "branches"]); // 'data-generaltranslation' necessary here to fully destructure relevant ...values
61
+ const sourceBranch = (0, getValueBranch_1.default)(values, branches) || props.children;
62
+ const targetBranch = (0, getValueBranch_1.default)(values, targetBranches) || targetChildren;
63
+ const children = renderChildren(sourceBranch, targetBranch, Object.assign(Object.assign({}, variables), values));
64
+ return react_1.default.createElement('span', {
65
+ children: children
66
+ });
67
+ }
68
+ }
69
+ // otherwise, just clone the element
70
+ return react_1.default.cloneElement(sourceElement, Object.assign(Object.assign({}, props), { children: renderChildren(props.children, targetChildren, variables) }));
71
+ }
72
+ return sourceElement;
73
+ };
74
+ /**
75
+ * Renders children elements based on the provided source and target.
76
+ * Handles transformations and branching for number and value variables.
77
+ *
78
+ * @param {Source} source - The source elements to be rendered.
79
+ * @param {Target} [target] - The target elements that may alter the rendering of the source.
80
+ * @param {Record<string, Source>} [variables] - An optional set of variables for transformations and branching.
81
+ *
82
+ * @returns {ReactNode} The rendered children elements.
83
+ */
84
+ function renderChildren(source, target, variables) {
85
+ // Most straightforward case, return a valid React node
86
+ if ((target === null || typeof target === 'undefined') && (0, isValidReactNode_1.default)(source))
87
+ return source;
88
+ if (typeof target !== null && typeof target !== 'undefined' && (0, isValidReactNode_1.default)(target))
89
+ return target;
90
+ // If target and source are both arrays of children
91
+ if (Array.isArray(source) && Array.isArray(target)) {
92
+ // Filter for variables and valid source children
93
+ let validSourceElements = [];
94
+ for (const sourceChild of source) {
95
+ if (react_1.default.isValidElement(sourceChild)) {
96
+ validSourceElements.push(sourceChild);
97
+ }
98
+ else if (typeof sourceChild === 'object') {
99
+ variables = Object.assign(Object.assign({}, sourceChild), variables);
100
+ }
101
+ }
102
+ // Find matching source elements based on ID
103
+ const findMatchingSource = (targetElement) => {
104
+ return validSourceElements.find(sourceChild => {
105
+ var _a, _b, _c;
106
+ const { props } = sourceChild;
107
+ if (typeof ((_a = props === null || props === void 0 ? void 0 : props['data-generaltranslation']) === null || _a === void 0 ? void 0 : _a.id) !== 'undefined') {
108
+ const sourceID = props['data-generaltranslation'].id;
109
+ const targetID = (_c = (_b = targetElement === null || targetElement === void 0 ? void 0 : targetElement.props) === null || _b === void 0 ? void 0 : _b['data-generaltranslation']) === null || _c === void 0 ? void 0 : _c.id;
110
+ return sourceID === targetID;
111
+ }
112
+ return false;
113
+ });
114
+ };
115
+ // Return targets
116
+ return target.map((targetChild, index) => {
117
+ // Most straightforward case, return a valid React node
118
+ if ((0, isValidReactNode_1.default)(targetChild)) {
119
+ return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: targetChild }, `string_${index}`);
120
+ }
121
+ // If target is a number or value variable
122
+ if ((targetChild === null || targetChild === void 0 ? void 0 : targetChild.variable) === true && Array.isArray(targetChild.keys)) {
123
+ for (const key of targetChild.keys) {
124
+ if (variables && (typeof variables[key] !== null && typeof variables[key] !== 'undefined')) {
125
+ return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: renderChildren(variables[key]) }, `var_${index}`);
126
+ }
127
+ else {
128
+ return (0, jsx_runtime_1.jsx)(Variable_1.default, { name: key });
129
+ }
130
+ }
131
+ }
132
+ // If target is a normal ReactElement
133
+ const matchingSource = findMatchingSource(targetChild);
134
+ if (react_1.default.isValidElement(matchingSource)) {
135
+ return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: renderElement(matchingSource, targetChild, variables) }, `element_${index}`);
136
+ }
137
+ });
138
+ }
139
+ // Target is a single object, could be a component or a variable
140
+ if (typeof target === 'object') {
141
+ if (react_1.default.isValidElement(source)) {
142
+ return renderElement(source, target, variables);
143
+ }
144
+ if ((target === null || target === void 0 ? void 0 : target.variable) && (target === null || target === void 0 ? void 0 : target.keys) && typeof source === 'object' && source !== null) {
145
+ for (const key of target.keys) {
146
+ if (source.hasOwnProperty(key)) {
147
+ return source[key];
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ //# sourceMappingURL=renderChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChildren.js","sourceRoot":"","sources":["../../src/server/renderChildren.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * I18NResolver component resolves an internationalization (i18n) promise
4
+ * and updates its children with the resolved i18n content.
5
+ * @param {any} children - The child components to be rendered.
6
+ * @param {Promise<any>} promise - The child components to be rendered.
7
+ * @returns {any} The updated children components with resolved i18n content.
8
+ */
9
+ export default function I18NResolver({ children, promise }: {
10
+ children: any;
11
+ promise: Promise<any>;
12
+ }): ReactNode;
13
+ //# sourceMappingURL=I18NResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"I18NResolver.d.ts","sourceRoot":"","sources":["../../../src/server/resolvers/I18NResolver.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIxC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACjC,QAAQ,EAAE,OAAO,EACpB,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,SAAS,CAoBtD"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.default = I18NResolver;
17
+ const jsx_runtime_1 = require("react/jsx-runtime");
18
+ const react_1 = require("react");
19
+ const renderResolvedChildren_1 = __importDefault(require("./renderResolvedChildren"));
20
+ /**
21
+ * I18NResolver component resolves an internationalization (i18n) promise
22
+ * and updates its children with the resolved i18n content.
23
+ * @param {any} children - The child components to be rendered.
24
+ * @param {Promise<any>} promise - The child components to be rendered.
25
+ * @returns {any} The updated children components with resolved i18n content.
26
+ */
27
+ function I18NResolver({ children, promise }) {
28
+ const [currentChildren, setCurrentChildren] = (0, react_1.useState)(children);
29
+ (0, react_1.useEffect)(() => {
30
+ const resolveI18NPromise = () => __awaiter(this, void 0, void 0, function* () {
31
+ const I18NChildren = yield promise;
32
+ if (I18NChildren) {
33
+ setCurrentChildren((0, renderResolvedChildren_1.default)(children, I18NChildren));
34
+ }
35
+ ;
36
+ });
37
+ resolveI18NPromise();
38
+ }, [promise]);
39
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: currentChildren }));
40
+ }
41
+ //# sourceMappingURL=I18NResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"I18NResolver.js","sourceRoot":"","sources":["../../../src/server/resolvers/I18NResolver.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;;;;;;;;;;;AAaZ,+BAsBC;;AAhCD,iCAA4C;AAC5C,sFAA8D;AAE9D;;;;;;GAMG;AACH,SAAwB,YAAY,CAAC,EACjC,QAAQ,EAAE,OAAO,EACsB;IAEvC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IAEjE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,MAAM,kBAAkB,GAAG,GAAS,EAAE;YAClC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;YACnC,IAAI,YAAY,EAAE,CAAC;gBACf,kBAAkB,CAAC,IAAA,gCAAsB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;YACtE,CAAC;YAAA,CAAC;QACN,CAAC,CAAA,CAAA;QACD,kBAAkB,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACH,2DACK,eAAe,GACjB,CACN,CAAA;AAEL,CAAC"}