Portable UI for NodeSecure tools (guides on flags, security docs etc..)
npm install @nodesecure/documentation-ui
@nodesecure/flags.
bash
$ npm i @nodesecure/documentation-ui
or
$ yarn add @nodesecure/documentation-ui
`
👀 Usage example
`js
// Import Third-party Dependencies
import * as documentationUI from "@nodesecure/documentation-ui";
document.addEventListener("DOMContentLoaded", async () => {
const documentRootElement = document.getElementById("whatever-you-want");
const wiki = documentationUI.render(documentRootElement, {
prefetch: true,
});
console.log(Available views: ${[...wiki.header.views.keys()].join(",")});
wiki.header.setNewActiveView("warnings");
// Note: you can also enumerate menus with wiki.navigation.warnings.menus.keys()
wiki.navigation.warnings.setNewActiveMenu("unsafe-stmt");
});
`
The render API take an options payload describe by the following TS interface:
`ts
export interface RenderDocumentationUIOptions {
/**
* Prefetch all flags and cache them
*
* @default true
*/
prefetch?: boolean;
}
`
$3
An incomplete example for esbuild.
`js
// Import Third-party Dependencies
import { getBuildConfiguration } from "@nodesecure/documentation-ui/node";
import esbuild from "esbuild";
// Note: all entry points for assets (css etc..).
const { entryPoints } = getBuildConfiguration();
await esbuild.build({
entryPoints: [...entryPoints],
});
`
API
$3
Render the documentation in the given root element.
`ts
export interface RenderResult {
header: Header;
navigation: {
flags: Navigation;
warnings: Navigation;
};
}
`
Header & Navigation definition
`ts
class Header {
active: HTMLElement;
views: Map;
defaultName: string | null;
setNewActiveView(name: string): void;
}
class Navigation {
active: HTMLElement;
menus: Map;
defaultName: string | null;
prefetch: boolean;
fetchCallback: (name: string, menu: HTMLElement) => any;
setNewActiveMenu(name: string): void;
}
`
How to contribute/work on this project
You can use the local example/ to work on any updates. Just use the example npm script:
`bash
$ npm ci
$ npm run example
`
`json
"scripts": {
"example": "npm run example:build && http-server ./dist",
"example:build": "node esbuild.config.js"
}
``
Gentilhomme 💻 📖 👀 🛡️ 🐛 |