@nexus_js/compiler
Advanced tools
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EAKd,MAAM,YAAY,CAAC;AAwJpB,kEAAkE;AAClE,wBAAgB,QAAQ,CACtB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,GACnB,aAAa,CAkEf"} | ||
| {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EAKd,MAAM,YAAY,CAAC;AA+FpB,kEAAkE;AAClE,wBAAgB,QAAQ,CACtB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,GACnB,aAAa,CAiEf"} |
+56
-193
@@ -1,3 +0,1 @@ | ||
| import { CompileError } from './types.js'; | ||
| import { offsetToLineColumn } from './parser.js'; | ||
| import { existsSync } from 'node:fs'; | ||
@@ -17,5 +15,3 @@ import { basename, join, normalize, relative } from 'node:path'; | ||
| } | ||
| /** Extension preference for dev (source-first) and prod (compiled-first). */ | ||
| const LIB_IMPORT_EXT_DEV = ['.ts', '.tsx', '.mts', '.js', '.mjs', '.cjs']; | ||
| const LIB_IMPORT_EXT_PROD = ['.js', '.mjs', '.cjs', '.ts', '.tsx', '.mts']; | ||
| const LIB_IMPORT_EXT_ORDER = ['.ts', '.tsx', '.mts', '.js', '.mjs', '.cjs']; | ||
| function escapeRegExp(s) { | ||
@@ -51,40 +47,15 @@ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | ||
| const seg = p === '/' ? 'index' : p.replace(/^\//u, ''); | ||
| const full = seg || basename(filepath).replace(/\.nx$/u, ''); | ||
| // The sidecar is ADJACENT to the server module, so use only the last path segment. | ||
| // e.g. pattern "/auth/login" → server: ".nexus/output/auth/login.js" | ||
| // → sidecar: ".nexus/output/auth/login.actions.js" | ||
| // → import: "./login.js" (not "./auth/login.js") | ||
| return `${basename(full)}.js`; | ||
| const base = seg || basename(filepath).replace(/\.nx$/u, ''); | ||
| return `${base}.js`; | ||
| } | ||
| /** | ||
| * Resolve `$lib/…` to an on-disk path so Node ESM can load it. | ||
| * | ||
| * Production (`!dev`): checks `.nexus/lib/` (compiled JS output) first so Node | ||
| * never tries to execute raw `.ts` source files. Falls back to `src/lib/` with | ||
| * JS-first extension order for apps that ship pre-compiled lib files. | ||
| * | ||
| * Dev: prefers the TypeScript source (works with tsx / Node --experimental-strip-types). | ||
| */ | ||
| function resolveDollarLibFilePath(appRoot, rel, dev) { | ||
| /** Resolve `$lib/…` to an on-disk path so Node ESM can load it (extension required). */ | ||
| function resolveDollarLibFilePath(appRoot, rel) { | ||
| const root = normalize(appRoot); | ||
| const hasKnownExt = /\.(ts|tsx|mts|js|mjs|cjs)$/u.test(rel); | ||
| // Production: prefer the pre-compiled .nexus/lib/ output emitted by `nexus build`. | ||
| if (!dev) { | ||
| const nexusLibBase = join(root, '.nexus', 'lib', rel); | ||
| // Check with .ts → .js substitution first. | ||
| const nexusLibJs = hasKnownExt | ||
| ? nexusLibBase.replace(/\.(ts|tsx|mts)$/u, '.js') | ||
| : nexusLibBase + '.js'; | ||
| if (existsSync(nexusLibJs)) | ||
| return nexusLibJs; | ||
| if (existsSync(nexusLibBase)) | ||
| return nexusLibBase; | ||
| } | ||
| const abs = join(root, 'src/lib', rel); | ||
| if (existsSync(abs)) | ||
| return abs; | ||
| const hasKnownExt = /\.(ts|tsx|mts|js|mjs|cjs)$/u.test(rel); | ||
| if (hasKnownExt) | ||
| return abs; | ||
| const order = dev ? LIB_IMPORT_EXT_DEV : LIB_IMPORT_EXT_PROD; | ||
| for (const ext of order) { | ||
| for (const ext of LIB_IMPORT_EXT_ORDER) { | ||
| const candidate = abs + ext; | ||
@@ -94,31 +65,4 @@ if (existsSync(candidate)) | ||
| } | ||
| // Fallback: .ts in dev (needs tsx), .js in prod (will warn at runtime if missing). | ||
| return abs + (dev ? '.ts' : '.js'); | ||
| return abs + '.ts'; | ||
| } | ||
| /** | ||
| * Resolve `$lib/…` in client island scripts to `/_nexus/lib/…` browser URLs. | ||
| * | ||
| * When `libManifest` is provided (production build with content-hashed bundles), | ||
| * the canonical rel is looked up in the manifest and the hashed filename is used | ||
| * directly — e.g. `$lib/utils/date.ts` → `/_nexus/lib/utils/date.a1b2c3d4.js`. | ||
| * Without a manifest the original specifier is preserved as-is. | ||
| */ | ||
| function rewriteDollarLibImportsForClient(code, libManifest) { | ||
| if (!code.includes('$lib/')) | ||
| return code; | ||
| const toUrl = (rel) => { | ||
| if (libManifest) { | ||
| const jsRel = rel.replace(/\.(ts|tsx|mts)$/u, '.js'); | ||
| const hashed = libManifest.get(jsRel) ?? libManifest.get(`${rel}.js`) ?? libManifest.get(rel); | ||
| if (hashed) | ||
| return `/_nexus/lib/${hashed}`; | ||
| } | ||
| return `/_nexus/lib/${rel}`; | ||
| }; | ||
| let out = code; | ||
| out = out.replace(/\bfrom\s*(['"])\$lib\/([^'"\n]+)\1/gu, (_m, q, rel) => `from ${q}${toUrl(rel)}${q}`); | ||
| out = out.replace(/\bimport\s*(['"])\$lib\/([^'"\n]+)\1/gu, (_m, q, rel) => `import ${q}${toUrl(rel)}${q}`); | ||
| out = out.replace(/\bimport\s*\(\s*(['"])\$lib\/([^'"\n]+)\1\s*\)/gu, (_m, q, rel) => `import(${q}${toUrl(rel)}${q})`); | ||
| return out; | ||
| } | ||
| /** Resolve `$lib/…` in server frontmatter to absolute file URLs for Node ESM. */ | ||
@@ -137,3 +81,3 @@ function rewriteDollarLibImports(code, opts) { | ||
| return code.replace(/from\s*['"]\$lib\/([^'"]+)['"]/gu, (_, rel) => { | ||
| const abs = resolveDollarLibFilePath(root, rel, !!opts.dev); | ||
| const abs = resolveDollarLibFilePath(root, rel); | ||
| const href = pathToFileURL(abs).href + libBust; | ||
@@ -167,4 +111,3 @@ return `from ${JSON.stringify(href)}`; | ||
| (parsed.script?.content ?? '').includes('$state'); | ||
| const clientCodeRaw = needsClientIsland ? generateClientIsland(parsed, opts, islandWrap) : null; | ||
| const clientCode = clientCodeRaw ? rewriteDollarLibImportsForClient(clientCodeRaw) : null; | ||
| const clientCode = needsClientIsland ? generateClientIsland(parsed, opts, islandWrap) : null; | ||
| // ── Island manifest ──────────────────────────────────────────────────────── | ||
@@ -221,19 +164,2 @@ const islandManifest = opts.emitIslandManifest && parsed.islandDirectives.length > 0 | ||
| } | ||
| // ── "use server" action exports ──────────────────────────────────────────── | ||
| // Export each inline action as a named function so the sidecar can import it. | ||
| // This keeps the $lib imports in scope (they live in the same module) and | ||
| // avoids duplicating imports or inlining bodies into the sidecar. | ||
| const inlineActions = parsed.serverActions.filter((a) => !a.createActionSource); | ||
| for (const action of inlineActions) { | ||
| lines.push(`// ── Server Action export: ${action.name} ──`); | ||
| lines.push(`export async function __nexus_action_${action.name}(${action.params.join(', ')}) {`); | ||
| for (const line of action.body.split('\n')) { | ||
| const t = line.trim(); | ||
| if (!t) | ||
| continue; | ||
| lines.push(` ${t}`); | ||
| } | ||
| lines.push('}'); | ||
| lines.push(''); | ||
| } | ||
| // Runes from the client script — SSR must define matching locals whenever the template interpolates them. | ||
@@ -266,3 +192,3 @@ const runes = extractRuneDeclarations(parsed.script?.content ?? ''); | ||
| const actionNamesForSsr = new Set(parsed.serverActions.map((a) => a.name)); | ||
| lines.push(' return ' + '`' + templateToSSR(processedTemplate, parsed.filepath, actionNamesForSsr) + '`;'); | ||
| lines.push(' return ' + '`' + templateToSSR(processedTemplate, actionNamesForSsr) + '`;'); | ||
| lines.push('}'); | ||
@@ -291,3 +217,3 @@ return lines.join('\n'); | ||
| for (const frag of fragments) { | ||
| const { processed, exprLines } = processTemplateForClientIsland(frag, bindingNames, actionNamesForClient, parsed.filepath); | ||
| const { processed, exprLines } = processTemplateForClientIsland(frag, bindingNames, actionNamesForClient); | ||
| processedFragments.push(processed); | ||
@@ -317,3 +243,3 @@ exprFnBlocks.push(exprLines); | ||
| lines.push('// ── Reactive State (Runes) ──'); | ||
| lines.push(rewriteDollarLibImportsForClient(transformRunesForClientRuntime(scriptSrc), _opts.libManifest)); | ||
| lines.push(transformRunesForClientRuntime(scriptSrc)); | ||
| lines.push(''); | ||
@@ -354,16 +280,4 @@ } | ||
| // ───────────────────────────────────────────────────────────────────────────── | ||
| // Server Actions module: imports handlers from server module + registers them | ||
| // Server Actions module: type-safe RPC stubs | ||
| // ───────────────────────────────────────────────────────────────────────────── | ||
| /** | ||
| * Generates the sidecar `*.actions.{mjs,js}` file. | ||
| * | ||
| * All action implementations are imported from the co-located server module | ||
| * (which has the $lib imports in scope): | ||
| * - `createAction` bindings → imported by their original name | ||
| * - `"use server"` functions → imported as `__nexus_action_<name>` (exported | ||
| * by the server module via `generateServerModule`) | ||
| * | ||
| * This design means the sidecar never needs its own $lib imports — the server | ||
| * module already has everything in scope, and the handler runs there. | ||
| */ | ||
| function generateActionsModule(actions, filepath, opts) { | ||
@@ -376,17 +290,23 @@ const lines = []; | ||
| lines.push(''); | ||
| // Build the import specifier list: createAction → original name, "use server" → __nexus_action_* | ||
| const importSpecifiers = []; | ||
| for (const action of actions) { | ||
| importSpecifiers.push(action.createActionSource ? action.name : `__nexus_action_${action.name}`); | ||
| const createActionImports = actions.filter((a) => a.createActionSource); | ||
| if (createActionImports.length > 0) { | ||
| const names = createActionImports.map((a) => a.name).join(', '); | ||
| const serverFile = actionsServerImportFilename(opts, filepath); | ||
| lines.push(`import { ${names} } from ${JSON.stringify('./' + serverFile)};`); | ||
| lines.push(''); | ||
| } | ||
| const serverFile = actionsServerImportFilename(opts, filepath); | ||
| lines.push(`import { ${importSpecifiers.join(', ')} } from ${JSON.stringify('./' + serverFile)};`); | ||
| lines.push(''); | ||
| for (const action of actions) { | ||
| lines.push(`/** @nexus-action "${action.name}" */`); | ||
| if (action.createActionSource) { | ||
| lines.push(`registerAction(${JSON.stringify(action.name)}, ${action.name});`); | ||
| lines.push(`registerAction(${JSON.stringify(action.name)}, ${action.name}, { csrf: false });`); | ||
| } | ||
| else { | ||
| lines.push(`registerAction(${JSON.stringify(action.name)}, __nexus_action_${action.name});`); | ||
| lines.push(`registerAction(${JSON.stringify(action.name)}, async (${action.params.join(', ')}) => {`); | ||
| for (const line of action.body.split('\n')) { | ||
| const t = line.trim(); | ||
| if (!t) | ||
| continue; | ||
| lines.push(` ${t}`); | ||
| } | ||
| lines.push(`}, { csrf: false });`); | ||
| } | ||
@@ -467,6 +387,6 @@ lines.push(''); | ||
| /** Strip client event handlers and replace `{expr}` with `__NX_i__` + parallel expr functions. */ | ||
| function processTemplateForClientIsland(html, bindingNames, actionNames, filepath) { | ||
| function processTemplateForClientIsland(html, bindingNames, actionNames) { | ||
| const cleaned = html.replace(/\s+on[a-zA-Z][a-zA-Z0-9-]*\s*=\s*\{[^}]+\}/g, ''); | ||
| const withActions = rewriteServerActionHtmlActionAttr(cleaned, actionNames); | ||
| const controlFlowExpanded = expandEachBlocks(expandIfBlocks(withActions, filepath ?? ''), filepath ?? ''); | ||
| const controlFlowExpanded = expandEachBlocks(expandIfBlocks(withActions)); | ||
| const exprLines = []; | ||
@@ -757,3 +677,3 @@ const processed = interpolateClientIslandPlaceholders(controlFlowExpanded, bindingNames, exprLines); | ||
| */ | ||
| function expandIfBlocks(template, filepath) { | ||
| function expandIfBlocks(template) { | ||
| if (!template.includes(IF_OPEN)) | ||
@@ -763,19 +683,11 @@ return template; | ||
| const parsed = parseTopLevelIfBlock(template, open); | ||
| if (!parsed) { | ||
| const loc = offsetToLineColumn(template, open); | ||
| throw new CompileError({ | ||
| code: 'NX-101', | ||
| message: `Unclosed or malformed {#if} block`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Ensure every {#if} has a matching {/if}. Check for nested blocks that aren't properly closed.`, | ||
| }); | ||
| } | ||
| if (!parsed) | ||
| return template; | ||
| const expandedBranches = parsed.branches.map(({ cond, body }) => ({ | ||
| cond, | ||
| body: expandIfBlocks(body.trim(), filepath), | ||
| body: expandIfBlocks(body.trim()), | ||
| })); | ||
| const piece = buildIfTernary(expandedBranches); | ||
| const next = template.slice(0, open) + piece + template.slice(parsed.closeEnd); | ||
| return expandIfBlocks(next, filepath); | ||
| return expandIfBlocks(next); | ||
| } | ||
@@ -786,3 +698,3 @@ /** | ||
| */ | ||
| function expandEachBlocks(template, filepath) { | ||
| function expandEachBlocks(template) { | ||
| let t = template; | ||
@@ -792,24 +704,8 @@ while (t.includes(EACH_OPEN)) { | ||
| const closeHeader = findBlockTagExprEnd(t, start + EACH_OPEN.length); | ||
| if (closeHeader < 0) { | ||
| const loc = offsetToLineColumn(t, start); | ||
| throw new CompileError({ | ||
| code: 'NX-102', | ||
| message: `Malformed {#each} block — could not find the end of the header expression`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Syntax: {#each items as item}...{/each}. Make sure the expression is valid and braces are balanced.`, | ||
| }); | ||
| } | ||
| if (closeHeader < 0) | ||
| return t; | ||
| const header = t.slice(start + EACH_OPEN.length, closeHeader); | ||
| const hm = /^(.+?)\s+as\s+(\w+)\s*$/.exec(header.trim()); | ||
| if (!hm || !hm[1] || !hm[2]) { | ||
| const loc = offsetToLineColumn(t, start); | ||
| throw new CompileError({ | ||
| code: 'NX-103', | ||
| message: `Invalid {#each} syntax: expected "{#each list as item}"`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Use the format {#each items as item}. The list expression and alias are required.`, | ||
| }); | ||
| } | ||
| if (!hm || !hm[1] || !hm[2]) | ||
| return t; | ||
| const listExpr = hm[1].trim(); | ||
@@ -823,25 +719,9 @@ const alias = hm[2]; | ||
| const subEnd = t.indexOf('{/each}', pos); | ||
| if (subEnd === -1) { | ||
| const loc = offsetToLineColumn(t, start); | ||
| throw new CompileError({ | ||
| code: 'NX-104', | ||
| message: `Unclosed {#each} block — missing {/each}`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Every {#each} must have a matching {/each}. Check for typos or missing closing tags.`, | ||
| }); | ||
| } | ||
| if (subEnd === -1) | ||
| return t; | ||
| if (subEach !== -1 && subEach < subEnd) { | ||
| depth++; | ||
| const innerHdrEnd = findBlockTagExprEnd(t, subEach + EACH_OPEN.length); | ||
| if (innerHdrEnd < 0) { | ||
| const loc = offsetToLineColumn(t, subEach); | ||
| throw new CompileError({ | ||
| code: 'NX-105', | ||
| message: `Malformed nested {#each} block`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Nested {#each} blocks must also have valid syntax: {#each list as item}...{/each}`, | ||
| }); | ||
| } | ||
| if (innerHdrEnd < 0) | ||
| return t; | ||
| pos = innerHdrEnd + 1; | ||
@@ -857,14 +737,6 @@ } | ||
| } | ||
| if (closeIdx === -1) { | ||
| const loc = offsetToLineColumn(t, start); | ||
| throw new CompileError({ | ||
| code: 'NX-104', | ||
| message: `Unclosed {#each} block — missing {/each}`, | ||
| file: filepath, | ||
| loc, | ||
| hint: `Every {#each} must have a matching {/each}. Check for typos or missing closing tags.`, | ||
| }); | ||
| } | ||
| if (closeIdx === -1) | ||
| return t; | ||
| const body = t.slice(closeHeader + 1, closeIdx).trim(); | ||
| const bodyExpanded = expandEachBlocks(body, filepath); | ||
| const bodyExpanded = expandEachBlocks(body); | ||
| const inner = interpolateExpressionsForSSR(bodyExpanded); | ||
@@ -879,3 +751,2 @@ const replacement = '${' + listExpr + '.map((' + alias + ') => `' + inner + '`).join(\'\')}'; | ||
| * Skips `<style>` / `<script>` regions so CSS `{ ... }` and JS blocks are not treated as expressions. | ||
| * But DOES interpolate expressions inside attributes (like `nonce="{pretext.cspNonce}"`). | ||
| */ | ||
@@ -905,20 +776,16 @@ function interpolateExpressionsForSSR(s) { | ||
| } | ||
| // Interpolate the opening <script> or <style> tag (for attributes like nonce="{pretext.cspNonce}") | ||
| out += interp(s.slice(i, skipFrom)); | ||
| const gt = s.indexOf('>', skipFrom); | ||
| if (gt === -1) { | ||
| out += interp(s.slice(i)); | ||
| out += s.slice(skipFrom); | ||
| break; | ||
| } | ||
| const openTag = s.slice(skipFrom, gt + 1); | ||
| out += interp(s.slice(i, skipFrom)) + interp(openTag); | ||
| const closeTag = isStyle ? '</style>' : '</script>'; | ||
| const closeIdx = s.toLowerCase().indexOf(closeTag, gt + 1); | ||
| if (closeIdx === -1) { | ||
| // If no closing tag, just append the rest without interpolation (treat as code) | ||
| out += s.slice(gt + 1); | ||
| out += s.slice(skipFrom); | ||
| break; | ||
| } | ||
| // Content between <script>...</script> or <style>...</style> is NOT interpolated | ||
| const blockEnd = closeIdx + closeTag.length; | ||
| out += s.slice(gt + 1, blockEnd); | ||
| out += s.slice(skipFrom, blockEnd); | ||
| i = blockEnd; | ||
@@ -928,6 +795,6 @@ } | ||
| } | ||
| function templateToSSR(template, filepath, actionNames) { | ||
| function templateToSSR(template, actionNames) { | ||
| const attrSafe = transformDynamicAttributesForSSR(template, actionNames); | ||
| const ifExpanded = expandIfBlocks(attrSafe, filepath); | ||
| const expanded = expandEachBlocks(ifExpanded, filepath); | ||
| const ifExpanded = expandIfBlocks(attrSafe); | ||
| const expanded = expandEachBlocks(ifExpanded); | ||
| return interpolateExpressionsForSSR(expanded); | ||
@@ -949,9 +816,5 @@ } | ||
| * `onsubmit=${fn}` (function `toString()` injects `{}` into the document). | ||
| * Event handlers with JS expressions are omitted; client islands attach them on hydrate. | ||
| * BUT we preserve string literal handlers for Progressive Enhancement (e.g. onsubmit="return handleFn(event)"). | ||
| * Event handlers are omitted here; the client island attaches them on hydrate. | ||
| */ | ||
| function transformDynamicAttributesForSSR(html, actionNames) { | ||
| // Remove event handlers that reference JS functions/expressions (e.g. onclick={() => foo++}) | ||
| // but KEEP string literal handlers (e.g. onsubmit="return handleFn(event)") | ||
| // The { } syntax in Nexus means it's a JS expression, so we remove those | ||
| let s = html.replace(/\s+on[a-zA-Z][a-zA-Z0-9-]*\s*=\s*\{[^}]+\}/g, ''); | ||
@@ -958,0 +821,0 @@ s = rewriteServerActionHtmlActionAttr(s, actionNames); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"} |
+13
-33
@@ -243,10 +243,2 @@ /** | ||
| const atEnd = block.indexOf('{', i); | ||
| const semiEnd = block.indexOf(';', i); | ||
| // At-rules that end with ; and have no block: @import, @charset, @namespace | ||
| if (semiEnd !== -1 && (atEnd === -1 || semiEnd < atEnd)) { | ||
| const atRule = block.slice(i, semiEnd + 1).trim(); | ||
| result.push(atRule); | ||
| i = semiEnd + 1; | ||
| continue; | ||
| } | ||
| if (atEnd === -1) { | ||
@@ -318,32 +310,20 @@ i = len; | ||
| function scopeSingleSelector(sel, attr) { | ||
| const trimmed = sel.trim(); | ||
| // Global selectors that should never be scoped (:root targets <html> which | ||
| // never receives data-nx; html/body/* are global by nature). | ||
| if (/^:(root|host)$/.test(trimmed) || /^(html|body|\*)$/.test(trimmed)) { | ||
| return trimmed; | ||
| } | ||
| // :global(...) escape hatch — strip :global() wrapper, don't scope | ||
| if (/^:global\(/.test(trimmed)) { | ||
| return trimmed.replace(/:global\(([^)]+)\)/g, '$1'); | ||
| if (/^:global\(/.test(sel)) { | ||
| return sel.replace(/:global\(([^)]+)\)/g, '$1'); | ||
| } | ||
| // Partial :global(...) inside selector — unwrap only the :global(...) parts | ||
| // but keep the rest scoped. | ||
| if (trimmed.includes(':global(')) { | ||
| const unwrapped = trimmed.replace(/:global\(([^)]+)\)/g, '$1'); | ||
| // After unwrapping, if it's now a purely global selector, return as-is | ||
| if (/^:(root|host)$/.test(unwrapped) || /^(html|body|\*)$/.test(unwrapped)) { | ||
| return unwrapped; | ||
| } | ||
| return `${attr} ${unwrapped}, ${attr}${unwrapped}`; | ||
| // Handle :global inside a selector | ||
| if (sel.includes(':global(')) { | ||
| return sel.replace(/:global\(([^)]+)\)/g, '$1'); | ||
| } | ||
| // Skip already-scoped or bare combinators | ||
| if (trimmed.startsWith(attr)) | ||
| return trimmed; | ||
| // Default: prepend the scope attribute as ancestor, AND as attribute on | ||
| // the first compound selector. scopeTemplate() injects data-nx directly | ||
| // onto every root element, so we need both forms: | ||
| // [data-nx] .card → matches when data-nx is on a parent | ||
| // [data-nx].card → matches when data-nx is on the element itself | ||
| return `${attr} ${trimmed}, ${attr}${trimmed}`; | ||
| if (sel.startsWith(attr)) | ||
| return sel; | ||
| // For :root, :host — insert attr before | ||
| if (/^:(root|host)/.test(sel)) { | ||
| return `${attr}${sel}`; | ||
| } | ||
| // Default: prepend the scope attribute | ||
| return `${attr} ${sel}`; | ||
| } | ||
| //# sourceMappingURL=css-scope.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"css-scope.js","sourceRoot":"","sources":["../src/css-scope.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"css-scope.js","sourceRoot":"","sources":["../src/css-scope.ts"],"names":[],"mappings":"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"} |
+3
-10
| export { componentHash, NEXUS_LAYER_DECLARATION } from './css-scope.js'; | ||
| export { scanIslandSecurity } from './client-security-scan.js'; | ||
| export { parse, offsetToLineColumn } from './parser.js'; | ||
| export { parse } from './parser.js'; | ||
| export { generate } from './codegen.js'; | ||
| export { extractServerActionsFromSource } from './server-actions-extract.js'; | ||
| export { splitPretext, transformPretextExport } from './pretext-extract.js'; | ||
| export { compileLib } from './compile-lib.js'; | ||
| export { bundleIslandLib, extractLibImports, applyLibManifestToClientCode } from './bundle-island-lib.js'; | ||
| export { guard, formatGuardResult } from './guard.js'; | ||
| export { formatCompileError, formatCompileWarning, formatWarnings, extractFrame } from './error-formatter.js'; | ||
| export type { ParsedComponent, CompileOptions, CompileResult, NexusBlock, IslandDirective, IslandHydration, ServerAction, IslandManifest, IslandEntry, RouteManifest, RouteEntry, CompileWarning, SourceLocation, } from './types.js'; | ||
| export { CompileError } from './types.js'; | ||
| export type { ParsedComponent, CompileOptions, CompileResult, NexusBlock, IslandDirective, IslandHydration, ServerAction, IslandManifest, IslandEntry, RouteManifest, RouteEntry, CompileWarning, } from './types.js'; | ||
| import type { CompileOptions, CompileResult } from './types.js'; | ||
| /** High-level API: compile a .nx source string end-to-end. | ||
| * Runs the security guard automatically and includes its findings in warnings. | ||
| */ | ||
| /** High-level API: compile a .nx source string end-to-end */ | ||
| export declare function compile(source: string, filepath: string, opts?: Partial<CompileOptions>): CompileResult; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,YAAY,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,GACjC,aAAa,CAoCf"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,6DAA6D;AAC7D,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,GACjC,aAAa,CAcf"} |
+3
-30
| export { componentHash, NEXUS_LAYER_DECLARATION } from './css-scope.js'; | ||
| export { scanIslandSecurity } from './client-security-scan.js'; | ||
| export { parse, offsetToLineColumn } from './parser.js'; | ||
| export { parse } from './parser.js'; | ||
| export { generate } from './codegen.js'; | ||
| export { extractServerActionsFromSource } from './server-actions-extract.js'; | ||
| export { splitPretext, transformPretextExport } from './pretext-extract.js'; | ||
| export { compileLib } from './compile-lib.js'; | ||
| export { bundleIslandLib, extractLibImports, applyLibManifestToClientCode } from './bundle-island-lib.js'; | ||
| export { guard, formatGuardResult } from './guard.js'; | ||
| export { formatCompileError, formatCompileWarning, formatWarnings, extractFrame } from './error-formatter.js'; | ||
| export { CompileError } from './types.js'; | ||
| import { parse } from './parser.js'; | ||
| import { generate } from './codegen.js'; | ||
| import { guard } from './guard.js'; | ||
| /** High-level API: compile a .nx source string end-to-end. | ||
| * Runs the security guard automatically and includes its findings in warnings. | ||
| */ | ||
| /** High-level API: compile a .nx source string end-to-end */ | ||
| export function compile(source, filepath, opts = {}) { | ||
@@ -30,23 +22,4 @@ const options = { | ||
| const parsed = parse(source, filepath); | ||
| // Run security guard and merge findings as structured warnings | ||
| const guardResult = guard(source, filepath); | ||
| const guardWarnings = guardResult.leaks.map((leak) => ({ | ||
| code: `NX-GUARD-${leak.type.toUpperCase()}`, | ||
| severity: leak.severity, | ||
| message: leak.message, | ||
| hint: leak.hint, | ||
| loc: { line: leak.line, column: leak.column }, | ||
| })); | ||
| const result = generate(parsed, options); | ||
| // Merge parser warnings + guard warnings, deduplicate by message+line | ||
| const seen = new Set(); | ||
| const allWarnings = [...parsed.warnings, ...guardWarnings, ...result.warnings].filter((w) => { | ||
| const key = `${w.message}:${w.loc?.line ?? 0}`; | ||
| if (seen.has(key)) | ||
| return false; | ||
| seen.add(key); | ||
| return true; | ||
| }); | ||
| return { ...result, warnings: allWarnings }; | ||
| return generate(parsed, options); | ||
| } | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAgB5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,6DAA6D;AAC7D,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,QAAgB,EAChB,OAAgC,EAAE;IAElC,MAAM,OAAO,GAAmB;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ;QAC3B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK;QACtB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;QACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;QACnD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;QAC7B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC"} |
@@ -82,24 +82,2 @@ import { describe, expect, it } from 'vitest'; | ||
| }); | ||
| it('rewrites $lib imports in client bundle to /_nexus/lib/', () => { | ||
| const src = `--- | ||
| --- | ||
| <script> | ||
| import { x } from '$lib/utils'; | ||
| let count = $state(0); | ||
| </script> | ||
| <div client:load>{count}</div> | ||
| `; | ||
| const r = compile(src, '/app/src/routes/p/+page.nx', { | ||
| mode: 'server', | ||
| dev: false, | ||
| ssr: true, | ||
| emitIslandManifest: false, | ||
| target: 'node', | ||
| appRoot: '/app', | ||
| }); | ||
| expect(r.clientCode).toBeTruthy(); | ||
| const c = r.clientCode; | ||
| expect(c).not.toContain("'$lib/"); | ||
| expect(c).toContain("'/_nexus/lib/"); | ||
| }); | ||
| it('rewrites $state assignments in handlers to .value (const-safe)', () => { | ||
@@ -106,0 +84,0 @@ const src = `--- |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"island-codegen.test.js","sourceRoot":"","sources":["../src/island-codegen.test.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"island-codegen.test.js","sourceRoot":"","sources":["../src/island-codegen.test.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"island-wrap.d.ts","sourceRoot":"","sources":["../src/island-wrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4DH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,CAqHlB"} | ||
| {"version":3,"file":"island-wrap.d.ts","sourceRoot":"","sources":["../src/island-wrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4DH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,CAyElB"} |
+5
-42
@@ -6,3 +6,3 @@ /** | ||
| */ | ||
| import { relative, resolve } from 'node:path'; | ||
| import { relative } from 'node:path'; | ||
| const CLIENT_DIR_RE = /\sclient:(load|idle|visible|media)(?:=["']([^"']*)["'])?/; | ||
@@ -95,5 +95,3 @@ /** | ||
| if (!balanced) { | ||
| const snippet = t.slice(openMatchStart, openMatchStart + 120).replace(/\n/g, ' '); | ||
| throw new Error(`[Nexus Compiler] Unclosed island tag <${tag}> starting at:\n ${snippet}${snippet.length >= 120 ? '…' : ''}\n` + | ||
| `Every client:* island must have a matching closing tag </${tag}>. Check for typos or self-closing tags without />`); | ||
| break; | ||
| } | ||
@@ -103,3 +101,5 @@ inner = balanced.inner; | ||
| } | ||
| const islandIdx = fragments.length; | ||
| const clientTemplate = innerRootOpen + inner + innerRootClose; | ||
| fragments.push(clientTemplate); | ||
| const islandIdx = fragments.length - 1; | ||
| const islandId = `island_${idBase}_${islandIdx}`.toLowerCase(); | ||
@@ -109,39 +109,2 @@ const dataStrategy = strategy === 'media' && mediaQuery | ||
| : `data-nexus-strategy="client:${strategy}"`; | ||
| // ── Manual external island: <nexus-island client:load src="$lib/…"> ── | ||
| const srcMatch = /\bsrc\s*=\s*"([^"]+)"/.exec(fullAttrs); | ||
| if (tag === 'nexus-island' && srcMatch) { | ||
| const rawSrc = srcMatch[1]; | ||
| let resolvedComponent; | ||
| if (rawSrc.startsWith('$lib/')) { | ||
| // $lib/foo.ts → /_nexus/lib/foo.js (served by dev-assets or bundled for prod) | ||
| resolvedComponent = rawSrc.replace('$lib/', '/_nexus/lib/').replace(/\.ts$/u, '.js'); | ||
| } | ||
| else if (rawSrc.startsWith('/')) { | ||
| resolvedComponent = rawSrc.replace(/\.ts$/u, '.js'); | ||
| } | ||
| else if (rawSrc.startsWith('./') || rawSrc.startsWith('../')) { | ||
| const resolved = resolve(absFilePath, '..', rawSrc).replace(/\\/g, '/'); | ||
| resolvedComponent = resolved.replace(/\.ts$/u, '.js'); | ||
| } | ||
| else { | ||
| throw new Error(`[Nexus Compiler] External island src must start with "$lib/", "/", "./", or "../". Got: "${rawSrc}"`); | ||
| } | ||
| const cleanAttrs = stripClientDirective(fullAttrs) | ||
| .replace(/\bsrc\s*=\s*"[^"]*"/, ' ') | ||
| .replace(/\s*\/\s*$/u, '') | ||
| .trim(); | ||
| const replacement = t.slice(0, openMatchStart) + | ||
| `<nexus-island | ||
| data-nexus-island="${islandId}" | ||
| data-nexus-island-index="${islandIdx}" | ||
| data-nexus-component="${resolvedComponent}" | ||
| ${dataStrategy}${cleanAttrs ? '\n ' + cleanAttrs : ''} | ||
| >${inner}</nexus-island>` + | ||
| t.slice(closeEnd); | ||
| t = replacement; | ||
| fragments.push(''); // placeholder to keep inline island indices aligned | ||
| continue; | ||
| } | ||
| const clientTemplate = innerRootOpen + inner + innerRootClose; | ||
| fragments.push(clientTemplate); | ||
| const wrapped = t.slice(0, openMatchStart) + | ||
@@ -148,0 +111,0 @@ `<nexus-island |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"island-wrap.js","sourceRoot":"","sources":["../src/island-wrap.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"island-wrap.js","sourceRoot":"","sources":["../src/island-wrap.ts"],"names":[],"mappings":"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"} |
@@ -21,23 +21,3 @@ import { describe, expect, it } from 'vitest'; | ||
| }); | ||
| it('throws on unclosed island tags', () => { | ||
| const t = `<div client:load><span>hi</span>`; | ||
| expect(() => wrapSelfClientIslandMarkers(t, '/app/src/routes/+page.nx', '/app')).toThrow(/Unclosed island tag/); | ||
| }); | ||
| it('handles manual <nexus-island src="$lib/…"> as external island', () => { | ||
| const t = `<nexus-island client:load src="$lib/islands/menu.ts"><button>Menu</button></nexus-island>`; | ||
| const r = wrapSelfClientIslandMarkers(t, '/app/src/routes/+page.nx', '/app'); | ||
| expect(r.didWrap).toBe(true); | ||
| expect(r.template).toContain('data-nexus-component="/_nexus/lib/islands/menu.js"'); | ||
| expect(r.template).toContain('data-nexus-island-index="0"'); | ||
| expect(r.template).toContain('data-nexus-strategy="client:load"'); | ||
| expect(r.template).not.toMatch(/<nexus-island[^>]*\sclient:load/); | ||
| expect(r.template).not.toContain('src='); | ||
| expect(r.template).toContain('<button>Menu</button>'); | ||
| expect(r.clientFragments[0]).toBe(''); // placeholder for index alignment | ||
| }); | ||
| it('rejects external island src with unsupported prefix', () => { | ||
| const t = `<nexus-island client:load src="http://example.com/menu.ts"></nexus-island>`; | ||
| expect(() => wrapSelfClientIslandMarkers(t, '/app/src/routes/+page.nx', '/app')).toThrow(/External island src must start with/); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=island-wrap.test.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"island-wrap.test.js","sourceRoot":"","sources":["../src/island-wrap.test.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"island-wrap.test.js","sourceRoot":"","sources":["../src/island-wrap.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,GAAG,4DAA4D,CAAC;QACvE,MAAM,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC9E,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,GAAG,wCAAwC,CAAC;QACnD,MAAM,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
+2
-7
@@ -1,4 +0,2 @@ | ||
| import type { ParsedComponent, CompileWarning, SourceLocation } from './types.js'; | ||
| /** Convert a character offset into 1-based line and 0-based column numbers. */ | ||
| export declare function offsetToLineColumn(source: string, offset: number): SourceLocation; | ||
| import type { ParsedComponent } from './types.js'; | ||
| /** | ||
@@ -29,6 +27,3 @@ * Parses a .nx source file into its constituent blocks. | ||
| */ | ||
| export interface ParseResult extends ParsedComponent { | ||
| warnings: CompileWarning[]; | ||
| } | ||
| export declare function parse(source: string, filepath: string): ParseResult; | ||
| export declare function parse(source: string, filepath: string): ParsedComponent; | ||
| //# sourceMappingURL=parser.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAIf,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC;AAIpB,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAYjF;AAeD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAmHnE"} | ||
| {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAIhB,MAAM,YAAY,CAAC;AAiBpB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CA2FvE"} |
+64
-94
| import { extractServerActionsFromSource } from './server-actions-extract.js'; | ||
| import { splitPretext } from './pretext-extract.js'; | ||
| /** Convert a character offset into 1-based line and 0-based column numbers. */ | ||
| export function offsetToLineColumn(source, offset) { | ||
| let line = 1; | ||
| let column = 0; | ||
| for (let i = 0; i < offset && i < source.length; i++) { | ||
| if (source[i] === '\n') { | ||
| line++; | ||
| column = 0; | ||
| } | ||
| else { | ||
| column++; | ||
| } | ||
| } | ||
| return { line, column }; | ||
| } | ||
| /** Regex patterns for parsing .nx files */ | ||
| const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---/; | ||
| const SCRIPT_BLOCK_RE = /<script(?:\s[^>]*)?>([\s\S]*?)<\/script>/g; | ||
| const STYLE_BLOCK_RE = /<style(?:\s[^>]*)?>([\s\S]*?)<\/style>/g; | ||
| const SCRIPT_BLOCK_RE = /<script(?:\s[^>]*)?>(\n[\s\S]*?)<\/script>/; | ||
| const STYLE_BLOCK_RE = /<style(?:\s[^>]*)?>(\n[\s\S]*?)<\/style>/; | ||
| const ISLAND_DIRECTIVES = [ | ||
@@ -29,2 +14,27 @@ 'client:load', | ||
| ]; | ||
| /** | ||
| * Parses a .nx source file into its constituent blocks. | ||
| * A .nx file has the structure: | ||
| * | ||
| * ``` | ||
| * --- | ||
| * // Server-only frontmatter (Astro-style) | ||
| * import { db } from '$lib/db'; | ||
| * const user = await db.user.findFirst(); | ||
| * --- | ||
| * | ||
| * <script> | ||
| * // Svelte 5 Runes-style reactive script | ||
| * let count = $state(0); | ||
| * let doubled = $derived(count * 2); | ||
| * </script> | ||
| * | ||
| * <h1>Hello {user.name}</h1> | ||
| * <button onclick={() => count++}>Clicked {count}</button> | ||
| * | ||
| * <style> | ||
| * h1 { color: red; } | ||
| * </style> | ||
| * ``` | ||
| */ | ||
| export function parse(source, filepath) { | ||
@@ -50,50 +60,32 @@ const warnings = []; | ||
| } | ||
| // --- Script blocks (collect ALL) --- | ||
| const scriptMatches = Array.from(remaining.matchAll(SCRIPT_BLOCK_RE)); | ||
| const scriptContents = []; | ||
| let scriptStart = -1; | ||
| let scriptEnd = -1; | ||
| for (const m of scriptMatches) { | ||
| scriptContents.push(m[1] ?? ''); | ||
| const absStart = (frontmatter?.end ?? 0) + (m.index ?? 0); | ||
| const absEnd = absStart + m[0].length; | ||
| if (scriptStart === -1) | ||
| scriptStart = absStart; | ||
| scriptEnd = Math.max(scriptEnd, absEnd); | ||
| } | ||
| const script = scriptContents.length > 0 | ||
| ? { | ||
| // --- Script block --- | ||
| const scriptMatch = SCRIPT_BLOCK_RE.exec(remaining); | ||
| let script = null; | ||
| if (scriptMatch) { | ||
| const absStart = (frontmatter?.end ?? 0) + (scriptMatch.index ?? 0); | ||
| script = { | ||
| type: 'script', | ||
| content: scriptContents.join('\n\n'), | ||
| start: scriptStart, | ||
| end: scriptEnd, | ||
| } | ||
| : null; | ||
| // --- Style blocks (collect ALL) --- | ||
| const styleMatches = Array.from(remaining.matchAll(STYLE_BLOCK_RE)); | ||
| const styleContents = []; | ||
| let styleStart = -1; | ||
| let styleEnd = -1; | ||
| for (const m of styleMatches) { | ||
| styleContents.push(m[1] ?? ''); | ||
| const absStart = (frontmatter?.end ?? 0) + (m.index ?? 0); | ||
| const absEnd = absStart + m[0].length; | ||
| if (styleStart === -1) | ||
| styleStart = absStart; | ||
| styleEnd = Math.max(styleEnd, absEnd); | ||
| content: scriptMatch[1] ?? '', | ||
| start: absStart, | ||
| end: absStart + scriptMatch[0].length, | ||
| }; | ||
| } | ||
| const style = styleContents.length > 0 | ||
| ? { | ||
| // --- Style block --- | ||
| const styleMatch = STYLE_BLOCK_RE.exec(remaining); | ||
| let style = null; | ||
| if (styleMatch) { | ||
| const absStart = (frontmatter?.end ?? 0) + (styleMatch.index ?? 0); | ||
| style = { | ||
| type: 'style', | ||
| content: styleContents.join('\n\n'), | ||
| start: styleStart, | ||
| end: styleEnd, | ||
| } | ||
| : null; | ||
| content: styleMatch[1] ?? '', | ||
| start: absStart, | ||
| end: absStart + styleMatch[0].length, | ||
| }; | ||
| } | ||
| // --- Template: everything except frontmatter, script, style --- | ||
| let templateContent = remaining; | ||
| for (const m of scriptMatches) | ||
| templateContent = templateContent.replace(m[0], ''); | ||
| for (const m of styleMatches) | ||
| templateContent = templateContent.replace(m[0], ''); | ||
| if (scriptMatch) | ||
| templateContent = templateContent.replace(scriptMatch[0], ''); | ||
| if (styleMatch) | ||
| templateContent = templateContent.replace(styleMatch[0], ''); | ||
| templateContent = templateContent.trim(); | ||
@@ -115,10 +107,3 @@ const template = { | ||
| if (serverActions.length > 0 && !source.includes('use server')) { | ||
| const loc = offsetToLineColumn(source, source.indexOf(serverActions[0].name) || 0); | ||
| warnings.push({ | ||
| code: 'NX-001', | ||
| severity: 'warning', | ||
| message: `Found server action patterns without "use server" directive`, | ||
| hint: `Add "use server" at the top of your server action function, or use createAction() from @nexus_js/server.`, | ||
| loc, | ||
| }); | ||
| warnings.push(`Found server action patterns without "use server" directive in ${filepath}`); | ||
| } | ||
@@ -135,3 +120,2 @@ return { | ||
| serverActions, | ||
| warnings, | ||
| }; | ||
@@ -141,28 +125,14 @@ } | ||
| const directives = []; | ||
| // Scan opening tags one-by-one, then parse individual attributes so we never | ||
| // match a directive that lives inside an attribute value | ||
| // (e.g. data-tip="use client:load for interactivity"). | ||
| const tagRe = /<([a-zA-Z][\w-]*)([^>]*)>/g; | ||
| let m; | ||
| while ((m = tagRe.exec(template)) !== null) { | ||
| const tagName = m[1]; | ||
| const attrs = m[2]; | ||
| // Extract attribute names and optional values one-by-one | ||
| const attrRe = /\s([a-zA-Z][\w:-]*)(?:="([^"]*)")?(?:='([^']*)')?/g; | ||
| let am; | ||
| while ((am = attrRe.exec(attrs)) !== null) { | ||
| const attrName = am[1]; | ||
| if (ISLAND_DIRECTIVES.includes(attrName)) { | ||
| const entry = { | ||
| directive: attrName, | ||
| componentName: tagName, | ||
| }; | ||
| if (entry.directive === 'client:media') { | ||
| const val = am[2] ?? am[3]; | ||
| if (val !== undefined) | ||
| entry.mediaQuery = val; | ||
| } | ||
| directives.push(entry); | ||
| break; // a tag can carry at most one island directive | ||
| for (const directive of ISLAND_DIRECTIVES) { | ||
| const re = new RegExp(`<(\\w+)[^>]*\\s${directive}(?:=["']([^"']*)["'])?[^>]*>`, 'g'); | ||
| let match; | ||
| while ((match = re.exec(template)) !== null) { | ||
| const entry = { | ||
| directive, | ||
| componentName: match[1] ?? 'Unknown', | ||
| }; | ||
| if (directive === 'client:media' && match[2] !== undefined) { | ||
| entry.mediaQuery = match[2]; | ||
| } | ||
| directives.push(entry); | ||
| } | ||
@@ -169,0 +139,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Splits `.nx` server frontmatter into pretext data-loader region and other server code. | ||
| * Splits `.nx` server frontmatter into optional `// nexus:pretext` … `// nexus:server` regions. | ||
| * | ||
| * The simple form (recommended, no marker needed): | ||
| * ``` | ||
| * --- | ||
| * import { db } from '$lib/db'; | ||
| * // nexus:pretext | ||
| * export async function load(ctx) { | ||
| * return { flow: await db.flows.findFirst() }; | ||
| * } | ||
| * --- | ||
| * ``` | ||
| * | ||
| * Explicit marker form (when you also need top-level server-only code): | ||
| * ``` | ||
| * --- | ||
| * import { db } from '$lib/db'; | ||
| * // nexus:pretext | ||
| * export async function load(ctx) { ... } | ||
| * // nexus:server | ||
@@ -21,0 +12,0 @@ * defineHead({ title: '…' }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"pretext-extract.d.ts","sourceRoot":"","sources":["../src/pretext-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAoEpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMlE"} | ||
| {"version":3,"file":"pretext-extract.d.ts","sourceRoot":"","sources":["../src/pretext-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA0BpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAMlE"} |
| /** | ||
| * Splits `.nx` server frontmatter into pretext data-loader region and other server code. | ||
| * Splits `.nx` server frontmatter into optional `// nexus:pretext` … `// nexus:server` regions. | ||
| * | ||
| * The simple form (recommended, no marker needed): | ||
| * ``` | ||
| * --- | ||
| * import { db } from '$lib/db'; | ||
| * // nexus:pretext | ||
| * export async function load(ctx) { | ||
| * return { flow: await db.flows.findFirst() }; | ||
| * } | ||
| * --- | ||
| * ``` | ||
| * | ||
| * Explicit marker form (when you also need top-level server-only code): | ||
| * ``` | ||
| * --- | ||
| * import { db } from '$lib/db'; | ||
| * // nexus:pretext | ||
| * export async function load(ctx) { ... } | ||
| * // nexus:server | ||
@@ -29,38 +20,2 @@ * defineHead({ title: '…' }); | ||
| if (markerIdx === -1) { | ||
| // Ergonomic auto-detect: support the common documented pattern of just writing | ||
| // `export async function load(ctx) { ... }` (or const load = async ...) without | ||
| // requiring the // nexus:pretext marker. | ||
| // | ||
| // This resolves the major incongruencia between the quickstart/README examples | ||
| // (and paylinks-saas demo) vs the actual pretext machinery. | ||
| // | ||
| // Strategy: | ||
| // - Find the first `load` export declaration. | ||
| // - Everything before it becomes `leading` (imports + shared top-level server code). | ||
| // - The load declaration (and following lines until a logical split) becomes the pretext. | ||
| // - Remaining code after the load block becomes `server` (top-level). | ||
| // | ||
| // Users who need explicit separation between data-loading and other server module code | ||
| // can still use the // nexus:pretext + // nexus:server markers (see PRETEXT.md). | ||
| let loadStart = -1; | ||
| const loadRe = /^\s*export\s+(async\s+)?(function\s+load\b|const\s+load\s*=|default\s+async\s+function\s+load\b)/; | ||
| for (let i = 0; i < lines.length; i++) { | ||
| const line = lines[i] ?? ''; | ||
| if (loadRe.test(line)) { | ||
| loadStart = i; | ||
| break; | ||
| } | ||
| } | ||
| if (loadStart !== -1) { | ||
| const leading = lines.slice(0, loadStart).join('\n').trim(); | ||
| // Take from the load line to the end as pretext for the common case. | ||
| // If there is obvious server-only code after (e.g. another export or top level statement | ||
| // that is not part of load), advanced users should use the marker for clarity. | ||
| const pretextBody = lines.slice(loadStart).join('\n').trim(); | ||
| return { | ||
| leading, | ||
| pretext: pretextBody || null, | ||
| server: '', | ||
| }; | ||
| } | ||
| return { leading: '', pretext: null, server: frontmatter.trim() }; | ||
@@ -67,0 +22,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"pretext-extract.js","sourceRoot":"","sources":["../src/pretext-extract.ts"],"names":[],"mappings":"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"} | ||
| {"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"} |
| import { describe, expect, it } from 'vitest'; | ||
| import { splitPretext, transformPretextExport } from './pretext-extract.js'; | ||
| describe('splitPretext', () => { | ||
| it('returns full frontmatter as server when no marker and no load', () => { | ||
| it('returns full frontmatter as server when no marker', () => { | ||
| const fm = `import { x } from 'y';\nconst a = 1;`; | ||
@@ -11,13 +11,2 @@ const r = splitPretext(fm); | ||
| }); | ||
| it('auto-detects plain load export as pretext (no marker required)', () => { | ||
| const fm = `import { db } from './db'; | ||
| export async function load(ctx) { | ||
| return { flow: await db.flows.findFirst() }; | ||
| }`; | ||
| const r = splitPretext(fm); | ||
| expect(r.leading.trim()).toContain("import { db }"); | ||
| expect(r.pretext).toContain('export async function load'); | ||
| expect(r.pretext).not.toContain('nexus:pretext'); | ||
| expect(r.server).toBe(''); | ||
| }); | ||
| it('splits pretext and server regions', () => { | ||
@@ -24,0 +13,0 @@ const fm = `import { db } from './db'; |
@@ -1,1 +0,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,+DAA+D,EAAE,GAAG,EAAE;QACvE,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,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,GAAG;;;EAGb,CAAC;QACC,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,eAAe,CAAC,CAAC;QACjD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,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"} | ||
| {"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"} |
+0
-34
@@ -70,9 +70,2 @@ /** A parsed block extracted from a .nx file */ | ||
| libDepsMtime?: number; | ||
| /** | ||
| * Production only: content-hash manifest produced by `bundleIslandLib`. | ||
| * Maps canonical lib rel paths (`utils/date.js`) to hashed filenames | ||
| * (`utils/date.a1b2c3d4.js`). When present, `rewriteDollarLibImportsForClient` | ||
| * emits `/_nexus/lib/<hashed>` URLs directly. | ||
| */ | ||
| libManifest?: ReadonlyMap<string, string>; | ||
| } | ||
@@ -104,34 +97,7 @@ export interface CompileResult { | ||
| } | ||
| export interface SourceLocation { | ||
| /** 1-based line number */ | ||
| line: number; | ||
| /** 0-based column number */ | ||
| column: number; | ||
| } | ||
| export interface CompileWarning { | ||
| message: string; | ||
| code?: string; | ||
| severity?: 'warning' | 'error'; | ||
| /** Actionable fix suggestion */ | ||
| hint?: string; | ||
| start?: number; | ||
| end?: number; | ||
| loc?: SourceLocation; | ||
| } | ||
| /** Structured compiler error thrown when a .nx file cannot be compiled. */ | ||
| export declare class CompileError extends Error { | ||
| readonly code: string; | ||
| readonly file: string; | ||
| readonly loc: SourceLocation | undefined; | ||
| readonly hint: string | undefined; | ||
| readonly frame: string | undefined; | ||
| constructor(opts: { | ||
| message: string; | ||
| code: string; | ||
| file: string; | ||
| loc?: SourceLocation | undefined; | ||
| hint?: string | undefined; | ||
| frame?: string | undefined; | ||
| }); | ||
| } | ||
| export interface RouteManifest { | ||
@@ -138,0 +104,0 @@ routes: RouteEntry[]; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} |
+1
-17
@@ -1,18 +0,2 @@ | ||
| /** Structured compiler error thrown when a .nx file cannot be compiled. */ | ||
| export class CompileError extends Error { | ||
| code; | ||
| file; | ||
| loc; | ||
| hint; | ||
| frame; | ||
| constructor(opts) { | ||
| super(opts.message); | ||
| this.name = 'CompileError'; | ||
| this.code = opts.code; | ||
| this.file = opts.file; | ||
| this.loc = opts.loc; | ||
| this.hint = opts.hint; | ||
| this.frame = opts.frame; | ||
| } | ||
| } | ||
| export {}; | ||
| //# sourceMappingURL=types.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsIA,2EAA2E;AAC3E,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAS;IACb,IAAI,CAAS;IACb,GAAG,CAA6B;IAChC,IAAI,CAAqB;IACzB,KAAK,CAAqB;IAEnC,YAAY,IAOX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF"} | ||
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} |
+3
-9
| { | ||
| "name": "@nexus_js/compiler", | ||
| "version": "0.9.28", | ||
| "version": "0.9.29", | ||
| "description": "Nexus compiler — transforms .nx files into optimized server/client bundles", | ||
@@ -15,3 +15,2 @@ "type": "module", | ||
| "dependencies": { | ||
| "esbuild": "^0.28.0", | ||
| "magic-string": "^0.30.0", | ||
@@ -22,3 +21,3 @@ "typescript": "^5.5.0" | ||
| "typescript": "^5.5.0", | ||
| "vitest": "^4.0.0" | ||
| "vitest": "^2.0.0" | ||
| }, | ||
@@ -35,6 +34,2 @@ "license": "MIT", | ||
| }, | ||
| "funding": { | ||
| "type": "individual", | ||
| "url": "https://buymeacoffee.com/bierfor084" | ||
| }, | ||
| "keywords": [ | ||
@@ -61,6 +56,5 @@ "nexus", | ||
| "dev": "tsc -p tsconfig.json --watch", | ||
| "typecheck": "tsc --noEmit -p tsconfig.json", | ||
| "test": "vitest run", | ||
| "test": "vitest run --passWithNoTests", | ||
| "clean": "rm -rf dist" | ||
| } | ||
| } |
| /** | ||
| * Bundle $lib dependencies for client islands into .nexus/output/lib/. | ||
| * | ||
| * Content-hashing strategy | ||
| * ──────────────────────── | ||
| * Each bundled lib file is content-hashed (SHA-1, 8 hex chars) and written as | ||
| * `<name>.<hash>.js` (e.g. `utils/date.a1b2c3d4.js`). A manifest that maps | ||
| * canonical rel paths to their hashed counterparts is returned so that callers | ||
| * can rewrite island import URLs after the fact. | ||
| * | ||
| * Two-pass build flow (bin.ts) | ||
| * ──────────────────────────── | ||
| * 1. compile() produces island codes with plain `/_nexus/lib/utils/date.js` URLs. | ||
| * 2. bundleIslandLib() hashes every lib file → returns manifest. | ||
| * 3. applyLibManifestToClientCode() rewrites `/_nexus/lib/…` specifiers in route | ||
| * `.client.js` files and in the emitted `output/lib/*.js` bundles (cross-chunk | ||
| * imports must use the same content-hashed filenames as the manifest). | ||
| * | ||
| * Tree-shaking strategy | ||
| * ───────────────────── | ||
| * esbuild `build()` is run once per lib file with a synthetic re-export entry | ||
| * that names only the symbols actually imported by islands. Unused exports and | ||
| * dead internal helpers are eliminated before hashing. | ||
| */ | ||
| /** Extract all `/_nexus/lib/…` specifiers from generated island client code. */ | ||
| export declare function extractLibImports(code: string): string[]; | ||
| /** | ||
| * Rewrite `/_nexus/lib/X.js` → `/_nexus/lib/X.<hash>.js` using the manifest | ||
| * from `bundleIslandLib`. Covers `from`, `import()`, and side-effect `import ""`. | ||
| * Used for route `.client.js` and for the emitted `output/lib/*.js` chunks so | ||
| * cross-chunk /_nexus/lib URLs match hashed filenames. | ||
| */ | ||
| export declare function applyLibManifestToClientCode(code: string, manifest: ReadonlyMap<string, string>): string; | ||
| export interface BundleIslandLibResult { | ||
| /** Number of lib files written to `<outDir>/lib/`. */ | ||
| files: number; | ||
| /** | ||
| * Maps canonical rel path → hashed rel path. | ||
| * e.g. `'utils/date.js'` → `'utils/date.a1b2c3d4.js'` | ||
| */ | ||
| manifest: Map<string, string>; | ||
| } | ||
| /** | ||
| * Bundle all `$lib` files imported by island client scripts into | ||
| * `<outDir>/lib/`, tree-shaking unused exports and content-hashing each file. | ||
| */ | ||
| export declare function bundleIslandLib(appRoot: string, outDir: string, clientCodes: string[]): Promise<BundleIslandLibResult>; | ||
| //# sourceMappingURL=bundle-island-lib.d.ts.map |
| {"version":3,"file":"bundle-island-lib.d.ts","sourceRoot":"","sources":["../src/bundle-island-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAuBH,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD;AA8PD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAkCR;AAkCD,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,qBAAqB,CAAC,CA+GhC"} |
| /** | ||
| * Bundle $lib dependencies for client islands into .nexus/output/lib/. | ||
| * | ||
| * Content-hashing strategy | ||
| * ──────────────────────── | ||
| * Each bundled lib file is content-hashed (SHA-1, 8 hex chars) and written as | ||
| * `<name>.<hash>.js` (e.g. `utils/date.a1b2c3d4.js`). A manifest that maps | ||
| * canonical rel paths to their hashed counterparts is returned so that callers | ||
| * can rewrite island import URLs after the fact. | ||
| * | ||
| * Two-pass build flow (bin.ts) | ||
| * ──────────────────────────── | ||
| * 1. compile() produces island codes with plain `/_nexus/lib/utils/date.js` URLs. | ||
| * 2. bundleIslandLib() hashes every lib file → returns manifest. | ||
| * 3. applyLibManifestToClientCode() rewrites `/_nexus/lib/…` specifiers in route | ||
| * `.client.js` files and in the emitted `output/lib/*.js` bundles (cross-chunk | ||
| * imports must use the same content-hashed filenames as the manifest). | ||
| * | ||
| * Tree-shaking strategy | ||
| * ───────────────────── | ||
| * esbuild `build()` is run once per lib file with a synthetic re-export entry | ||
| * that names only the symbols actually imported by islands. Unused exports and | ||
| * dead internal helpers are eliminated before hashing. | ||
| */ | ||
| import { createHash } from 'node:crypto'; | ||
| import { statSync } from 'node:fs'; | ||
| import { mkdir, readFile, readdir, writeFile } from 'node:fs/promises'; | ||
| import { basename, dirname, join, normalize, relative, resolve as pathResolve } from 'node:path'; | ||
| const LIB_URL_PREFIX = '/_nexus/lib/'; | ||
| const PROBE_SUFFIXES = [ | ||
| '', | ||
| '.js', | ||
| '/index.js', | ||
| '.ts', | ||
| '/index.ts', | ||
| '.tsx', | ||
| '/index.tsx', | ||
| '.mts', | ||
| '/index.mts', | ||
| ]; | ||
| // ─── Resolution helpers ─────────────────────────────────────────────────────── | ||
| /** Extract all `/_nexus/lib/…` specifiers from generated island client code. */ | ||
| export function extractLibImports(code) { | ||
| const results = []; | ||
| const re = /from\s*['"](\/_nexus\/lib\/[^'"]+)['"]/gu; | ||
| let m; | ||
| while ((m = re.exec(code)) !== null) { | ||
| if (m[1]) | ||
| results.push(m[1]); | ||
| } | ||
| return results; | ||
| } | ||
| /** | ||
| * Resolve a relative path to an actual file inside `nexusLibDir`. | ||
| * Uses `statSync` to confirm the candidate is a file (not a directory), | ||
| * probing `.js`, `/index.js`, `.ts`, `/index.ts` etc. | ||
| */ | ||
| function resolveInNexusLib(nexusLibDir, rel) { | ||
| const base = join(nexusLibDir, rel); | ||
| const baseNoTs = base.replace(/\.(ts|tsx|mts)$/u, ''); | ||
| const probeBase = baseNoTs !== base ? baseNoTs : base; | ||
| const seen = new Set(); | ||
| for (const suffix of PROBE_SUFFIXES) { | ||
| const candidate = suffix === '' ? base : probeBase + suffix; | ||
| if (seen.has(candidate)) | ||
| continue; | ||
| seen.add(candidate); | ||
| try { | ||
| if (statSync(candidate).isFile()) | ||
| return candidate; | ||
| } | ||
| catch { /* not found or not a file */ } | ||
| } | ||
| return null; | ||
| } | ||
| /** | ||
| * Stable deduplication key: path relative to nexusLibDir, always `.js`. | ||
| * `'utils/date'`, `'utils/date.ts'`, `'utils/date.js'` all map to the same key. | ||
| */ | ||
| function canonicalRel(nexusLibDir, absFile) { | ||
| return relative(nexusLibDir, absFile).replace(/\.(ts|tsx|mts)$/u, '.js'); | ||
| } | ||
| // ─── Content hashing ───────────────────────────────────────────────────────── | ||
| function contentHash(text) { | ||
| return createHash('sha1').update(text).digest('hex').slice(0, 8); | ||
| } | ||
| /** `'utils/date.js'` + hash → `'utils/date.a1b2c3d4.js'` */ | ||
| function insertHash(canonRel, hash) { | ||
| return canonRel.replace(/\.js$/u, `.${hash}.js`); | ||
| } | ||
| /** | ||
| * `import` … `from '…$lib…'` in generated island code must be resolved **per | ||
| * import statement**. A single regex like | ||
| * `import([\\s\\S]*?)from '…lib…'` can span from the *first* `import` on the | ||
| * file to the *last* `from` before `/_nexus/lib/`, accidentally swallowing | ||
| * the island runtime import (`import { createIsland, … } from | ||
| * '/_nexus/rt/island.js'`) and attributing `createIsland` to `auth-client.js`. | ||
| * We anchor each $lib `from` to the nearest preceding statement and take only | ||
| * the binding that belongs to a real `import` (not `export … from`). | ||
| */ | ||
| function collectLibUsage(codes, nexusLibDir) { | ||
| const result = new Map(); | ||
| function getOrCreate(canon) { | ||
| let u = result.get(canon); | ||
| if (!u) { | ||
| u = { named: new Set(), hasDefault: false, hasNamespace: false }; | ||
| result.set(canon, u); | ||
| } | ||
| return u; | ||
| } | ||
| function addClauseToUsage(usage, clause) { | ||
| if (clause.includes('*')) { | ||
| usage.hasNamespace = true; | ||
| return; | ||
| } | ||
| const braceMatch = /\{([^}]*)\}/.exec(clause); | ||
| if (braceMatch) { | ||
| const body = braceMatch[1]; | ||
| if (body) { | ||
| for (const part of body.split(',')) { | ||
| const trimmed = part.trim(); | ||
| if (!trimmed || trimmed.startsWith('type ')) | ||
| continue; | ||
| const first = trimmed.split(/\s+as\s+/u)[0]; | ||
| const name = first ? first.trim() : ''; | ||
| if (name && /^[a-zA-Z_$]/.test(name)) | ||
| usage.named.add(name); | ||
| } | ||
| } | ||
| } | ||
| const beforeBrace = clause.replace(/\{[^}]*\}/u, '').trim(); | ||
| if (beforeBrace && /^[a-zA-Z_$][\w$]*$/.test(beforeBrace)) | ||
| usage.hasDefault = true; | ||
| } | ||
| for (const code of codes) { | ||
| // Every `from` that loads `/_nexus/lib/…` (string may be in static import or | ||
| // re-export — we only keep real `import` statements for island client code). | ||
| const fromRe = /from\s*['"]\/_nexus\/lib\/[^'"]+['"]/g; | ||
| let m; | ||
| while ((m = fromRe.exec(code)) !== null) { | ||
| const fromIdx = m.index; | ||
| const mUrl = m[0].match(/['"](\/_nexus\/lib\/[^'"]+)['"]/u); | ||
| const spec = mUrl?.[1]; | ||
| if (!spec) | ||
| continue; | ||
| const semi = code.lastIndexOf(';', fromIdx); | ||
| const stmt0 = semi < 0 ? 0 : semi + 1; | ||
| const preFrom = code.slice(stmt0, fromIdx); | ||
| if (!/^\s*import\b/.test(preFrom)) | ||
| continue; | ||
| if (/^\s*import\s+type\s+/.test(preFrom)) | ||
| continue; | ||
| const im = /^\s*import\s+([\s\S]+?)\s*$/m.exec(preFrom); | ||
| if (!im) | ||
| continue; | ||
| const clause = im[1] ?? ''; | ||
| // Another `import` or ` from '` inside the binding = straddled a prior | ||
| // `import … from '…'`, e.g. island runtime + $lib in one bogus span. | ||
| if (/\bimport\s/.test(clause)) | ||
| continue; | ||
| if (/\bfrom\s*['"]/.test(clause)) | ||
| continue; | ||
| if (clause.includes(';')) | ||
| continue; | ||
| if (/^type\s/.test(clause.trim())) | ||
| continue; | ||
| const rel = spec.slice(LIB_URL_PREFIX.length); | ||
| const resolved = resolveInNexusLib(nexusLibDir, rel); | ||
| if (!resolved) | ||
| continue; | ||
| const canon = canonicalRel(nexusLibDir, resolved); | ||
| const usage = getOrCreate(canon); | ||
| addClauseToUsage(usage, clause); | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * BFS: island code only lists direct $lib imports; .nexus/lib files can import | ||
| * other lib modules ($lib/… or relative). Those modules must be included in | ||
| * the esbuild list (and built with a permissive re-export) or chunk graphs break. | ||
| */ | ||
| /** `foo.abcd1234.js` -> `foo.js` (content-hashed nexus lib names). */ | ||
| function stripNexusLibContentHashInPath(rel) { | ||
| return rel | ||
| .replace(/\.[a-f0-9]{8}\.js$/iu, '.js') | ||
| .replace(/\.(ts|tsx|mts)$/u, '.js'); | ||
| } | ||
| function nexusUrlImportToRelative(spec) { | ||
| if (spec.startsWith(LIB_URL_PREFIX)) { | ||
| return stripNexusLibContentHashInPath(spec.slice(LIB_URL_PREFIX.length)); | ||
| } | ||
| return null; | ||
| } | ||
| function extractLocalLibSpecifiersFromSource(source) { | ||
| const out = []; | ||
| const reFrom = /\bfrom\s*['"]((?:\$lib\/[^'"]+)|(?:\.\.?\/?[^'"]*))['"]/gu; | ||
| const reExp = /export\s*(?:\*\s*|\{[^}]*\})\s*from\s*['"]((?:\$lib\/[^'"]+)|(?:\.\.?\/?[^'"]*))['"]/gu; | ||
| const reDyn = /\bimport\s*\(\s*['"]((?:\$lib\/[^'"]+)|(?:\.\.?\/?[^'"]*))['"]\s*\)/gu; | ||
| const reNex = /['"]((\/_nexus\/lib\/[^'"]+))['"]/gu; // from / import() / import "" / export … from | ||
| for (const re of [reFrom, reExp, reDyn, reNex]) { | ||
| re.lastIndex = 0; | ||
| let m; | ||
| while ((m = re.exec(source)) !== null) { | ||
| const s = m[1]; | ||
| if (s) { | ||
| if (s.startsWith(LIB_URL_PREFIX)) { | ||
| out.push(nexusUrlImportToRelative(s) ?? s); | ||
| } | ||
| else { | ||
| out.push(s); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| return [...new Set(out)]; | ||
| } | ||
| function specToCanonicalKey(nexusLibDir, fromDir, spec) { | ||
| if (spec.startsWith('$lib/')) { | ||
| const abs = resolveInNexusLib(nexusLibDir, spec.slice(5)); | ||
| return abs ? canonicalRel(nexusLibDir, abs) : null; | ||
| } | ||
| if (spec.startsWith('.')) { | ||
| const abs = pathResolve(fromDir, spec); | ||
| const n = relative(nexusLibDir, abs); | ||
| if (n.startsWith('..') || n === '') | ||
| return null; | ||
| const nSlash = n.replace(/\\/g, '/'); | ||
| const absProbe = resolveInNexusLib(nexusLibDir, nSlash) ?? resolveInNexusLib(nexusLibDir, nSlash.replace(/\.(ts|tsx|mts|js|mjs)$/u, '')); | ||
| return absProbe ? canonicalRel(nexusLibDir, absProbe) : null; | ||
| } | ||
| if (spec.startsWith(LIB_URL_PREFIX)) { | ||
| const rel = nexusUrlImportToRelative(spec); | ||
| if (!rel) | ||
| return null; | ||
| const abs = resolveInNexusLib(nexusLibDir, rel); | ||
| return abs ? canonicalRel(nexusLibDir, abs) : null; | ||
| } | ||
| // Strips from `from '/_nexus/lib/foo.js'`, e.g. `auth/client.js` | ||
| { | ||
| const abs = resolveInNexusLib(nexusLibDir, spec); | ||
| return abs ? canonicalRel(nexusLibDir, abs) : null; | ||
| } | ||
| } | ||
| async function expandLibUsageWithTransitiveDeps(nexusLibDir, initial) { | ||
| const out = new Map(initial); | ||
| const queue = [...out.keys()]; | ||
| while (queue.length > 0) { | ||
| const canon = queue.shift(); | ||
| const abs = resolveInNexusLib(nexusLibDir, canon); | ||
| if (!abs) | ||
| continue; | ||
| let source; | ||
| try { | ||
| source = await readFile(abs, 'utf-8'); | ||
| } | ||
| catch { | ||
| continue; | ||
| } | ||
| const fromDir = dirname(abs); | ||
| for (const spec of extractLocalLibSpecifiersFromSource(source)) { | ||
| const key = specToCanonicalKey(nexusLibDir, fromDir, spec); | ||
| if (!key) | ||
| continue; | ||
| if (out.has(key)) | ||
| continue; | ||
| out.set(key, { named: new Set(), hasDefault: false, hasNamespace: true }); | ||
| queue.push(key); | ||
| } | ||
| } | ||
| return out; | ||
| } | ||
| function buildSyntheticEntry(actualFile, usage) { | ||
| const path = JSON.stringify(actualFile); | ||
| if (usage.hasNamespace) { | ||
| const lines = [`export * from ${path};`]; | ||
| if (usage.hasDefault) | ||
| lines.push(`export { default } from ${path};`); | ||
| return lines.join('\n'); | ||
| } | ||
| const reExports = [...usage.named]; | ||
| if (usage.hasDefault) | ||
| reExports.unshift('default'); | ||
| if (reExports.length === 0) | ||
| return null; | ||
| return `export { ${reExports.join(', ')} } from ${path};`; | ||
| } | ||
| // ─── Post-processing helper ─────────────────────────────────────────────────── | ||
| /** | ||
| * Rewrite `/_nexus/lib/X.js` → `/_nexus/lib/X.<hash>.js` using the manifest | ||
| * from `bundleIslandLib`. Covers `from`, `import()`, and side-effect `import ""`. | ||
| * Used for route `.client.js` and for the emitted `output/lib/*.js` chunks so | ||
| * cross-chunk /_nexus/lib URLs match hashed filenames. | ||
| */ | ||
| export function applyLibManifestToClientCode(code, manifest) { | ||
| if (manifest.size === 0) | ||
| return code; | ||
| const toHashed = (spec) => { | ||
| if (!spec.startsWith(LIB_URL_PREFIX)) | ||
| return null; | ||
| const rel = spec.slice(LIB_URL_PREFIX.length); | ||
| const jsRel = rel.replace(/\.(ts|tsx|mts)$/u, '.js'); | ||
| const hashed = manifest.get(jsRel) ?? manifest.get(`${rel}.js`) ?? manifest.get(rel); | ||
| return hashed ? `${LIB_URL_PREFIX}${hashed}` : null; | ||
| }; | ||
| let out = code; | ||
| out = out.replace(/from\s*['"](\/_nexus\/lib\/[^'"]+)['"]/gu, (full, spec) => { | ||
| const h = toHashed(spec); | ||
| return h && h !== spec ? `from ${JSON.stringify(h)}` : full; | ||
| }); | ||
| out = out.replace(/import\s*\(\s*['"](\/_nexus\/lib\/[^'"]+)['"]\s*\)/gu, (full, spec) => { | ||
| const h = toHashed(spec); | ||
| return h && h !== spec ? `import(${JSON.stringify(h)})` : full; | ||
| }); | ||
| out = out.replace(/import\s*['"](\/_nexus\/lib\/[^'"]+)['"]/gu, (full, spec) => { | ||
| const h = toHashed(spec); | ||
| return h && h !== spec ? `import ${JSON.stringify(h)}` : full; | ||
| }); | ||
| return out; | ||
| } | ||
| async function applyLibManifestToAllLibOutputFiles(libOutDir, manifest) { | ||
| if (manifest.size === 0) | ||
| return; | ||
| async function walk(dir) { | ||
| const out = []; | ||
| const es = await readdir(dir, { withFileTypes: true }); | ||
| for (const e of es) { | ||
| const p = join(dir, e.name); | ||
| if (e.isDirectory()) { | ||
| out.push(...(await walk(p))); | ||
| } | ||
| else if (e.isFile() && e.name.endsWith('.js') && !e.name.endsWith('.map')) { | ||
| out.push(p); | ||
| } | ||
| } | ||
| return out; | ||
| } | ||
| const files = await walk(libOutDir); | ||
| for (const f of files) { | ||
| const t = await readFile(f, 'utf-8'); | ||
| const nxt = applyLibManifestToClientCode(t, manifest); | ||
| if (nxt !== t) { | ||
| await writeFile(f, nxt, 'utf-8'); | ||
| } | ||
| } | ||
| } | ||
| /** | ||
| * Bundle all `$lib` files imported by island client scripts into | ||
| * `<outDir>/lib/`, tree-shaking unused exports and content-hashing each file. | ||
| */ | ||
| export async function bundleIslandLib(appRoot, outDir, clientCodes) { | ||
| if (clientCodes.length === 0) | ||
| return { files: 0, manifest: new Map() }; | ||
| const root = normalize(appRoot); | ||
| const nexusLibDir = join(root, '.nexus', 'lib'); | ||
| const libOutDir = join(outDir, 'lib'); | ||
| const collected = collectLibUsage(clientCodes, nexusLibDir); | ||
| if (collected.size === 0) | ||
| return { files: 0, manifest: new Map() }; | ||
| const usageMap = await expandLibUsageWithTransitiveDeps(nexusLibDir, collected); | ||
| let esbuildBuild = null; | ||
| try { | ||
| const mod = await import('esbuild'); | ||
| esbuildBuild = mod.build; | ||
| } | ||
| catch { /* esbuild not available — use fallback */ } | ||
| if (!esbuildBuild) { | ||
| return bundleIslandLibFallback(nexusLibDir, libOutDir, usageMap); | ||
| } | ||
| const build = esbuildBuild; | ||
| const manifest = new Map(); | ||
| const tasks = [...usageMap.entries()].map(async ([canon, usage]) => { | ||
| const actualFile = resolveInNexusLib(nexusLibDir, canon); | ||
| if (!actualFile) | ||
| return false; | ||
| const syntheticEntry = buildSyntheticEntry(actualFile, usage); | ||
| if (!syntheticEntry) | ||
| return false; | ||
| // Use a deterministic outfile path for esbuild to name the .map file. | ||
| // We use write:false to capture content before writing hashed filenames. | ||
| const tmpOutPath = join(libOutDir, canon); | ||
| await mkdir(dirname(tmpOutPath), { recursive: true }); | ||
| let outputFiles; | ||
| try { | ||
| const result = await build({ | ||
| stdin: { | ||
| contents: syntheticEntry, | ||
| resolveDir: dirname(actualFile), | ||
| loader: 'js', | ||
| }, | ||
| bundle: true, | ||
| treeShaking: true, | ||
| minify: true, | ||
| sourcemap: true, | ||
| format: 'esm', | ||
| outfile: tmpOutPath, | ||
| write: false, | ||
| plugins: [ | ||
| { | ||
| name: 'nexus-lib-resolver', | ||
| setup(b) { | ||
| b.onResolve({ filter: /^\$lib\// }, args => { | ||
| const rel = args.path.slice('$lib/'.length); | ||
| const resolved = resolveInNexusLib(nexusLibDir, rel); | ||
| return resolved | ||
| ? { path: resolved } | ||
| : { path: args.path, external: true }; | ||
| }); | ||
| b.onResolve({ filter: /^\/_nexus\// }, args => ({ | ||
| path: args.path, | ||
| external: true, | ||
| })); | ||
| }, | ||
| }, | ||
| ], | ||
| }); | ||
| outputFiles = result.outputFiles; | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| const jsFile = outputFiles.find(f => !f.path.endsWith('.map')); | ||
| const mapFile = outputFiles.find(f => f.path.endsWith('.map')); | ||
| if (!jsFile) | ||
| return false; | ||
| // Hash the JS content to produce the versioned filename. | ||
| const hash = contentHash(jsFile.text); | ||
| const hashedCanon = insertHash(canon, hash); | ||
| const hashedPath = join(libOutDir, hashedCanon); | ||
| // Fix the sourceMappingURL comment: `date.js.map` → `date.<hash>.js.map`. | ||
| const jsText = jsFile.text.replace(/\/\/# sourceMappingURL=.+$/mu, `//# sourceMappingURL=${basename(hashedCanon)}.map`); | ||
| await writeFile(hashedPath, jsText, 'utf-8'); | ||
| if (mapFile) { | ||
| // Update the `"file"` field inside the source map JSON. | ||
| let mapText = mapFile.text; | ||
| try { | ||
| const mapJson = JSON.parse(mapText); | ||
| mapJson.file = basename(hashedCanon); | ||
| mapText = JSON.stringify(mapJson); | ||
| } | ||
| catch { /* leave unchanged if not valid JSON */ } | ||
| await writeFile(`${hashedPath}.map`, mapText, 'utf-8'); | ||
| } | ||
| manifest.set(canon, hashedCanon); | ||
| return true; | ||
| }); | ||
| const results = await Promise.all(tasks); | ||
| await applyLibManifestToAllLibOutputFiles(libOutDir, manifest); | ||
| return { files: results.filter(Boolean).length, manifest }; | ||
| } | ||
| // ─── Fallback (no esbuild) ──────────────────────────────────────────────────── | ||
| async function bundleIslandLibFallback(nexusLibDir, libOutDir, usageMap) { | ||
| const { readFile } = await import('node:fs/promises'); | ||
| const { resolve } = await import('node:path'); | ||
| const TRANSITIVE_RE = /from\s*['"](\$lib\/[^'"]+|\.\.?\/[^'"]+)['"]/gu; | ||
| const queue = [...usageMap.keys()]; | ||
| const visited = new Set(queue); | ||
| const manifest = new Map(); | ||
| let written = 0; | ||
| while (queue.length > 0) { | ||
| const canon = queue.pop(); | ||
| const srcFile = resolveInNexusLib(nexusLibDir, canon); | ||
| if (!srcFile) | ||
| continue; | ||
| const raw = await readFile(srcFile, 'utf-8'); | ||
| const fileDir = dirname(srcFile); | ||
| const rewritten = raw.replace(TRANSITIVE_RE, (full, spec) => { | ||
| let targetFile = null; | ||
| if (spec.startsWith('$lib/')) { | ||
| targetFile = resolveInNexusLib(nexusLibDir, spec.slice('$lib/'.length)); | ||
| } | ||
| else { | ||
| const abs = resolve(fileDir, spec); | ||
| const relAbs = relative(nexusLibDir, abs); | ||
| if (!relAbs.startsWith('..')) | ||
| targetFile = resolveInNexusLib(nexusLibDir, relAbs); | ||
| } | ||
| if (!targetFile) | ||
| return full; | ||
| const depCanon = canonicalRel(nexusLibDir, targetFile); | ||
| if (!visited.has(depCanon)) { | ||
| visited.add(depCanon); | ||
| queue.push(depCanon); | ||
| } | ||
| return `from "${LIB_URL_PREFIX}${depCanon}"`; | ||
| }); | ||
| const hash = contentHash(rewritten); | ||
| const hashedCanon = insertHash(canon, hash); | ||
| const outPath = join(libOutDir, hashedCanon); | ||
| await mkdir(dirname(outPath), { recursive: true }); | ||
| await writeFile(outPath, rewritten, 'utf-8'); | ||
| manifest.set(canon, hashedCanon); | ||
| written++; | ||
| } | ||
| await applyLibManifestToAllLibOutputFiles(libOutDir, manifest); | ||
| return { files: written, manifest }; | ||
| } | ||
| //# sourceMappingURL=bundle-island-lib.js.map |
| {"version":3,"file":"bundle-island-lib.js","sourceRoot":"","sources":["../src/bundle-island-lib.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=bundle-island-lib.test.d.ts.map |
| {"version":3,"file":"bundle-island-lib.test.d.ts","sourceRoot":"","sources":["../src/bundle-island-lib.test.ts"],"names":[],"mappings":""} |
| import { mkdtemp, rm, writeFile, mkdir, readFile } from 'node:fs/promises'; | ||
| import { join } from 'node:path'; | ||
| import { tmpdir } from 'node:os'; | ||
| import { afterEach, beforeEach, describe, expect, it } from 'vitest'; | ||
| import { applyLibManifestToClientCode, bundleIslandLib } from './bundle-island-lib.js'; | ||
| describe('applyLibManifestToClientCode', () => { | ||
| it('rewrites from, import(), and side-effect import to hashed /_nexus/lib URLs', () => { | ||
| const manifest = new Map([ | ||
| ['a.js', 'a.01020304.js'], | ||
| ]); | ||
| const src = ` | ||
| import { x } from '/_nexus/lib/a.js'; | ||
| import('/_nexus/lib/a.js'); | ||
| import '/_nexus/lib/a.js'; | ||
| `; | ||
| const out = applyLibManifestToClientCode(src, manifest); | ||
| expect(out).toContain('from "/_nexus/lib/a.01020304.js"'); | ||
| expect(out).toContain('import("/_nexus/lib/a.01020304.js")'); | ||
| expect(out).toContain('import "/_nexus/lib/a.01020304.js"'); | ||
| }); | ||
| }); | ||
| describe('bundleIslandLib (integration)', () => { | ||
| let root; | ||
| beforeEach(async () => { | ||
| root = await mkdtemp(join(tmpdir(), 'nexus-bil-')); | ||
| }); | ||
| afterEach(async () => { | ||
| await rm(root, { recursive: true, force: true }); | ||
| }); | ||
| it('discovers transitive $lib/relative deps and rewrites unhashed /_nexus/lib refs in per-chunk output', async () => { | ||
| const nexusLib = join(root, '.nexus', 'lib'); | ||
| const outDir = join(root, '.nexus', 'output'); | ||
| await mkdir(nexusLib, { recursive: true }); | ||
| await writeFile(join(nexusLib, 'dep.js'), 'export const z = 1;\n', 'utf-8'); | ||
| await writeFile(join(nexusLib, 'entry.js'), "import { z } from '/_nexus/lib/dep.js';\nexport const a = z;\n", 'utf-8'); | ||
| const island = "import { a } from '/_nexus/lib/entry.js';\nconsole.log(a);\n"; | ||
| const { manifest, files } = await bundleIslandLib(root, outDir, [island]); | ||
| expect(files).toBeGreaterThanOrEqual(2); | ||
| expect(manifest.has('dep.js')).toBe(true); | ||
| expect(manifest.has('entry.js')).toBe(true); | ||
| const entryHashed = manifest.get('entry.js'); | ||
| const depHashed = manifest.get('dep.js'); | ||
| expect(entryHashed).toBeDefined(); | ||
| expect(depHashed).toBeDefined(); | ||
| const entryPath = join(outDir, 'lib', entryHashed); | ||
| const text = await readFile(entryPath, 'utf-8'); | ||
| // Post-pass: internal ref to dep must use the hashed dep filename, not raw dep.js | ||
| expect(text).toContain(`/_nexus/lib/${depHashed ?? ''}`); | ||
| expect(text).not.toMatch(/['"]\/_nexus\/lib\/dep\.js['"]/); | ||
| }); | ||
| it('does not attribute /_nexus/rt/island.js bindings to a $lib file (0.9.11 collectLibUsage)', async () => { | ||
| const nexusLib = join(root, '.nexus', 'lib'); | ||
| const outDir = join(root, '.nexus', 'output'); | ||
| await mkdir(nexusLib, { recursive: true }); | ||
| await writeFile(join(nexusLib, 'auth-client.js'), 'export const AUTH_KEY = 1; export const readStoredAuth = () => null; export const AUTH_CHANGED = "e";\n', 'utf-8'); | ||
| const island = `import { createIsland, $state, $derived, $effect, $pretext } from '/_nexus/rt/island.js'; | ||
| import { readStoredAuth, AUTH_KEY } from '/_nexus/lib/auth-client.js'; | ||
| export function mount() { return 0; } | ||
| `; | ||
| const { files } = await bundleIslandLib(root, outDir, [island]); | ||
| expect(files).toBe(1); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=bundle-island-lib.test.js.map |
| {"version":3,"file":"bundle-island-lib.test.js","sourceRoot":"","sources":["../src/bundle-island-lib.test.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Compile `src/lib/**\/*.ts` → `.nexus/lib/**\/*.js` for production deployment. | ||
| * | ||
| * `nexus build` calls this before writing route server modules so that the | ||
| * absolute `file://…/.nexus/lib/*.js` URLs embedded in those modules resolve at | ||
| * runtime without a TypeScript loader. | ||
| * | ||
| * Uses TypeScript's `transpileModule` (no type-checking, pure syntax transform) | ||
| * so it is fast and needs no tsconfig in the user's project. | ||
| */ | ||
| /** | ||
| * Transpile every `.ts` / `.tsx` / `.mts` file under `<appRoot>/src/lib/` to | ||
| * ESM JavaScript and write the output to `<appRoot>/.nexus/lib/`. | ||
| * | ||
| * Returns the number of files compiled. | ||
| */ | ||
| export declare function compileLib(appRoot: string): Promise<{ | ||
| files: number; | ||
| }>; | ||
| //# sourceMappingURL=compile-lib.d.ts.map |
| {"version":3,"file":"compile-lib.d.ts","sourceRoot":"","sources":["../src/compile-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4BH;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsC5E"} |
| /** | ||
| * Compile `src/lib/**\/*.ts` → `.nexus/lib/**\/*.js` for production deployment. | ||
| * | ||
| * `nexus build` calls this before writing route server modules so that the | ||
| * absolute `file://…/.nexus/lib/*.js` URLs embedded in those modules resolve at | ||
| * runtime without a TypeScript loader. | ||
| * | ||
| * Uses TypeScript's `transpileModule` (no type-checking, pure syntax transform) | ||
| * so it is fast and needs no tsconfig in the user's project. | ||
| */ | ||
| import ts from 'typescript'; | ||
| import { existsSync } from 'node:fs'; | ||
| import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises'; | ||
| import { dirname, join, relative } from 'node:path'; | ||
| const TS_SOURCE_RE = /\.(ts|tsx|mts)$/u; | ||
| async function walkTsFiles(dir) { | ||
| const out = []; | ||
| let entries; | ||
| try { | ||
| entries = await readdir(dir, { withFileTypes: true }); | ||
| } | ||
| catch { | ||
| return out; | ||
| } | ||
| for (const e of entries) { | ||
| const p = join(dir, e.name); | ||
| if (e.isDirectory()) { | ||
| out.push(...(await walkTsFiles(p))); | ||
| } | ||
| else if (TS_SOURCE_RE.test(e.name) && !e.name.endsWith('.d.ts')) { | ||
| out.push(p); | ||
| } | ||
| } | ||
| return out; | ||
| } | ||
| /** | ||
| * Transpile every `.ts` / `.tsx` / `.mts` file under `<appRoot>/src/lib/` to | ||
| * ESM JavaScript and write the output to `<appRoot>/.nexus/lib/`. | ||
| * | ||
| * Returns the number of files compiled. | ||
| */ | ||
| export async function compileLib(appRoot) { | ||
| const libDir = join(appRoot, 'src', 'lib'); | ||
| if (!existsSync(libDir)) | ||
| return { files: 0 }; | ||
| const outDir = join(appRoot, '.nexus', 'lib'); | ||
| await mkdir(outDir, { recursive: true }); | ||
| const tsFiles = await walkTsFiles(libDir); | ||
| if (tsFiles.length === 0) | ||
| return { files: 0 }; | ||
| const compilerOptions = { | ||
| target: ts.ScriptTarget.ESNext, | ||
| module: ts.ModuleKind.ESNext, | ||
| moduleResolution: ts.ModuleResolutionKind.Bundler, | ||
| experimentalDecorators: true, | ||
| useDefineForClassFields: true, | ||
| verbatimModuleSyntax: false, | ||
| // No type-checking — pure syntax transform for speed. | ||
| isolatedModules: true, | ||
| // Don't emit `.d.ts` — these are runtime files only. | ||
| declaration: false, | ||
| }; | ||
| for (const tsFile of tsFiles) { | ||
| const source = await readFile(tsFile, 'utf-8'); | ||
| const result = ts.transpileModule(source, { compilerOptions }); | ||
| let js = result.outputText; | ||
| // transpileModule with Bundler resolution keeps .ts extensions in relative | ||
| // imports. Rewrite them to .js so browsers can resolve them at runtime. | ||
| js = js.replace(/from\s+(['"])\.([^'"]+)\.tsx?\1/g, 'from $1.$2.js$1'); | ||
| js = js.replace(/import\s+(['"])\.([^'"]+)\.tsx?\1/g, 'import $1.$2.js$1'); | ||
| const relPath = relative(libDir, tsFile); | ||
| const outPath = join(outDir, relPath.replace(TS_SOURCE_RE, '.js')); | ||
| await mkdir(dirname(outPath), { recursive: true }); | ||
| await writeFile(outPath, js, 'utf-8'); | ||
| } | ||
| return { files: tsFiles.length }; | ||
| } | ||
| //# sourceMappingURL=compile-lib.js.map |
| {"version":3,"file":"compile-lib.js","sourceRoot":"","sources":["../src/compile-lib.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=css-scope.test.d.ts.map |
| {"version":3,"file":"css-scope.test.d.ts","sourceRoot":"","sources":["../src/css-scope.test.ts"],"names":[],"mappings":""} |
| import { describe, expect, it } from 'vitest'; | ||
| import { scopeCSS, scopeTemplate, componentHash } from './css-scope.js'; | ||
| describe('componentHash', () => { | ||
| it('produces a stable 6-char hex hash', () => { | ||
| const h1 = componentHash('/src/routes/+layout.nx'); | ||
| const h2 = componentHash('/src/routes/+layout.nx'); | ||
| expect(h1).toBe(h2); | ||
| expect(h1).toMatch(/^[0-9a-f]{6}$/); | ||
| }); | ||
| }); | ||
| describe('scopeCSS', () => { | ||
| it('scopes regular class selectors', () => { | ||
| const result = scopeCSS('.card { color: red; }', '/src/test.nx'); | ||
| expect(result.css).toContain(`[data-nx="${result.hash}"] .card, [data-nx="${result.hash}"].card`); | ||
| expect(result.css).toContain('color: red'); | ||
| expect(result.css).toContain('@layer nexus.scoped'); | ||
| expect(result.classes.has('card')).toBe(true); | ||
| }); | ||
| it('does not scope :root', () => { | ||
| const result = scopeCSS(':root { --x: 1; }', '/src/test.nx'); | ||
| expect(result.css).toContain(':root { --x: 1; }'); | ||
| expect(result.css).not.toContain(`[data-nx="${result.hash}"]:root`); | ||
| }); | ||
| it('does not scope html, body, or *', () => { | ||
| const result = scopeCSS('html { font-size: 16px; }\nbody { margin: 0; }\n* { box-sizing: border-box; }', '/src/test.nx'); | ||
| expect(result.css).toContain('html { font-size: 16px; }'); | ||
| expect(result.css).toContain('body { margin: 0; }'); | ||
| expect(result.css).toContain('* { box-sizing: border-box; }'); | ||
| expect(result.css).not.toContain(`[data-nx="${result.hash}"] html`); | ||
| expect(result.css).not.toContain(`[data-nx="${result.hash}"] body`); | ||
| expect(result.css).not.toContain(`[data-nx="${result.hash}"] *`); | ||
| }); | ||
| it('passes through @import rules', () => { | ||
| const result = scopeCSS("@import url('fonts.css');\n.card { color: red; }", '/src/test.nx'); | ||
| expect(result.css).toContain("@import url('fonts.css');"); | ||
| expect(result.css).toContain(`[data-nx="${result.hash}"] .card, [data-nx="${result.hash}"].card`); | ||
| }); | ||
| it('passes through @charset and @namespace', () => { | ||
| const result = scopeCSS('@charset "UTF-8";\n@namespace svg url(http://www.w3.org/2000/svg);\n.card {}', '/src/test.nx'); | ||
| expect(result.css).toContain('@charset "UTF-8";'); | ||
| expect(result.css).toContain('@namespace svg url(http://www.w3.org/2000/svg);'); | ||
| }); | ||
| it('unwraps full :global(...) selectors without scoping', () => { | ||
| const result = scopeCSS(':global(.external) { color: blue; }', '/src/test.nx'); | ||
| expect(result.css).toContain('.external { color: blue; }'); | ||
| expect(result.css).not.toContain('[data-nx='); | ||
| }); | ||
| it('unwraps partial :global(...) while scoping the rest', () => { | ||
| const result = scopeCSS('.card :global(.external) { color: blue; }', '/src/test.nx'); | ||
| expect(result.css).toContain(`[data-nx="${result.hash}"] .card .external, [data-nx="${result.hash}"].card .external`); | ||
| expect(result.css).not.toContain(':global('); | ||
| }); | ||
| it('does not scope @keyframes', () => { | ||
| const result = scopeCSS('@keyframes fade { from { opacity: 0; } to { opacity: 1; } }', '/src/test.nx'); | ||
| expect(result.css).toContain('@keyframes fade {'); | ||
| expect(result.css).not.toContain('[data-nx='); | ||
| }); | ||
| it('scopes inside @media', () => { | ||
| const result = scopeCSS('@media (max-width: 600px) { .card { color: red; } }', '/src/test.nx'); | ||
| expect(result.css).toContain('@media (max-width: 600px) {'); | ||
| expect(result.css).toContain(`[data-nx="${result.hash}"] .card`); | ||
| }); | ||
| }); | ||
| describe('scopeTemplate', () => { | ||
| it('injects data-nx into root elements', () => { | ||
| const html = '<div class="card">Hello</div>'; | ||
| const out = scopeTemplate(html, 'a1b2c3'); | ||
| expect(out).toContain('data-nx="a1b2c3"'); | ||
| }); | ||
| it('skips html, head, body but scopes inner elements', () => { | ||
| const html = '<html><head></head><body><div>Hello</div></body></html>'; | ||
| const out = scopeTemplate(html, 'a1b2c3'); | ||
| expect(out).not.toContain('<html data-nx='); | ||
| expect(out).not.toContain('<body data-nx='); | ||
| expect(out).toContain('<div data-nx="a1b2c3">Hello</div>'); | ||
| }); | ||
| it('handles self-closing tags', () => { | ||
| const html = '<img src="x.jpg" />'; | ||
| const out = scopeTemplate(html, 'a1b2c3'); | ||
| expect(out).toContain('data-nx="a1b2c3"'); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=css-scope.test.js.map |
| {"version":3,"file":"css-scope.test.js","sourceRoot":"","sources":["../src/css-scope.test.ts"],"names":[],"mappings":"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"} |
| import type { CompileError, CompileWarning, SourceLocation } from './types.js'; | ||
| /** Extract a source snippet around a given line for framing. */ | ||
| export declare function extractFrame(source: string, loc: SourceLocation, padding?: number): string; | ||
| /** Pretty-print a CompileError for terminal output. */ | ||
| export declare function formatCompileError(err: CompileError, source?: string): string; | ||
| /** Pretty-print a CompileWarning for terminal output. */ | ||
| export declare function formatCompileWarning(warn: CompileWarning, file: string, source?: string): string; | ||
| /** Format an array of warnings into a single string. */ | ||
| export declare function formatWarnings(warnings: CompileWarning[], file: string, source?: string): string; | ||
| //# sourceMappingURL=error-formatter.d.ts.map |
| {"version":3,"file":"error-formatter.d.ts","sourceRoot":"","sources":["../src/error-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAa/E,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,SAAI,GAAG,MAAM,CAkBrF;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBhG;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhG"} |
| const c = { | ||
| reset: '\x1b[0m', | ||
| bold: '\x1b[1m', | ||
| dim: '\x1b[2m', | ||
| red: '\x1b[31m', | ||
| green: '\x1b[32m', | ||
| yellow: '\x1b[33m', | ||
| cyan: '\x1b[36m', | ||
| gray: '\x1b[90m', | ||
| }; | ||
| /** Extract a source snippet around a given line for framing. */ | ||
| export function extractFrame(source, loc, padding = 2) { | ||
| const lines = source.split('\n'); | ||
| const start = Math.max(0, loc.line - 1 - padding); | ||
| const end = Math.min(lines.length, loc.line + padding); | ||
| const out = []; | ||
| const gutterWidth = String(end).length; | ||
| for (let i = start; i < end; i++) { | ||
| const lineNum = i + 1; | ||
| const isTarget = lineNum === loc.line; | ||
| const gutter = `${isTarget ? c.red : c.gray}${String(lineNum).padStart(gutterWidth)}${c.reset}`; | ||
| out.push(` ${gutter} ${c.dim}|${c.reset} ${lines[i] ?? ''}`); | ||
| if (isTarget) { | ||
| const caret = ' '.repeat(loc.column) + c.red + '^' + c.reset; | ||
| out.push(` ${' '.repeat(gutterWidth)} ${c.dim}|${c.reset} ${caret}`); | ||
| } | ||
| } | ||
| return out.join('\n'); | ||
| } | ||
| /** Pretty-print a CompileError for terminal output. */ | ||
| export function formatCompileError(err, source) { | ||
| const lines = [ | ||
| ` ${c.red}${c.bold}✖ ${err.code}${c.reset} ${err.message}`, | ||
| ` ${c.gray}${err.file}${err.loc ? `:${err.loc.line}:${err.loc.column}` : ''}${c.reset}`, | ||
| ]; | ||
| if (err.frame) { | ||
| lines.push('', err.frame); | ||
| } | ||
| else if (source && err.loc) { | ||
| lines.push('', extractFrame(source, err.loc)); | ||
| } | ||
| if (err.hint) { | ||
| lines.push('', ` ${c.cyan}Hint: ${err.hint}${c.reset}`); | ||
| } | ||
| return lines.join('\n'); | ||
| } | ||
| /** Pretty-print a CompileWarning for terminal output. */ | ||
| export function formatCompileWarning(warn, file, source) { | ||
| const isError = warn.severity === 'error'; | ||
| const color = isError ? c.red : c.yellow; | ||
| const prefix = isError ? '✖' : '⚠'; | ||
| const lines = [ | ||
| ` ${color}${prefix} ${warn.code ?? 'NX-WARN'}${c.reset} ${warn.message}`, | ||
| ` ${c.gray}${file}${warn.loc ? `:${warn.loc.line}:${warn.loc.column}` : ''}${c.reset}`, | ||
| ]; | ||
| if (source && warn.loc) { | ||
| lines.push('', extractFrame(source, warn.loc, 1)); | ||
| } | ||
| if (warn.hint) { | ||
| lines.push(` ${c.cyan}Hint: ${warn.hint}${c.reset}`); | ||
| } | ||
| return lines.join('\n'); | ||
| } | ||
| /** Format an array of warnings into a single string. */ | ||
| export function formatWarnings(warnings, file, source) { | ||
| return warnings.map((w) => formatCompileWarning(w, file, source)).join('\n\n'); | ||
| } | ||
| //# sourceMappingURL=error-formatter.js.map |
| {"version":3,"file":"error-formatter.js","sourceRoot":"","sources":["../src/error-formatter.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=index.test.d.ts.map |
| {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""} |
| import { describe, it, expect } from 'vitest'; | ||
| import { compile, formatCompileError, formatCompileWarning, extractFrame, offsetToLineColumn } from './index.js'; | ||
| import { CompileError } from './types.js'; | ||
| describe('compile() integration', () => { | ||
| it('returns compiled result for valid .nx', () => { | ||
| const source = `---\nconst title = 'Hello';\n---\n<h1>{title}</h1>`; | ||
| const result = compile(source, 'src/routes/+page.nx'); | ||
| expect(result.serverCode).toContain('export async function render(ctx)'); | ||
| expect(result.css).toBeNull(); | ||
| }); | ||
| it('includes parser warnings with line:col locations', () => { | ||
| const source = `---\nconst x = createAction(async () => {})\n---\n<p>hi</p>`; | ||
| const result = compile(source, 'src/routes/+page.nx'); | ||
| const warn = result.warnings.find((w) => w.code === 'NX-001'); | ||
| expect(warn).toBeDefined(); | ||
| expect(warn.message).toContain('use server'); | ||
| expect(warn.loc).toBeDefined(); | ||
| expect(warn.loc.line).toBeGreaterThanOrEqual(1); | ||
| }); | ||
| it('includes guard warnings for secrets in client scripts', () => { | ||
| const source = `<script>\n const key = process.env.API_KEY;\n</script>\n<p>hi</p>`; | ||
| const result = compile(source, 'src/routes/+page.nx'); | ||
| const guardWarn = result.warnings.find((w) => w.code?.startsWith('NX-GUARD')); | ||
| expect(guardWarn).toBeDefined(); | ||
| expect(guardWarn.severity).toBe('error'); | ||
| expect(guardWarn.loc).toBeDefined(); | ||
| }); | ||
| it('deduplicates overlapping warnings', () => { | ||
| const source = `<script>\n const key = process.env.API_KEY;\n</script>\n<p>hi</p>`; | ||
| const result = compile(source, 'src/routes/+page.nx'); | ||
| const codes = result.warnings.map((w) => `${w.code}:${w.loc?.line ?? 0}`); | ||
| expect(new Set(codes).size).toBe(codes.length); | ||
| }); | ||
| it('throws CompileError for unclosed {#if}', () => { | ||
| const source = `{#if true}\n <p>hello</p>`; | ||
| expect(() => compile(source, 'src/routes/+page.nx')).toThrow(CompileError); | ||
| try { | ||
| compile(source, 'src/routes/+page.nx'); | ||
| } | ||
| catch (err) { | ||
| expect(err).toBeInstanceOf(CompileError); | ||
| expect(err.code).toBe('NX-101'); | ||
| expect(err.file).toBe('src/routes/+page.nx'); | ||
| expect(err.loc).toBeDefined(); | ||
| expect(err.hint).toContain('matching'); | ||
| } | ||
| }); | ||
| it('throws CompileError for unclosed {#each}', () => { | ||
| const source = `{#each items as item}\n <p>{item}</p>`; | ||
| expect(() => compile(source, 'src/routes/+page.nx')).toThrow(CompileError); | ||
| try { | ||
| compile(source, 'src/routes/+page.nx'); | ||
| } | ||
| catch (err) { | ||
| expect(err).toBeInstanceOf(CompileError); | ||
| expect(err.code).toBe('NX-104'); | ||
| } | ||
| }); | ||
| it('throws CompileError for malformed {#each} syntax', () => { | ||
| const source = `{#each items}\n <p>no alias</p>\n{/each}`; | ||
| expect(() => compile(source, 'src/routes/+page.nx')).toThrow(CompileError); | ||
| try { | ||
| compile(source, 'src/routes/+page.nx'); | ||
| } | ||
| catch (err) { | ||
| expect(err).toBeInstanceOf(CompileError); | ||
| expect(err.code).toBe('NX-103'); | ||
| expect(err.hint).toContain('as item'); | ||
| } | ||
| }); | ||
| }); | ||
| describe('offsetToLineColumn', () => { | ||
| it('returns line 1 col 0 for offset 0', () => { | ||
| expect(offsetToLineColumn('abc', 0)).toEqual({ line: 1, column: 0 }); | ||
| }); | ||
| it('counts newlines correctly', () => { | ||
| const source = 'line1\nline2\nline3'; | ||
| expect(offsetToLineColumn(source, 6)).toEqual({ line: 2, column: 0 }); | ||
| expect(offsetToLineColumn(source, 12)).toEqual({ line: 3, column: 0 }); | ||
| }); | ||
| it('handles empty string', () => { | ||
| expect(offsetToLineColumn('', 0)).toEqual({ line: 1, column: 0 }); | ||
| }); | ||
| }); | ||
| describe('extractFrame', () => { | ||
| it('shows source snippet with caret', () => { | ||
| const source = 'line1\nline2\nline3'; | ||
| const frame = extractFrame(source, { line: 2, column: 1 }, 1); | ||
| expect(frame).toContain('line2'); | ||
| expect(frame).toContain('^'); | ||
| }); | ||
| }); | ||
| describe('formatCompileError', () => { | ||
| it('includes code, message, file, and hint', () => { | ||
| const err = new CompileError({ | ||
| code: 'NX-999', | ||
| message: 'Something broke', | ||
| file: 'src/routes/+page.nx', | ||
| loc: { line: 5, column: 10 }, | ||
| hint: 'Try fixing it', | ||
| }); | ||
| const formatted = formatCompileError(err); | ||
| expect(formatted).toContain('NX-999'); | ||
| expect(formatted).toContain('Something broke'); | ||
| expect(formatted).toContain('src/routes/+page.nx:5:10'); | ||
| expect(formatted).toContain('Try fixing it'); | ||
| // ANSI colors for DX | ||
| expect(formatted).toMatch(/\x1b\[[0-9;]*m/); | ||
| }); | ||
| }); | ||
| describe('compile() with external islands', () => { | ||
| it('preserves external island markup and emits correct data-nexus-component', () => { | ||
| const source = `<nexus-island client:load src="$lib/islands/menu.ts"><button>Menu</button></nexus-island>`; | ||
| const result = compile(source, 'src/routes/+page.nx', { appRoot: '/app' }); | ||
| expect(result.serverCode).toContain('data-nexus-component="/_nexus/lib/islands/menu.js"'); | ||
| expect(result.serverCode).toContain('<button>Menu</button>'); | ||
| expect(result.serverCode).not.toMatch(/<nexus-island[^>]*\sclient:load/); | ||
| }); | ||
| }); | ||
| describe('formatCompileWarning', () => { | ||
| it('formats warnings with source frame', () => { | ||
| const warn = { | ||
| code: 'NX-WARN', | ||
| severity: 'warning', | ||
| message: 'Deprecated pattern', | ||
| loc: { line: 2, column: 0 }, | ||
| hint: 'Use new syntax', | ||
| }; | ||
| const source = 'line1\nold\nline3'; | ||
| const formatted = formatCompileWarning(warn, 'src/routes/+page.nx', source); | ||
| expect(formatted).toContain('Deprecated pattern'); | ||
| expect(formatted).toContain('Use new syntax'); | ||
| expect(formatted).toContain('old'); | ||
| // ANSI colors | ||
| expect(formatted).toMatch(/\x1b\[[0-9;]*m/); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=index.test.js.map |
| {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=parser.test.d.ts.map |
| {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../src/parser.test.ts"],"names":[],"mappings":""} |
| import { describe, expect, it } from 'vitest'; | ||
| import { parse } from './parser.js'; | ||
| describe('parse', () => { | ||
| it('parses a basic .nx file', () => { | ||
| const source = `--- | ||
| const x = 1; | ||
| --- | ||
| <script> | ||
| let count = 0; | ||
| </script> | ||
| <h1>Hello</h1> | ||
| <style> | ||
| h1 { color: red; } | ||
| </style> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.frontmatter?.content).toContain('const x = 1;'); | ||
| expect(result.script?.content).toContain('let count = 0;'); | ||
| expect(result.style?.content).toContain('h1 { color: red; }'); | ||
| expect(result.template.content).toContain('<h1>Hello</h1>'); | ||
| expect(result.template.content).not.toContain('<script>'); | ||
| expect(result.template.content).not.toContain('<style>'); | ||
| }); | ||
| it('parses multiple <script> blocks', () => { | ||
| const source = `<script> | ||
| let a = 1; | ||
| </script> | ||
| <div>A</div> | ||
| <script> | ||
| let b = 2; | ||
| </script> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.script?.content).toContain('let a = 1;'); | ||
| expect(result.script?.content).toContain('let b = 2;'); | ||
| }); | ||
| it('parses multiple <style> blocks', () => { | ||
| const source = `<style> | ||
| .a { color: red; } | ||
| </style> | ||
| <div>A</div> | ||
| <style> | ||
| .b { color: blue; } | ||
| </style> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.style?.content).toContain('.a { color: red; }'); | ||
| expect(result.style?.content).toContain('.b { color: blue; }'); | ||
| }); | ||
| it('parses <style> without a leading newline', () => { | ||
| const source = `<style>.x { color: red; }</style> | ||
| <div>Hello</div> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.style?.content).toContain('.x { color: red; }'); | ||
| }); | ||
| it('parses <script> without a leading newline', () => { | ||
| const source = `<script>let x = 1;</script> | ||
| <div>Hello</div> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.script?.content).toContain('let x = 1;'); | ||
| }); | ||
| it('removes all script and style blocks from template', () => { | ||
| const source = `<script>let a = 1;</script> | ||
| <div>A</div> | ||
| <style>.a {}</style> | ||
| <script>let b = 2;</script> | ||
| <div>B</div> | ||
| <style>.b {}</style> | ||
| `; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.template.content).toContain('<div>A</div>'); | ||
| expect(result.template.content).toContain('<div>B</div>'); | ||
| expect(result.template.content).not.toContain('<script>'); | ||
| expect(result.template.content).not.toContain('<style>'); | ||
| }); | ||
| it('detects island directives on real tags', () => { | ||
| const source = `<div client:load>hello</div>`; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.islandDirectives).toHaveLength(1); | ||
| expect(result.islandDirectives[0]).toMatchObject({ directive: 'client:load', componentName: 'div' }); | ||
| }); | ||
| it('ignores client: inside attribute values (false-positive guard)', () => { | ||
| const source = `<div data-tip="use client:load for interactivity">hello</div>`; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.islandDirectives).toHaveLength(0); | ||
| }); | ||
| it('detects client:media with query', () => { | ||
| const source = `<div client:media="(max-width: 600px)">hello</div>`; | ||
| const result = parse(source, '/src/test.nx'); | ||
| expect(result.islandDirectives).toHaveLength(1); | ||
| expect(result.islandDirectives[0]).toMatchObject({ | ||
| directive: 'client:media', | ||
| componentName: 'div', | ||
| mediaQuery: '(max-width: 600px)', | ||
| }); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=parser.test.js.map |
| {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../src/parser.test.ts"],"names":[],"mappings":"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"} |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
2
-33.33%0
-100%202243
-38.33%71
-28.28%2797
-35.22%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed