@saykit/transform-jsx 0.9.0 → 0.9.1
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 +3 -5
- package/dist/parser.d.mts +6 -1
- package/dist/parser.mjs +5 -5
- package/package.json +3 -3
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
|
|
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
|
|
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
|
-
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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.
|
|
3
|
+
"version": "0.9.1",
|
|
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.
|
|
51
|
-
"@saykit/transform-js": "^0.9.
|
|
50
|
+
"@saykit/config": "^0.9.1",
|
|
51
|
+
"@saykit/transform-js": "^0.9.1"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@babel/core": "^7.29.7",
|