@reckona/mreact-next 0.0.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.
- package/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +111 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tatsuo Kaniwa
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# @reckona/mreact-next
|
|
2
|
+
|
|
3
|
+
`@reckona/mreact-next` contains experimental helpers for compiling mreact
|
|
4
|
+
components into modules that can be consumed from a Next.js application.
|
|
5
|
+
|
|
6
|
+
## Basic Usage
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import { compileMreactComponentModule } from "@reckona/mreact-next";
|
|
10
|
+
|
|
11
|
+
const module = compileMreactComponentModule({
|
|
12
|
+
filename: "components/Card.tsx",
|
|
13
|
+
source: `export default function Card() { return <article />; }`,
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Core APIs
|
|
18
|
+
|
|
19
|
+
- `compileMreactComponentModule()` compiles a single source module.
|
|
20
|
+
- `generateMreactComponents()` compiles multiple components from a directory.
|
|
21
|
+
- `formatGeneratedMreactComponents()` formats generated module metadata.
|
|
22
|
+
|
|
23
|
+
## Status
|
|
24
|
+
|
|
25
|
+
This package is integration tooling. It is not the main mreact app framework;
|
|
26
|
+
use `@reckona/mreact-router` for mreact-native routing and rendering.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { formatGeneratedMreactComponents, generateMreactComponents, } from "./index.js";
|
|
4
|
+
const rootDir = resolve(process.argv[2] ?? "app");
|
|
5
|
+
const generated = await generateMreactComponents({ rootDir });
|
|
6
|
+
console.log(formatGeneratedMreactComponents(generated, rootDir));
|
|
7
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAE9D,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface GenerateMreactComponentsOptions {
|
|
2
|
+
rootDir: string;
|
|
3
|
+
}
|
|
4
|
+
export interface GeneratedMreactComponent {
|
|
5
|
+
source: string;
|
|
6
|
+
output: string;
|
|
7
|
+
domOutput: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CompiledMreactComponentModule {
|
|
10
|
+
wrapperCode: string;
|
|
11
|
+
domCode: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function generateMreactComponents(options: GenerateMreactComponentsOptions): Promise<GeneratedMreactComponent[]>;
|
|
14
|
+
export interface CompileMreactComponentModuleOptions {
|
|
15
|
+
domImportPath: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function compileMreactComponentModule(code: string, filename: string, options: CompileMreactComponentModuleOptions): CompiledMreactComponentModule;
|
|
18
|
+
export declare function formatGeneratedMreactComponents(generated: readonly GeneratedMreactComponent[], rootDir: string): string;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAkBrC;AAED,MAAM,WAAW,mCAAmC;IAClD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mCAAmC,GAC3C,6BAA6B,CA0D/B;AA4CD,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,wBAAwB,EAAE,EAC9C,OAAO,EAAE,MAAM,GACd,MAAM,CAWR"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join, relative } from "node:path";
|
|
3
|
+
import { transform } from "@reckona/mreact-compiler";
|
|
4
|
+
export async function generateMreactComponents(options) {
|
|
5
|
+
const sources = await findMreactSources(options.rootDir);
|
|
6
|
+
const generated = [];
|
|
7
|
+
for (const source of sources) {
|
|
8
|
+
const code = await readFile(source, "utf8");
|
|
9
|
+
const output = outputPathForSource(source);
|
|
10
|
+
const domOutput = domOutputPathForSource(source);
|
|
11
|
+
const generatedCode = compileMreactComponentModule(code, source, {
|
|
12
|
+
domImportPath: importPathForGeneratedModule(output, domOutput),
|
|
13
|
+
});
|
|
14
|
+
await writeFile(output, generatedCode.wrapperCode);
|
|
15
|
+
await writeFile(domOutput, generatedCode.domCode);
|
|
16
|
+
generated.push({ source, output, domOutput });
|
|
17
|
+
}
|
|
18
|
+
return generated;
|
|
19
|
+
}
|
|
20
|
+
export function compileMreactComponentModule(code, filename, options) {
|
|
21
|
+
const compiled = transform({
|
|
22
|
+
code,
|
|
23
|
+
filename,
|
|
24
|
+
target: "client",
|
|
25
|
+
dev: true,
|
|
26
|
+
});
|
|
27
|
+
if (compiled.metadata.components.length === 0) {
|
|
28
|
+
throw new Error(`${filename} must export at least one mreact JSX component.`);
|
|
29
|
+
}
|
|
30
|
+
const components = compiled.metadata.components
|
|
31
|
+
.filter((component) => hasCompiledExport(compiled.code, component.name, component.exportName))
|
|
32
|
+
.map((component) => ({
|
|
33
|
+
name: component.name,
|
|
34
|
+
exportName: component.exportName,
|
|
35
|
+
moduleAccess: component.exportName === "default" ? "module.default" : `module.${component.name}`,
|
|
36
|
+
}));
|
|
37
|
+
if (components.length === 0) {
|
|
38
|
+
throw new Error(`${filename} must export at least one mreact JSX component.`);
|
|
39
|
+
}
|
|
40
|
+
const wrappers = components
|
|
41
|
+
.map((component) => `const ${component.name}$mounted = new WeakMap<Element, Node>();
|
|
42
|
+
const ${component.name}$mounting = new WeakSet<Element>();
|
|
43
|
+
${emitExportFunction(component.exportName, component.name)}(props: Record<string, unknown>): never {
|
|
44
|
+
return (
|
|
45
|
+
<span
|
|
46
|
+
data-mreact-component=${JSON.stringify(component.name)}
|
|
47
|
+
ref={(node: Element | null) => {
|
|
48
|
+
if (node === null || ${component.name}$mounted.has(node) || ${component.name}$mounting.has(node)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
${component.name}$mounting.add(node);
|
|
53
|
+
void import(${JSON.stringify(options.domImportPath)}).then((module) => {
|
|
54
|
+
const rendered = (${component.moduleAccess} as (props: Record<string, unknown>) => Node)(props);
|
|
55
|
+
node.replaceChildren(rendered);
|
|
56
|
+
${component.name}$mounted.set(node, rendered);
|
|
57
|
+
});
|
|
58
|
+
}}
|
|
59
|
+
/>
|
|
60
|
+
) as never;
|
|
61
|
+
}`)
|
|
62
|
+
.join("\n\n");
|
|
63
|
+
return {
|
|
64
|
+
wrapperCode: `// @ts-nocheck
|
|
65
|
+
"use client";
|
|
66
|
+
${wrappers}
|
|
67
|
+
`,
|
|
68
|
+
domCode: `// @ts-nocheck
|
|
69
|
+
${compiled.code}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function findMreactSources(rootDir) {
|
|
73
|
+
const entries = await readdir(rootDir, { withFileTypes: true });
|
|
74
|
+
const sources = [];
|
|
75
|
+
for (const entry of entries) {
|
|
76
|
+
const path = join(rootDir, entry.name);
|
|
77
|
+
if (entry.isDirectory()) {
|
|
78
|
+
sources.push(...(await findMreactSources(path)));
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (entry.isFile() && entry.name.endsWith(".mreact.tsx")) {
|
|
82
|
+
sources.push(path);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return sources.sort();
|
|
86
|
+
}
|
|
87
|
+
function outputPathForSource(source) {
|
|
88
|
+
return join(dirname(source), `${basename(source, ".mreact.tsx")}.tsx`);
|
|
89
|
+
}
|
|
90
|
+
function domOutputPathForSource(source) {
|
|
91
|
+
return join(dirname(source), `${basename(source, ".mreact.tsx")}.mreact-dom.ts`);
|
|
92
|
+
}
|
|
93
|
+
function importPathForGeneratedModule(from, to) {
|
|
94
|
+
const extensionless = relative(dirname(from), to).replace(/\.ts$/, "");
|
|
95
|
+
return extensionless.startsWith(".") ? extensionless : `./${extensionless}`;
|
|
96
|
+
}
|
|
97
|
+
function emitExportFunction(exportName, name) {
|
|
98
|
+
return exportName === "default" ? `export default function ${name}` : `export function ${name}`;
|
|
99
|
+
}
|
|
100
|
+
function hasCompiledExport(code, name, exportName) {
|
|
101
|
+
return code.includes(`${emitExportFunction(exportName, name)}(`);
|
|
102
|
+
}
|
|
103
|
+
export function formatGeneratedMreactComponents(generated, rootDir) {
|
|
104
|
+
if (generated.length === 0) {
|
|
105
|
+
return "No .mreact.tsx components found.";
|
|
106
|
+
}
|
|
107
|
+
return generated
|
|
108
|
+
.map((item) => `${relative(rootDir, item.source)} -> ${relative(rootDir, item.output)}, ${relative(rootDir, item.domOutput)}`)
|
|
109
|
+
.join("\n");
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reckona/mreact-next",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Experimental helpers for consuming compiled mreact components from Next.js.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"compiler",
|
|
7
|
+
"integration",
|
|
8
|
+
"jsx",
|
|
9
|
+
"mreact",
|
|
10
|
+
"nextjs",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/t-k/mreact/tree/main/packages/next#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/t-k/mreact/issues"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/t-k/mreact.git",
|
|
21
|
+
"directory": "packages/next"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/**/*.js",
|
|
25
|
+
"dist/**/*.js.map",
|
|
26
|
+
"dist/**/*.d.ts",
|
|
27
|
+
"dist/**/*.d.ts.map"
|
|
28
|
+
],
|
|
29
|
+
"type": "module",
|
|
30
|
+
"sideEffects": false,
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"default": "./dist/index.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@reckona/mreact-compiler": "0.0.1"
|
|
43
|
+
}
|
|
44
|
+
}
|