@wdprlib/render 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2332 -2032
- package/dist/index.d.cts +15 -13
- package/dist/index.d.ts +15 -13
- package/dist/index.js +2336 -2036
- package/package.json +5 -3
- package/src/context/attributes.ts +14 -0
- package/src/context/bibliography.ts +109 -0
- package/src/context/counters.ts +51 -0
- package/src/context/image-urls.ts +31 -0
- package/src/context/index.ts +285 -0
- package/src/context/output.ts +17 -0
- package/src/context/page-urls.ts +81 -0
- package/src/context/style-slots.ts +29 -0
- package/src/context/urls.ts +2 -0
- package/src/elements/bibliography/block.ts +27 -0
- package/src/elements/bibliography/cite.ts +23 -0
- package/src/elements/bibliography/ids.ts +9 -0
- package/src/elements/bibliography/index.ts +9 -0
- package/src/elements/clear-float.ts +27 -0
- package/src/elements/code/contents.ts +18 -0
- package/src/elements/code/index.ts +29 -0
- package/src/elements/collapsible/index.ts +31 -0
- package/src/elements/collapsible/labels.ts +35 -0
- package/src/elements/collapsible/link.ts +11 -0
- package/src/elements/collapsible/sections.ts +39 -0
- package/src/elements/color.ts +32 -0
- package/src/elements/container/attributes.ts +28 -0
- package/src/elements/container/header.ts +27 -0
- package/src/elements/container/index.ts +35 -0
- package/src/elements/container/string-container.ts +40 -0
- package/src/elements/container/string-types.ts +63 -0
- package/src/elements/container/wrappers.ts +32 -0
- package/src/elements/date/format.ts +20 -0
- package/src/elements/date/index.ts +34 -0
- package/src/elements/date/output.ts +6 -0
- package/src/elements/embed/iframe.ts +8 -0
- package/src/elements/embed/index.ts +28 -0
- package/src/elements/embed/providers.ts +43 -0
- package/src/elements/embed/validation.ts +15 -0
- package/src/elements/embed-block/allowlist.ts +60 -0
- package/src/elements/embed-block/boolean-attributes.ts +38 -0
- package/src/elements/embed-block/iframe.ts +33 -0
- package/src/elements/embed-block/index.ts +31 -0
- package/src/elements/embed-block/sanitize-config.ts +22 -0
- package/src/elements/embed-block/sanitize.ts +44 -0
- package/src/elements/expr/branch.ts +29 -0
- package/src/elements/expr/index.ts +63 -0
- package/src/elements/expr/result.ts +19 -0
- package/src/elements/footnote/body.ts +11 -0
- package/src/elements/footnote/index.ts +35 -0
- package/src/elements/footnote/ref.ts +16 -0
- package/src/elements/html/attributes.ts +24 -0
- package/src/elements/html/index.ts +39 -0
- package/src/elements/html/url.ts +19 -0
- package/src/elements/iframe/attributes.ts +28 -0
- package/src/elements/iframe/index.ts +22 -0
- package/src/elements/iftags/condition.ts +42 -0
- package/src/elements/iftags/index.ts +39 -0
- package/src/elements/iftags/style-slot.ts +23 -0
- package/src/elements/iftags/tokens.ts +36 -0
- package/src/elements/image/alignment.ts +44 -0
- package/src/elements/image/attributes.ts +10 -0
- package/src/elements/image/img-attributes.ts +26 -0
- package/src/elements/image/index.ts +36 -0
- package/src/elements/image/link-href.ts +24 -0
- package/src/elements/image/link.ts +13 -0
- package/src/elements/image/source.ts +16 -0
- package/src/elements/include/index.ts +35 -0
- package/src/elements/include/missing.ts +15 -0
- package/src/elements/index.ts +35 -0
- package/src/elements/line-break.ts +22 -0
- package/src/elements/link/anchor-name.ts +6 -0
- package/src/elements/link/anchor.ts +27 -0
- package/src/elements/link/attributes.ts +47 -0
- package/src/elements/link/index.ts +26 -0
- package/src/elements/link/label.ts +23 -0
- package/src/elements/link/target.ts +20 -0
- package/src/elements/list/attributes.ts +19 -0
- package/src/elements/list/definition-list.ts +16 -0
- package/src/elements/list/index.ts +48 -0
- package/src/elements/list/item-rendering.ts +38 -0
- package/src/elements/list/items.ts +61 -0
- package/src/elements/list/no-marker.ts +53 -0
- package/src/elements/list/paragraphs.ts +34 -0
- package/src/elements/list/trim.ts +38 -0
- package/src/elements/math/block.ts +29 -0
- package/src/elements/math/equation-ref.ts +12 -0
- package/src/elements/math/index.ts +14 -0
- package/src/elements/math/inline.ts +19 -0
- package/src/elements/math/latex.ts +27 -0
- package/src/elements/math/source.ts +18 -0
- package/src/elements/module/backlinks.ts +29 -0
- package/src/elements/module/categories.ts +27 -0
- package/src/elements/module/empty-container.ts +10 -0
- package/src/elements/module/index.ts +65 -0
- package/src/elements/module/join-markup.ts +10 -0
- package/src/elements/module/join.ts +28 -0
- package/src/elements/module/listpages.ts +27 -0
- package/src/elements/module/listusers.ts +27 -0
- package/src/elements/module/page-tree.ts +27 -0
- package/src/elements/module/rate-markup.ts +10 -0
- package/src/elements/module/rate.ts +35 -0
- package/src/elements/module/unknown.ts +11 -0
- package/src/elements/tab-view/ids.ts +16 -0
- package/src/elements/tab-view/index.ts +31 -0
- package/src/elements/tab-view/navigation.ts +15 -0
- package/src/elements/tab-view/panels.ts +16 -0
- package/src/elements/table/attributes.ts +23 -0
- package/src/elements/table/cell-attributes.ts +62 -0
- package/src/elements/table/cell.ts +13 -0
- package/src/elements/table/index.ts +27 -0
- package/src/elements/text/email.ts +20 -0
- package/src/elements/text/index.ts +11 -0
- package/src/elements/text/plain.ts +11 -0
- package/src/elements/text/raw.ts +20 -0
- package/src/elements/toc/body.ts +12 -0
- package/src/elements/toc/entries.ts +34 -0
- package/src/elements/toc/frame.ts +27 -0
- package/src/elements/toc/index.ts +17 -0
- package/src/elements/toc/link.ts +26 -0
- package/src/elements/user/index.ts +40 -0
- package/src/elements/user/markup.ts +34 -0
- package/src/elements/user/resolve.ts +6 -0
- package/src/escape/attribute-allowlists.ts +101 -0
- package/src/escape/attributes.ts +62 -0
- package/src/escape/css-color-functions.ts +18 -0
- package/src/escape/css-colors.ts +183 -0
- package/src/escape/css-danger.ts +22 -0
- package/src/escape/css-normalize.ts +54 -0
- package/src/escape/css-style.ts +78 -0
- package/src/escape/css-urls.ts +76 -0
- package/src/escape/css.ts +4 -0
- package/src/escape/email.ts +22 -0
- package/src/escape/html.ts +68 -0
- package/src/escape/index.ts +15 -0
- package/src/escape/url.ts +18 -0
- package/src/hash.ts +62 -0
- package/src/index.ts +26 -0
- package/src/libs/highlighter/engine/end-pattern.ts +26 -0
- package/src/libs/highlighter/engine/html.ts +19 -0
- package/src/libs/highlighter/engine/index.ts +3 -0
- package/src/libs/highlighter/engine/keywords.ts +22 -0
- package/src/libs/highlighter/engine/parts.ts +36 -0
- package/src/libs/highlighter/engine/preprocess.ts +10 -0
- package/src/libs/highlighter/engine/render.ts +31 -0
- package/src/libs/highlighter/engine/token.ts +7 -0
- package/src/libs/highlighter/engine/tokenizer.ts +266 -0
- package/src/libs/highlighter/engine/utils.ts +38 -0
- package/src/libs/highlighter/index.ts +70 -0
- package/src/libs/highlighter/languages/cpp.ts +345 -0
- package/src/libs/highlighter/languages/css.ts +104 -0
- package/src/libs/highlighter/languages/diff.ts +154 -0
- package/src/libs/highlighter/languages/dtd.ts +99 -0
- package/src/libs/highlighter/languages/html.ts +59 -0
- package/src/libs/highlighter/languages/java.ts +251 -0
- package/src/libs/highlighter/languages/javascript.ts +213 -0
- package/src/libs/highlighter/languages/php.ts +433 -0
- package/src/libs/highlighter/languages/python.ts +308 -0
- package/src/libs/highlighter/languages/ruby.ts +360 -0
- package/src/libs/highlighter/languages/sql.ts +125 -0
- package/src/libs/highlighter/languages/xml.ts +68 -0
- package/src/libs/highlighter/types.ts +44 -0
- package/src/render/collected-styles.ts +22 -0
- package/src/render/dispatch.ts +181 -0
- package/src/render/index.ts +28 -0
- package/src/render/primitives.ts +17 -0
- package/src/render/style-tag.ts +6 -0
- package/src/render/style.ts +15 -0
- package/src/types.ts +144 -0
package/dist/index.d.cts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { SyntaxTree as SyntaxTree2 } from "@wdprlib/ast";
|
|
2
|
-
import { Element, WikitextSettings } from "@wdprlib/ast";
|
|
2
|
+
import { Element as Element2, WikitextSettings as WikitextSettings2 } from "@wdprlib/ast";
|
|
3
3
|
/**
|
|
4
|
-
* Allowlist entry for embed content validation
|
|
5
|
-
* Each entry specifies a host pattern and optional path prefix
|
|
4
|
+
* Allowlist entry for embed content validation.
|
|
6
5
|
*/
|
|
7
6
|
interface EmbedAllowlistEntry {
|
|
8
|
-
/** Host pattern. Supports wildcard prefix
|
|
7
|
+
/** Host pattern. Supports wildcard prefix `*.` such as `*.youtube.com`. */
|
|
9
8
|
host: string;
|
|
10
|
-
/** Optional path prefix that must match
|
|
9
|
+
/** Optional path prefix that must match, such as `/embed/`. */
|
|
11
10
|
pathPrefix?: string;
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
14
|
-
* Default allowlist for embed content
|
|
15
|
-
* Only iframes with src matching these host+path patterns will be rendered.
|
|
13
|
+
* Default allowlist for embed content.
|
|
16
14
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* Set the render option to `null` to allow any HTTP(S) iframe while still using
|
|
16
|
+
* sanitizer and scheme validation.
|
|
19
17
|
*/
|
|
20
18
|
declare const DEFAULT_EMBED_ALLOWLIST: EmbedAllowlistEntry[] | null;
|
|
21
19
|
/**
|
|
@@ -30,10 +28,14 @@ declare const DEFAULT_EMBED_ALLOWLIST: EmbedAllowlistEntry[] | null;
|
|
|
30
28
|
interface PageContext {
|
|
31
29
|
/** Full page name including category prefix (e.g. `"secret:test2"`) */
|
|
32
30
|
pageName: string;
|
|
33
|
-
/** Site slug
|
|
31
|
+
/** Site slug for the current page (e.g. `"scp-wiki"`) */
|
|
34
32
|
site?: string;
|
|
35
|
-
/**
|
|
33
|
+
/** Current site domain used for absolute URL generation (e.g. `"scp-wiki.example.org"`) */
|
|
36
34
|
domain?: string;
|
|
35
|
+
/** Known domains for cross-site page references keyed by site slug. */
|
|
36
|
+
siteDomains?: Record<string, string>;
|
|
37
|
+
/** Resolve a cross-site page reference site slug to a domain. */
|
|
38
|
+
resolveSiteDomain?: (site: string) => string | null | undefined;
|
|
37
39
|
/**
|
|
38
40
|
* Returns whether a page exists on the site.
|
|
39
41
|
* When a target page does not exist, the renderer adds `class="newpage"`
|
|
@@ -116,7 +118,7 @@ interface RenderOptions {
|
|
|
116
118
|
* Context-dependent feature flags.
|
|
117
119
|
* Defaults to page-mode settings when omitted.
|
|
118
120
|
*/
|
|
119
|
-
settings?:
|
|
121
|
+
settings?: WikitextSettings2;
|
|
120
122
|
/** Page context for resolving relative links, local file paths, etc. */
|
|
121
123
|
page?: PageContext;
|
|
122
124
|
/**
|
|
@@ -124,7 +126,7 @@ interface RenderOptions {
|
|
|
124
126
|
* Passed through so the renderer can emit footnote bodies in the
|
|
125
127
|
* `[[footnoteblock]]` section.
|
|
126
128
|
*/
|
|
127
|
-
footnotes?:
|
|
129
|
+
footnotes?: Element2[][];
|
|
128
130
|
/** Callbacks for resolving users, HTML-block URLs, etc. */
|
|
129
131
|
resolvers?: RenderResolvers;
|
|
130
132
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { SyntaxTree as SyntaxTree2 } from "@wdprlib/ast";
|
|
2
|
-
import { Element, WikitextSettings } from "@wdprlib/ast";
|
|
2
|
+
import { Element as Element2, WikitextSettings as WikitextSettings2 } from "@wdprlib/ast";
|
|
3
3
|
/**
|
|
4
|
-
* Allowlist entry for embed content validation
|
|
5
|
-
* Each entry specifies a host pattern and optional path prefix
|
|
4
|
+
* Allowlist entry for embed content validation.
|
|
6
5
|
*/
|
|
7
6
|
interface EmbedAllowlistEntry {
|
|
8
|
-
/** Host pattern. Supports wildcard prefix
|
|
7
|
+
/** Host pattern. Supports wildcard prefix `*.` such as `*.youtube.com`. */
|
|
9
8
|
host: string;
|
|
10
|
-
/** Optional path prefix that must match
|
|
9
|
+
/** Optional path prefix that must match, such as `/embed/`. */
|
|
11
10
|
pathPrefix?: string;
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
14
|
-
* Default allowlist for embed content
|
|
15
|
-
* Only iframes with src matching these host+path patterns will be rendered.
|
|
13
|
+
* Default allowlist for embed content.
|
|
16
14
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* Set the render option to `null` to allow any HTTP(S) iframe while still using
|
|
16
|
+
* sanitizer and scheme validation.
|
|
19
17
|
*/
|
|
20
18
|
declare const DEFAULT_EMBED_ALLOWLIST: EmbedAllowlistEntry[] | null;
|
|
21
19
|
/**
|
|
@@ -30,10 +28,14 @@ declare const DEFAULT_EMBED_ALLOWLIST: EmbedAllowlistEntry[] | null;
|
|
|
30
28
|
interface PageContext {
|
|
31
29
|
/** Full page name including category prefix (e.g. `"secret:test2"`) */
|
|
32
30
|
pageName: string;
|
|
33
|
-
/** Site slug
|
|
31
|
+
/** Site slug for the current page (e.g. `"scp-wiki"`) */
|
|
34
32
|
site?: string;
|
|
35
|
-
/**
|
|
33
|
+
/** Current site domain used for absolute URL generation (e.g. `"scp-wiki.example.org"`) */
|
|
36
34
|
domain?: string;
|
|
35
|
+
/** Known domains for cross-site page references keyed by site slug. */
|
|
36
|
+
siteDomains?: Record<string, string>;
|
|
37
|
+
/** Resolve a cross-site page reference site slug to a domain. */
|
|
38
|
+
resolveSiteDomain?: (site: string) => string | null | undefined;
|
|
37
39
|
/**
|
|
38
40
|
* Returns whether a page exists on the site.
|
|
39
41
|
* When a target page does not exist, the renderer adds `class="newpage"`
|
|
@@ -116,7 +118,7 @@ interface RenderOptions {
|
|
|
116
118
|
* Context-dependent feature flags.
|
|
117
119
|
* Defaults to page-mode settings when omitted.
|
|
118
120
|
*/
|
|
119
|
-
settings?:
|
|
121
|
+
settings?: WikitextSettings2;
|
|
120
122
|
/** Page context for resolving relative links, local file paths, etc. */
|
|
121
123
|
page?: PageContext;
|
|
122
124
|
/**
|
|
@@ -124,7 +126,7 @@ interface RenderOptions {
|
|
|
124
126
|
* Passed through so the renderer can emit footnote bodies in the
|
|
125
127
|
* `[[footnoteblock]]` section.
|
|
126
128
|
*/
|
|
127
|
-
footnotes?:
|
|
129
|
+
footnotes?: Element2[][];
|
|
128
130
|
/** Callbacks for resolving users, HTML-block URLs, etc. */
|
|
129
131
|
resolvers?: RenderResolvers;
|
|
130
132
|
/**
|