@ecopages/ecopages-jsx 0.2.0-alpha.16 → 0.2.0-alpha.17
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
CHANGED
|
@@ -13,7 +13,12 @@
|
|
|
13
13
|
- Fixed intrinsic custom-element asset discovery so Ecopages JSX registers scripts declared with decorator and function-call `customElement(...)` syntax.
|
|
14
14
|
- Fixed the Ecopages JSX browser runtime import map so browser builds no longer expose `@ecopages/jsx/server` through the shared JSX vendor bundle.
|
|
15
15
|
- Fixed the Ecopages JSX browser runtime bundle so Radiant custom-element scripts no longer fail on a duplicate `jsxDEV` export cycle.
|
|
16
|
+
- Fixed Ecopages JSX boundary payload compatibility coverage and removed the plugin/renderer integration-name import cycle.
|
|
16
17
|
|
|
17
18
|
### Refactoring
|
|
18
19
|
|
|
19
20
|
- Replaced Ecopages JSX renderer static and post-construction configuration with instance-owned renderer wiring and extracted shared plugin and renderer types into a dedicated module.
|
|
21
|
+
|
|
22
|
+
### Tests
|
|
23
|
+
|
|
24
|
+
- Added renderer-level coverage for the boundary payload compatibility contract.
|
package/README.md
CHANGED
|
@@ -79,3 +79,9 @@ export default config;
|
|
|
79
79
|
## Mixed Rendering
|
|
80
80
|
|
|
81
81
|
Ecopages JSX can own the outer page shell or just the nested boundary. When another integration reaches a JSX-owned boundary, Ecopages hands that boundary back to the JSX renderer so it can serialize the correct output before the outer renderer resumes.
|
|
82
|
+
|
|
83
|
+
Important:
|
|
84
|
+
|
|
85
|
+
- Components that may render foreign children must declare those children in `config.dependencies.components`.
|
|
86
|
+
- Ecopages validates mixed-renderer ownership from declared dependencies during render preparation. It does not treat rendered HTML alone as the source of truth.
|
|
87
|
+
- Ecopages JSX keeps raw-markup preservation and asset collection inside the JSX renderer.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ecopages/ecopages-jsx",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.17",
|
|
4
4
|
"description": "JSX integration plugin for Ecopages",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ecopages",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"vfile": "^6.0.3"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@ecopages/core": "0.2.0-alpha.
|
|
24
|
+
"@ecopages/core": "0.2.0-alpha.17",
|
|
25
25
|
"@ecopages/jsx": "^0.3.0-alpha.0",
|
|
26
26
|
"@ecopages/radiant": "^0.3.0-alpha.0"
|
|
27
27
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "@ecopages/core/route-renderer/integration-renderer";
|
|
5
5
|
import { createMarkupNodeLike } from "@ecopages/jsx";
|
|
6
6
|
import { renderToString, withServerCustomElementRenderHook } from "@ecopages/jsx/server";
|
|
7
|
-
import { ECOPAGES_JSX_PLUGIN_NAME } from "./ecopages-jsx.
|
|
7
|
+
import { ECOPAGES_JSX_PLUGIN_NAME } from "./ecopages-jsx.constants.js";
|
|
8
8
|
class EcopagesJsxRenderer extends IntegrationRenderer {
|
|
9
9
|
name = ECOPAGES_JSX_PLUGIN_NAME;
|
|
10
10
|
static radiantLightDomShimInstallPromise;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable integration name shared by the JSX plugin and renderer.
|
|
3
|
+
*
|
|
4
|
+
* Ecopages uses this identifier to match route files, renderer instances, and
|
|
5
|
+
* cross-integration component boundaries.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ECOPAGES_JSX_PLUGIN_NAME = "ecopages-jsx";
|
|
@@ -4,13 +4,6 @@ import type { JsxRenderable } from '@ecopages/jsx';
|
|
|
4
4
|
import { EcopagesJsxRenderer } from './ecopages-jsx-renderer.js';
|
|
5
5
|
import type { EcopagesJsxPluginOptions } from './ecopages-jsx.types.js';
|
|
6
6
|
export type { EcopagesJsxMdxCompileOptions, EcopagesJsxMdxOptions, EcopagesJsxPluginOptions, EcopagesJsxRendererConfig, } from './ecopages-jsx.types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Stable integration name shared by the JSX plugin and renderer.
|
|
9
|
-
*
|
|
10
|
-
* Ecopages uses this identifier to match route files, renderer instances, and
|
|
11
|
-
* cross-integration component boundaries.
|
|
12
|
-
*/
|
|
13
|
-
export declare const ECOPAGES_JSX_PLUGIN_NAME = "ecopages-jsx";
|
|
14
7
|
/** JSX integration plugin for Ecopages, supporting `.tsx` templates and optional Radiant web components. */
|
|
15
8
|
export declare class EcopagesJsxPlugin extends IntegrationPlugin<JsxRenderable> {
|
|
16
9
|
renderer: typeof EcopagesJsxRenderer;
|
|
@@ -3,9 +3,9 @@ import path from "node:path";
|
|
|
3
3
|
import { IntegrationPlugin } from "@ecopages/core/plugins/integration-plugin";
|
|
4
4
|
import { AssetFactory } from "@ecopages/core/services/asset-processing-service";
|
|
5
5
|
import { VFile } from "vfile";
|
|
6
|
+
import { ECOPAGES_JSX_PLUGIN_NAME } from "./ecopages-jsx.constants.js";
|
|
6
7
|
import { EcopagesJsxRenderer } from "./ecopages-jsx-renderer.js";
|
|
7
8
|
import { JsxRuntimeBundleService } from "./services/jsx-runtime-bundle.service.js";
|
|
8
|
-
const ECOPAGES_JSX_PLUGIN_NAME = "ecopages-jsx";
|
|
9
9
|
const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10
10
|
const mergePluginLists = (...lists) => {
|
|
11
11
|
const merged = lists.flatMap((list) => list ? [...list] : []);
|
|
@@ -271,7 +271,6 @@ class EcopagesJsxPlugin extends IntegrationPlugin {
|
|
|
271
271
|
}
|
|
272
272
|
const ecopagesJsxPlugin = (options) => new EcopagesJsxPlugin(options);
|
|
273
273
|
export {
|
|
274
|
-
ECOPAGES_JSX_PLUGIN_NAME,
|
|
275
274
|
EcopagesJsxPlugin,
|
|
276
275
|
ecopagesJsxPlugin
|
|
277
276
|
};
|