@ultimat3/cli 27.2.0 → 27.2.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/package.json +28 -28
- package/src/app-runtime.ts +7 -0
- package/src/runtime-hooks.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ultimat3/cli",
|
|
3
|
-
"version": "27.2.
|
|
3
|
+
"version": "27.2.2",
|
|
4
4
|
"description": "The `x` binary: new, dev, build, verify, generate, db, mcp, doctor, deploy",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -39,33 +39,33 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@babel/core": "^8.0.1",
|
|
42
|
-
"@ultimat3/action": "27.2.
|
|
43
|
-
"@ultimat3/admin": "27.2.
|
|
44
|
-
"@ultimat3/ai": "27.2.
|
|
45
|
-
"@ultimat3/auth": "27.2.
|
|
46
|
-
"@ultimat3/cache": "27.2.
|
|
47
|
-
"@ultimat3/core": "27.2.
|
|
48
|
-
"@ultimat3/db": "27.2.
|
|
49
|
-
"@ultimat3/entity": "27.2.
|
|
50
|
-
"@ultimat3/flags": "27.2.
|
|
51
|
-
"@ultimat3/http": "27.2.
|
|
52
|
-
"@ultimat3/i18n": "27.2.
|
|
53
|
-
"@ultimat3/jobs": "27.2.
|
|
54
|
-
"@ultimat3/mail": "27.2.
|
|
55
|
-
"@ultimat3/manifest": "27.2.
|
|
56
|
-
"@ultimat3/mcp": "27.2.
|
|
57
|
-
"@ultimat3/money": "27.2.
|
|
58
|
-
"@ultimat3/notify": "27.2.
|
|
59
|
-
"@ultimat3/policy": "27.2.
|
|
60
|
-
"@ultimat3/pwa": "27.2.
|
|
61
|
-
"@ultimat3/query": "27.2.
|
|
62
|
-
"@ultimat3/realtime": "27.2.
|
|
63
|
-
"@ultimat3/render": "27.2.
|
|
64
|
-
"@ultimat3/schema": "27.2.
|
|
65
|
-
"@ultimat3/seo": "27.2.
|
|
66
|
-
"@ultimat3/storage": "27.2.
|
|
67
|
-
"@ultimat3/testing": "27.2.
|
|
68
|
-
"@ultimat3/time": "27.2.
|
|
42
|
+
"@ultimat3/action": "27.2.2",
|
|
43
|
+
"@ultimat3/admin": "27.2.2",
|
|
44
|
+
"@ultimat3/ai": "27.2.2",
|
|
45
|
+
"@ultimat3/auth": "27.2.2",
|
|
46
|
+
"@ultimat3/cache": "27.2.2",
|
|
47
|
+
"@ultimat3/core": "27.2.2",
|
|
48
|
+
"@ultimat3/db": "27.2.2",
|
|
49
|
+
"@ultimat3/entity": "27.2.2",
|
|
50
|
+
"@ultimat3/flags": "27.2.2",
|
|
51
|
+
"@ultimat3/http": "27.2.2",
|
|
52
|
+
"@ultimat3/i18n": "27.2.2",
|
|
53
|
+
"@ultimat3/jobs": "27.2.2",
|
|
54
|
+
"@ultimat3/mail": "27.2.2",
|
|
55
|
+
"@ultimat3/manifest": "27.2.2",
|
|
56
|
+
"@ultimat3/mcp": "27.2.2",
|
|
57
|
+
"@ultimat3/money": "27.2.2",
|
|
58
|
+
"@ultimat3/notify": "27.2.2",
|
|
59
|
+
"@ultimat3/policy": "27.2.2",
|
|
60
|
+
"@ultimat3/pwa": "27.2.2",
|
|
61
|
+
"@ultimat3/query": "27.2.2",
|
|
62
|
+
"@ultimat3/realtime": "27.2.2",
|
|
63
|
+
"@ultimat3/render": "27.2.2",
|
|
64
|
+
"@ultimat3/schema": "27.2.2",
|
|
65
|
+
"@ultimat3/seo": "27.2.2",
|
|
66
|
+
"@ultimat3/storage": "27.2.2",
|
|
67
|
+
"@ultimat3/testing": "27.2.2",
|
|
68
|
+
"@ultimat3/time": "27.2.2",
|
|
69
69
|
"babel-preset-solid": "^1.9.15"
|
|
70
70
|
}
|
|
71
71
|
}
|
package/src/app-runtime.ts
CHANGED
|
@@ -30,6 +30,13 @@ export async function loadAppRuntime(root: string): Promise<RuntimeOverrides | u
|
|
|
30
30
|
if (!existsSync(join(root, 'apps'))) return undefined;
|
|
31
31
|
const files: string[] = [];
|
|
32
32
|
for await (const file of new Bun.Glob(APP_RUNTIME_GLOB).scan({ cwd: root })) files.push(file);
|
|
33
|
+
// The `.tsx` loader BEFORE the first app import, which this is on `runRole`'s path: a Bun plugin
|
|
34
|
+
// only transforms modules loaded after it, and nothing on `@ultimat3/cli/serve`'s static graph
|
|
35
|
+
// installs it. Without this, every component `runtime.ts` reaches compiled to
|
|
36
|
+
// `React.createElement` and stayed cached that way for the pages (27.2.x images: `React is not
|
|
37
|
+
// defined`). Dynamic, so a root with no `runtime.ts` loads nothing, and the serve entry's static
|
|
38
|
+
// graph (`serve-graph.test.ts`) is unchanged.
|
|
39
|
+
if (files.length > 0) await import('@ultimat3/render/server');
|
|
33
40
|
for (const file of files.sort()) {
|
|
34
41
|
const module = (await import(join(root, file))) as Record<string, unknown>;
|
|
35
42
|
const exported = module[APP_RUNTIME_EXPORT];
|
package/src/runtime-hooks.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { routeFor } from '@ultimat3/render';
|
|
|
15
15
|
* purpose. `can()` checks the name against the registry; this only checks the shape, so a
|
|
16
16
|
* malformed guard denies with "no policy registered" instead of throwing inside the pipeline.
|
|
17
17
|
*/
|
|
18
|
-
const isPermission = (value: string): value is KnownPermission => /^[^:]
|
|
18
|
+
const isPermission = (value: string): value is KnownPermission => /^[^:]+(?::[^:]+)+$/.test(value);
|
|
19
19
|
|
|
20
20
|
/** A page carries only the permission label, because that is all `RouteGuard` keeps. */
|
|
21
21
|
function policyFor(path: string): Policy<unknown, unknown> | undefined {
|