@saykit/transform-js 0.10.0 → 0.11.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/README.md +2 -2
- package/dist/generator.d.mts +14 -1
- package/dist/generator.mjs +11 -3
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ pnpm add -D @saykit/transform-js
|
|
|
18
18
|
import js from '@saykit/transform-js';
|
|
19
19
|
|
|
20
20
|
// inside a bucket:
|
|
21
|
-
transformer: js()
|
|
21
|
+
transformer: js(),
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
For JSX/TSX, combine with [`@saykit/transform-jsx`](https://github.com/k0d13/saykit/tree/main/packages/transform-jsx):
|
|
@@ -28,7 +28,7 @@ import js from '@saykit/transform-js';
|
|
|
28
28
|
import jsx from '@saykit/transform-jsx';
|
|
29
29
|
|
|
30
30
|
// inside a bucket:
|
|
31
|
-
transformer: [js(), jsx()]
|
|
31
|
+
transformer: [js(), jsx()],
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Documentation
|
package/dist/generator.d.mts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { CompositeMessage } from "@saykit/config/features/messages";
|
|
2
2
|
import * as t from "@babel/types";
|
|
3
3
|
//#region src/generator.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Whether a message is one formatted value and nothing else: `say.date(x)` on
|
|
6
|
+
* its own rather than inside a sentence. The style and the locale already
|
|
7
|
+
* decide what it renders as, so there is nothing in it for a translator to
|
|
8
|
+
* change: it is never extracted, and the call carries the message itself
|
|
9
|
+
* rather than an id to look one up by.
|
|
10
|
+
*/
|
|
11
|
+
declare function isLoneArgument(message: CompositeMessage): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* The property a call looks its message up by: an id into the catalogue, or
|
|
14
|
+
* the ICU message itself when nothing was extracted.
|
|
15
|
+
*/
|
|
16
|
+
declare function generateDescriptorProperty(message: CompositeMessage): t.ObjectProperty;
|
|
4
17
|
declare function generateSayCallExpression(message: CompositeMessage): t.CallExpression;
|
|
5
18
|
//#endregion
|
|
6
|
-
export { generateSayCallExpression };
|
|
19
|
+
export { generateDescriptorProperty, generateSayCallExpression, isLoneArgument };
|
package/dist/generator.mjs
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { ArgumentMessage, ChoiceMessage, CompositeMessage, ElementMessage } from "@saykit/config/features/messages";
|
|
2
2
|
import * as t from "@babel/types";
|
|
3
3
|
//#region src/generator.ts
|
|
4
|
-
function
|
|
4
|
+
function isLoneArgument(message) {
|
|
5
|
+
const [child] = message.children;
|
|
6
|
+
return message.children.length === 1 && child instanceof ArgumentMessage && !!child.format;
|
|
7
|
+
}
|
|
8
|
+
function generateDescriptorProperty(message) {
|
|
9
|
+
if (isLoneArgument(message)) return t.objectProperty(t.identifier("message"), t.stringLiteral(message.toICUString()));
|
|
5
10
|
const id = message.descriptor.id ?? message.toHashString();
|
|
11
|
+
return t.objectProperty(t.identifier("id"), t.stringLiteral(id));
|
|
12
|
+
}
|
|
13
|
+
function generateSayCallExpression(message) {
|
|
6
14
|
const children = generateChildExpressions(message.children);
|
|
7
|
-
const properties = t.objectExpression([
|
|
15
|
+
const properties = t.objectExpression([generateDescriptorProperty(message), ...[...new Map(children).entries()].map(([ident, expr]) => t.objectProperty(t.identifier(`_${ident}`), expr))]);
|
|
8
16
|
return t.callExpression(t.memberExpression(message.accessor, t.identifier("call")), [properties]);
|
|
9
17
|
}
|
|
10
18
|
function generateChildExpressions(messages) {
|
|
@@ -23,4 +31,4 @@ function generateChildExpressions(messages) {
|
|
|
23
31
|
}, []);
|
|
24
32
|
}
|
|
25
33
|
//#endregion
|
|
26
|
-
export { generateSayCallExpression };
|
|
34
|
+
export { generateDescriptorProperty, generateSayCallExpression, isLoneArgument };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateSayCallExpression } from "./generator.mjs";
|
|
1
|
+
import { generateSayCallExpression, isLoneArgument } from "./generator.mjs";
|
|
2
2
|
import { collectLeadingComments, isEquivalentPlaceholder, parseExpression } from "./parser.mjs";
|
|
3
3
|
import { generate } from "@babel/generator";
|
|
4
4
|
import * as parser from "@babel/parser";
|
|
@@ -49,7 +49,7 @@ function createJsTransformer() {
|
|
|
49
49
|
path.skip();
|
|
50
50
|
}
|
|
51
51
|
} });
|
|
52
|
-
return messages.map((message) => ({
|
|
52
|
+
return messages.filter((message) => !isLoneArgument(message)).map((message) => ({
|
|
53
53
|
message: message.toICUString(),
|
|
54
54
|
translation: void 0,
|
|
55
55
|
id: message.descriptor.id,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saykit/transform-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "JavaScript and TypeScript transformer for SayKit",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
@@ -47,7 +47,7 @@
|
|
|
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.
|
|
50
|
+
"@saykit/config": "^0.11.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@babel/core": "^7.29.7",
|