hnxml include Hnxml Standard and hnxml.js
Hnxml Standard is a TypeScript-based XML schema specification for Hacknet
Extension, and it is defined by hnxml.js. hnxml.js provides JSX/TSX
compatible authoring support with types and additional generator tools for
Hacknet-related content generating.
Note: This project is in heavy development and is not ready for production
use.
Example: PCS-OS
You can access Hnxml Standard through:
hnxml.js with TSXAdd package @modernschoolproject/hnxml. Check
the hnxml JSR package page to
see how to install JSR packages using other package managers.
deno add jsr:@modernschoolproject/hnxml # deno
npx jsr add @modernschoolproject/hnxml # npm
pnpm i jsr:@modernschoolproject/hnxml # pnpm
Edit compilerOptions in tsconfig.json or deno.json
{
"compilerOption": {
"jsx": "react-jsx",
"jsxImportSource": "@modernschoolproject/hnxml"
}
}
Then create a .jsx or .tsx file and import render from hnxml/jsx. For
example:
// main.tsx
import { render } from "@modernschoolproject/hnxml/jsx";
console.log(
render(
<mission
id="missionID"
activeCheck="true"
shouldIgnoreSenderVerification="true"
>
...
</mission>,
).end({
headless: true,
prettyPrint: true,
allowEmptyTags: false,
spaceBeforeSlash: true,
}),
);
Tips: you can use this way to set default XMLBuilderCreateOptions.
// render.ts
import { render as _render } from "hnxml/jsx";
import { JsxXmlElement } from "hnxml/jsx-runtime";
export function render(element: JsxXmlElement): string {
return _render(element).end({
headless: true,
prettyPrint: true,
allowEmptyTags: false,
spaceBeforeSlash: true,
});
}
// main.tsx
import { render } from "./render.ts";
console.log(
<mission
id="missionID"
activeCheck="true"
shouldIgnoreSenderVerification="true"
>
...
</mission>,
);