@wdprlib/parser 3.2.0 → 4.1.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 +10471 -8406
- package/dist/index.d.cts +313 -337
- package/dist/index.d.ts +313 -337
- package/dist/index.js +10457 -8392
- package/package.json +1 -1
- package/src/index.ts +7 -0
- package/src/lexer/anchor.ts +48 -0
- package/src/lexer/index.ts +3 -2
- package/src/lexer/lexer.ts +73 -559
- package/src/lexer/options.ts +19 -0
- package/src/lexer/punctuation.ts +70 -0
- package/src/lexer/quoted-string.ts +16 -0
- package/src/lexer/runs.ts +85 -0
- package/src/lexer/spacing-actions.ts +24 -0
- package/src/lexer/state.ts +103 -0
- package/src/lexer/syntax-actions.ts +80 -0
- package/src/lexer/text-actions.ts +41 -0
- package/src/lexer/token-actions.ts +136 -0
- package/src/lexer/token-factory.ts +62 -0
- package/src/lexer/tokenize.ts +18 -0
- package/src/parser/constants.ts +2 -0
- package/src/parser/depth/index.ts +111 -0
- package/src/parser/depth/stack.ts +82 -0
- package/src/parser/parse/block.ts +42 -0
- package/src/parser/parse/context.ts +26 -0
- package/src/parser/parse/footnotes.ts +25 -0
- package/src/parser/parse/index.ts +42 -0
- package/src/parser/parse/options.ts +34 -0
- package/src/parser/parse/parser.ts +79 -0
- package/src/parser/parse/plain-non-ascii.ts +129 -0
- package/src/parser/parse/result.ts +57 -0
- package/src/parser/parse/source.ts +11 -0
- package/src/parser/postprocess/divAdjacentParagraph.ts +1 -1
- package/src/parser/postprocess/spanStrip/clean-element.ts +168 -0
- package/src/parser/postprocess/spanStrip/cleanup.ts +25 -0
- package/src/parser/postprocess/spanStrip/empty-spans.ts +36 -0
- package/src/parser/postprocess/spanStrip/escaped.ts +78 -0
- package/src/parser/postprocess/spanStrip/factory.ts +23 -0
- package/src/parser/postprocess/spanStrip/index.ts +8 -0
- package/src/parser/postprocess/spanStrip/merge.ts +117 -0
- package/src/parser/postprocess/spanStrip/predicates.ts +59 -0
- package/src/parser/postprocess/spanStrip/split.ts +67 -0
- package/src/parser/preprocess/expr/chars.ts +15 -0
- package/src/parser/preprocess/expr/evaluate.ts +22 -0
- package/src/parser/preprocess/expr/index.ts +45 -0
- package/src/parser/preprocess/expr/kind.ts +19 -0
- package/src/parser/preprocess/expr/parse.ts +103 -0
- package/src/parser/preprocess/expr/scan.ts +34 -0
- package/src/parser/preprocess/expr/types.ts +14 -0
- package/src/parser/preprocess/typography.ts +70 -5
- package/src/parser/preprocess/utils/bracket-depths.ts +98 -0
- package/src/parser/preprocess/utils/index.ts +13 -0
- package/src/parser/preprocess/utils/raw-regions.ts +153 -0
- package/src/parser/preprocess/whitespace/detection.ts +39 -0
- package/src/parser/preprocess/whitespace/index.ts +79 -0
- package/src/parser/preprocess/whitespace/leading-spaces.ts +11 -0
- package/src/parser/preprocess/whitespace/patterns.ts +23 -0
- package/src/parser/rules/block/align/body.ts +46 -0
- package/src/parser/rules/block/align/element.ts +13 -0
- package/src/parser/rules/block/align/index.ts +90 -0
- package/src/parser/rules/block/align/syntax.ts +113 -0
- package/src/parser/rules/block/bibliography/body.ts +81 -0
- package/src/parser/rules/block/bibliography/entries.ts +49 -0
- package/src/parser/rules/block/bibliography/entry-content.ts +73 -0
- package/src/parser/rules/block/bibliography/entry-key.ts +83 -0
- package/src/parser/rules/block/bibliography/index.ts +90 -0
- package/src/parser/rules/block/bibliography/open.ts +53 -0
- package/src/parser/rules/block/block-list/bare-content.ts +105 -0
- package/src/parser/rules/block/block-list/bare-paragraph.ts +60 -0
- package/src/parser/rules/block/block-list/index.ts +51 -0
- package/src/parser/rules/block/block-list/item-content.ts +132 -0
- package/src/parser/rules/block/block-list/li-content.ts +107 -0
- package/src/parser/rules/block/block-list/li-item.ts +77 -0
- package/src/parser/rules/block/block-list/list-block.ts +100 -0
- package/src/parser/rules/block/block-list/open.ts +51 -0
- package/src/parser/rules/block/block-list/tags.ts +50 -0
- package/src/parser/rules/block/blockquote/build.ts +62 -0
- package/src/parser/rules/block/blockquote/index.ts +80 -0
- package/src/parser/rules/block/blockquote/line.ts +79 -0
- package/src/parser/rules/block/blockquote/lines.ts +39 -0
- package/src/parser/rules/block/{center.ts → center/index.ts} +7 -22
- package/src/parser/rules/block/center/open.ts +27 -0
- package/src/parser/rules/block/{clear-float.ts → clear-float/index.ts} +6 -30
- package/src/parser/rules/block/clear-float/syntax.ts +43 -0
- package/src/parser/rules/block/code/attributes.ts +30 -0
- package/src/parser/rules/block/code/content.ts +57 -0
- package/src/parser/rules/block/code/index.ts +100 -0
- package/src/parser/rules/block/collapsible/attributes.ts +95 -0
- package/src/parser/rules/block/collapsible/body.ts +69 -0
- package/src/parser/rules/block/collapsible/index.ts +117 -0
- package/src/parser/rules/block/collapsible/open.ts +51 -0
- package/src/parser/rules/block/collapsible/orphans.ts +31 -0
- package/src/parser/rules/block/collapsible/tags.ts +17 -0
- package/src/parser/rules/block/comment/consume.ts +37 -0
- package/src/parser/rules/block/{comment.ts → comment/index.ts} +12 -38
- package/src/parser/rules/block/{content-separator.ts → content-separator/index.ts} +5 -35
- package/src/parser/rules/block/content-separator/syntax.ts +33 -0
- package/src/parser/rules/block/definition-list/collect.ts +40 -0
- package/src/parser/rules/block/definition-list/index.ts +63 -0
- package/src/parser/rules/block/definition-list/item-key.ts +95 -0
- package/src/parser/rules/block/definition-list/item-value.ts +56 -0
- package/src/parser/rules/block/definition-list/items.ts +54 -0
- package/src/parser/rules/block/div/body.ts +41 -0
- package/src/parser/rules/block/div/close.ts +41 -0
- package/src/parser/rules/block/div/failed.ts +117 -0
- package/src/parser/rules/block/div/index.ts +112 -0
- package/src/parser/rules/block/div/nesting.ts +37 -0
- package/src/parser/rules/block/div/open.ts +59 -0
- package/src/parser/rules/block/div/paragraph-strip.ts +44 -0
- package/src/parser/rules/block/embed-block/content.ts +53 -0
- package/src/parser/rules/block/embed-block/index.ts +91 -0
- package/src/parser/rules/block/embed-block/open.ts +52 -0
- package/src/parser/rules/block/embed-block/tags.ts +5 -0
- package/src/parser/rules/block/footnoteblock/attributes.ts +73 -0
- package/src/parser/rules/block/footnoteblock/index.ts +82 -0
- package/src/parser/rules/block/footnoteblock/open.ts +53 -0
- package/src/parser/rules/block/heading/index.ts +87 -0
- package/src/parser/rules/block/heading/open.ts +50 -0
- package/src/parser/rules/block/heading/toc-text.ts +26 -0
- package/src/parser/rules/block/{horizontal-rule.ts → horizontal-rule/index.ts} +4 -21
- package/src/parser/rules/block/horizontal-rule/syntax.ts +21 -0
- package/src/parser/rules/block/html/body.ts +114 -0
- package/src/parser/rules/block/html/diagnostics.ts +11 -0
- package/src/parser/rules/block/html/index.ts +95 -0
- package/src/parser/rules/block/html/open.ts +36 -0
- package/src/parser/rules/block/iframe/attributes.ts +106 -0
- package/src/parser/rules/block/iframe/index.ts +73 -0
- package/src/parser/rules/block/iframe/open.ts +58 -0
- package/src/parser/rules/block/iframe/source.ts +24 -0
- package/src/parser/rules/block/iframe/url.ts +38 -0
- package/src/parser/rules/block/iftags/body.ts +48 -0
- package/src/parser/rules/block/iftags/condition.ts +24 -0
- package/src/parser/rules/block/{iftags.ts → iftags/index.ts} +16 -58
- package/src/parser/rules/block/include/arguments.ts +48 -0
- package/src/parser/rules/block/include/index.ts +75 -0
- package/src/parser/rules/block/include/location.ts +24 -0
- package/src/parser/rules/block/include/variables.ts +37 -0
- package/src/parser/rules/block/list/index.ts +73 -0
- package/src/parser/rules/block/list/line.ts +77 -0
- package/src/parser/rules/block/list/native.ts +89 -0
- package/src/parser/rules/block/math/content.ts +54 -0
- package/src/parser/rules/block/math/index.ts +106 -0
- package/src/parser/rules/block/math/name.ts +35 -0
- package/src/parser/rules/block/module/body.ts +92 -0
- package/src/parser/rules/block/module/element.ts +33 -0
- package/src/parser/rules/block/module/include/directive.ts +91 -0
- package/src/parser/rules/block/module/include/index.ts +11 -2
- package/src/parser/rules/block/module/include/references.ts +42 -0
- package/src/parser/rules/block/module/include/resolve/cache.ts +44 -0
- package/src/parser/rules/block/module/include/resolve/index.ts +106 -0
- package/src/parser/rules/block/module/include/resolve/iterate.ts +202 -0
- package/src/parser/rules/block/module/include/resolve/replace.ts +31 -0
- package/src/parser/rules/block/module/include/resolve/types.ts +105 -0
- package/src/parser/rules/block/module/include/scanner.ts +121 -0
- package/src/parser/rules/block/module/index.ts +14 -2
- package/src/parser/rules/block/module/listpages/compiler.ts +12 -392
- package/src/parser/rules/block/module/listpages/extract.ts +25 -359
- package/src/parser/rules/block/module/listpages/extraction/listpages.ts +42 -0
- package/src/parser/rules/block/module/listpages/extraction/listusers.ts +30 -0
- package/src/parser/rules/block/module/listpages/extraction/query.ts +51 -0
- package/src/parser/rules/block/module/listpages/extraction/result.ts +18 -0
- package/src/parser/rules/block/module/listpages/extraction/template.ts +96 -0
- package/src/parser/rules/block/module/listpages/extraction/variables.ts +58 -0
- package/src/parser/rules/block/module/listpages/normalization/date-selector.ts +53 -0
- package/src/parser/rules/block/module/listpages/normalization/numeric-selector.ts +32 -0
- package/src/parser/rules/block/module/listpages/normalization/order-parent.ts +82 -0
- package/src/parser/rules/block/module/listpages/normalization/selectors.ts +2 -0
- package/src/parser/rules/block/module/listpages/normalization/tags-category.ts +86 -0
- package/src/parser/rules/block/module/listpages/normalize.ts +8 -324
- package/src/parser/rules/block/module/listpages/resolution/items.ts +43 -0
- package/src/parser/rules/block/module/listpages/resolution/wrapper.ts +42 -0
- package/src/parser/rules/block/module/listpages/resolve.ts +5 -75
- package/src/parser/rules/block/module/listpages/template/format/content.ts +41 -0
- package/src/parser/rules/block/module/listpages/template/format/date.ts +116 -0
- package/src/parser/rules/block/module/listpages/template/format/index.ts +4 -0
- package/src/parser/rules/block/module/listpages/template/format/tags.ts +7 -0
- package/src/parser/rules/block/module/listpages/template/format/user.ts +9 -0
- package/src/parser/rules/block/module/listpages/template/getters/index.ts +36 -0
- package/src/parser/rules/block/module/listpages/template/getters/parameterized.ts +60 -0
- package/src/parser/rules/block/module/listpages/template/getters/simple.ts +65 -0
- package/src/parser/rules/block/module/listpages/template/getters/types.ts +3 -0
- package/src/parser/rules/block/module/listpages/template/syntax.ts +97 -0
- package/src/parser/rules/block/module/listpages/types/data-fetcher.ts +15 -0
- package/src/parser/rules/block/module/listpages/types/data-requirements.ts +52 -0
- package/src/parser/rules/block/module/listpages/types/external-data.ts +77 -0
- package/src/parser/rules/block/module/listpages/types/index.ts +17 -0
- package/src/parser/rules/block/module/listpages/types/normalized-query.ts +120 -0
- package/src/parser/rules/block/module/listpages/types/query.ts +67 -0
- package/src/parser/rules/block/module/listpages/types/template.ts +17 -0
- package/src/parser/rules/block/module/listpages/types/variables.ts +69 -0
- package/src/parser/rules/block/module/listpages/url-resolution/fields.ts +48 -0
- package/src/parser/rules/block/module/listpages/url-resolution/params.ts +30 -0
- package/src/parser/rules/block/module/listpages/url-resolution/query.ts +24 -0
- package/src/parser/rules/block/module/listpages/url-resolution/resolve.ts +62 -0
- package/src/parser/rules/block/module/listpages/url-resolution/value.ts +34 -0
- package/src/parser/rules/block/module/listpages/url-resolver.ts +3 -160
- package/src/parser/rules/block/module/listusers/compiler.ts +4 -25
- package/src/parser/rules/block/module/listusers/extract.ts +4 -9
- package/src/parser/rules/block/module/listusers/getters.ts +21 -0
- package/src/parser/rules/block/module/listusers/variables.ts +15 -0
- package/src/parser/rules/block/module/open.ts +57 -0
- package/src/parser/rules/block/module/resolution/contexts.ts +78 -0
- package/src/parser/rules/block/module/resolution/data-maps.ts +39 -0
- package/src/parser/rules/block/module/resolution/dynamic-modules.ts +93 -0
- package/src/parser/rules/block/module/resolution/styles.ts +53 -0
- package/src/parser/rules/block/module/resolution/walk-resolve.ts +107 -0
- package/src/parser/rules/block/module/resolve.ts +79 -292
- package/src/parser/rules/block/module/rule.ts +56 -0
- package/src/parser/rules/block/module/types-common.ts +11 -0
- package/src/parser/rules/block/module/walk/children.ts +35 -0
- package/src/parser/rules/block/module/walk/index.ts +9 -0
- package/src/parser/rules/block/module/walk/map/index.ts +2 -0
- package/src/parser/rules/block/module/walk/map/stateful-definition-list.ts +25 -0
- package/src/parser/rules/block/module/walk/map/stateful-list.ts +40 -0
- package/src/parser/rules/block/module/walk/map/stateful-table.ts +23 -0
- package/src/parser/rules/block/module/walk/map/stateful-tabs.ts +19 -0
- package/src/parser/rules/block/module/walk/map/stateful.ts +71 -0
- package/src/parser/rules/block/module/walk/map/stateless-definition-list.ts +12 -0
- package/src/parser/rules/block/module/walk/map/stateless-list.ts +29 -0
- package/src/parser/rules/block/module/walk/map/stateless-table.ts +11 -0
- package/src/parser/rules/block/module/walk/map/stateless-tabs.ts +5 -0
- package/src/parser/rules/block/module/walk/map/stateless.ts +51 -0
- package/src/parser/rules/block/module/walk/map/types.ts +6 -0
- package/src/parser/rules/block/module/walk/traverse.ts +65 -0
- package/src/parser/rules/block/orphan-li/content.ts +60 -0
- package/src/parser/rules/block/orphan-li/index.ts +75 -0
- package/src/parser/rules/block/orphan-li/open.ts +25 -0
- package/src/parser/rules/block/orphan-li/tags.ts +40 -0
- package/src/parser/rules/block/paragraph/content.ts +12 -0
- package/src/parser/rules/block/paragraph/index.ts +60 -0
- package/src/parser/rules/block/paragraph/normalize.ts +52 -0
- package/src/parser/rules/block/paragraph/span-markers.ts +52 -0
- package/src/parser/rules/block/parsing/attributes/index.ts +32 -0
- package/src/parser/rules/block/parsing/attributes/names.ts +93 -0
- package/src/parser/rules/block/parsing/attributes/scanner.ts +75 -0
- package/src/parser/rules/block/parsing/attributes/values.ts +26 -0
- package/src/parser/rules/block/parsing/block-item.ts +29 -0
- package/src/parser/rules/block/parsing/content.ts +127 -0
- package/src/parser/rules/block/parsing/end-condition.ts +51 -0
- package/src/parser/rules/block/parsing/inline-content.ts +105 -0
- package/src/parser/rules/block/parsing/inline-newline.ts +41 -0
- package/src/parser/rules/block/parsing/non-boundary.ts +24 -0
- package/src/parser/rules/block/parsing/rule-dispatch.ts +44 -0
- package/src/parser/rules/block/table/index.ts +80 -0
- package/src/parser/rules/block/table/pipe/cell-start.ts +69 -0
- package/src/parser/rules/block/table/pipe/cell.ts +106 -0
- package/src/parser/rules/block/table/pipe/index.ts +2 -0
- package/src/parser/rules/block/table/pipe/row.ts +88 -0
- package/src/parser/rules/block/table/pipe/tokens.ts +14 -0
- package/src/parser/rules/block/table/pipe/trim.ts +50 -0
- package/src/parser/rules/block/table-block/body.ts +79 -0
- package/src/parser/rules/block/table-block/cell-attributes.ts +33 -0
- package/src/parser/rules/block/table-block/cell-boundary.ts +99 -0
- package/src/parser/rules/block/table-block/cell-content/index.ts +88 -0
- package/src/parser/rules/block/table-block/cell-content/segments.ts +134 -0
- package/src/parser/rules/block/table-block/cell-newline.ts +47 -0
- package/src/parser/rules/block/table-block/cell.ts +64 -0
- package/src/parser/rules/block/table-block/index.ts +113 -0
- package/src/parser/rules/block/table-block/row-boundary.ts +75 -0
- package/src/parser/rules/block/table-block/structure.ts +80 -0
- package/src/parser/rules/block/tabview/body.ts +64 -0
- package/src/parser/rules/block/tabview/index.ts +90 -0
- package/src/parser/rules/block/tabview/open.ts +50 -0
- package/src/parser/rules/block/tabview/tab.ts +92 -0
- package/src/parser/rules/block/tabview/tags.ts +30 -0
- package/src/parser/rules/block/toc/element.ts +11 -0
- package/src/parser/rules/block/toc/index.ts +44 -0
- package/src/parser/rules/block/toc/open.ts +84 -0
- package/src/parser/rules/block/utils.ts +10 -610
- package/src/parser/rules/{utils.ts → common/attribute-safety.ts} +3 -49
- package/src/parser/rules/common/block-name.ts +33 -0
- package/src/parser/rules/common/index.ts +2 -0
- package/src/parser/rules/contracts/index.ts +3 -0
- package/src/parser/rules/contracts/parse-context.ts +38 -0
- package/src/parser/rules/contracts/rule.ts +43 -0
- package/src/parser/rules/contracts/scope.ts +31 -0
- package/src/parser/rules/inline/anchor/attributes.ts +54 -0
- package/src/parser/rules/inline/anchor/child.ts +26 -0
- package/src/parser/rules/inline/anchor/close.ts +34 -0
- package/src/parser/rules/inline/anchor/content.ts +59 -0
- package/src/parser/rules/inline/anchor/index.ts +103 -0
- package/src/parser/rules/inline/anchor/newline.ts +26 -0
- package/src/parser/rules/inline/anchor/open.ts +47 -0
- package/src/parser/rules/inline/anchor/paragraph-strip.ts +14 -0
- package/src/parser/rules/inline/anchor/syntax.ts +40 -0
- package/src/parser/rules/inline/anchor-name/index.ts +38 -0
- package/src/parser/rules/inline/anchor-name/name.ts +39 -0
- package/src/parser/rules/inline/anchor-name/syntax.ts +46 -0
- package/src/parser/rules/inline/bibcite/element.ts +14 -0
- package/src/parser/rules/inline/bibcite/index.ts +34 -0
- package/src/parser/rules/inline/bibcite/syntax.ts +64 -0
- package/src/parser/rules/inline/bold.ts +2 -39
- package/src/parser/rules/inline/color/index.ts +35 -0
- package/src/parser/rules/inline/color/syntax.ts +69 -0
- package/src/parser/rules/inline/comment/consume.ts +31 -0
- package/src/parser/rules/inline/{comment.ts → comment/index.ts} +10 -36
- package/src/parser/rules/inline/equation-ref/element.ts +8 -0
- package/src/parser/rules/inline/equation-ref/index.ts +34 -0
- package/src/parser/rules/inline/equation-ref/syntax.ts +45 -0
- package/src/parser/rules/inline/expr/branch.ts +104 -0
- package/src/parser/rules/inline/expr/conditional-branch.ts +27 -0
- package/src/parser/rules/inline/expr/conditional.ts +80 -0
- package/src/parser/rules/inline/expr/depth.ts +25 -0
- package/src/parser/rules/inline/expr/elements.ts +39 -0
- package/src/parser/rules/inline/expr/index.ts +84 -0
- package/src/parser/rules/inline/expr/syntax.ts +45 -0
- package/src/parser/rules/inline/footnote/child.ts +22 -0
- package/src/parser/rules/inline/footnote/close.ts +33 -0
- package/src/parser/rules/inline/footnote/content.ts +54 -0
- package/src/parser/rules/inline/footnote/elements.ts +38 -0
- package/src/parser/rules/inline/footnote/index.ts +54 -0
- package/src/parser/rules/inline/footnote/newline.ts +27 -0
- package/src/parser/rules/inline/footnote/open.ts +38 -0
- package/src/parser/rules/inline/formatting/container.ts +50 -0
- package/src/parser/rules/inline/{guillemet.ts → guillemet/index.ts} +5 -13
- package/src/parser/rules/inline/guillemet/text.ts +11 -0
- package/src/parser/rules/inline/html/gate.ts +64 -0
- package/src/parser/rules/inline/{html.ts → html/index.ts} +9 -60
- package/src/parser/rules/inline/html/open.ts +37 -0
- package/src/parser/rules/inline/image/attributes.ts +22 -0
- package/src/parser/rules/inline/image/body.ts +36 -0
- package/src/parser/rules/inline/image/index.ts +89 -0
- package/src/parser/rules/inline/image/open.ts +56 -0
- package/src/parser/rules/inline/image/source.ts +62 -0
- package/src/parser/rules/inline/image/syntax.ts +76 -0
- package/src/parser/rules/inline/italic.ts +2 -30
- package/src/parser/rules/inline/line-break/backslash.ts +58 -0
- package/src/parser/rules/inline/line-break/elements.ts +9 -0
- package/src/parser/rules/inline/line-break/index.ts +3 -0
- package/src/parser/rules/inline/line-break/newline.ts +82 -0
- package/src/parser/rules/inline/line-break/underscore.ts +45 -0
- package/src/parser/rules/inline/link-anchor.ts +6 -81
- package/src/parser/rules/inline/link-bracket/anchor.ts +3 -0
- package/src/parser/rules/inline/link-bracket/direct-url.ts +5 -0
- package/src/parser/rules/inline/link-bracket/parsed.ts +81 -0
- package/src/parser/rules/inline/link-bracket/parts.ts +64 -0
- package/src/parser/rules/inline/link-bracket/prefix.ts +15 -0
- package/src/parser/rules/inline/link-single.ts +7 -98
- package/src/parser/rules/inline/link-star.ts +7 -69
- package/src/parser/rules/inline/link-triple/fallback.ts +10 -0
- package/src/parser/rules/inline/link-triple/index.ts +62 -0
- package/src/parser/rules/inline/link-triple/interwiki.ts +11 -0
- package/src/parser/rules/inline/link-triple/label.ts +35 -0
- package/src/parser/rules/inline/link-triple/syntax.ts +72 -0
- package/src/parser/rules/inline/link-triple/target.ts +36 -0
- package/src/parser/rules/inline/math-inline/index.ts +40 -0
- package/src/parser/rules/inline/math-inline/syntax.ts +55 -0
- package/src/parser/rules/inline/monospace.ts +2 -30
- package/src/parser/rules/inline/parsing/block-boundary.ts +42 -0
- package/src/parser/rules/inline/parsing/block-start-predicates.ts +117 -0
- package/src/parser/rules/inline/parsing/collect.ts +23 -0
- package/src/parser/rules/inline/parsing/inline-content.ts +115 -0
- package/src/parser/rules/inline/parsing/paragraph-boundary.ts +47 -0
- package/src/parser/rules/inline/parsing/plain-text.ts +69 -0
- package/src/parser/rules/inline/parsing/preserved-line-break.ts +11 -0
- package/src/parser/rules/inline/parsing/rules.ts +34 -0
- package/src/parser/rules/inline/parsing/simple-token.ts +26 -0
- package/src/parser/rules/inline/raw/angle.ts +40 -0
- package/src/parser/rules/inline/raw/double-at.ts +78 -0
- package/src/parser/rules/inline/raw/index.ts +26 -0
- package/src/parser/rules/inline/raw/result.ts +26 -0
- package/src/parser/rules/inline/size/content.ts +65 -0
- package/src/parser/rules/inline/size/index.ts +55 -0
- package/src/parser/rules/inline/size/open.ts +43 -0
- package/src/parser/rules/inline/size/value.ts +45 -0
- package/src/parser/rules/inline/span/content.ts +97 -0
- package/src/parser/rules/inline/span/elements.ts +108 -0
- package/src/parser/rules/inline/span/index.ts +79 -0
- package/src/parser/rules/inline/span/newline.ts +50 -0
- package/src/parser/rules/inline/span/syntax.ts +70 -0
- package/src/parser/rules/inline/{strikethrough.ts → strikethrough/index.ts} +5 -60
- package/src/parser/rules/inline/strikethrough/parse.ts +14 -0
- package/src/parser/rules/inline/strikethrough/syntax.ts +24 -0
- package/src/parser/rules/inline/subscript.ts +2 -39
- package/src/parser/rules/inline/superscript.ts +4 -39
- package/src/parser/rules/inline/text/element.ts +5 -0
- package/src/parser/rules/inline/{text.ts → text/index.ts} +5 -4
- package/src/parser/rules/inline/underline/child.ts +26 -0
- package/src/parser/rules/inline/underline/content.ts +29 -0
- package/src/parser/rules/inline/{underline.ts → underline/index.ts} +6 -49
- package/src/parser/rules/inline/user/element.ts +11 -0
- package/src/parser/rules/inline/user/index.ts +34 -0
- package/src/parser/rules/inline/user/syntax.ts +67 -0
- package/src/parser/rules/inline/utils.ts +4 -344
- package/src/parser/rules/tokens.ts +106 -0
- package/src/parser/rules/types.ts +9 -252
- package/src/parser/depth.ts +0 -251
- package/src/parser/parse.ts +0 -315
- package/src/parser/postprocess/spanStrip.ts +0 -697
- package/src/parser/preprocess/expr.ts +0 -265
- package/src/parser/preprocess/utils.ts +0 -250
- package/src/parser/preprocess/whitespace.ts +0 -111
- package/src/parser/rules/block/align.ts +0 -282
- package/src/parser/rules/block/bibliography.ts +0 -359
- package/src/parser/rules/block/block-list.ts +0 -689
- package/src/parser/rules/block/blockquote.ts +0 -238
- package/src/parser/rules/block/code.ts +0 -187
- package/src/parser/rules/block/collapsible.ts +0 -337
- package/src/parser/rules/block/definition-list.ts +0 -270
- package/src/parser/rules/block/div.ts +0 -400
- package/src/parser/rules/block/embed-block.ts +0 -153
- package/src/parser/rules/block/footnoteblock.ts +0 -200
- package/src/parser/rules/block/heading.ts +0 -142
- package/src/parser/rules/block/html.ts +0 -222
- package/src/parser/rules/block/iframe.ts +0 -239
- package/src/parser/rules/block/include.ts +0 -179
- package/src/parser/rules/block/list.ts +0 -244
- package/src/parser/rules/block/math.ts +0 -183
- package/src/parser/rules/block/module/include/resolve.ts +0 -556
- package/src/parser/rules/block/module/listpages/types.ts +0 -513
- package/src/parser/rules/block/module/walk.ts +0 -380
- package/src/parser/rules/block/module.ts +0 -164
- package/src/parser/rules/block/orphan-li.ts +0 -177
- package/src/parser/rules/block/paragraph.ts +0 -157
- package/src/parser/rules/block/table-block.ts +0 -726
- package/src/parser/rules/block/table.ts +0 -441
- package/src/parser/rules/block/tabview.ts +0 -331
- package/src/parser/rules/block/toc.ts +0 -129
- package/src/parser/rules/inline/anchor-name.ts +0 -154
- package/src/parser/rules/inline/anchor.ts +0 -327
- package/src/parser/rules/inline/bibcite.ts +0 -153
- package/src/parser/rules/inline/color.ts +0 -140
- package/src/parser/rules/inline/equation-ref.ts +0 -115
- package/src/parser/rules/inline/expr.ts +0 -526
- package/src/parser/rules/inline/footnote.ts +0 -223
- package/src/parser/rules/inline/image.ts +0 -328
- package/src/parser/rules/inline/line-break.ts +0 -326
- package/src/parser/rules/inline/link-triple.ts +0 -267
- package/src/parser/rules/inline/math-inline.ts +0 -126
- package/src/parser/rules/inline/raw.ts +0 -262
- package/src/parser/rules/inline/size.ts +0 -244
- package/src/parser/rules/inline/span.ts +0 -424
- package/src/parser/rules/inline/user.ts +0 -147
|
@@ -1,513 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* Type definitions for the ListPages module system.
|
|
4
|
-
*
|
|
5
|
-
* This file defines the complete type vocabulary for the ListPages lifecycle:
|
|
6
|
-
*
|
|
7
|
-
* - **Query types**: Raw and normalized representations of ListPages filter/sort parameters
|
|
8
|
-
* - **Variable types**: The `%%variable%%` names supported in ListPages templates
|
|
9
|
-
* - **Data requirement types**: What the parser tells the application it needs to fetch
|
|
10
|
-
* - **External data types**: What the application provides back (page data, user info, site context)
|
|
11
|
-
* - **Template types**: Compiled template function signatures and their execution context
|
|
12
|
-
* - **Normalized query types**: Structured representations of parsed query parameters
|
|
13
|
-
*
|
|
14
|
-
* Security note: Several fields contain untrusted user input from wikitext.
|
|
15
|
-
* See `ListPagesQuery` documentation for safe usage guidelines.
|
|
16
|
-
*
|
|
17
|
-
* @module
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
// =============================================================================
|
|
21
|
-
// Query Types
|
|
22
|
-
// =============================================================================
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* ListPages query parameters for page selection
|
|
26
|
-
*
|
|
27
|
-
* @security All string fields contain **untrusted user input** from wikitext.
|
|
28
|
-
* When using these values in database queries:
|
|
29
|
-
* - **NEVER** interpolate directly into SQL/NoSQL query strings
|
|
30
|
-
* - **ALWAYS** use parameterized queries or prepared statements
|
|
31
|
-
* - For ORDER BY clauses, use a whitelist of allowed column names
|
|
32
|
-
*
|
|
33
|
-
* @example Safe usage with SQL
|
|
34
|
-
* ```typescript
|
|
35
|
-
* // GOOD: Parameterized query
|
|
36
|
-
* db.query("SELECT * FROM pages WHERE category = ?", [query.category]);
|
|
37
|
-
*
|
|
38
|
-
* // BAD: String interpolation (SQL injection vulnerable!)
|
|
39
|
-
* db.query(`SELECT * FROM pages WHERE category = '${query.category}'`);
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export interface ListPagesQuery {
|
|
43
|
-
/** Page type selector */
|
|
44
|
-
pagetype?: "normal" | "hidden" | "*";
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Category selector
|
|
48
|
-
* @untrusted User input - use parameterized queries
|
|
49
|
-
*/
|
|
50
|
-
category?: string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Tag selector (e.g., "+fruit -admin")
|
|
54
|
-
* @untrusted User input - use parameterized queries
|
|
55
|
-
*/
|
|
56
|
-
tags?: string;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Parent page selector
|
|
60
|
-
* @untrusted User input - use parameterized queries
|
|
61
|
-
*/
|
|
62
|
-
parent?: string;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Link target selector
|
|
66
|
-
* @untrusted User input - use parameterized queries
|
|
67
|
-
*/
|
|
68
|
-
linkTo?: string;
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Created date selector
|
|
72
|
-
* @untrusted User input - use parameterized queries
|
|
73
|
-
*/
|
|
74
|
-
createdAt?: string;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Updated date selector
|
|
78
|
-
* @untrusted User input - use parameterized queries
|
|
79
|
-
*/
|
|
80
|
-
updatedAt?: string;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Author selector
|
|
84
|
-
* @untrusted User input - use parameterized queries
|
|
85
|
-
*/
|
|
86
|
-
createdBy?: string;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Rating selector
|
|
90
|
-
* @untrusted User input - use parameterized queries
|
|
91
|
-
*/
|
|
92
|
-
rating?: string;
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Votes selector
|
|
96
|
-
* @untrusted User input - use parameterized queries
|
|
97
|
-
*/
|
|
98
|
-
votes?: string;
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Page name selector
|
|
102
|
-
* @untrusted User input - use parameterized queries
|
|
103
|
-
*/
|
|
104
|
-
name?: string;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Full page name selector (category:name)
|
|
108
|
-
* @untrusted User input - use parameterized queries
|
|
109
|
-
*/
|
|
110
|
-
fullname?: string;
|
|
111
|
-
|
|
112
|
-
/** Range selector relative to current page */
|
|
113
|
-
range?: "." | "before" | "after" | "others";
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Data form field selectors
|
|
117
|
-
* @untrusted Both keys and values are user input
|
|
118
|
-
*/
|
|
119
|
-
dataFormFields?: Record<string, string>;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Ordering specification
|
|
123
|
-
* @untrusted User input - use whitelist validation for ORDER BY
|
|
124
|
-
*/
|
|
125
|
-
order?: string;
|
|
126
|
-
|
|
127
|
-
/** Pagination offset */
|
|
128
|
-
offset?: number;
|
|
129
|
-
|
|
130
|
-
/** Maximum number of results */
|
|
131
|
-
limit?: number;
|
|
132
|
-
|
|
133
|
-
/** Results per page */
|
|
134
|
-
perPage?: number;
|
|
135
|
-
|
|
136
|
-
/** Reverse order */
|
|
137
|
-
reverse?: boolean;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// =============================================================================
|
|
141
|
-
// Variable Types
|
|
142
|
-
// =============================================================================
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* All supported ListPages template variables
|
|
146
|
-
*/
|
|
147
|
-
export type ListPagesVariable =
|
|
148
|
-
// Lifecycle - created
|
|
149
|
-
| "created_at"
|
|
150
|
-
| "created_by"
|
|
151
|
-
| "created_by_unix"
|
|
152
|
-
| "created_by_id"
|
|
153
|
-
| "created_by_linked"
|
|
154
|
-
// Lifecycle - updated
|
|
155
|
-
| "updated_at"
|
|
156
|
-
| "updated_by"
|
|
157
|
-
| "updated_by_unix"
|
|
158
|
-
| "updated_by_id"
|
|
159
|
-
| "updated_by_linked"
|
|
160
|
-
// Lifecycle - commented
|
|
161
|
-
| "commented_at"
|
|
162
|
-
| "commented_by"
|
|
163
|
-
| "commented_by_unix"
|
|
164
|
-
| "commented_by_id"
|
|
165
|
-
| "commented_by_linked"
|
|
166
|
-
// Structure - page
|
|
167
|
-
| "name"
|
|
168
|
-
| "category"
|
|
169
|
-
| "fullname"
|
|
170
|
-
| "title"
|
|
171
|
-
| "title_linked"
|
|
172
|
-
| "link"
|
|
173
|
-
// Structure - parent
|
|
174
|
-
| "parent_name"
|
|
175
|
-
| "parent_category"
|
|
176
|
-
| "parent_fullname"
|
|
177
|
-
| "parent_title"
|
|
178
|
-
| "parent_title_linked"
|
|
179
|
-
// Content
|
|
180
|
-
| "content"
|
|
181
|
-
| "content_n" // content{n}
|
|
182
|
-
| "preview"
|
|
183
|
-
| "preview_n" // preview(n)
|
|
184
|
-
| "summary"
|
|
185
|
-
| "first_paragraph"
|
|
186
|
-
// Tags
|
|
187
|
-
| "tags"
|
|
188
|
-
| "tags_linked"
|
|
189
|
-
| "_tags"
|
|
190
|
-
| "_tags_linked"
|
|
191
|
-
// Form data
|
|
192
|
-
| "form_data"
|
|
193
|
-
| "form_raw"
|
|
194
|
-
| "form_label"
|
|
195
|
-
| "form_hint"
|
|
196
|
-
// Metrics
|
|
197
|
-
| "children"
|
|
198
|
-
| "comments"
|
|
199
|
-
| "size"
|
|
200
|
-
| "rating"
|
|
201
|
-
| "rating_votes"
|
|
202
|
-
| "rating_percent"
|
|
203
|
-
| "revisions"
|
|
204
|
-
// Pagination
|
|
205
|
-
| "index"
|
|
206
|
-
| "total"
|
|
207
|
-
| "limit"
|
|
208
|
-
| "total_or_limit"
|
|
209
|
-
// Site context
|
|
210
|
-
| "site_title"
|
|
211
|
-
| "site_name"
|
|
212
|
-
| "site_domain";
|
|
213
|
-
|
|
214
|
-
// =============================================================================
|
|
215
|
-
// Data Requirement Types
|
|
216
|
-
// =============================================================================
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Data requirement for a single ListPages module
|
|
220
|
-
*/
|
|
221
|
-
export interface ListPagesDataRequirement {
|
|
222
|
-
/** Unique identifier for this module instance */
|
|
223
|
-
id: number;
|
|
224
|
-
|
|
225
|
-
/** Query parameters */
|
|
226
|
-
query: ListPagesQuery;
|
|
227
|
-
|
|
228
|
-
/** Variables used in the template */
|
|
229
|
-
neededVariables: ListPagesVariable[];
|
|
230
|
-
|
|
231
|
-
/** Indices needed for content{n} */
|
|
232
|
-
contentSectionIndices?: number[];
|
|
233
|
-
|
|
234
|
-
/** Lengths needed for preview(n) */
|
|
235
|
-
previewLengths?: number[];
|
|
236
|
-
|
|
237
|
-
/** Field names needed for form_data{field} etc */
|
|
238
|
-
formFields?: string[];
|
|
239
|
-
|
|
240
|
-
/** Prefix for tags_linked|prefix */
|
|
241
|
-
tagsLinkPrefix?: string;
|
|
242
|
-
|
|
243
|
-
/** Prefix for _tags_linked|prefix */
|
|
244
|
-
hiddenTagsLinkPrefix?: string;
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* URL attribute prefix for multiple ListPages modules
|
|
248
|
-
* When set, URL parameters are prefixed (e.g., "page2" -> "/page2_limit/1")
|
|
249
|
-
*/
|
|
250
|
-
urlAttrPrefix?: string;
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Raw attribute values before URL resolution
|
|
254
|
-
* Contains original string values that may include "@URL" or "@URL|default" format
|
|
255
|
-
* External applications should use these to resolve URL parameters
|
|
256
|
-
*/
|
|
257
|
-
rawAttributes: Record<string, string>;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* All data requirements from parsing
|
|
262
|
-
*/
|
|
263
|
-
export interface DataRequirements {
|
|
264
|
-
listPages: ListPagesDataRequirement[];
|
|
265
|
-
listUsers: import("../listusers/types").ListUsersDataRequirement[];
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// =============================================================================
|
|
269
|
-
// External Data Types
|
|
270
|
-
// =============================================================================
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* User information
|
|
274
|
-
*/
|
|
275
|
-
export interface UserInfo {
|
|
276
|
-
id: number;
|
|
277
|
-
name: string;
|
|
278
|
-
unixName: string;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Page data provided by external source
|
|
283
|
-
*/
|
|
284
|
-
export interface PageData {
|
|
285
|
-
// Identity
|
|
286
|
-
name: string;
|
|
287
|
-
category: string;
|
|
288
|
-
fullname: string;
|
|
289
|
-
title: string;
|
|
290
|
-
|
|
291
|
-
// Lifecycle - created
|
|
292
|
-
createdAt: Date;
|
|
293
|
-
createdBy?: UserInfo;
|
|
294
|
-
|
|
295
|
-
// Lifecycle - updated
|
|
296
|
-
updatedAt: Date;
|
|
297
|
-
updatedBy?: UserInfo;
|
|
298
|
-
|
|
299
|
-
// Lifecycle - commented
|
|
300
|
-
commentedAt?: Date;
|
|
301
|
-
commentedBy?: UserInfo;
|
|
302
|
-
|
|
303
|
-
// Parent
|
|
304
|
-
parentName?: string;
|
|
305
|
-
parentCategory?: string;
|
|
306
|
-
parentFullname?: string;
|
|
307
|
-
parentTitle?: string;
|
|
308
|
-
|
|
309
|
-
// Content (====で区切られた形式。wdparserが%%content{n}%%解決時に分割する)
|
|
310
|
-
content?: string;
|
|
311
|
-
|
|
312
|
-
// Tags
|
|
313
|
-
tags: string[];
|
|
314
|
-
hiddenTags: string[]; // Starting with _
|
|
315
|
-
|
|
316
|
-
// Form data
|
|
317
|
-
formData?: Record<string, string>;
|
|
318
|
-
formRaw?: Record<string, string>;
|
|
319
|
-
formLabel?: Record<string, string>;
|
|
320
|
-
formHint?: Record<string, string>;
|
|
321
|
-
|
|
322
|
-
// Metrics
|
|
323
|
-
children: number;
|
|
324
|
-
comments: number;
|
|
325
|
-
size: number;
|
|
326
|
-
rating: number;
|
|
327
|
-
ratingVotes: number;
|
|
328
|
-
ratingPercent?: number;
|
|
329
|
-
revisions: number;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Site context information
|
|
334
|
-
*/
|
|
335
|
-
export interface SiteContext {
|
|
336
|
-
title: string;
|
|
337
|
-
name: string;
|
|
338
|
-
domain: string;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* External data for a single ListPages module
|
|
343
|
-
*/
|
|
344
|
-
export interface ListPagesExternalData {
|
|
345
|
-
pages: PageData[];
|
|
346
|
-
totalCount: number;
|
|
347
|
-
site: SiteContext;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* Callback to fetch data for a ListPages module
|
|
352
|
-
*
|
|
353
|
-
* Called by resolveModules for each ListPages module in the AST.
|
|
354
|
-
* Receives a normalized query with all `@URL` parameters resolved.
|
|
355
|
-
* Return null/undefined to skip the module (outputs nothing).
|
|
356
|
-
*
|
|
357
|
-
* @param query - Normalized query with structured types (tags, category, order, etc.)
|
|
358
|
-
* @param requirement - Original data requirement (for accessing id, neededVariables, etc.)
|
|
359
|
-
*/
|
|
360
|
-
export type ListPagesDataFetcher = (
|
|
361
|
-
query: NormalizedListPagesQuery,
|
|
362
|
-
requirement: ListPagesDataRequirement,
|
|
363
|
-
) => ListPagesExternalData | null | undefined | Promise<ListPagesExternalData | null | undefined>;
|
|
364
|
-
|
|
365
|
-
// Note: DataProvider is in ../types-common.ts to avoid circular dependency
|
|
366
|
-
|
|
367
|
-
// =============================================================================
|
|
368
|
-
// Compiled Template Types
|
|
369
|
-
// =============================================================================
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Context passed to compiled template
|
|
373
|
-
*/
|
|
374
|
-
export interface VariableContext {
|
|
375
|
-
page: PageData;
|
|
376
|
-
index: number;
|
|
377
|
-
total: number;
|
|
378
|
-
limit?: number;
|
|
379
|
-
site: SiteContext;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Compiled template function
|
|
384
|
-
*/
|
|
385
|
-
export type CompiledTemplate = (ctx: VariableContext) => string;
|
|
386
|
-
|
|
387
|
-
// =============================================================================
|
|
388
|
-
// Normalized Query Types
|
|
389
|
-
// =============================================================================
|
|
390
|
-
|
|
391
|
-
/**
|
|
392
|
-
* Normalized tags selector
|
|
393
|
-
*/
|
|
394
|
-
export interface NormalizedTags {
|
|
395
|
-
/** AND conditions - pages must have ALL of these tags (+tag) */
|
|
396
|
-
all: string[];
|
|
397
|
-
/** OR conditions - pages must have ANY of these tags (no prefix) */
|
|
398
|
-
any: string[];
|
|
399
|
-
/** NOT conditions - pages must NOT have these tags (-tag) */
|
|
400
|
-
none: string[];
|
|
401
|
-
/** Special selector */
|
|
402
|
-
special: "same-visible" | "same-all" | "none" | null;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Normalized category selector
|
|
407
|
-
*/
|
|
408
|
-
export interface NormalizedCategory {
|
|
409
|
-
/** Categories to include */
|
|
410
|
-
include: string[];
|
|
411
|
-
/** Categories to exclude (-category) */
|
|
412
|
-
exclude: string[];
|
|
413
|
-
/** Select all categories (*) */
|
|
414
|
-
all: boolean;
|
|
415
|
-
/** Select current category (.) */
|
|
416
|
-
current: boolean;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* Order field options
|
|
421
|
-
*/
|
|
422
|
-
export type OrderField =
|
|
423
|
-
| "created_at"
|
|
424
|
-
| "updated_at"
|
|
425
|
-
| "title"
|
|
426
|
-
| "fullname"
|
|
427
|
-
| "rating"
|
|
428
|
-
| "votes"
|
|
429
|
-
| "revisions"
|
|
430
|
-
| "comments"
|
|
431
|
-
| "size"
|
|
432
|
-
| "random";
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Order direction
|
|
436
|
-
*/
|
|
437
|
-
export type OrderDirection = "asc" | "desc";
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Normalized order specification
|
|
441
|
-
*/
|
|
442
|
-
export interface NormalizedOrder {
|
|
443
|
-
field: OrderField;
|
|
444
|
-
direction: OrderDirection;
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
/**
|
|
448
|
-
* Normalized parent selector
|
|
449
|
-
*/
|
|
450
|
-
export type NormalizedParent =
|
|
451
|
-
| { type: "none" } // "-": orphan pages
|
|
452
|
-
| { type: "same" } // "=": sibling pages
|
|
453
|
-
| { type: "different" } // "-=": different parent
|
|
454
|
-
| { type: "children" } // ".": children of current page
|
|
455
|
-
| { type: "page"; name: string }; // specific page name
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* Date comparison operators
|
|
459
|
-
*/
|
|
460
|
-
export type DateComparisonOp = "=" | "<" | ">" | "<=" | ">=" | "<>";
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* Normalized date selector
|
|
464
|
-
*/
|
|
465
|
-
export type NormalizedDateSelector =
|
|
466
|
-
| { type: "year"; year: number }
|
|
467
|
-
| { type: "month"; year: number; month: number }
|
|
468
|
-
| { type: "comparison"; op: DateComparisonOp; date: string }
|
|
469
|
-
| { type: "relative"; unit: "day" | "week" | "month"; count: number };
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Numeric comparison operators
|
|
473
|
-
*/
|
|
474
|
-
export type NumericComparisonOp = "=" | "<" | ">" | "<=" | ">=";
|
|
475
|
-
|
|
476
|
-
/**
|
|
477
|
-
* Normalized numeric selector (for rating/votes)
|
|
478
|
-
*/
|
|
479
|
-
export interface NormalizedNumericSelector {
|
|
480
|
-
op: NumericComparisonOp;
|
|
481
|
-
value: number;
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
/**
|
|
485
|
-
* Fully normalized ListPages query
|
|
486
|
-
*
|
|
487
|
-
* All string fields are parsed and structured into type-safe objects.
|
|
488
|
-
* Use `normalizeQuery()` to convert from `ListPagesQuery`.
|
|
489
|
-
*
|
|
490
|
-
* Note: This is structural normalization, not full validation.
|
|
491
|
-
* Invalid inputs are either rejected (return undefined) or ignored.
|
|
492
|
-
*/
|
|
493
|
-
export interface NormalizedListPagesQuery {
|
|
494
|
-
pagetype?: "normal" | "hidden" | "*";
|
|
495
|
-
category?: NormalizedCategory;
|
|
496
|
-
tags?: NormalizedTags;
|
|
497
|
-
parent?: NormalizedParent;
|
|
498
|
-
linkTo?: string;
|
|
499
|
-
createdAt?: NormalizedDateSelector;
|
|
500
|
-
updatedAt?: NormalizedDateSelector;
|
|
501
|
-
createdBy?: string;
|
|
502
|
-
rating?: NormalizedNumericSelector;
|
|
503
|
-
votes?: NormalizedNumericSelector;
|
|
504
|
-
name?: string;
|
|
505
|
-
fullname?: string;
|
|
506
|
-
range?: "." | "before" | "after" | "others";
|
|
507
|
-
dataFormFields?: Record<string, string>;
|
|
508
|
-
order?: NormalizedOrder;
|
|
509
|
-
offset?: number;
|
|
510
|
-
limit?: number;
|
|
511
|
-
perPage?: number;
|
|
512
|
-
reverse?: boolean;
|
|
513
|
-
}
|