@saykit/transform-jsx 0.9.0 → 0.10.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.
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ import * as parser from "@babel/parser";
5
5
  import traverse_ from "@babel/traverse";
6
6
  import { assignSequenceIdentifiers } from "@saykit/config/features/messages";
7
7
  import { generateSayCallExpression } from "@saykit/transform-js/generator";
8
- import { isEquivalentPlaceholder, parseExpression } from "@saykit/transform-js/parser";
8
+ import { collectLeadingComments, isEquivalentPlaceholder, parseExpression } from "@saykit/transform-js/parser";
9
9
  //#region src/index.ts
10
10
  const traverse = traverse_.default || traverse_;
11
11
  function createProgram(code, id) {
@@ -37,7 +37,7 @@ function createJsxTransformer() {
37
37
  const messages = [];
38
38
  traverse(program, {
39
39
  Expression(path) {
40
- path.node.leadingComments = path.node.leadingComments ?? [];
40
+ path.node.leadingComments = collectLeadingComments(path);
41
41
  const message = parseExpression(path.node);
42
42
  if (message) {
43
43
  assignSequenceIdentifiers(message, { current: 0 }, isEquivalentPlaceholder);
@@ -46,7 +46,7 @@ function createJsxTransformer() {
46
46
  }
47
47
  },
48
48
  JSXElement(path) {
49
- path.node.leadingComments = path.node.leadingComments ?? [];
49
+ path.node.leadingComments = collectLeadingComments(path);
50
50
  const message = parseJSXElement(path.node);
51
51
  if (message) {
52
52
  assignSequenceIdentifiers(message, { current: 0 }, isEquivalentPlaceholder);
@@ -68,7 +68,6 @@ function createJsxTransformer() {
68
68
  const program = createProgram(code, id);
69
69
  traverse(program, {
70
70
  Expression(path) {
71
- path.node.leadingComments = path.node.leadingComments ?? [];
72
71
  const message = parseExpression(path.node);
73
72
  if (message) {
74
73
  assignSequenceIdentifiers(message, { current: 0 }, isEquivalentPlaceholder);
@@ -78,7 +77,6 @@ function createJsxTransformer() {
78
77
  }
79
78
  },
80
79
  JSXElement(path) {
81
- path.node.leadingComments = path.node.leadingComments ?? [];
82
80
  const message = parseJSXElement(path.node);
83
81
  if (message) {
84
82
  assignSequenceIdentifiers(message, { current: 0 }, isEquivalentPlaceholder);
package/dist/parser.d.mts CHANGED
@@ -2,7 +2,12 @@ import { CompositeMessage, ElementMessage } from "@saykit/config/features/messag
2
2
  import * as t from "@babel/types";
3
3
  //#region src/parser.d.ts
4
4
  declare function parseJSXContainerElement(element: t.JSXElement): CompositeMessage | null;
5
- declare function parseJSXOpeningElement(element: t.JSXOpeningElement): CompositeMessage | null;
5
+ /**
6
+ * A self-closing `Say` element. Comments are passed in rather than read off the
7
+ * node, since they were written in front of the element as a whole and Babel
8
+ * attaches them there.
9
+ */
10
+ declare function parseJSXOpeningElement(element: t.JSXOpeningElement, comments?: readonly t.Comment[] | null): CompositeMessage | null;
6
11
  declare function parseJSXElement(element: t.JSXElement, fallback?: false): CompositeMessage | null;
7
12
  declare function parseJSXElement(element: t.JSXElement, fallback: true): CompositeMessage | ElementMessage;
8
13
  //#endregion
package/dist/parser.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AUTO_INCREMENT_IDENTIFIER, ArgumentMessage, ChoiceMessage, CompositeMessage, ElementMessage, LiteralMessage, isArgumentType, validateArgumentStyle, validateBranchIdentifier } from "@saykit/config/features/messages";
2
- import { unwrapPlaceholder } from "@saykit/transform-js/parser";
2
+ import { getTranslatorComments, unwrapPlaceholder } from "@saykit/transform-js/parser";
3
3
  import * as t from "@babel/types";
4
4
  //#region src/parser.ts
5
5
  const TAG_ATTRIBUTE = "say-tag";
@@ -16,9 +16,9 @@ function parseJSXContainerElement(element) {
16
16
  return new CompositeMessage({
17
17
  id: descriptorId,
18
18
  context: descriptorContext
19
- }, [], getReferences(element), children, accessor, whitespace);
19
+ }, getTranslatorComments(element.leadingComments), getReferences(element), children, accessor, whitespace);
20
20
  }
21
- function parseJSXOpeningElement(element) {
21
+ function parseJSXOpeningElement(element, comments) {
22
22
  if (!element.selfClosing) return null;
23
23
  const processed = processJSXOpeningElement(element);
24
24
  if (!processed) return null;
@@ -28,7 +28,7 @@ function parseJSXOpeningElement(element) {
28
28
  const wrap = (children) => new CompositeMessage({
29
29
  id: descriptorId,
30
30
  context: descriptorContext
31
- }, [], getReferences(element), children, accessor);
31
+ }, getTranslatorComments(comments), getReferences(element), children, accessor);
32
32
  if (typeof kind === "string" && [
33
33
  "select",
34
34
  "ordinal",
@@ -132,7 +132,7 @@ function processJSXOpeningElement(element) {
132
132
  return null;
133
133
  }
134
134
  function parseJSXElement(element, fallback) {
135
- const message = element.openingElement.selfClosing ? parseJSXOpeningElement(element.openingElement) : parseJSXContainerElement(element);
135
+ const message = element.openingElement.selfClosing ? parseJSXOpeningElement(element.openingElement, element.leadingComments) : parseJSXContainerElement(element);
136
136
  if (message) return message;
137
137
  if (!fallback) return null;
138
138
  const identifier = takeElementTag(element) ?? AUTO_INCREMENT_IDENTIFIER;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saykit/transform-jsx",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "JSX and TSX source transformer for SayKit",
5
5
  "keywords": [
6
6
  "i18n",
@@ -47,8 +47,8 @@
47
47
  "@babel/parser": "^7.29.7",
48
48
  "@babel/traverse": "^7.29.7",
49
49
  "@babel/types": "^7.29.7",
50
- "@saykit/config": "^0.9.0",
51
- "@saykit/transform-js": "^0.9.0"
50
+ "@saykit/config": "^0.10.0",
51
+ "@saykit/transform-js": "^0.10.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@babel/core": "^7.29.7",