diff --git a/package.json b/package.json index 0ee7da7..55ea480 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@sveltejs/adapter-auto": "^3.1.1", "@sveltejs/kit": "^2.4.3", "@types/markdown-it": "^13.0.7", + "@types/node": "^22.5.4", "@types/showdown": "^2.0.6", "autoprefixer": "^10.4.17", "eslint-plugin-svelte": "^2.35.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 686c501..72c7433 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 2.11.8 '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.2(svelte@4.2.19)(vite@5.4.2) + version: 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.8(tailwindcss@3.4.10) @@ -53,13 +53,16 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^3.1.1 - version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)) + version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))) '@sveltejs/kit': specifier: ^2.4.3 - version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2) + version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) '@types/markdown-it': specifier: ^13.0.7 version: 13.0.9 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 '@types/showdown': specifier: ^2.0.6 version: 2.0.6 @@ -107,7 +110,7 @@ importers: version: 5.5.4 vite: specifier: ^5.0.12 - version: 5.4.2 + version: 5.4.2(@types/node@22.5.4) packages: @@ -578,6 +581,9 @@ packages: '@types/mdurl@1.0.5': resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} @@ -2073,6 +2079,9 @@ packages: engines: {node: '>=0.8.0'} hasBin: true + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unxhr@1.2.0: resolution: {integrity: sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==} engines: {node: '>=8.11'} @@ -2542,14 +2551,14 @@ snapshots: '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 - '@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2))': + '@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))': dependencies: - '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)': + '@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -2563,28 +2572,28 @@ snapshots: sirv: 2.0.4 svelte: 4.2.19 tiny-glob: 0.2.9 - vite: 5.4.2 + vite: 5.4.2(@types/node@22.5.4) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) debug: 4.3.6 svelte: 4.2.19 - vite: 5.4.2 + vite: 5.4.2(@types/node@22.5.4) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2)': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)) debug: 4.3.6 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 svelte: 4.2.19 svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.4.2 - vitefu: 0.2.5(vite@5.4.2) + vite: 5.4.2(@types/node@22.5.4) + vitefu: 0.2.5(vite@5.4.2(@types/node@22.5.4)) transitivePeerDependencies: - supports-color @@ -2614,6 +2623,10 @@ snapshots: '@types/mdurl@1.0.5': {} + '@types/node@22.5.4': + dependencies: + undici-types: 6.19.8 + '@types/pug@2.0.10': {} '@types/resolve@1.20.2': {} @@ -4176,6 +4189,8 @@ snapshots: uglify-js@3.19.3: optional: true + undici-types@6.19.8: {} + unxhr@1.2.0: {} update-browserslist-db@1.1.0(browserslist@4.23.3): @@ -4196,17 +4211,18 @@ snapshots: util-deprecate@1.0.2: {} - vite@5.4.2: + vite@5.4.2(@types/node@22.5.4): dependencies: esbuild: 0.21.5 postcss: 8.4.44 rollup: 4.21.2 optionalDependencies: + '@types/node': 22.5.4 fsevents: 2.3.3 - vitefu@0.2.5(vite@5.4.2): + vitefu@0.2.5(vite@5.4.2(@types/node@22.5.4)): optionalDependencies: - vite: 5.4.2 + vite: 5.4.2(@types/node@22.5.4) void-elements@3.1.0: {} diff --git a/src/lib/parser.ts b/src/lib/parser.ts new file mode 100644 index 0000000..57ae5e6 --- /dev/null +++ b/src/lib/parser.ts @@ -0,0 +1,31 @@ +import { Asciidoctor, Document, Extensions, type ProcessorOptions } from 'asciidoctor'; + +class Pharos extends Asciidoctor { + private html?: string | Document; + + constructor() { + super(); + const pharos = this; + + this.Extensions.register(function () { + const registry = this; + registry.treeProcessor(function () { + const dsl = this; + dsl.process(function (document) { + const treeProcessor = this; + pharos.pharosTreeProcessor(treeProcessor, document); + }); + }) + }); + } + + parse(content: string, options?: ProcessorOptions | undefined): void { + this.html = this.convert(content, options) as string | Document | undefined; + this.Block + } + + private pharosTreeProcessor(treeProcessor: Extensions.TreeProcessor, document: Document) { + // Recursively map sections to their note kinds down to five levels of depth. + document.getSections(); + } +} \ No newline at end of file