@praxisjs/jsx 0.3.0 → 0.3.2
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/CHANGELOG.md +18 -0
- package/dist/__tests__/jsx-runtime.test.d.ts +2 -0
- package/dist/__tests__/jsx-runtime.test.d.ts.map +1 -0
- package/dist/__tests__/jsx-runtime.test.js +69 -0
- package/dist/__tests__/jsx-runtime.test.js.map +1 -0
- package/dist/jsx-runtime.d.ts +11 -4
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/jsx-runtime.test.ts +91 -0
- package/src/jsx-runtime.ts +36 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @praxisjs/jsx
|
|
2
2
|
|
|
3
|
+
## 0.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @praxisjs/runtime@0.2.3
|
|
8
|
+
|
|
9
|
+
## 0.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 966efdc: Fix JSX prop typing for `StatelessComponent` to automatically accept reactive values (`() => T`) without requiring manual declaration. `LibraryManagedAttributes` now uses `InstancePropsOf` directly instead of intersecting with the raw constructor props, preventing the erroneous `T | (T & (() => T))` type expansion.
|
|
14
|
+
|
|
15
|
+
`InstancePropsOf` now uses `_rawProps` to infer props for class components decorated with `@Prop()`, providing accurate JSX prop types without manual interface declarations.
|
|
16
|
+
|
|
17
|
+
The `@Emit` decorator type signature was relaxed from `unknown` to `any` to allow broader method compatibility. Devtools `Panel` and `DevToolsApp` components were refactored to use `@Prop()` and `@Emit()` decorators instead of manual props casting.
|
|
18
|
+
|
|
19
|
+
- @praxisjs/runtime@0.2.2
|
|
20
|
+
|
|
3
21
|
## 0.3.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-runtime.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/jsx-runtime.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { Scope, runInScope } from "@praxisjs/runtime";
|
|
4
|
+
import { jsx, jsxs, jsxDEV, Fragment } from "../jsx-runtime";
|
|
5
|
+
function withScope(fn) {
|
|
6
|
+
const scope = new Scope();
|
|
7
|
+
return runInScope(scope, fn);
|
|
8
|
+
}
|
|
9
|
+
describe("Fragment", () => {
|
|
10
|
+
it("is a unique Symbol", () => {
|
|
11
|
+
expect(typeof Fragment).toBe("symbol");
|
|
12
|
+
});
|
|
13
|
+
it("returns [] when no children are provided", () => {
|
|
14
|
+
const result = withScope(() => jsx(Fragment, {}));
|
|
15
|
+
expect(result).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
it("returns [] when children is empty array", () => {
|
|
18
|
+
const result = withScope(() => jsx(Fragment, { children: [] }));
|
|
19
|
+
expect(Array.isArray(result)).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
it("wraps a single Node in an array", () => {
|
|
22
|
+
const node = document.createElement("span");
|
|
23
|
+
const result = withScope(() => jsx(Fragment, { children: node }));
|
|
24
|
+
expect(result).toHaveLength(1);
|
|
25
|
+
expect(result[0]).toBe(node);
|
|
26
|
+
});
|
|
27
|
+
it("flattens an array of Nodes", () => {
|
|
28
|
+
const a = document.createElement("div");
|
|
29
|
+
const b = document.createElement("span");
|
|
30
|
+
const result = withScope(() => jsx(Fragment, { children: [a, b] }));
|
|
31
|
+
expect(result).toHaveLength(2);
|
|
32
|
+
expect(result[0]).toBe(a);
|
|
33
|
+
expect(result[1]).toBe(b);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("jsx — string tag", () => {
|
|
37
|
+
it("creates a DOM element for a string tag", () => {
|
|
38
|
+
const el = withScope(() => jsx("div", {}));
|
|
39
|
+
expect(el).toBeInstanceOf(HTMLDivElement);
|
|
40
|
+
});
|
|
41
|
+
it("applies class prop", () => {
|
|
42
|
+
const el = withScope(() => jsx("p", { class: "text-lg" }));
|
|
43
|
+
expect(el.getAttribute("class")).toBe("text-lg");
|
|
44
|
+
});
|
|
45
|
+
it("renders string children", () => {
|
|
46
|
+
const el = withScope(() => jsx("span", { children: "hello" }));
|
|
47
|
+
expect(el.textContent).toBe("hello");
|
|
48
|
+
});
|
|
49
|
+
it("creates an SVG element for svg tags", () => {
|
|
50
|
+
const el = withScope(() => jsx("svg", {}));
|
|
51
|
+
expect(el).toBeInstanceOf(SVGElement);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe("jsx — unknown type", () => {
|
|
55
|
+
it("returns a comment node for an unknown symbol type", () => {
|
|
56
|
+
const unknownType = Symbol("unknown");
|
|
57
|
+
const result = withScope(() => jsx(unknownType, {}));
|
|
58
|
+
expect(result.nodeType).toBe(Node.COMMENT_NODE);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe("jsxs and jsxDEV", () => {
|
|
62
|
+
it("jsxs is the same function as jsx", () => {
|
|
63
|
+
expect(jsxs).toBe(jsx);
|
|
64
|
+
});
|
|
65
|
+
it("jsxDEV is the same function as jsx", () => {
|
|
66
|
+
expect(jsxDEV).toBe(jsx);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=jsx-runtime.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-runtime.test.js","sourceRoot":"","sources":["../../src/__tests__/jsx-runtime.test.ts"],"names":[],"mappings":"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"}
|
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -15,12 +15,19 @@ export declare namespace JSX {
|
|
|
15
15
|
interface GlobalAttributes {
|
|
16
16
|
key?: string | number | symbol;
|
|
17
17
|
}
|
|
18
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
18
19
|
type InstancePropsOf<C> = C extends {
|
|
19
20
|
prototype: infer I;
|
|
20
|
-
} ? {
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
21
|
+
} ? IsAny<I> extends true ? never : I extends {
|
|
22
|
+
_rawProps: infer RawProps extends object;
|
|
23
|
+
} ? [string] extends [keyof RawProps] ? {
|
|
24
|
+
[K in keyof I as K extends "_defaults" | "_stateDirty" | "_rawProps" | "_mounted" | "_anchor" | "_setProps" | "props" | "onBeforeMount" | "onMount" | "onUnmount" | "onError" | "render" | "onUpdate" ? never : I[K] extends (...args: unknown[]) => unknown ? never : K]?: Reactive<I[K]>;
|
|
25
|
+
} : {
|
|
26
|
+
[K in keyof RawProps]?: Reactive<RawProps[K]>;
|
|
27
|
+
} : never : never;
|
|
28
|
+
export type LibraryManagedAttributes<C, P> = C extends string ? P & GlobalAttributes : [InstancePropsOf<C>] extends [never] ? C extends new (props: infer CtorProps) => unknown ? {
|
|
29
|
+
[K in keyof CtorProps]?: Reactive<CtorProps[K]>;
|
|
30
|
+
} & GlobalAttributes : Record<string, unknown> & GlobalAttributes : InstancePropsOf<C> & GlobalAttributes;
|
|
24
31
|
export interface IntrinsicElements {
|
|
25
32
|
div: HTMLAttributes;
|
|
26
33
|
span: HTMLAttributes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,QAAQ,eAAqB,CAAC;AAE3C,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC9B,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GACxB,CAAC,SAAS,oBAAoB,CAAC,MAAM,CAAC,CAAC,GACrC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9B,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjC,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,oBAAoB,GAAG,MAAM,EAClE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,IAAI,GAAG,IAAI,EAAE,CAoBf;AAED,eAAO,MAAM,IAAI,YAAM,CAAC;AACxB,eAAO,MAAM,MAAM,YAAM,CAAC;AAG1B,yBAAiB,GAAG,CAAC;IACnB,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IAEpC,UAAU,gBAAgB;QACxB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;KAChC;
|
|
1
|
+
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisjs/jsx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.9.3"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@praxisjs/runtime": "0.2.
|
|
25
|
+
"@praxisjs/runtime": "0.2.3",
|
|
26
26
|
"@praxisjs/shared": "0.2.0"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { Scope, runInScope } from "@praxisjs/runtime";
|
|
5
|
+
|
|
6
|
+
import { jsx, jsxs, jsxDEV, Fragment } from "../jsx-runtime";
|
|
7
|
+
|
|
8
|
+
function withScope<T>(fn: () => T): T {
|
|
9
|
+
const scope = new Scope();
|
|
10
|
+
return runInScope(scope, fn);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
describe("Fragment", () => {
|
|
14
|
+
it("is a unique Symbol", () => {
|
|
15
|
+
expect(typeof Fragment).toBe("symbol");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("returns [] when no children are provided", () => {
|
|
19
|
+
const result = withScope(() => jsx(Fragment, {}));
|
|
20
|
+
expect(result).toEqual([]);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("returns [] when children is empty array", () => {
|
|
24
|
+
const result = withScope(() => jsx(Fragment, { children: [] }));
|
|
25
|
+
expect(Array.isArray(result)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("wraps a single Node in an array", () => {
|
|
29
|
+
const node = document.createElement("span");
|
|
30
|
+
const result = withScope(() => jsx(Fragment, { children: node })) as Node[];
|
|
31
|
+
expect(result).toHaveLength(1);
|
|
32
|
+
expect(result[0]).toBe(node);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("flattens an array of Nodes", () => {
|
|
36
|
+
const a = document.createElement("div");
|
|
37
|
+
const b = document.createElement("span");
|
|
38
|
+
const result = withScope(() =>
|
|
39
|
+
jsx(Fragment, { children: [a, b] }),
|
|
40
|
+
) as Node[];
|
|
41
|
+
expect(result).toHaveLength(2);
|
|
42
|
+
expect(result[0]).toBe(a);
|
|
43
|
+
expect(result[1]).toBe(b);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe("jsx — string tag", () => {
|
|
48
|
+
it("creates a DOM element for a string tag", () => {
|
|
49
|
+
const el = withScope(() => jsx("div", {})) as HTMLElement;
|
|
50
|
+
expect(el).toBeInstanceOf(HTMLDivElement);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("applies class prop", () => {
|
|
54
|
+
const el = withScope(() =>
|
|
55
|
+
jsx("p", { class: "text-lg" }),
|
|
56
|
+
) as HTMLElement;
|
|
57
|
+
expect(el.getAttribute("class")).toBe("text-lg");
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("renders string children", () => {
|
|
61
|
+
const el = withScope(() =>
|
|
62
|
+
jsx("span", { children: "hello" }),
|
|
63
|
+
) as HTMLElement;
|
|
64
|
+
expect(el.textContent).toBe("hello");
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("creates an SVG element for svg tags", () => {
|
|
68
|
+
const el = withScope(() => jsx("svg", {})) as SVGElement;
|
|
69
|
+
expect(el).toBeInstanceOf(SVGElement);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe("jsx — unknown type", () => {
|
|
74
|
+
it("returns a comment node for an unknown symbol type", () => {
|
|
75
|
+
const unknownType = Symbol("unknown");
|
|
76
|
+
const result = withScope(() =>
|
|
77
|
+
jsx(unknownType as unknown as string, {}),
|
|
78
|
+
) as Comment;
|
|
79
|
+
expect(result.nodeType).toBe(Node.COMMENT_NODE);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe("jsxs and jsxDEV", () => {
|
|
84
|
+
it("jsxs is the same function as jsx", () => {
|
|
85
|
+
expect(jsxs).toBe(jsx);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("jsxDEV is the same function as jsx", () => {
|
|
89
|
+
expect(jsxDEV).toBe(jsx);
|
|
90
|
+
});
|
|
91
|
+
});
|
package/src/jsx-runtime.ts
CHANGED
|
@@ -55,29 +55,47 @@ export namespace JSX {
|
|
|
55
55
|
key?: string | number | symbol;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
// Resolves to `true` when T is the `any` type.
|
|
59
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
60
|
+
|
|
58
61
|
// Infer props from the class instance properties
|
|
59
62
|
// (excludes lifecycle and methods)
|
|
60
63
|
type InstancePropsOf<C> = C extends { prototype: infer I }
|
|
61
|
-
?
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
? IsAny<I> extends true
|
|
65
|
+
? never // raw construct-type alias — prototype resolves to `any`
|
|
66
|
+
: I extends { _rawProps: infer RawProps extends object }
|
|
67
|
+
? [string] extends [keyof RawProps]
|
|
68
|
+
? {
|
|
69
|
+
[K in keyof I as K extends
|
|
70
|
+
| "_defaults"
|
|
71
|
+
| "_stateDirty"
|
|
72
|
+
| "_rawProps"
|
|
73
|
+
| "_mounted"
|
|
74
|
+
| "_anchor"
|
|
75
|
+
| "_setProps"
|
|
76
|
+
| "props"
|
|
77
|
+
| "onBeforeMount"
|
|
78
|
+
| "onMount"
|
|
79
|
+
| "onUnmount"
|
|
80
|
+
| "onError"
|
|
81
|
+
| "render"
|
|
82
|
+
| "onUpdate"
|
|
83
|
+
? never
|
|
84
|
+
: I[K] extends (...args: unknown[]) => unknown
|
|
85
|
+
? never
|
|
86
|
+
: K]?: Reactive<I[K]>;
|
|
87
|
+
}
|
|
88
|
+
: { [K in keyof RawProps]?: Reactive<RawProps[K]> }
|
|
89
|
+
: never
|
|
72
90
|
: never;
|
|
73
91
|
|
|
74
|
-
export type LibraryManagedAttributes<C, P> =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
?
|
|
79
|
-
:
|
|
80
|
-
|
|
92
|
+
export type LibraryManagedAttributes<C, P> = C extends string
|
|
93
|
+
? P & GlobalAttributes
|
|
94
|
+
: [InstancePropsOf<C>] extends [never]
|
|
95
|
+
? C extends new (props: infer CtorProps) => unknown
|
|
96
|
+
? { [K in keyof CtorProps]?: Reactive<CtorProps[K]> } & GlobalAttributes
|
|
97
|
+
: Record<string, unknown> & GlobalAttributes
|
|
98
|
+
: InstancePropsOf<C> & GlobalAttributes;
|
|
81
99
|
|
|
82
100
|
export interface IntrinsicElements {
|
|
83
101
|
div: HTMLAttributes;
|