@saykit/transform-jsx 0.0.0-beta-20261017002758 → 0.0.0-beta-20261114152155

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.
@@ -1,6 +1,3 @@
1
1
  import { CompositeMessage } from "@saykit/config/features/messages";
2
2
  import * as t from "@babel/types";
3
- //#region src/generator.d.ts
4
- declare function generateSayJSXElement(message: CompositeMessage): t.JSXElement;
5
- //#endregion
6
- export { generateSayJSXElement };
3
+ export declare function generateSayJSXElement(message: CompositeMessage): t.JSXElement;
@@ -1,12 +1,12 @@
1
1
  import { ArgumentMessage, ChoiceMessage, CompositeMessage, ElementMessage } from "@saykit/config/features/messages";
2
2
  import { generateDescriptorProperty } from "@saykit/transform-js/generator";
3
3
  import * as t from "@babel/types";
4
- //#region src/generator.ts
4
+ // src/generator.ts
5
5
  function generateSayJSXElement(message) {
6
6
  const children = generateChildExpressions(message.children);
7
7
  const descriptor = generateDescriptorProperty(message);
8
8
  const attributes = [
9
- t.jsxAttribute(t.jsxIdentifier(descriptor.key.name), descriptor.value),
9
+ t.jsxAttribute(t.jsxIdentifier(descriptor.key.name), t.isStringLiteral(descriptor.value) ? descriptor.value : t.jsxExpressionContainer(descriptor.value)),
10
10
  ...message.whitespace === void 0 ? [] : [t.jsxAttribute(t.jsxIdentifier("whitespace"), t.jsxExpressionContainer(t.booleanLiteral(message.whitespace)))],
11
11
  ...[...new Map(children).entries()].map(([k, e]) => t.jsxAttribute(t.jsxIdentifier(`_${k}`), t.jsxExpressionContainer(e)))
12
12
  ];
@@ -27,5 +27,4 @@ function generateChildExpressions(messages) {
27
27
  return c;
28
28
  }, []);
29
29
  }
30
- //#endregion
31
30
  export { generateSayJSXElement };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,3 @@
1
1
  import { Transformer } from "@saykit/config";
2
- //#region src/index.d.ts
3
2
  declare function createJsxTransformer(): Transformer;
4
- //#endregion
5
3
  export { createJsxTransformer as default };
package/dist/index.mjs CHANGED
@@ -6,7 +6,7 @@ import traverse_ from "@babel/traverse";
6
6
  import { assignSequenceIdentifiers } from "@saykit/config/features/messages";
7
7
  import { generateSayCallExpression, isLoneArgument } from "@saykit/transform-js/generator";
8
8
  import { collectLeadingComments, isEquivalentPlaceholder, parseExpression } from "@saykit/transform-js/parser";
9
- //#region src/index.ts
9
+ // src/index.ts
10
10
  const traverse = traverse_.default || traverse_;
11
11
  function createProgram(code, id) {
12
12
  const program = parser.parse(code, {
@@ -90,5 +90,4 @@ function createJsxTransformer() {
90
90
  }
91
91
  };
92
92
  }
93
- //#endregion
94
93
  export { createJsxTransformer as default };
package/dist/parser.d.mts CHANGED
@@ -1,14 +1,11 @@
1
1
  import { CompositeMessage, ElementMessage } from "@saykit/config/features/messages";
2
2
  import * as t from "@babel/types";
3
- //#region src/parser.d.ts
4
- declare function parseJSXContainerElement(element: t.JSXElement): CompositeMessage | null;
3
+ export declare function parseJSXContainerElement(element: t.JSXElement): CompositeMessage | null;
5
4
  /**
6
5
  * A self-closing `Say` element. Comments are passed in rather than read off the
7
6
  * node, since they were written in front of the element as a whole and Babel
8
7
  * attaches them there.
9
8
  */
10
- declare function parseJSXOpeningElement(element: t.JSXOpeningElement, comments?: readonly t.Comment[] | null): CompositeMessage | null;
11
- declare function parseJSXElement(element: t.JSXElement, fallback?: false): CompositeMessage | null;
12
- declare function parseJSXElement(element: t.JSXElement, fallback: true): CompositeMessage | ElementMessage;
13
- //#endregion
14
- export { parseJSXContainerElement, parseJSXElement, parseJSXOpeningElement };
9
+ export declare function parseJSXOpeningElement(element: t.JSXOpeningElement, comments?: readonly t.Comment[] | null): CompositeMessage | null;
10
+ export declare function parseJSXElement(element: t.JSXElement, fallback?: false): CompositeMessage | null;
11
+ export declare function parseJSXElement(element: t.JSXElement, fallback: true): CompositeMessage | ElementMessage;
package/dist/parser.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AUTO_INCREMENT_IDENTIFIER, ArgumentMessage, ChoiceMessage, CompositeMessage, ElementMessage, LiteralMessage, isArgumentType, validateArgumentStyle, validateBranchIdentifier } from "@saykit/config/features/messages";
2
2
  import { getTranslatorComments, unwrapPlaceholder } from "@saykit/transform-js/parser";
3
3
  import * as t from "@babel/types";
4
- //#region src/parser.ts
4
+ // src/parser.ts
5
5
  const TAG_ATTRIBUTE = "say-tag";
6
6
  const TAG_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
7
7
  function parseJSXContainerElement(element) {
@@ -137,7 +137,8 @@ function parseJSXElement(element, fallback) {
137
137
  if (!fallback) return null;
138
138
  const identifier = takeElementTag(element) ?? AUTO_INCREMENT_IDENTIFIER;
139
139
  if (element.openingElement.selfClosing) return new ElementMessage(identifier, [], element);
140
- return new ElementMessage(identifier, [parseJSXElement(t.jsxElement(t.jsxOpeningElement(t.jsxIdentifier("Say"), []), t.jsxClosingElement(t.jsxIdentifier("Say")), element.children), true)], element);
140
+ const wrapped = parseJSXElement(t.jsxElement(t.jsxOpeningElement(t.jsxIdentifier("Say"), []), t.jsxClosingElement(t.jsxIdentifier("Say")), element.children), true);
141
+ return new ElementMessage(identifier, [wrapped], element);
141
142
  }
142
143
  function takeElementTag(element) {
143
144
  const attributes = element.openingElement.attributes;
@@ -183,5 +184,4 @@ function findAttributeValueAsBoolean(attributes, identifier) {
183
184
  if (t.isJSXExpressionContainer(attribute.value) && t.isBooleanLiteral(attribute.value.expression)) return attribute.value.expression.value;
184
185
  }
185
186
  }
186
- //#endregion
187
187
  export { parseJSXContainerElement, parseJSXElement, parseJSXOpeningElement };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saykit/transform-jsx",
3
- "version": "0.0.0-beta-20261017002758",
3
+ "version": "0.0.0-beta-20261114152155",
4
4
  "description": "JSX and TSX source transformer for SayKit",
5
5
  "keywords": [
6
6
  "i18n",
@@ -43,12 +43,12 @@
43
43
  "provenance": true
44
44
  },
45
45
  "dependencies": {
46
- "@babel/generator": "^7.29.7",
47
- "@babel/parser": "^7.29.7",
48
- "@babel/traverse": "^7.29.7",
49
- "@babel/types": "^7.29.7",
50
- "@saykit/config": "^0.0.0-beta-20261017002758",
51
- "@saykit/transform-js": "^0.0.0-beta-20261017002758"
46
+ "@babel/generator": "^7.29.8",
47
+ "@babel/parser": "^7.29.9",
48
+ "@babel/traverse": "^7.29.10",
49
+ "@babel/types": "^7.29.8",
50
+ "@saykit/config": "^0.0.0-beta-20261114152155",
51
+ "@saykit/transform-js": "^0.0.0-beta-20261114152155"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@babel/core": "^7.29.7",