feat: support WRN imports and dynamic public shell
This commit is contained in:
@@ -56,6 +56,19 @@ component ThemeToggle {
|
||||
assert.equal(declaration.diagnostic, undefined);
|
||||
});
|
||||
|
||||
test("recognizes a WRN declaration after top-level imports", () => {
|
||||
const source = `import { appUrl } from "@wrnexus/helpers";
|
||||
import type { Context } from "@wrnexus/core";
|
||||
|
||||
page Home {
|
||||
view { <PublicHeader signInHref="{appUrl('sso', '/sign-in')}" /> }
|
||||
}`;
|
||||
const declaration = findTopLevelDeclaration({}, source);
|
||||
assert.equal(declaration.kind, "page");
|
||||
assert.equal(declaration.name, "Home");
|
||||
assert.equal(declaration.diagnostic, undefined);
|
||||
});
|
||||
|
||||
test("masks only leading trivia and preserves source offsets", () => {
|
||||
const source = "\uFEFF// Summary\r\npage Home {\n // member comment\n}";
|
||||
const masked = maskLeadingTrivia(source);
|
||||
|
||||
@@ -127,6 +127,13 @@ try {
|
||||
formatWrn(formatted, { insertSpaces: true, tabSize: 2 }) === formatted
|
||||
? ok("formatter is idempotent")
|
||||
: bad("formatter is idempotent");
|
||||
const imported = formatWrn(
|
||||
`import {\nappUrl,\nother\n} from "@wrnexus/helpers";\n\nlayout Public {\nview { <p>Hi</p> }\n}\n`,
|
||||
{ insertSpaces: true, tabSize: 2 },
|
||||
);
|
||||
imported.includes(`\nlayout Public {`) && formatWrn(imported, { tabSize: 2 }) === imported
|
||||
? ok("formatter preserves top-level imports")
|
||||
: bad("formatter preserves top-level imports");
|
||||
} catch (e) {
|
||||
bad("formatter loads", e.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user