@nexus_js/compiler 0.7.2 → 0.7.4
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/dist/client-security-scan.d.ts +12 -0
- package/dist/client-security-scan.d.ts.map +1 -0
- package/dist/client-security-scan.js +54 -0
- package/dist/client-security-scan.js.map +1 -0
- package/dist/client-security-scan.test.d.ts +2 -0
- package/dist/client-security-scan.test.d.ts.map +1 -0
- package/dist/client-security-scan.test.js +31 -0
- package/dist/client-security-scan.test.js.map +1 -0
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +534 -37
- package/dist/codegen.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/island-codegen.test.d.ts +2 -0
- package/dist/island-codegen.test.d.ts.map +1 -0
- package/dist/island-codegen.test.js +159 -0
- package/dist/island-codegen.test.js.map +1 -0
- package/dist/island-template-warnings.d.ts +8 -0
- package/dist/island-template-warnings.d.ts.map +1 -0
- package/dist/island-template-warnings.js +35 -0
- package/dist/island-template-warnings.js.map +1 -0
- package/dist/island-wrap.d.ts.map +1 -1
- package/dist/island-wrap.js +27 -9
- package/dist/island-wrap.js.map +1 -1
- package/dist/island-wrap.test.d.ts +2 -0
- package/dist/island-wrap.test.d.ts.map +1 -0
- package/dist/island-wrap.test.js +22 -0
- package/dist/island-wrap.test.js.map +1 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +11 -2
- package/dist/parser.js.map +1 -1
- package/dist/pretext-extract.d.ts +29 -0
- package/dist/pretext-extract.d.ts.map +1 -0
- package/dist/pretext-extract.js +51 -0
- package/dist/pretext-extract.js.map +1 -0
- package/dist/pretext-extract.test.d.ts +2 -0
- package/dist/pretext-extract.test.d.ts.map +1 -0
- package/dist/pretext-extract.test.js +33 -0
- package/dist/pretext-extract.test.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splits `.nx` server frontmatter into optional `// nexus:pretext` … `// nexus:server` regions.
|
|
3
|
+
*
|
|
4
|
+
* ```
|
|
5
|
+
* ---
|
|
6
|
+
* import { db } from '$lib/db';
|
|
7
|
+
* // nexus:pretext
|
|
8
|
+
* export async function load(ctx) {
|
|
9
|
+
* return { flow: await db.flows.findFirst() };
|
|
10
|
+
* }
|
|
11
|
+
* // nexus:server
|
|
12
|
+
* defineHead({ title: '…' });
|
|
13
|
+
* ---
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export function splitPretext(frontmatter) {
|
|
17
|
+
const lines = frontmatter.split('\n');
|
|
18
|
+
const markerIdx = lines.findIndex((l) => /^\s*\/\/\s*nexus:pretext\s*$/u.test(l));
|
|
19
|
+
if (markerIdx === -1) {
|
|
20
|
+
return { leading: '', pretext: null, server: frontmatter.trim() };
|
|
21
|
+
}
|
|
22
|
+
const leading = lines.slice(0, markerIdx).join('\n').trim();
|
|
23
|
+
const afterMarker = lines.slice(markerIdx + 1).join('\n');
|
|
24
|
+
const serverMatch = afterMarker.match(/^\s*\/\/\s*nexus:server\s*$/m);
|
|
25
|
+
let pretextBody;
|
|
26
|
+
let serverBody;
|
|
27
|
+
if (!serverMatch || serverMatch.index === undefined) {
|
|
28
|
+
pretextBody = afterMarker.trim();
|
|
29
|
+
serverBody = '';
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
pretextBody = afterMarker.slice(0, serverMatch.index).trim();
|
|
33
|
+
serverBody = afterMarker.slice(serverMatch.index + serverMatch[0].length).trim();
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
leading,
|
|
37
|
+
pretext: pretextBody || null,
|
|
38
|
+
server: serverBody,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Renames `load` → `nxPretext` so the server can `import { nxPretext }` uniformly.
|
|
43
|
+
*/
|
|
44
|
+
export function transformPretextExport(pretextBody) {
|
|
45
|
+
let t = pretextBody.trim();
|
|
46
|
+
t = t.replace(/^export\s+async\s+function\s+load\s*\(/u, 'export async function nxPretext(');
|
|
47
|
+
t = t.replace(/^export\s+const\s+load\s*=\s*async\s*/u, 'export const nxPretext = async ');
|
|
48
|
+
t = t.replace(/^export\s+default\s+async\s+function\s+/u, 'export async function nxPretext ');
|
|
49
|
+
return t;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=pretext-extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretext-extract.js","sourceRoot":"","sources":["../src/pretext-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEtE,IAAI,WAAmB,CAAC;IACxB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpD,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACjC,UAAU,GAAG,EAAE,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO,EAAE,WAAW,IAAI,IAAI;QAC5B,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,yCAAyC,EAAE,kCAAkC,CAAC,CAAC;IAC7F,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wCAAwC,EAAE,iCAAiC,CAAC,CAAC;IAC3F,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,0CAA0C,EAAE,kCAAkC,CAAC,CAAC;IAC9F,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretext-extract.test.d.ts","sourceRoot":"","sources":["../src/pretext-extract.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { splitPretext, transformPretextExport } from './pretext-extract.js';
|
|
3
|
+
describe('splitPretext', () => {
|
|
4
|
+
it('returns full frontmatter as server when no marker', () => {
|
|
5
|
+
const fm = `import { x } from 'y';\nconst a = 1;`;
|
|
6
|
+
const r = splitPretext(fm);
|
|
7
|
+
expect(r.pretext).toBeNull();
|
|
8
|
+
expect(r.server).toBe(fm);
|
|
9
|
+
expect(r.leading).toBe('');
|
|
10
|
+
});
|
|
11
|
+
it('splits pretext and server regions', () => {
|
|
12
|
+
const fm = `import { db } from './db';
|
|
13
|
+
// nexus:pretext
|
|
14
|
+
export async function load(ctx) {
|
|
15
|
+
return { ok: true };
|
|
16
|
+
}
|
|
17
|
+
// nexus:server
|
|
18
|
+
defineHead({ title: 't' });`;
|
|
19
|
+
const r = splitPretext(fm);
|
|
20
|
+
expect(r.leading.trim()).toContain("import { db }");
|
|
21
|
+
expect(r.pretext).toContain('export async function load');
|
|
22
|
+
expect(r.pretext).not.toContain('defineHead');
|
|
23
|
+
expect(r.server.trim()).toContain('defineHead');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('transformPretextExport', () => {
|
|
27
|
+
it('renames load to nxPretext', () => {
|
|
28
|
+
const out = transformPretextExport('export async function load(ctx) {\n return {};\n}');
|
|
29
|
+
expect(out).toContain('export async function nxPretext(');
|
|
30
|
+
expect(out).not.toContain('function load(');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=pretext-extract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretext-extract.test.js","sourceRoot":"","sources":["../src/pretext-extract.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,GAAG,sCAAsC,CAAC;QAClD,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG;;;;;;4BAMa,CAAC;QACzB,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,sBAAsB,CAAC,oDAAoD,CAAC,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ export interface ParsedComponent {
|
|
|
13
13
|
filepath: string;
|
|
14
14
|
/** Frontmatter block (server-only, runs at request time) */
|
|
15
15
|
frontmatter: NexusBlock | null;
|
|
16
|
+
/**
|
|
17
|
+
* Optional `// nexus:pretext` … `// nexus:server` region — compiled to `export async function nxPretext(ctx)`.
|
|
18
|
+
* Executed in parallel with parent layouts before `render()`, merged onto `ctx.pretext`.
|
|
19
|
+
*/
|
|
20
|
+
pretext: string | null;
|
|
16
21
|
/** Reactive script block (client island code using Runes) */
|
|
17
22
|
script: NexusBlock | null;
|
|
18
23
|
/** HTML template block */
|
|
@@ -52,6 +57,16 @@ export interface CompileOptions {
|
|
|
52
57
|
target: 'node' | 'edge' | 'browser';
|
|
53
58
|
/** App root — used for stable /_nexus/islands/client.mjs?path=… query strings */
|
|
54
59
|
appRoot?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Route URL pattern from the manifest (e.g. `/dashboard`). When `dev` is false, the actions
|
|
62
|
+
* sidecar imports the server bundle via `./${segment}.js` matching `nexus build` output.
|
|
63
|
+
*/
|
|
64
|
+
routePattern?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Dev only: max mtime of `src/lib/**` — appended as `?t=` on emitted `$lib` imports so Node ESM
|
|
67
|
+
* reloads when shared modules change without restarting the dev server.
|
|
68
|
+
*/
|
|
69
|
+
libDepsMtime?: number;
|
|
55
70
|
}
|
|
56
71
|
export interface CompileResult {
|
|
57
72
|
/** Server-side module code (runs on every request) */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,0BAA0B;IAC1B,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,kBAAkB;IAClB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,uDAAuD;IACvD,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,aAAa,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,uDAAuD;IACvD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|