hnxml.js
    Preparing search index...

    hnxml

    JSR Badge Github Badge

    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.

    Warning


    Note: This project is in heavy development and is not ready for production use.

    Example: PCS-OS

    You can access Hnxml Standard through:

    Add 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>,
    );