@reckona/create-mreact-app 0.0.16 → 0.0.18
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 +15 -1
- package/dist/cli-args.d.ts +11 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +75 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +16 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +36 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +359 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,6 +6,13 @@ Project scaffolder for mreact app-router applications.
|
|
|
6
6
|
npx @reckona/create-mreact-app my-app --template app-router
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
+
Upgrade an existing project in place:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx @reckona/create-mreact-app upgrade --dry-run
|
|
13
|
+
npx @reckona/create-mreact-app upgrade
|
|
14
|
+
```
|
|
15
|
+
|
|
9
16
|
Generated apps include an explicit `vite.config.ts` with the mreact router
|
|
10
17
|
plugin and a `tsconfig.json` that enables the app-router global types for route
|
|
11
18
|
files. The default route directory is `app`.
|
|
@@ -16,9 +23,12 @@ files. The default route directory is `app`.
|
|
|
16
23
|
- `app-router`
|
|
17
24
|
- `app-router-tailwind`
|
|
18
25
|
- `cloudflare`
|
|
26
|
+
- `dashboard`
|
|
19
27
|
|
|
20
28
|
The `cloudflare` template generates a Workers entrypoint that imports the route registry emitted by `mreact-router build --target=cloudflare` at `.mreact/cloudflare/route-modules.mjs`, so dynamic and non-prerendered pages do not need a bundler-specific `import.meta.glob` transform.
|
|
21
29
|
|
|
30
|
+
The `dashboard` template adds Tailwind CSS, auth guards, a reactive login form, query cache hydration, and an opt-in devtools overlay helper.
|
|
31
|
+
|
|
22
32
|
## Options
|
|
23
33
|
|
|
24
34
|
```bash
|
|
@@ -27,6 +37,10 @@ npx @reckona/create-mreact-app my-app --template app-router-tailwind --pm pnpm
|
|
|
27
37
|
|
|
28
38
|
Supported package managers are `pnpm`, `npm`, and `bun`.
|
|
29
39
|
|
|
40
|
+
## Upgrade
|
|
41
|
+
|
|
42
|
+
`create-mreact-app upgrade` reads `package.json`, updates `@reckona/mreact*` dependency ranges to the current package version, and reports registered codemods for the version range being crossed. Use `--dry-run` to inspect changes without writing `package.json`, `--from <version>` when the source version is known, and `--to <version>` to target a specific release.
|
|
43
|
+
|
|
30
44
|
Deployment scaffolds:
|
|
31
45
|
|
|
32
46
|
```bash
|
|
@@ -40,7 +54,7 @@ for API Gateway HTTP API v2 and Lambda Function URL payload format 2.0.
|
|
|
40
54
|
|
|
41
55
|
For AWS Lambda production apps, add packages imported by loaders, middleware, route handlers, metadata, server actions, or their app-local helper modules to `importPolicy.allowedPackages` in the generated `src/lambda.ts`.
|
|
42
56
|
|
|
43
|
-
Package Lambda deployments from a minimal asset directory, not the full project root. The generated `docs/deploy/aws-lambda.md` shows a `prepare-lambda-asset.sh` example that copies `.mreact/`, the bundled handler, manifests, lockfiles, and production `node_modules` into `.lambda/` so CDK/SAM/serverless assets stay below AWS's 250 MB unzipped deployment package limit. Generated Lambda projects build with `mreact-router build --target=node`, keeping Cloudflare Workers route modules out of Node-only artifacts and storing compiled server route artifacts in `.mreact/server/server-modules/*.json` instead of one large server manifest. The Lambda adapter treats `outDir` as read-only and materializes runtime files under `/tmp` by default, so `.mreact/` can stay inside the deployed package;
|
|
57
|
+
Package Lambda deployments from a minimal asset directory, not the full project root. The generated `docs/deploy/aws-lambda.md` shows a `prepare-lambda-asset.sh` example that copies `.mreact/`, the bundled handler, manifests, lockfiles, and production `node_modules` into `.lambda/` so CDK/SAM/serverless assets stay below AWS's 250 MB unzipped deployment package limit. Generated Lambda projects build with `mreact-router build --target=node`, keeping Cloudflare Workers route modules out of Node-only artifacts and storing compiled server route artifacts in `.mreact/server/server-modules/*.json` instead of one large server manifest. The Lambda adapter treats `outDir` as read-only and materializes runtime files under `/tmp` by default, so `.mreact/` can stay inside the deployed package; generated Lambda handlers use top-level `await createPreloadedAwsLambdaRequestHandler()` so built runtime modules, middleware, route modules, layouts, and route metadata are imported during Lambda initialization rather than on the first request. For pnpm projects, the generated script uses `--config.node-linker=hoisted` and includes symlink and actual-file-byte checks because pnpm's default isolated linker can create Lambda artifacts that package larger than `du` suggests.
|
|
44
58
|
|
|
45
59
|
Use `--src-dir` to generate a larger-app layout:
|
|
46
60
|
|
package/dist/cli-args.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type CreateMreactAppDeployTarget, type CreateMreactAppPackageManager, type CreateMreactAppTemplate } from "./index.js";
|
|
2
|
-
export interface
|
|
2
|
+
export interface CreateMreactAppCreateCliOptions {
|
|
3
|
+
command: "create";
|
|
3
4
|
deploy?: CreateMreactAppDeployTarget | undefined;
|
|
4
5
|
directory: string;
|
|
5
6
|
help?: boolean | undefined;
|
|
@@ -7,6 +8,15 @@ export interface CreateMreactAppCliOptions {
|
|
|
7
8
|
srcDir: boolean;
|
|
8
9
|
template: CreateMreactAppTemplate;
|
|
9
10
|
}
|
|
11
|
+
export interface CreateMreactAppUpgradeCliOptions {
|
|
12
|
+
command: "upgrade";
|
|
13
|
+
directory: string;
|
|
14
|
+
dryRun?: boolean | undefined;
|
|
15
|
+
fromVersion?: string | undefined;
|
|
16
|
+
help?: boolean | undefined;
|
|
17
|
+
targetVersion?: string | undefined;
|
|
18
|
+
}
|
|
19
|
+
export type CreateMreactAppCliOptions = CreateMreactAppCreateCliOptions | CreateMreactAppUpgradeCliOptions;
|
|
10
20
|
export declare function parseCreateMreactAppCliArgs(args: readonly string[]): CreateMreactAppCliOptions;
|
|
11
21
|
export declare function createMreactAppHelpText(): string;
|
|
12
22
|
//# sourceMappingURL=cli-args.d.ts.map
|
package/dist/cli-args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,cAAc,EAAE,6BAA6B,CAAC;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,MAAM,yBAAyB,GACjC,+BAA+B,GAC/B,gCAAgC,CAAC;AAErC,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CA+F9F;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAyBhD"}
|
package/dist/cli-args.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { createMreactAppTemplates, } from "./index.js";
|
|
2
2
|
export function parseCreateMreactAppCliArgs(args) {
|
|
3
|
+
if (args[0] === "upgrade") {
|
|
4
|
+
return parseUpgradeArgs(args.slice(1));
|
|
5
|
+
}
|
|
3
6
|
const directories = [];
|
|
4
7
|
let template = "app-router";
|
|
5
8
|
let packageManager = "pnpm";
|
|
@@ -13,6 +16,7 @@ export function parseCreateMreactAppCliArgs(args) {
|
|
|
13
16
|
}
|
|
14
17
|
if (arg === "--help" || arg === "-h") {
|
|
15
18
|
return {
|
|
19
|
+
command: "create",
|
|
16
20
|
deploy,
|
|
17
21
|
directory: directories[0] ?? "mreact-app",
|
|
18
22
|
help: true,
|
|
@@ -67,6 +71,7 @@ export function parseCreateMreactAppCliArgs(args) {
|
|
|
67
71
|
throw new Error(`Expected one target directory, received ${directories.length}.`);
|
|
68
72
|
}
|
|
69
73
|
return {
|
|
74
|
+
command: "create",
|
|
70
75
|
deploy,
|
|
71
76
|
directory: directories[0] ?? "mreact-app",
|
|
72
77
|
packageManager,
|
|
@@ -78,6 +83,7 @@ export function createMreactAppHelpText() {
|
|
|
78
83
|
return [
|
|
79
84
|
"Usage:",
|
|
80
85
|
" create-mreact-app [directory] [options]",
|
|
86
|
+
" create-mreact-app upgrade [directory] [options]",
|
|
81
87
|
"",
|
|
82
88
|
"Options:",
|
|
83
89
|
` --template <name> Template to generate: ${createMreactAppTemplates.join(", ")}. Default: app-router.`,
|
|
@@ -86,13 +92,80 @@ export function createMreactAppHelpText() {
|
|
|
86
92
|
" --src-dir Generate routes under src/app instead of app.",
|
|
87
93
|
" -h, --help Show this help message.",
|
|
88
94
|
"",
|
|
95
|
+
"Upgrade options:",
|
|
96
|
+
" --dry-run Report dependency and codemod changes without writing package.json.",
|
|
97
|
+
" --from <version> Version the project is upgrading from.",
|
|
98
|
+
" --to <version> Target mreact package version. Default: current create-mreact-app version.",
|
|
99
|
+
"",
|
|
89
100
|
"Examples:",
|
|
90
101
|
" create-mreact-app my-app",
|
|
91
102
|
" create-mreact-app my-app --template app-router-tailwind --src-dir",
|
|
92
103
|
" create-mreact-app my-app --deploy container",
|
|
93
104
|
" create-mreact-app my-app --deploy aws-lambda",
|
|
105
|
+
" create-mreact-app upgrade --dry-run",
|
|
94
106
|
].join("\n");
|
|
95
107
|
}
|
|
108
|
+
function parseUpgradeArgs(args) {
|
|
109
|
+
const directories = [];
|
|
110
|
+
let dryRun = false;
|
|
111
|
+
let fromVersion;
|
|
112
|
+
let targetVersion;
|
|
113
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
114
|
+
const arg = args[index];
|
|
115
|
+
if (arg === "--") {
|
|
116
|
+
directories.push(...args.slice(index + 1));
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
if (arg === "--help" || arg === "-h") {
|
|
120
|
+
return {
|
|
121
|
+
command: "upgrade",
|
|
122
|
+
directory: directories[0] ?? ".",
|
|
123
|
+
dryRun,
|
|
124
|
+
fromVersion,
|
|
125
|
+
help: true,
|
|
126
|
+
targetVersion,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (arg === "--dry-run") {
|
|
130
|
+
dryRun = true;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (arg === "--from") {
|
|
134
|
+
fromVersion = readOptionValue(args, index, "from version");
|
|
135
|
+
index += 1;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (arg?.startsWith("--from=")) {
|
|
139
|
+
fromVersion = arg.slice("--from=".length);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (arg === "--to") {
|
|
143
|
+
targetVersion = readOptionValue(args, index, "target version");
|
|
144
|
+
index += 1;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (arg?.startsWith("--to=")) {
|
|
148
|
+
targetVersion = arg.slice("--to=".length);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (arg?.startsWith("-")) {
|
|
152
|
+
throw new Error(`Unknown option ${arg}.`);
|
|
153
|
+
}
|
|
154
|
+
if (arg !== undefined) {
|
|
155
|
+
directories.push(arg);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (directories.length > 1) {
|
|
159
|
+
throw new Error(`Expected one target directory, received ${directories.length}.`);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
command: "upgrade",
|
|
163
|
+
directory: directories[0] ?? ".",
|
|
164
|
+
dryRun,
|
|
165
|
+
fromVersion,
|
|
166
|
+
targetVersion,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
96
169
|
function readOptionValue(args, index, name) {
|
|
97
170
|
const value = args[index + 1];
|
|
98
171
|
if (value === undefined || value.startsWith("-")) {
|
|
@@ -104,7 +177,8 @@ function parseTemplate(value) {
|
|
|
104
177
|
if (value === "basic" ||
|
|
105
178
|
value === "app-router" ||
|
|
106
179
|
value === "app-router-tailwind" ||
|
|
107
|
-
value === "cloudflare"
|
|
180
|
+
value === "cloudflare" ||
|
|
181
|
+
value === "dashboard") {
|
|
108
182
|
return value;
|
|
109
183
|
}
|
|
110
184
|
throw new Error(`Unknown template ${JSON.stringify(value)}. Available templates: ${createMreactAppTemplates.join(", ")}`);
|
package/dist/cli-args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAIzB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { createMreactAppHelpText, parseCreateMreactAppCliArgs } from "./cli-args.js";
|
|
4
|
-
import { createMreactApp } from "./index.js";
|
|
4
|
+
import { createMreactApp, upgradeMreactApp } from "./index.js";
|
|
5
5
|
try {
|
|
6
6
|
const options = parseCreateMreactAppCliArgs(process.argv.slice(2));
|
|
7
7
|
if (options.help === true) {
|
|
8
8
|
console.log(createMreactAppHelpText());
|
|
9
9
|
process.exit(0);
|
|
10
10
|
}
|
|
11
|
+
if (options.command === "upgrade") {
|
|
12
|
+
const result = await upgradeMreactApp({
|
|
13
|
+
directory: resolve(options.directory),
|
|
14
|
+
dryRun: options.dryRun,
|
|
15
|
+
fromVersion: options.fromVersion,
|
|
16
|
+
targetVersion: options.targetVersion,
|
|
17
|
+
});
|
|
18
|
+
console.log(result.changed
|
|
19
|
+
? `Updated ${result.updatedDependencies.length} mreact dependency range(s).`
|
|
20
|
+
: "No mreact dependency ranges needed updating.");
|
|
21
|
+
if (result.codemods.length > 0) {
|
|
22
|
+
console.log(`Codemods: ${result.codemods.map((codemod) => codemod.id).join(", ")}`);
|
|
23
|
+
}
|
|
24
|
+
process.exit(0);
|
|
25
|
+
}
|
|
11
26
|
const result = await createMreactApp({
|
|
12
27
|
deploy: options.deploy,
|
|
13
28
|
directory: resolve(options.directory),
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/D,IAAI,CAAC;IACH,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACrC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,OAAO;YACZ,CAAC,CAAC,WAAW,MAAM,CAAC,mBAAmB,CAAC,MAAM,8BAA8B;YAC5E,CAAC,CAAC,8CAA8C,CACnD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,OAAO,CAAC,SAAS;QACvB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,QAAQ,kBAAkB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/C,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type CreateMreactAppTemplate = "basic" | "app-router" | "app-router-tailwind" | "cloudflare";
|
|
1
|
+
export type CreateMreactAppTemplate = "basic" | "app-router" | "app-router-tailwind" | "cloudflare" | "dashboard";
|
|
2
2
|
export type CreateMreactAppPackageManager = "pnpm" | "npm" | "bun";
|
|
3
3
|
export type CreateMreactAppDeployTarget = "aws-lambda" | "container";
|
|
4
4
|
export interface CreateMreactAppOptions {
|
|
@@ -16,6 +16,40 @@ export interface CreateMreactAppResult {
|
|
|
16
16
|
packageManager: CreateMreactAppPackageManager;
|
|
17
17
|
template: CreateMreactAppTemplate;
|
|
18
18
|
}
|
|
19
|
+
export interface UpgradeMreactAppOptions {
|
|
20
|
+
directory: string;
|
|
21
|
+
dryRun?: boolean | undefined;
|
|
22
|
+
fromVersion?: string | undefined;
|
|
23
|
+
targetVersion?: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface UpgradeMreactAppDependencyUpdate {
|
|
26
|
+
field: PackageDependencyField;
|
|
27
|
+
from: string;
|
|
28
|
+
name: string;
|
|
29
|
+
to: string;
|
|
30
|
+
}
|
|
31
|
+
export interface UpgradeMreactAppCodemodResult {
|
|
32
|
+
applied: boolean;
|
|
33
|
+
description: string;
|
|
34
|
+
id: string;
|
|
35
|
+
}
|
|
36
|
+
export interface UpgradeMreactAppResult {
|
|
37
|
+
changed: boolean;
|
|
38
|
+
codemods: UpgradeMreactAppCodemodResult[];
|
|
39
|
+
packageJsonPath: string;
|
|
40
|
+
updatedDependencies: UpgradeMreactAppDependencyUpdate[];
|
|
41
|
+
}
|
|
19
42
|
export declare function createMreactApp(options: CreateMreactAppOptions): Promise<CreateMreactAppResult>;
|
|
20
|
-
export declare
|
|
43
|
+
export declare function upgradeMreactApp(options: UpgradeMreactAppOptions): Promise<UpgradeMreactAppResult>;
|
|
44
|
+
export declare const createMreactAppTemplates: readonly ["basic", "app-router", "app-router-tailwind", "cloudflare", "dashboard"];
|
|
45
|
+
export declare const createMreactAppCodemods: readonly [{
|
|
46
|
+
readonly description: "Normalize app-router import policy examples after the 0.0.16 adapter template changes.";
|
|
47
|
+
readonly id: "0.0.16-import-policy-normalize";
|
|
48
|
+
readonly version: "0.0.16";
|
|
49
|
+
}, {
|
|
50
|
+
readonly description: "Check AWS Lambda template ESM entrypoints and package-manager production install guidance.";
|
|
51
|
+
readonly id: "0.0.16-aws-lambda-esm-template";
|
|
52
|
+
readonly version: "0.0.16";
|
|
53
|
+
}];
|
|
54
|
+
export type PackageDependencyField = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies";
|
|
21
55
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,YAAY,GACZ,qBAAqB,GACrB,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AACnE,MAAM,MAAM,2BAA2B,GAAG,YAAY,GAAG,WAAW,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IAC3D,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,6BAA6B,CAAC;IAC9C,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,6BAA6B,EAAE,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,gCAAgC,EAAE,CAAC;CACzD;AA6BD,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA2BhC;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAiDjC;AAED,eAAO,MAAM,wBAAwB,oFAMkB,CAAC;AAExD,eAAO,MAAM,uBAAuB;;;;;;;;EAa1B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { mkdir, readdir, writeFile } from "node:fs/promises";
|
|
1
|
+
import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { basename, dirname, join } from "node:path";
|
|
3
3
|
const internalPackageVersions = {
|
|
4
|
-
"@reckona/mreact": "^0.0.
|
|
5
|
-
"@reckona/mreact-
|
|
6
|
-
"@reckona/mreact-
|
|
4
|
+
"@reckona/mreact-auth": "^0.0.18",
|
|
5
|
+
"@reckona/mreact-devtools": "^0.0.18",
|
|
6
|
+
"@reckona/mreact-forms": "^0.0.18",
|
|
7
|
+
"@reckona/mreact": "^0.0.18",
|
|
8
|
+
"@reckona/mreact-query": "^0.0.18",
|
|
9
|
+
"@reckona/mreact-reactive-core": "^0.0.18",
|
|
10
|
+
"@reckona/mreact-router": "^0.0.18",
|
|
7
11
|
};
|
|
12
|
+
const currentMreactVersion = internalPackageVersions["@reckona/mreact"].replace(/^\^/, "");
|
|
8
13
|
const typescriptVersion = "^6.0.3";
|
|
9
14
|
const tailwindVersion = "^4.3.0";
|
|
10
15
|
const tailwindCliVersion = "^4.3.0";
|
|
@@ -31,16 +36,79 @@ export async function createMreactApp(options) {
|
|
|
31
36
|
template,
|
|
32
37
|
};
|
|
33
38
|
}
|
|
39
|
+
export async function upgradeMreactApp(options) {
|
|
40
|
+
const packageJsonPath = join(options.directory, "package.json");
|
|
41
|
+
const source = await readFile(packageJsonPath, "utf8");
|
|
42
|
+
const packageJson = JSON.parse(source);
|
|
43
|
+
const targetVersion = options.targetVersion ?? currentMreactVersion;
|
|
44
|
+
const targetRange = `^${targetVersion}`;
|
|
45
|
+
const updatedDependencies = [];
|
|
46
|
+
for (const field of packageDependencyFields) {
|
|
47
|
+
const dependencies = packageJson[field];
|
|
48
|
+
if (!isDependencyRecord(dependencies)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
for (const [name, from] of Object.entries(dependencies)) {
|
|
52
|
+
if (!isMreactWorkspacePackage(name) || from === targetRange) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
dependencies[name] = targetRange;
|
|
56
|
+
updatedDependencies.push({
|
|
57
|
+
field,
|
|
58
|
+
from,
|
|
59
|
+
name,
|
|
60
|
+
to: targetRange,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const codemods = createMreactAppCodemods
|
|
65
|
+
.filter((codemod) => shouldRunCodemod(options.fromVersion, codemod.version, targetVersion))
|
|
66
|
+
.map((codemod) => ({
|
|
67
|
+
applied: options.dryRun !== true,
|
|
68
|
+
description: codemod.description,
|
|
69
|
+
id: codemod.id,
|
|
70
|
+
}));
|
|
71
|
+
const changed = updatedDependencies.length > 0 || codemods.length > 0;
|
|
72
|
+
if (changed && options.dryRun !== true) {
|
|
73
|
+
await writeFile(packageJsonPath, json(packageJson));
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
changed,
|
|
77
|
+
codemods,
|
|
78
|
+
packageJsonPath,
|
|
79
|
+
updatedDependencies,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
34
82
|
export const createMreactAppTemplates = [
|
|
35
83
|
"basic",
|
|
36
84
|
"app-router",
|
|
37
85
|
"app-router-tailwind",
|
|
38
86
|
"cloudflare",
|
|
87
|
+
"dashboard",
|
|
88
|
+
];
|
|
89
|
+
export const createMreactAppCodemods = [
|
|
90
|
+
{
|
|
91
|
+
description: "Normalize app-router import policy examples after the 0.0.16 adapter template changes.",
|
|
92
|
+
id: "0.0.16-import-policy-normalize",
|
|
93
|
+
version: "0.0.16",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
description: "Check AWS Lambda template ESM entrypoints and package-manager production install guidance.",
|
|
97
|
+
id: "0.0.16-aws-lambda-esm-template",
|
|
98
|
+
version: "0.0.16",
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
const packageDependencyFields = [
|
|
102
|
+
"dependencies",
|
|
103
|
+
"devDependencies",
|
|
104
|
+
"peerDependencies",
|
|
105
|
+
"optionalDependencies",
|
|
39
106
|
];
|
|
40
107
|
function templateDefinition(template, name, packageManager, srcDir, deploy) {
|
|
41
108
|
if (template === "basic" || template === "app-router") {
|
|
42
109
|
return appRouterTemplate(name, packageManager, {
|
|
43
110
|
cloudflare: false,
|
|
111
|
+
dashboard: false,
|
|
44
112
|
deploy,
|
|
45
113
|
srcDir,
|
|
46
114
|
tailwind: false,
|
|
@@ -49,6 +117,16 @@ function templateDefinition(template, name, packageManager, srcDir, deploy) {
|
|
|
49
117
|
if (template === "app-router-tailwind") {
|
|
50
118
|
return appRouterTemplate(name, packageManager, {
|
|
51
119
|
cloudflare: false,
|
|
120
|
+
dashboard: false,
|
|
121
|
+
deploy,
|
|
122
|
+
srcDir,
|
|
123
|
+
tailwind: true,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if (template === "dashboard") {
|
|
127
|
+
return appRouterTemplate(name, packageManager, {
|
|
128
|
+
cloudflare: false,
|
|
129
|
+
dashboard: true,
|
|
52
130
|
deploy,
|
|
53
131
|
srcDir,
|
|
54
132
|
tailwind: true,
|
|
@@ -56,6 +134,7 @@ function templateDefinition(template, name, packageManager, srcDir, deploy) {
|
|
|
56
134
|
}
|
|
57
135
|
return appRouterTemplate(name, packageManager, {
|
|
58
136
|
cloudflare: true,
|
|
137
|
+
dashboard: false,
|
|
59
138
|
deploy,
|
|
60
139
|
srcDir,
|
|
61
140
|
tailwind: false,
|
|
@@ -75,6 +154,14 @@ function appRouterTemplate(name, packageManager, options) {
|
|
|
75
154
|
"@reckona/mreact": internalPackageVersions["@reckona/mreact"],
|
|
76
155
|
"@reckona/mreact-reactive-core": internalPackageVersions["@reckona/mreact-reactive-core"],
|
|
77
156
|
"@reckona/mreact-router": internalPackageVersions["@reckona/mreact-router"],
|
|
157
|
+
...(options.dashboard
|
|
158
|
+
? {
|
|
159
|
+
"@reckona/mreact-auth": internalPackageVersions["@reckona/mreact-auth"],
|
|
160
|
+
"@reckona/mreact-devtools": internalPackageVersions["@reckona/mreact-devtools"],
|
|
161
|
+
"@reckona/mreact-forms": internalPackageVersions["@reckona/mreact-forms"],
|
|
162
|
+
"@reckona/mreact-query": internalPackageVersions["@reckona/mreact-query"],
|
|
163
|
+
}
|
|
164
|
+
: {}),
|
|
78
165
|
},
|
|
79
166
|
devDependencies: {
|
|
80
167
|
typescript: typescriptVersion,
|
|
@@ -129,6 +216,21 @@ function appRouterTemplate(name, packageManager, options) {
|
|
|
129
216
|
content: readmeSource(name, packageManager, options),
|
|
130
217
|
},
|
|
131
218
|
];
|
|
219
|
+
if (options.dashboard) {
|
|
220
|
+
files.push({
|
|
221
|
+
path: `${paths.routesDir}/dashboard/page.tsx`,
|
|
222
|
+
content: dashboardPageSource,
|
|
223
|
+
}, {
|
|
224
|
+
path: `${paths.routesDir}/login/page.tsx`,
|
|
225
|
+
content: dashboardLoginPageSource,
|
|
226
|
+
}, {
|
|
227
|
+
path: `${paths.routesDir}/session-store.ts`,
|
|
228
|
+
content: dashboardSessionStoreSource,
|
|
229
|
+
}, {
|
|
230
|
+
path: "src/devtools.ts",
|
|
231
|
+
content: dashboardDevtoolsSource,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
132
234
|
if (options.tailwind) {
|
|
133
235
|
files.push({
|
|
134
236
|
path: `${paths.routesDir}/globals.css`,
|
|
@@ -176,6 +278,8 @@ function appRouterTemplate(name, packageManager, options) {
|
|
|
176
278
|
function pageSourceForTemplate(options) {
|
|
177
279
|
if (options.cloudflare)
|
|
178
280
|
return cloudflarePageSource;
|
|
281
|
+
if (options.dashboard)
|
|
282
|
+
return dashboardHomePageSource;
|
|
179
283
|
if (options.srcDir)
|
|
180
284
|
return srcDirPageSource;
|
|
181
285
|
if (options.tailwind)
|
|
@@ -252,6 +356,36 @@ function sanitizePackageName(name) {
|
|
|
252
356
|
.replace(/[^a-z0-9._-]+/g, "-")
|
|
253
357
|
.replace(/^-+|-+$/g, "") || "mreact-app");
|
|
254
358
|
}
|
|
359
|
+
function isDependencyRecord(value) {
|
|
360
|
+
return (typeof value === "object" &&
|
|
361
|
+
value !== null &&
|
|
362
|
+
Object.values(value).every((entry) => typeof entry === "string"));
|
|
363
|
+
}
|
|
364
|
+
function isMreactWorkspacePackage(name) {
|
|
365
|
+
return name.startsWith("@reckona/mreact") || name === "@reckona/create-mreact-app";
|
|
366
|
+
}
|
|
367
|
+
function shouldRunCodemod(fromVersion, codemodVersion, targetVersion) {
|
|
368
|
+
if (fromVersion === undefined) {
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
return (compareVersions(fromVersion, codemodVersion) < 0 &&
|
|
372
|
+
compareVersions(codemodVersion, targetVersion) <= 0);
|
|
373
|
+
}
|
|
374
|
+
function compareVersions(left, right) {
|
|
375
|
+
const leftParts = parseVersion(left);
|
|
376
|
+
const rightParts = parseVersion(right);
|
|
377
|
+
for (let index = 0; index < 3; index += 1) {
|
|
378
|
+
const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
|
|
379
|
+
if (difference !== 0) {
|
|
380
|
+
return difference;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return 0;
|
|
384
|
+
}
|
|
385
|
+
function parseVersion(value) {
|
|
386
|
+
const [major = "0", minor = "0", patch = "0"] = value.replace(/^[^\d]*/, "").split(".");
|
|
387
|
+
return [Number(major) || 0, Number(minor) || 0, Number(patch) || 0];
|
|
388
|
+
}
|
|
255
389
|
function json(value) {
|
|
256
390
|
return `${JSON.stringify(value, null, 2)}\n`;
|
|
257
391
|
}
|
|
@@ -330,6 +464,218 @@ export default function Page() {
|
|
|
330
464
|
);
|
|
331
465
|
}
|
|
332
466
|
`;
|
|
467
|
+
const dashboardHomePageSource = `export const metadata = {
|
|
468
|
+
title: "Dashboard starter",
|
|
469
|
+
};
|
|
470
|
+
|
|
471
|
+
export default function Page() {
|
|
472
|
+
return (
|
|
473
|
+
<main class="mx-auto grid min-h-screen max-w-5xl content-center gap-6 px-6 py-12">
|
|
474
|
+
<section class="grid gap-3">
|
|
475
|
+
<p class="text-sm font-medium text-cyan-300">mreact dashboard starter</p>
|
|
476
|
+
<h1 class="text-4xl font-semibold text-white">Operations dashboard baseline</h1>
|
|
477
|
+
<p class="max-w-2xl text-slate-300">
|
|
478
|
+
Auth guards, form state, query cache hydration, Tailwind, and the devtools overlay are
|
|
479
|
+
wired into one starter.
|
|
480
|
+
</p>
|
|
481
|
+
</section>
|
|
482
|
+
<nav class="flex flex-wrap gap-3">
|
|
483
|
+
<a class="rounded-md bg-cyan-300 px-4 py-2 font-medium text-slate-950" href="/dashboard">
|
|
484
|
+
Open dashboard
|
|
485
|
+
</a>
|
|
486
|
+
<a class="rounded-md border border-slate-700 px-4 py-2 text-slate-100" href="/login">
|
|
487
|
+
Login form
|
|
488
|
+
</a>
|
|
489
|
+
</nav>
|
|
490
|
+
</main>
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
`;
|
|
494
|
+
const dashboardPageSource = `import { requireRole } from "@reckona/mreact-auth";
|
|
495
|
+
import {
|
|
496
|
+
createQuery,
|
|
497
|
+
getQueryClient,
|
|
498
|
+
type QueryClient,
|
|
499
|
+
type QueryKey,
|
|
500
|
+
} from "@reckona/mreact-query";
|
|
501
|
+
import { sessions, type DashboardSessionData } from "../session-store.js";
|
|
502
|
+
|
|
503
|
+
export const metadata = {
|
|
504
|
+
title: "Dashboard",
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
interface LoaderContext {
|
|
508
|
+
queryClient: QueryClient;
|
|
509
|
+
request: Request;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
interface DashboardMetric {
|
|
513
|
+
label: string;
|
|
514
|
+
value: string;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
interface DashboardData {
|
|
518
|
+
actor: string;
|
|
519
|
+
metrics: readonly DashboardMetric[];
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
const DASHBOARD_KEY: QueryKey = ["dashboard", "metrics"];
|
|
523
|
+
|
|
524
|
+
async function fetchDashboardMetrics(): Promise<readonly DashboardMetric[]> {
|
|
525
|
+
return [
|
|
526
|
+
{ label: "Active users", value: "1,248" },
|
|
527
|
+
{ label: "Conversion", value: "7.4%" },
|
|
528
|
+
{ label: "Queue depth", value: "18" },
|
|
529
|
+
];
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export async function loader(context: LoaderContext): Promise<DashboardData> {
|
|
533
|
+
const session = await requireRole<DashboardSessionData>(context.request, sessions, "admin");
|
|
534
|
+
const metrics = await context.queryClient.fetchQuery({
|
|
535
|
+
queryKey: DASHBOARD_KEY,
|
|
536
|
+
queryFn: fetchDashboardMetrics,
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
return {
|
|
540
|
+
actor: session.data.userId,
|
|
541
|
+
metrics,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
export default function Page(props: { data: DashboardData }) {
|
|
546
|
+
const observer = createQuery(getQueryClient(), {
|
|
547
|
+
queryKey: DASHBOARD_KEY,
|
|
548
|
+
queryFn: fetchDashboardMetrics,
|
|
549
|
+
});
|
|
550
|
+
const live = observer.result.get();
|
|
551
|
+
const metrics = live.data ?? props.data.metrics;
|
|
552
|
+
|
|
553
|
+
return (
|
|
554
|
+
<main class="mx-auto grid max-w-6xl gap-6 px-6 py-10">
|
|
555
|
+
<header class="flex flex-wrap items-end justify-between gap-4">
|
|
556
|
+
<div>
|
|
557
|
+
<p class="text-sm text-cyan-300">Signed in as {props.data.actor}</p>
|
|
558
|
+
<h1 class="text-3xl font-semibold text-white">Dashboard</h1>
|
|
559
|
+
</div>
|
|
560
|
+
<a class="rounded-md border border-slate-700 px-3 py-2 text-sm text-slate-200" href="/login">
|
|
561
|
+
Login form
|
|
562
|
+
</a>
|
|
563
|
+
</header>
|
|
564
|
+
<section class="grid gap-4 md:grid-cols-3">
|
|
565
|
+
{metrics.map((metric) => (
|
|
566
|
+
<article class="rounded-lg border border-slate-800 bg-slate-900 p-4" key={metric.label}>
|
|
567
|
+
<p class="text-sm text-slate-400">{metric.label}</p>
|
|
568
|
+
<strong class="mt-2 block text-3xl text-white">{metric.value}</strong>
|
|
569
|
+
</article>
|
|
570
|
+
))}
|
|
571
|
+
</section>
|
|
572
|
+
<section class="rounded-lg border border-slate-800 bg-slate-900">
|
|
573
|
+
<table class="w-full border-collapse text-left text-sm">
|
|
574
|
+
<thead class="text-slate-400">
|
|
575
|
+
<tr>
|
|
576
|
+
<th class="border-b border-slate-800 p-3">Segment</th>
|
|
577
|
+
<th class="border-b border-slate-800 p-3">Status</th>
|
|
578
|
+
<th class="border-b border-slate-800 p-3">Owner</th>
|
|
579
|
+
</tr>
|
|
580
|
+
</thead>
|
|
581
|
+
<tbody>
|
|
582
|
+
{["Acquisition", "Activation", "Retention"].map((segment) => (
|
|
583
|
+
<tr key={segment}>
|
|
584
|
+
<td class="border-b border-slate-800 p-3">{segment}</td>
|
|
585
|
+
<td class="border-b border-slate-800 p-3 text-emerald-300">On track</td>
|
|
586
|
+
<td class="border-b border-slate-800 p-3">Admin</td>
|
|
587
|
+
</tr>
|
|
588
|
+
))}
|
|
589
|
+
</tbody>
|
|
590
|
+
</table>
|
|
591
|
+
</section>
|
|
592
|
+
</main>
|
|
593
|
+
);
|
|
594
|
+
}
|
|
595
|
+
`;
|
|
596
|
+
const dashboardLoginPageSource = `import { createForm } from "@reckona/mreact-forms";
|
|
597
|
+
|
|
598
|
+
export const metadata = {
|
|
599
|
+
title: "Login",
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
interface LoginValues {
|
|
603
|
+
email: string;
|
|
604
|
+
password: string;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
const loginForm = createForm<LoginValues>({
|
|
608
|
+
initialValues: { email: "", password: "" },
|
|
609
|
+
validate: {
|
|
610
|
+
email: (value) => (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value) ? undefined : "Enter an email."),
|
|
611
|
+
password: (value) => (value.length >= 8 ? undefined : "Use at least 8 characters."),
|
|
612
|
+
},
|
|
613
|
+
validateOn: ["blur", "submit"],
|
|
614
|
+
});
|
|
615
|
+
|
|
616
|
+
function syncLoginTarget(target: EventTarget | null): void {
|
|
617
|
+
if (target instanceof HTMLInputElement) {
|
|
618
|
+
if (target.name === "email") void loginForm.setValue("email", target.value);
|
|
619
|
+
if (target.name === "password") void loginForm.setValue("password", target.value);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
export default function Page() {
|
|
624
|
+
const state = loginForm.state.get();
|
|
625
|
+
|
|
626
|
+
return (
|
|
627
|
+
<main class="mx-auto grid min-h-screen max-w-md content-center px-6">
|
|
628
|
+
<form
|
|
629
|
+
class="grid gap-4 rounded-lg border border-slate-800 bg-slate-900 p-6"
|
|
630
|
+
noValidate
|
|
631
|
+
onInput={(event) => syncLoginTarget(event.target)}
|
|
632
|
+
onSubmit={(event) => {
|
|
633
|
+
event.preventDefault();
|
|
634
|
+
void loginForm.validate();
|
|
635
|
+
}}
|
|
636
|
+
>
|
|
637
|
+
<h1 class="text-2xl font-semibold text-white">Login</h1>
|
|
638
|
+
<label class="grid gap-1 text-sm text-slate-300">
|
|
639
|
+
Email
|
|
640
|
+
<input class="rounded-md border border-slate-700 bg-slate-950 px-3 py-2" name="email" type="email" />
|
|
641
|
+
</label>
|
|
642
|
+
<label class="grid gap-1 text-sm text-slate-300">
|
|
643
|
+
Password
|
|
644
|
+
<input class="rounded-md border border-slate-700 bg-slate-950 px-3 py-2" name="password" type="password" />
|
|
645
|
+
</label>
|
|
646
|
+
<p class="text-sm text-rose-300">{state.errors.email?.[0] ?? state.errors.password?.[0] ?? ""}</p>
|
|
647
|
+
<button class="rounded-md bg-cyan-300 px-4 py-2 font-medium text-slate-950" type="submit">
|
|
648
|
+
Continue
|
|
649
|
+
</button>
|
|
650
|
+
</form>
|
|
651
|
+
</main>
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
`;
|
|
655
|
+
const dashboardSessionStoreSource = `import { createMemorySessionStore, type AuthSessionClaims } from "@reckona/mreact-auth";
|
|
656
|
+
|
|
657
|
+
export interface DashboardSessionData extends AuthSessionClaims {
|
|
658
|
+
roles: readonly string[];
|
|
659
|
+
userId: string;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
const globalKey = "__mreactDashboardSessions";
|
|
663
|
+
const globalStore = globalThis as typeof globalThis & {
|
|
664
|
+
[globalKey]?: ReturnType<typeof createMemorySessionStore<DashboardSessionData>>;
|
|
665
|
+
};
|
|
666
|
+
|
|
667
|
+
export const sessions =
|
|
668
|
+
globalStore[globalKey] ??= createMemorySessionStore<DashboardSessionData>();
|
|
669
|
+
`;
|
|
670
|
+
const dashboardDevtoolsSource = `export async function mountDashboardDevtools(): Promise<void> {
|
|
671
|
+
if (!import.meta.env.DEV || typeof document === "undefined") {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
const { mountDevtoolsOverlay } = await import("@reckona/mreact-devtools/overlay");
|
|
676
|
+
mountDevtoolsOverlay();
|
|
677
|
+
}
|
|
678
|
+
`;
|
|
333
679
|
const tailwindCssSource = `@import "tailwindcss";
|
|
334
680
|
`;
|
|
335
681
|
const cloudflareWorkerSource = `import {
|
|
@@ -369,9 +715,9 @@ export default {
|
|
|
369
715
|
},
|
|
370
716
|
};
|
|
371
717
|
`;
|
|
372
|
-
const awsLambdaHandlerSource = `import {
|
|
718
|
+
const awsLambdaHandlerSource = `import { createPreloadedAwsLambdaRequestHandler } from "@reckona/mreact-router/adapters/aws-lambda";
|
|
373
719
|
|
|
374
|
-
export const handler =
|
|
720
|
+
export const handler = await createPreloadedAwsLambdaRequestHandler({
|
|
375
721
|
outDir: new URL("../.mreact", import.meta.url).pathname,
|
|
376
722
|
importPolicy: {
|
|
377
723
|
// Add packages imported by loaders, middleware, route handlers, or server actions.
|
|
@@ -603,7 +949,7 @@ find .lambda -type f -printf '%s\\n' | awk '{ total += $1 } END { printf "actual
|
|
|
603
949
|
Production adapters enforce the app-router import policy when bundling loaders, middleware, route handlers, metadata, and server actions. Add every npm package imported by server-side application code to \`importPolicy.allowedPackages\` in \`src/lambda.ts\`, including packages used through app-local helper modules. Those same packages must be present in the production \`node_modules\` copied into the Lambda artifact; \`importPolicy.allowedPackages\` permits imports, but it does not vendor missing dependencies.
|
|
604
950
|
|
|
605
951
|
\`\`\`ts
|
|
606
|
-
export const handler =
|
|
952
|
+
export const handler = await createPreloadedAwsLambdaRequestHandler({
|
|
607
953
|
outDir: new URL("../.mreact", import.meta.url).pathname,
|
|
608
954
|
importPolicy: {
|
|
609
955
|
allowedPackages: [
|
|
@@ -616,6 +962,8 @@ export const handler = createAwsLambdaRequestHandler({
|
|
|
616
962
|
});
|
|
617
963
|
\`\`\`
|
|
618
964
|
|
|
965
|
+
The generated handler uses top-level \`await\` with \`createPreloadedAwsLambdaRequestHandler()\` so the built runtime, middleware, route modules, layouts, and metadata are imported during the Lambda initialization phase instead of racing the first user request.
|
|
966
|
+
|
|
619
967
|
## Streaming SSR
|
|
620
968
|
|
|
621
969
|
API Gateway and Lambda Function URL proxy responses are buffered. mreact still
|
|
@@ -671,6 +1019,9 @@ function readmeSource(name, packageManager, options) {
|
|
|
671
1019
|
: options.deploy === "aws-lambda"
|
|
672
1020
|
? "\nAWS Lambda deploy files are included. See `docs/deploy/aws-lambda.md`.\n"
|
|
673
1021
|
: "";
|
|
1022
|
+
const dashboardNote = options.dashboard
|
|
1023
|
+
? "\nThis is the dashboard starter. It includes auth guards, form state, query cache hydration, Tailwind styling, and an opt-in devtools overlay helper in `src/devtools.ts`.\n"
|
|
1024
|
+
: "";
|
|
674
1025
|
const pnpmTroubleshooting = packageManager === "pnpm"
|
|
675
1026
|
? `
|
|
676
1027
|
## Troubleshooting
|
|
@@ -689,6 +1040,6 @@ mreact app-router project generated by \`@reckona/create-mreact-app\`.
|
|
|
689
1040
|
- \`${run} dev\`
|
|
690
1041
|
- \`${run} build\`
|
|
691
1042
|
- \`${run} start\`
|
|
692
|
-
${tailwindNote}${cloudflareNote}${deployNote}${pnpmTroubleshooting}`;
|
|
1043
|
+
${tailwindNote}${cloudflareNote}${deployNote}${dashboardNote}${pnpmTroubleshooting}`;
|
|
693
1044
|
}
|
|
694
1045
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiCpD,MAAM,uBAAuB,GAAG;IAC9B,iBAAiB,EAAE,SAAS;IAC5B,+BAA+B,EAAE,SAAS;IAC1C,wBAAwB,EAAE,SAAS;CACM,CAAC;AAC5C,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AACrC,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC;IAClD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG,kBAAkB,CACnC,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,OAAO,CAAC,MAAM,KAAK,IAAI,EACvB,OAAO,CAAC,MAAM,CACf,CAAC;IAEF,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,KAAK;QACL,cAAc;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO;IACP,YAAY;IACZ,qBAAqB;IACrB,YAAY;CACyC,CAAC;AAExD,SAAS,kBAAkB,CACzB,QAAiC,EACjC,IAAY,EACZ,cAA6C,EAC7C,MAAe,EACf,MAA+C;IAE/C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;YAC7C,UAAU,EAAE,KAAK;YACjB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;YAC7C,UAAU,EAAE,KAAK;YACjB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;QAC7C,UAAU,EAAE,IAAI;QAChB,MAAM;QACN,MAAM;QACN,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAY,EACZ,cAA6C,EAC7C,OAKC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAmB;QAC5B;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI,CAAC;gBACZ,IAAI;gBACJ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC;gBAChD,YAAY,EAAE;oBACZ,iBAAiB,EAAE,uBAAuB,CAAC,iBAAiB,CAAC;oBAC7D,+BAA+B,EAAE,uBAAuB,CAAC,+BAA+B,CAAC;oBACzF,wBAAwB,EAAE,uBAAuB,CAAC,wBAAwB,CAAC;iBAC5E;gBACD,eAAe,EAAE;oBACf,UAAU,EAAE,iBAAiB;oBAC7B,IAAI,EAAE,WAAW;oBACjB,GAAG,CAAC,OAAO,CAAC,QAAQ;wBAClB,CAAC,CAAC;4BACE,kBAAkB,EAAE,kBAAkB;4BACtC,YAAY,EAAE,mBAAmB;4BACjC,WAAW,EAAE,eAAe;yBAC7B;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;aACF,CAAC;SACH;QACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,IAAI,CAAC;gBACZ,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACtB,MAAM,EAAE,UAAU;oBAClB,gBAAgB,EAAE,UAAU;oBAC5B,MAAM,EAAE,IAAI;oBACZ,GAAG,EAAE,WAAW;oBAChB,eAAe,EAAE,iBAAiB;oBAClC,KAAK,EAAE,CAAC,2CAA2C,CAAC;oBACpD,YAAY,EAAE,IAAI;iBACnB;gBACD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC;aACvF,CAAC;SACH;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;SACjC;QACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,aAAa;YACrC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY;SAChE;QACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,WAAW;YACnC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACxC;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC;SACrD;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,cAAc;YACtC,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,sBAAsB;SAChC,EACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;SAC9B,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC;SAC1C,EACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,kBAAkB;SAC5B,EACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,2BAA2B,CAAC,cAAc,CAAC;SACrD,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,sBAAsB;SAChC,EACD;YACE,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,2BAA2B,CAAC,cAAc,CAAC;SACrD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAI9B;IACC,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,oBAAoB,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,gBAAgB,CAAC;IAC5C,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,kBAAkB,CAAC;IAEhD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,MAAM;QACX,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;QAC5C,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA+C;IACvE,OAAO;;;;;;;oBAOW,KAAK,CAAC,SAAS;;6BAEN,KAAK,CAAC,SAAS;;;;CAI3C,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CACrB,cAA6C,EAC7C,OAKC;IAED,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAA2B;QACtC,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,mCAAmC;QAC1C,KAAK,EAAE,6BAA6B;KACrC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,aAAa,CAAC,GAAG,qEAAqE,CAAC;QAC/F,OAAO,CAAC,SAAS,CAAC;YAChB,oBAAoB,KAAK,CAAC,SAAS,6CAA6C,CAAC;QACnF,OAAO,CAAC,WAAW,CAAC;YAClB,oBAAoB,KAAK,CAAC,SAAS,8CAA8C,CAAC;QACpF,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,iCAAiC,GAAG,cAAc,GAAG,cAAc,CAAC;QACxF,OAAO,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC;QAC5C,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,mBAAmB,GAAG,iDAAiD,CAAC;IAChG,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC;QAC7B,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,yCAAyC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,cAAc,CAAC;YACrB,2HAA2H,CAAC;IAChI,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,SAAiB;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAkB;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,CACL,IAAI;SACD,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,YAAY,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAapB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;CAc5B,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;CAOlB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;CASxB,CAAC;AAEF,MAAM,aAAa,GAAG;CACrB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;CAS5B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;CAe1B,CAAC;AAEF,MAAM,iBAAiB,GAAG;CACzB,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;CAa9B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,WAAW,IAAI;;;;;;;CAOvB,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,cAA6C;IACrE,MAAM,cAAc,GAClB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,aAAa,CAAC;IACtB,MAAM,YAAY,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,YAAY,CAAC;IAChG,MAAM,YAAY,GAChB,cAAc,KAAK,KAAK;QACtB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,uBAAuB,CAAC;IAChC,MAAM,oBAAoB,GACxB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,EAAE,CAAC;IAEX,OAAO;;EAEP,oBAAoB;MAChB,cAAc;;;;EAIlB,oBAAoB;MAChB,YAAY;;;;;;EAMhB,oBAAoB;;;;EAIpB,YAAY;CACb,CAAC;AACF,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;;;;CAW1B,CAAC;AAEF,SAAS,2BAA2B,CAAC,cAA6C;IAChF,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAE3E,OAAO;;;;;;;;;EASP,GAAG;;;;;;6CAMwC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC/C,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B,CAAC,cAA6C;IAChF,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,WAAW,GACf,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,mGAAmG;QACrG,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,0CAA0C,CAAC;IACnD,MAAM,SAAS,GACb,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,UAAU,CAAC;IAEnB,OAAO;;;;;;;;EAQP,GAAG;EACH,GAAG;;;;;;;;;;EAUH,GAAG;;;;;;;;;;;;;;;;;;;;;;yMAsBoM,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsB1M,GAAG;EACH,GAAG;;;;;cAKS,SAAS;;;;;;EAMrB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEZ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,cAA6C,EAC7C,OAIC;IAED,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ;QACnC,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU;QACvC,CAAC,CAAC,wGAAwG;QAC1G,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GACd,OAAO,CAAC,MAAM,KAAK,WAAW;QAC5B,CAAC,CAAC,0EAA0E;QAC5E,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY;YAC/B,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,mBAAmB,GACvB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC;;;;;;CAMP;QACK,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,KAAK,IAAI;;;;;;MAMZ,GAAG;MACH,GAAG;MACH,GAAG;EACP,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,mBAAmB,EAAE,CAAC;AACrE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiEpD,MAAM,uBAAuB,GAAG;IAC9B,sBAAsB,EAAE,SAAS;IACjC,0BAA0B,EAAE,SAAS;IACrC,uBAAuB,EAAE,SAAS;IAClC,iBAAiB,EAAE,SAAS;IAC5B,uBAAuB,EAAE,SAAS;IAClC,+BAA+B,EAAE,SAAS;IAC1C,wBAAwB,EAAE,SAAS;CACM,CAAC;AAC5C,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3F,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AACrC,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC;IAClD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG,kBAAkB,CACnC,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,OAAO,CAAC,MAAM,KAAK,IAAI,EACvB,OAAO,CAAC,MAAM,CACf,CAAC;IAEF,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,KAAK;QACL,cAAc;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;IAClE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,oBAAoB,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;IACxC,MAAM,mBAAmB,GAAuC,EAAE,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5D,SAAS;YACX,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;YACjC,mBAAmB,CAAC,IAAI,CAAC;gBACvB,KAAK;gBACL,IAAI;gBACJ,IAAI;gBACJ,EAAE,EAAE,WAAW;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB;SACrC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,EAAE,EAAE,OAAO,CAAC,EAAE;KACf,CAAC,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ;QACR,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO;IACP,YAAY;IACZ,qBAAqB;IACrB,YAAY;IACZ,WAAW;CAC0C,CAAC;AAExD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,WAAW,EACT,wFAAwF;QAC1F,EAAE,EAAE,gCAAgC;QACpC,OAAO,EAAE,QAAQ;KAClB;IACD;QACE,WAAW,EACT,4FAA4F;QAC9F,EAAE,EAAE,gCAAgC;QACpC,OAAO,EAAE,QAAQ;KAClB;CACO,CAAC;AAQX,MAAM,uBAAuB,GAAG;IAC9B,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,sBAAsB;CAC8B,CAAC;AAEvD,SAAS,kBAAkB,CACzB,QAAiC,EACjC,IAAY,EACZ,cAA6C,EAC7C,MAAe,EACf,MAA+C;IAE/C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;YAC7C,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;YAC7C,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;YAC7C,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,IAAI;YACf,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE;QAC7C,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,MAAM;QACN,MAAM;QACN,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAY,EACZ,cAA6C,EAC7C,OAMC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAmB;QAC5B;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI,CAAC;gBACZ,IAAI;gBACJ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC;gBAChD,YAAY,EAAE;oBACZ,iBAAiB,EAAE,uBAAuB,CAAC,iBAAiB,CAAC;oBAC7D,+BAA+B,EAAE,uBAAuB,CAAC,+BAA+B,CAAC;oBACzF,wBAAwB,EAAE,uBAAuB,CAAC,wBAAwB,CAAC;oBAC3E,GAAG,CAAC,OAAO,CAAC,SAAS;wBACnB,CAAC,CAAC;4BACE,sBAAsB,EAAE,uBAAuB,CAAC,sBAAsB,CAAC;4BACvE,0BAA0B,EAAE,uBAAuB,CAAC,0BAA0B,CAAC;4BAC/E,uBAAuB,EAAE,uBAAuB,CAAC,uBAAuB,CAAC;4BACzE,uBAAuB,EAAE,uBAAuB,CAAC,uBAAuB,CAAC;yBAC1E;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,eAAe,EAAE;oBACf,UAAU,EAAE,iBAAiB;oBAC7B,IAAI,EAAE,WAAW;oBACjB,GAAG,CAAC,OAAO,CAAC,QAAQ;wBAClB,CAAC,CAAC;4BACE,kBAAkB,EAAE,kBAAkB;4BACtC,YAAY,EAAE,mBAAmB;4BACjC,WAAW,EAAE,eAAe;yBAC7B;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;aACF,CAAC;SACH;QACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,IAAI,CAAC;gBACZ,eAAe,EAAE;oBACf,MAAM,EAAE,QAAQ;oBAChB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACtB,MAAM,EAAE,UAAU;oBAClB,gBAAgB,EAAE,UAAU;oBAC5B,MAAM,EAAE,IAAI;oBACZ,GAAG,EAAE,WAAW;oBAChB,eAAe,EAAE,iBAAiB;oBAClC,KAAK,EAAE,CAAC,2CAA2C,CAAC;oBACpD,YAAY,EAAE,IAAI;iBACnB;gBACD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC;aACvF,CAAC;SACH;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;SACjC;QACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,aAAa;YACrC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY;SAChE;QACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,WAAW;YACnC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACxC;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC;SACrD;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,qBAAqB;YAC7C,OAAO,EAAE,mBAAmB;SAC7B,EACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,iBAAiB;YACzC,OAAO,EAAE,wBAAwB;SAClC,EACD;YACE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,mBAAmB;YAC3C,OAAO,EAAE,2BAA2B;SACrC,EACD;YACE,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,uBAAuB;SACjC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,cAAc;YACtC,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,sBAAsB;SAChC,EACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;SAC9B,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC;SAC1C,EACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,kBAAkB;SAC5B,EACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,2BAA2B,CAAC,cAAc,CAAC;SACrD,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,sBAAsB;SAChC,EACD;YACE,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,2BAA2B,CAAC,cAAc,CAAC;SACrD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAK9B;IACC,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,oBAAoB,CAAC;IACpD,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,uBAAuB,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,gBAAgB,CAAC;IAC5C,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,kBAAkB,CAAC;IAEhD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,MAAM;QACX,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;QAC5C,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA+C;IACvE,OAAO;;;;;;;oBAOW,KAAK,CAAC,SAAS;;6BAEN,KAAK,CAAC,SAAS;;;;CAI3C,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CACrB,cAA6C,EAC7C,OAKC;IAED,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAA2B;QACtC,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,mCAAmC;QAC1C,KAAK,EAAE,6BAA6B;KACrC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,aAAa,CAAC,GAAG,qEAAqE,CAAC;QAC/F,OAAO,CAAC,SAAS,CAAC;YAChB,oBAAoB,KAAK,CAAC,SAAS,6CAA6C,CAAC;QACnF,OAAO,CAAC,WAAW,CAAC;YAClB,oBAAoB,KAAK,CAAC,SAAS,8CAA8C,CAAC;QACpF,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,iCAAiC,GAAG,cAAc,GAAG,cAAc,CAAC;QACxF,OAAO,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC;QAC5C,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,mBAAmB,GAAG,iDAAiD,CAAC;IAChG,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC;QAC7B,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,yCAAyC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,cAAc,CAAC;YACrB,2HAA2H,CAAC;IAChI,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,SAAiB;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAkB;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,CACL,IAAI;SACD,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,YAAY,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,4BAA4B,CAAC;AACrF,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA+B,EAC/B,cAAsB,EACtB,aAAqB;IAErB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;QAChD,eAAe,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAapB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;CAc5B,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;CAOlB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;CASxB,CAAC;AAEF,MAAM,aAAa,GAAG;CACrB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;CAS5B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;CAe1B,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqG3B,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DhC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;CAcnC,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;;;;;CAQ/B,CAAC;AAEF,MAAM,iBAAiB,GAAG;CACzB,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC9B,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;CAa9B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,WAAW,IAAI;;;;;;;CAOvB,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,cAA6C;IACrE,MAAM,cAAc,GAClB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,aAAa,CAAC;IACtB,MAAM,YAAY,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,YAAY,CAAC;IAChG,MAAM,YAAY,GAChB,cAAc,KAAK,KAAK;QACtB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,uBAAuB,CAAC;IAChC,MAAM,oBAAoB,GACxB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,EAAE,CAAC;IAEX,OAAO;;EAEP,oBAAoB;MAChB,cAAc;;;;EAIlB,oBAAoB;MAChB,YAAY;;;;;;EAMhB,oBAAoB;;;;EAIpB,YAAY;CACb,CAAC;AACF,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;;;;CAW1B,CAAC;AAEF,SAAS,2BAA2B,CAAC,cAA6C;IAChF,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAE3E,OAAO;;;;;;;;;EASP,GAAG;;;;;;6CAMwC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC/C,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B,CAAC,cAA6C;IAChF,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,WAAW,GACf,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,mGAAmG;QACrG,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,0CAA0C,CAAC;IACnD,MAAM,SAAS,GACb,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,cAAc,KAAK,KAAK;YACxB,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,UAAU,CAAC;IAEnB,OAAO;;;;;;;;EAQP,GAAG;EACH,GAAG;;;;;;;;;;EAUH,GAAG;;;;;;;;;;;;;;;;;;;;;;yMAsBoM,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsB1M,GAAG;EACH,GAAG;;;;;cAKS,SAAS;;;;;;EAMrB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2EZ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,cAA6C,EAC7C,OAKC;IAED,MAAM,GAAG,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ;QACnC,CAAC,CAAC,yDAAyD;QAC3D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU;QACvC,CAAC,CAAC,wGAAwG;QAC1G,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GACd,OAAO,CAAC,MAAM,KAAK,WAAW;QAC5B,CAAC,CAAC,0EAA0E;QAC5E,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY;YAC/B,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS;QACrC,CAAC,CAAC,8KAA8K;QAChL,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,mBAAmB,GACvB,cAAc,KAAK,MAAM;QACvB,CAAC,CAAC;;;;;;CAMP;QACK,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,KAAK,IAAI;;;;;;MAMZ,GAAG;MACH,GAAG;MACH,GAAG;EACP,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,mBAAmB,EAAE,CAAC;AACrF,CAAC"}
|