@knighted/jsx 1.5.1 → 1.6.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 +1 -0
- package/dist/cjs/debug/diagnostics.cjs +57 -0
- package/dist/cjs/debug/diagnostics.d.cts +6 -0
- package/dist/cjs/debug/index.cjs +7 -0
- package/dist/cjs/debug/index.d.cts +2 -0
- package/dist/cjs/internal/attribute-resolution.cjs +55 -0
- package/dist/cjs/internal/attribute-resolution.d.cts +15 -0
- package/dist/cjs/internal/dev-environment.cjs +41 -0
- package/dist/cjs/internal/dev-environment.d.cts +4 -0
- package/dist/cjs/internal/event-bindings.cjs +93 -0
- package/dist/cjs/internal/event-bindings.d.cts +22 -0
- package/dist/cjs/internal/template-diagnostics.cjs +171 -0
- package/dist/cjs/internal/template-diagnostics.d.cts +13 -0
- package/dist/cjs/jsx.cjs +9 -110
- package/dist/cjs/loader/jsx.cjs +92 -20
- package/dist/cjs/loader/jsx.d.cts +6 -1
- package/dist/cjs/node/bootstrap.cjs +19 -19
- package/dist/cjs/node/bootstrap.d.cts +2 -1
- package/dist/cjs/node/debug/index.cjs +6 -0
- package/dist/cjs/node/debug/index.d.cts +2 -0
- package/dist/cjs/node/index.cjs +1 -1
- package/dist/cjs/react/react-jsx.cjs +1 -1
- package/dist/cjs/runtime/shared.cjs +41 -22
- package/dist/cjs/runtime/shared.d.cts +5 -2
- package/dist/debug/diagnostics.d.ts +6 -0
- package/dist/debug/diagnostics.js +52 -0
- package/dist/debug/index.d.ts +2 -0
- package/dist/debug/index.js +3 -0
- package/dist/internal/attribute-resolution.d.ts +15 -0
- package/dist/internal/attribute-resolution.js +50 -0
- package/dist/internal/dev-environment.d.ts +4 -0
- package/dist/internal/dev-environment.js +34 -0
- package/dist/internal/event-bindings.d.ts +22 -0
- package/dist/internal/event-bindings.js +87 -0
- package/dist/internal/template-diagnostics.d.ts +13 -0
- package/dist/internal/template-diagnostics.js +167 -0
- package/dist/jsx.js +9 -110
- package/dist/lite/debug/diagnostics.js +1 -0
- package/dist/lite/debug/index.js +8 -0
- package/dist/lite/index.js +8 -4
- package/dist/lite/node/debug/index.js +8 -0
- package/dist/lite/node/index.js +8 -4
- package/dist/lite/node/react/index.js +7 -3
- package/dist/lite/react/index.js +7 -3
- package/dist/loader/jsx.d.ts +6 -1
- package/dist/loader/jsx.js +92 -20
- package/dist/node/bootstrap.d.ts +2 -1
- package/dist/node/bootstrap.js +19 -19
- package/dist/node/debug/index.d.ts +2 -0
- package/dist/node/debug/index.js +6 -0
- package/dist/node/index.js +1 -1
- package/dist/react/react-jsx.js +2 -2
- package/dist/runtime/shared.d.ts +5 -2
- package/dist/runtime/shared.js +39 -21
- package/package.json +40 -8
package/dist/runtime/shared.js
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
+
export { formatTaggedTemplateParserError } from '../internal/template-diagnostics.js';
|
|
1
2
|
const OPEN_TAG_RE = /<\s*$/;
|
|
2
3
|
const CLOSE_TAG_RE = /<\/\s*$/;
|
|
3
4
|
export const PLACEHOLDER_PREFIX = '__KX_EXPR__';
|
|
4
5
|
export const placeholderPattern = new RegExp(`${PLACEHOLDER_PREFIX}\\d+_\\d+__`, 'g');
|
|
5
6
|
let invocationCounter = 0;
|
|
6
|
-
export const parserOptions = {
|
|
7
|
-
lang: 'jsx',
|
|
8
|
-
sourceType: 'module',
|
|
9
|
-
range: true,
|
|
10
|
-
preserveParens: true,
|
|
11
|
-
};
|
|
12
7
|
export const formatParserError = (error) => {
|
|
13
8
|
let message = `[oxc-parser] ${error.message}`;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
message += `\n${label.message}`;
|
|
18
|
-
}
|
|
9
|
+
const primaryLabel = error.labels?.[0];
|
|
10
|
+
if (primaryLabel?.message) {
|
|
11
|
+
message += `\n${primaryLabel.message}`;
|
|
19
12
|
}
|
|
20
13
|
if (error.codeframe) {
|
|
21
14
|
message += `\n${error.codeframe}`;
|
|
22
15
|
}
|
|
16
|
+
if (error.helpMessage) {
|
|
17
|
+
message += `\n${error.helpMessage}`;
|
|
18
|
+
}
|
|
23
19
|
return message;
|
|
24
20
|
};
|
|
21
|
+
export const parserOptions = {
|
|
22
|
+
lang: 'jsx',
|
|
23
|
+
sourceType: 'module',
|
|
24
|
+
range: true,
|
|
25
|
+
preserveParens: true,
|
|
26
|
+
};
|
|
25
27
|
export const extractRootNode = (program) => {
|
|
26
28
|
for (const statement of program.body) {
|
|
27
29
|
if (statement.type === 'ExpressionStatement') {
|
|
@@ -171,23 +173,39 @@ export const buildTemplate = (strings, values) => {
|
|
|
171
173
|
let source = raw[0] ?? '';
|
|
172
174
|
const templateId = invocationCounter++;
|
|
173
175
|
let placeholderIndex = 0;
|
|
176
|
+
const expressionRanges = [];
|
|
174
177
|
for (let idx = 0; idx < values.length; idx++) {
|
|
175
178
|
const chunk = raw[idx] ?? '';
|
|
176
179
|
const nextChunk = raw[idx + 1] ?? '';
|
|
177
180
|
const value = values[idx];
|
|
178
181
|
const isTagNamePosition = OPEN_TAG_RE.test(chunk) || CLOSE_TAG_RE.test(chunk);
|
|
182
|
+
let insertion;
|
|
179
183
|
if (isTagNamePosition && typeof value === 'function') {
|
|
180
184
|
const binding = ensureBinding(value, bindings, bindingLookup);
|
|
181
|
-
|
|
182
|
-
continue;
|
|
185
|
+
insertion = binding.name;
|
|
183
186
|
}
|
|
184
|
-
if (isTagNamePosition && typeof value === 'string') {
|
|
185
|
-
|
|
186
|
-
continue;
|
|
187
|
+
else if (isTagNamePosition && typeof value === 'string') {
|
|
188
|
+
insertion = value;
|
|
187
189
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
else {
|
|
191
|
+
const placeholder = `${PLACEHOLDER_PREFIX}${templateId}_${placeholderIndex++}__`;
|
|
192
|
+
placeholders.set(placeholder, value);
|
|
193
|
+
insertion = placeholder;
|
|
194
|
+
}
|
|
195
|
+
const sourceStart = source.length;
|
|
196
|
+
source += insertion;
|
|
197
|
+
const sourceEnd = source.length;
|
|
198
|
+
expressionRanges.push({
|
|
199
|
+
index: idx,
|
|
200
|
+
sourceStart,
|
|
201
|
+
sourceEnd,
|
|
202
|
+
});
|
|
203
|
+
source += nextChunk;
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
source,
|
|
207
|
+
placeholders,
|
|
208
|
+
bindings,
|
|
209
|
+
diagnostics: { expressionRanges },
|
|
210
|
+
};
|
|
193
211
|
};
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knighted/jsx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Runtime JSX tagged template that renders DOM or React trees anywhere without a build step.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jsx runtime",
|
|
7
|
-
"jsx template literal",
|
|
8
7
|
"tagged template",
|
|
9
8
|
"no-build jsx",
|
|
10
|
-
"dom
|
|
11
|
-
"react
|
|
9
|
+
"dom rendering",
|
|
10
|
+
"react rendering",
|
|
12
11
|
"ssr",
|
|
13
|
-
"
|
|
12
|
+
"rspack loader",
|
|
14
13
|
"webpack loader",
|
|
15
|
-
"
|
|
14
|
+
"wasm parser",
|
|
15
|
+
"typescript plugin"
|
|
16
16
|
],
|
|
17
17
|
"type": "module",
|
|
18
18
|
"main": "./dist/index.js",
|
|
@@ -36,11 +36,31 @@
|
|
|
36
36
|
"import": "./dist/jsx-runtime.js",
|
|
37
37
|
"default": "./dist/jsx-runtime.js"
|
|
38
38
|
},
|
|
39
|
+
"./debug": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/debug/index.js",
|
|
42
|
+
"default": "./dist/debug/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./debug-tools": {
|
|
45
|
+
"types": "./dist/debug/diagnostics.d.ts",
|
|
46
|
+
"import": "./dist/debug/diagnostics.js",
|
|
47
|
+
"default": "./dist/debug/diagnostics.js"
|
|
48
|
+
},
|
|
39
49
|
"./lite": {
|
|
40
50
|
"types": "./dist/index.d.ts",
|
|
41
51
|
"import": "./dist/lite/index.js",
|
|
42
52
|
"default": "./dist/lite/index.js"
|
|
43
53
|
},
|
|
54
|
+
"./lite/debug": {
|
|
55
|
+
"types": "./dist/index.d.ts",
|
|
56
|
+
"import": "./dist/lite/debug/index.js",
|
|
57
|
+
"default": "./dist/lite/debug/index.js"
|
|
58
|
+
},
|
|
59
|
+
"./lite/debug-tools": {
|
|
60
|
+
"types": "./dist/debug/diagnostics.d.ts",
|
|
61
|
+
"import": "./dist/lite/debug/diagnostics.js",
|
|
62
|
+
"default": "./dist/lite/debug/diagnostics.js"
|
|
63
|
+
},
|
|
44
64
|
"./react": {
|
|
45
65
|
"types": "./dist/react/index.d.ts",
|
|
46
66
|
"import": "./dist/react/index.js",
|
|
@@ -56,11 +76,21 @@
|
|
|
56
76
|
"import": "./dist/node/index.js",
|
|
57
77
|
"default": "./dist/node/index.js"
|
|
58
78
|
},
|
|
79
|
+
"./node/debug": {
|
|
80
|
+
"types": "./dist/node/index.d.ts",
|
|
81
|
+
"import": "./dist/node/debug/index.js",
|
|
82
|
+
"default": "./dist/node/debug/index.js"
|
|
83
|
+
},
|
|
59
84
|
"./node/lite": {
|
|
60
85
|
"types": "./dist/node/index.d.ts",
|
|
61
86
|
"import": "./dist/lite/node/index.js",
|
|
62
87
|
"default": "./dist/lite/node/index.js"
|
|
63
88
|
},
|
|
89
|
+
"./node/lite/debug": {
|
|
90
|
+
"types": "./dist/node/index.d.ts",
|
|
91
|
+
"import": "./dist/lite/node/debug/index.js",
|
|
92
|
+
"default": "./dist/lite/node/debug/index.js"
|
|
93
|
+
},
|
|
64
94
|
"./node/react": {
|
|
65
95
|
"types": "./dist/node/react/index.d.ts",
|
|
66
96
|
"import": "./dist/node/react/index.js",
|
|
@@ -85,9 +115,10 @@
|
|
|
85
115
|
"build": "duel && npm run build:lite && npm run build:cli",
|
|
86
116
|
"prepare": "husky",
|
|
87
117
|
"precheck-types": "npm run build",
|
|
88
|
-
"check-types": "npm run check-types:lib && npm run check-types:demo",
|
|
118
|
+
"check-types": "npm run check-types:lib && npm run check-types:demo && npm run check-types:test",
|
|
89
119
|
"check-types:lib": "tsc --noEmit --project tsconfig.json",
|
|
90
120
|
"check-types:demo": "tsc --noEmit --project examples/browser/tsconfig.json",
|
|
121
|
+
"check-types:test": "tsc --noEmit --project tsconfig.vitest.json",
|
|
91
122
|
"lint": "eslint src test",
|
|
92
123
|
"cycles": "madge src --circular --extensions ts,tsx,js,jsx --ts-config tsconfig.json",
|
|
93
124
|
"prettier": "prettier -w .",
|
|
@@ -103,6 +134,7 @@
|
|
|
103
134
|
"build:lite": "tsup --config tsup.config.ts",
|
|
104
135
|
"build:cli": "tsup --config tsup.cli.config.ts",
|
|
105
136
|
"setup:wasm": "node scripts/setup-wasm.mjs",
|
|
137
|
+
"sizecheck": "node scripts/sizecheck.mjs",
|
|
106
138
|
"prepack": "npm run build"
|
|
107
139
|
},
|
|
108
140
|
"devDependencies": {
|
|
@@ -162,7 +194,7 @@
|
|
|
162
194
|
"optionalDependencies": {
|
|
163
195
|
"@oxc-parser/binding-darwin-arm64": "^0.105.0",
|
|
164
196
|
"@oxc-parser/binding-linux-x64-gnu": "^0.105.0",
|
|
165
|
-
"@oxc-parser/binding-wasm32-wasi": "0.105.0"
|
|
197
|
+
"@oxc-parser/binding-wasm32-wasi": "^0.105.0"
|
|
166
198
|
},
|
|
167
199
|
"overrides": {
|
|
168
200
|
"module-lookup-amd": {
|