@ecopages/react 0.2.0-alpha.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +21 -0
  3. package/README.md +65 -0
  4. package/package.json +76 -0
  5. package/src/declarations.d.ts +6 -0
  6. package/src/react-hmr-strategy.d.ts +143 -0
  7. package/src/react-hmr-strategy.js +332 -0
  8. package/src/react-hmr-strategy.ts +444 -0
  9. package/src/react-renderer.d.ts +106 -0
  10. package/src/react-renderer.js +302 -0
  11. package/src/react-renderer.ts +403 -0
  12. package/src/react.plugin.d.ts +147 -0
  13. package/src/react.plugin.js +126 -0
  14. package/src/react.plugin.ts +241 -0
  15. package/src/router-adapter.d.ts +87 -0
  16. package/src/router-adapter.js +0 -0
  17. package/src/router-adapter.ts +95 -0
  18. package/src/services/react-bundle.service.d.ts +68 -0
  19. package/src/services/react-bundle.service.js +145 -0
  20. package/src/services/react-bundle.service.ts +212 -0
  21. package/src/services/react-hmr-page-metadata-cache.d.ts +17 -0
  22. package/src/services/react-hmr-page-metadata-cache.js +19 -0
  23. package/src/services/react-hmr-page-metadata-cache.ts +24 -0
  24. package/src/services/react-hydration-asset.service.d.ts +75 -0
  25. package/src/services/react-hydration-asset.service.js +198 -0
  26. package/src/services/react-hydration-asset.service.ts +260 -0
  27. package/src/services/react-page-module.service.d.ts +80 -0
  28. package/src/services/react-page-module.service.js +155 -0
  29. package/src/services/react-page-module.service.ts +214 -0
  30. package/src/services/react-runtime-bundle.service.d.ts +38 -0
  31. package/src/services/react-runtime-bundle.service.js +207 -0
  32. package/src/services/react-runtime-bundle.service.ts +271 -0
  33. package/src/utils/client-graph-boundary-plugin.d.ts +43 -0
  34. package/src/utils/client-graph-boundary-plugin.js +356 -0
  35. package/src/utils/client-graph-boundary-plugin.ts +590 -0
  36. package/src/utils/client-only.d.ts +8 -0
  37. package/src/utils/client-only.js +19 -0
  38. package/src/utils/client-only.ts +27 -0
  39. package/src/utils/declared-modules.d.ts +42 -0
  40. package/src/utils/declared-modules.js +56 -0
  41. package/src/utils/declared-modules.ts +99 -0
  42. package/src/utils/dynamic.d.ts +15 -0
  43. package/src/utils/dynamic.js +12 -0
  44. package/src/utils/dynamic.ts +27 -0
  45. package/src/utils/hmr-scripts.d.ts +18 -0
  46. package/src/utils/hmr-scripts.js +31 -0
  47. package/src/utils/hmr-scripts.ts +47 -0
  48. package/src/utils/html-boundary.d.ts +7 -0
  49. package/src/utils/html-boundary.js +55 -0
  50. package/src/utils/html-boundary.ts +66 -0
  51. package/src/utils/hydration-scripts.d.ts +71 -0
  52. package/src/utils/hydration-scripts.js +222 -0
  53. package/src/utils/hydration-scripts.ts +338 -0
  54. package/src/utils/reachability-analyzer.d.ts +55 -0
  55. package/src/utils/reachability-analyzer.js +243 -0
  56. package/src/utils/reachability-analyzer.ts +440 -0
  57. package/src/utils/react-mdx-loader-plugin.d.ts +3 -0
  58. package/src/utils/react-mdx-loader-plugin.js +37 -0
  59. package/src/utils/react-mdx-loader-plugin.ts +40 -0
@@ -0,0 +1,37 @@
1
+ import { readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { compile } from "@mdx-js/mdx";
4
+ import { SourceMapGenerator } from "source-map";
5
+ import { VFile } from "vfile";
6
+ function createReactMdxLoaderPlugin(compilerOptions) {
7
+ const mdxExtensions = compilerOptions?.mdxExtensions ?? [".mdx"];
8
+ const mdExtensions = compilerOptions?.mdExtensions ?? [".md"];
9
+ const allExtensions = [...mdxExtensions, ...mdExtensions];
10
+ const escapedExts = allExtensions.map((ext) => ext.replace(".", "\\."));
11
+ const filter = new RegExp(`(${escapedExts.join("|")})(\\?.*)?$`);
12
+ return {
13
+ name: "react-mdx-loader",
14
+ setup(build) {
15
+ build.onLoad({ filter }, async (args) => {
16
+ const filePath = args.path.includes("?") ? args.path.split("?")[0] : args.path;
17
+ const source = readFileSync(filePath, "utf-8");
18
+ const file = new VFile({ path: filePath, value: source });
19
+ const compiled = await compile(file, {
20
+ ...compilerOptions,
21
+ SourceMapGenerator
22
+ });
23
+ const sourceMap = compiled.map ? `
24
+ //# sourceMappingURL=data:application/json;base64,${Buffer.from(JSON.stringify(compiled.map)).toString("base64")}
25
+ ` : "";
26
+ return {
27
+ contents: `${String(compiled.value)}${sourceMap}`,
28
+ loader: compilerOptions?.jsx ? "jsx" : "js",
29
+ resolveDir: path.dirname(args.path)
30
+ };
31
+ });
32
+ }
33
+ };
34
+ }
35
+ export {
36
+ createReactMdxLoaderPlugin
37
+ };
@@ -0,0 +1,40 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import type { EcoBuildPlugin } from '@ecopages/core/build/build-types';
4
+ import { type CompileOptions, compile } from '@mdx-js/mdx';
5
+ import { SourceMapGenerator } from 'source-map';
6
+ import { VFile } from 'vfile';
7
+
8
+ export function createReactMdxLoaderPlugin(compilerOptions?: CompileOptions): EcoBuildPlugin {
9
+ const mdxExtensions = compilerOptions?.mdxExtensions ?? ['.mdx'];
10
+ const mdExtensions = compilerOptions?.mdExtensions ?? ['.md'];
11
+ const allExtensions = [...mdxExtensions, ...mdExtensions];
12
+ const escapedExts = allExtensions.map((ext) => ext.replace('.', '\\.'));
13
+ const filter = new RegExp(`(${escapedExts.join('|')})(\\?.*)?$`);
14
+
15
+ return {
16
+ name: 'react-mdx-loader',
17
+ setup(build) {
18
+ build.onLoad({ filter }, async (args) => {
19
+ const filePath = args.path.includes('?') ? args.path.split('?')[0] : args.path;
20
+ const source = readFileSync(filePath, 'utf-8');
21
+ const file = new VFile({ path: filePath, value: source });
22
+
23
+ const compiled = await compile(file, {
24
+ ...compilerOptions,
25
+ SourceMapGenerator,
26
+ });
27
+
28
+ const sourceMap = compiled.map
29
+ ? `\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(JSON.stringify(compiled.map)).toString('base64')}\n`
30
+ : '';
31
+
32
+ return {
33
+ contents: `${String(compiled.value)}${sourceMap}`,
34
+ loader: compilerOptions?.jsx ? 'jsx' : 'js',
35
+ resolveDir: path.dirname(args.path),
36
+ };
37
+ });
38
+ },
39
+ };
40
+ }