@jwilleke/ngdpbase-types 0.0.0 → 5.18.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/LICENSE +201 -0
- package/README.md +16 -2
- package/lib/packages/ngdpbase-types/index.d.ts +32 -0
- package/lib/packages/ngdpbase-types/testing.d.ts +43 -0
- package/lib/packages/ngdpbase-types/testing.js +53 -0
- package/lib/src/cache/CacheDependencies.d.ts +50 -0
- package/lib/src/cache/CacheDependencies.js +50 -0
- package/lib/src/cache/ICacheAdapter.d.ts +86 -0
- package/lib/src/cache/RegionCache.d.ts +171 -0
- package/lib/src/context/ActorContext.d.ts +48 -0
- package/lib/src/context/ActorContext.js +33 -0
- package/lib/src/context/ApiContext.d.ts +194 -0
- package/lib/src/context/ApiContext.js +273 -0
- package/lib/src/context/BaseContext.d.ts +110 -0
- package/lib/src/context/BaseContext.js +143 -0
- package/lib/src/context/JobContext.d.ts +153 -0
- package/lib/src/context/JobContext.js +144 -0
- package/lib/src/context/WikiContext.d.ts +404 -0
- package/lib/src/context/bootActions.d.ts +64 -0
- package/lib/src/context/bootActions.js +111 -0
- package/lib/src/converters/HtmlConverter.d.ts +70 -0
- package/lib/src/converters/IContentConverter.d.ts +94 -0
- package/lib/src/converters/JSPWikiConverter.d.ts +117 -0
- package/lib/src/converters/conversionWarning.d.ts +15 -0
- package/lib/src/converters/ncm/bridge.d.ts +22 -0
- package/lib/src/converters/ncm/existing.d.ts +23 -0
- package/lib/src/converters/ncm/fix/blocks.d.ts +89 -0
- package/lib/src/converters/ncm/fix/bulletMarkers.d.ts +21 -0
- package/lib/src/converters/ncm/fix/index.d.ts +36 -0
- package/lib/src/converters/ncm/fix/jspwikiBullets.d.ts +20 -0
- package/lib/src/converters/ncm/fix/jspwikiCodeMarkers.d.ts +38 -0
- package/lib/src/converters/ncm/fix/jspwikiHeadings.d.ts +25 -0
- package/lib/src/converters/ncm/fix/jspwikiIndent.d.ts +24 -0
- package/lib/src/converters/ncm/fix/jspwikiInsert.d.ts +21 -0
- package/lib/src/converters/ncm/fix/jspwikiItalic.d.ts +29 -0
- package/lib/src/converters/ncm/fix/jspwikiLinkLeftovers.d.ts +27 -0
- package/lib/src/converters/ncm/fix/moreInformationFooter.d.ts +25 -0
- package/lib/src/converters/ncm/fix/styleClosers.d.ts +25 -0
- package/lib/src/converters/ncm/fix/tightenLists.d.ts +30 -0
- package/lib/src/converters/ncm/fix/types.d.ts +33 -0
- package/lib/src/converters/ncm/footnotes.d.ts +39 -0
- package/lib/src/converters/ncm/images.d.ts +49 -0
- package/lib/src/converters/ncm/index.d.ts +20 -0
- package/lib/src/converters/ncm/links.d.ts +21 -0
- package/lib/src/converters/ncm/normalize.d.ts +39 -0
- package/lib/src/converters/ncm/placeholder.d.ts +25 -0
- package/lib/src/converters/ncm/tables.d.ts +36 -0
- package/lib/src/converters/ncm/types.d.ts +42 -0
- package/lib/src/http/egressPolicy.d.ts +52 -0
- package/lib/src/http/guardedFetch.d.ts +89 -0
- package/lib/src/http/guardedFetch.js +113 -0
- package/lib/src/http/guardedLookup.d.ts +48 -0
- package/lib/src/http/guardedLookup.js +73 -0
- package/lib/src/http/ssrf.d.ts +83 -0
- package/lib/src/http/ssrf.js +311 -0
- package/lib/src/mail/MailProvider.d.ts +36 -0
- package/lib/src/mail/NodemailerMailProvider.d.ts +26 -0
- package/lib/src/managers/AddonsManager.d.ts +691 -0
- package/lib/src/managers/AgentTokenManager.d.ts +269 -0
- package/lib/src/managers/AssetManager.d.ts +116 -0
- package/lib/src/managers/AttachmentManager.d.ts +1032 -0
- package/lib/src/managers/AuthManager.d.ts +1257 -0
- package/lib/src/managers/BackgroundJobManager.d.ts +434 -0
- package/lib/src/managers/BaseManager.d.ts +391 -0
- package/lib/src/managers/BaseManager.js +415 -0
- package/lib/src/managers/CacheManager.d.ts +159 -0
- package/lib/src/managers/CatalogManager.d.ts +235 -0
- package/lib/src/managers/CommentManager.d.ts +75 -0
- package/lib/src/managers/ConfigurationManager.d.ts +747 -0
- package/lib/src/managers/DatabaseManager.d.ts +89 -0
- package/lib/src/managers/DatabaseManager.js +236 -0
- package/lib/src/managers/EmailManager.d.ts +47 -0
- package/lib/src/managers/ExportManager.d.ts +129 -0
- package/lib/src/managers/ExportManager.js +420 -0
- package/lib/src/managers/FootnoteManager.d.ts +118 -0
- package/lib/src/managers/MediaManager.d.ts +279 -0
- package/lib/src/managers/MetricsManager.d.ts +89 -0
- package/lib/src/managers/NotificationManager.d.ts +165 -0
- package/lib/src/managers/OidcManager.d.ts +210 -0
- package/lib/src/managers/OrganizationManager.d.ts +107 -0
- package/lib/src/managers/PageManager.d.ts +1645 -0
- package/lib/src/managers/PersonManager.d.ts +48 -0
- package/lib/src/managers/PluginManager.d.ts +179 -0
- package/lib/src/managers/PluginManager.js +393 -0
- package/lib/src/managers/PolicyEvaluator.d.ts +213 -0
- package/lib/src/managers/RenderingManager.d.ts +358 -0
- package/lib/src/managers/RoleManager.d.ts +134 -0
- package/lib/src/managers/SearchManager.d.ts +402 -0
- package/lib/src/managers/ShareManager.d.ts +251 -0
- package/lib/src/managers/TemplateManager.d.ts +176 -0
- package/lib/src/managers/ThemeManager.d.ts +56 -0
- package/lib/src/managers/UserManager.d.ts +480 -0
- package/lib/src/managers/ValidationManager.d.ts +426 -0
- package/lib/src/managers/VariableManager.d.ts +145 -0
- package/lib/src/middleware/csrf.d.ts +3 -0
- package/lib/src/parsers/LinkParser.d.ts +457 -0
- package/lib/src/parsers/MarkupParser.d.ts +769 -0
- package/lib/src/parsers/context/ParseContext.d.ts +314 -0
- package/lib/src/parsers/data/emoji-map.d.ts +18 -0
- package/lib/src/parsers/dom/DOMBuilder.d.ts +210 -0
- package/lib/src/parsers/dom/DOMParser.d.ts +252 -0
- package/lib/src/parsers/dom/Tokenizer.d.ts +358 -0
- package/lib/src/parsers/dom/WikiDocument.d.ts +272 -0
- package/lib/src/parsers/dom/handlers/DOMLinkHandler.d.ts +260 -0
- package/lib/src/parsers/dom/handlers/DOMPluginHandler.d.ts +212 -0
- package/lib/src/parsers/dom/handlers/DOMVariableHandler.d.ts +171 -0
- package/lib/src/parsers/filters/BaseFilter.d.ts +269 -0
- package/lib/src/parsers/filters/FilterChain.d.ts +320 -0
- package/lib/src/parsers/handlers/BaseSyntaxHandler.d.ts +331 -0
- package/lib/src/parsers/handlers/HandlerRegistry.d.ts +225 -0
- package/lib/src/parsers/handlers/JSPWikiPreprocessor.d.ts +89 -0
- package/lib/src/parsers/handlers/LinkParserHandler.d.ts +80 -0
- package/lib/src/parsers/handlers/PluginSyntaxHandler.d.ts +78 -0
- package/lib/src/parsers/handlers/WikiFormHandler.d.ts +149 -0
- package/lib/src/parsers/handlers/WikiTagHandler.d.ts +125 -0
- package/lib/src/parsers/jspwikiTableRow.d.ts +39 -0
- package/lib/src/parsers/styleBlockSyntax.d.ts +14 -0
- package/lib/src/plugins/types.d.ts +79 -0
- package/lib/src/providers/AgentTokenAuthProvider.d.ts +40 -0
- package/lib/src/providers/AuthentikBearerAuthProvider.d.ts +75 -0
- package/lib/src/providers/BaseAttachmentProvider.d.ts +197 -0
- package/lib/src/providers/BaseAuthProvider.d.ts +220 -0
- package/lib/src/providers/BaseCacheProvider.d.ts +140 -0
- package/lib/src/providers/BaseCredentialsProvider.d.ts +84 -0
- package/lib/src/providers/BaseDatabaseProvider.d.ts +22 -0
- package/lib/src/providers/BaseDatabaseProvider.js +12 -0
- package/lib/src/providers/BaseLoggingProvider.d.ts +68 -0
- package/lib/src/providers/BaseLoggingProvider.js +37 -0
- package/lib/src/providers/BaseMediaProvider.d.ts +308 -0
- package/lib/src/providers/BasePageProvider.d.ts +337 -0
- package/lib/src/providers/BaseProvider.d.ts +98 -0
- package/lib/src/providers/BaseProvider.js +74 -0
- package/lib/src/providers/BaseSearchProvider.d.ts +362 -0
- package/lib/src/providers/BasicAttachmentProvider.d.ts +599 -0
- package/lib/src/providers/CloudflareAccessAuthProvider.d.ts +72 -0
- package/lib/src/providers/FileCredentialsProvider.d.ts +33 -0
- package/lib/src/providers/FileJobStateProvider.d.ts +58 -0
- package/lib/src/providers/FileLoggingProvider.d.ts +43 -0
- package/lib/src/providers/FileLoggingProvider.js +120 -0
- package/lib/src/providers/FileOidcAdapter.d.ts +25 -0
- package/lib/src/providers/FileSystemMediaProvider.d.ts +403 -0
- package/lib/src/providers/LunrSearchProvider.d.ts +280 -0
- package/lib/src/providers/MagicLinkAuthProvider.d.ts +125 -0
- package/lib/src/providers/NullCacheProvider.d.ts +72 -0
- package/lib/src/providers/OidcAuthProvider.d.ts +180 -0
- package/lib/src/providers/OidcBearerAuthProvider.d.ts +30 -0
- package/lib/src/providers/PasskeyAuthProvider.d.ts +58 -0
- package/lib/src/providers/PasswordAuthProvider.d.ts +20 -0
- package/lib/src/providers/SqliteDatabaseProvider.d.ts +55 -0
- package/lib/src/providers/SqliteDatabaseProvider.js +90 -0
- package/lib/src/providers/SqliteJobStateProvider.d.ts +41 -0
- package/lib/src/providers/databaseMigrations.d.ts +8 -0
- package/lib/src/providers/databaseMigrations.js +47 -0
- package/lib/src/providers/jobState.d.ts +99 -0
- package/lib/src/providers/lunrQueryToMiniSearch.d.ts +32 -0
- package/lib/src/providers/mediaFilenameDate.d.ts +22 -0
- package/lib/src/providers/sqliteLocation.d.ts +17 -0
- package/lib/src/providers/sqliteLocation.js +55 -0
- package/lib/src/providers/sqliteMigrations.d.ts +48 -0
- package/lib/src/providers/sqliteMigrations.js +72 -0
- package/lib/src/rendering/githubAlerts.d.ts +22 -0
- package/lib/src/rendering/htmlPolicy.d.ts +76 -0
- package/lib/src/rendering/markdownConverter.d.ts +73 -0
- package/lib/src/security/PolicyDecisionPoint.d.ts +245 -0
- package/lib/src/security/PolicyInformationPoint.d.ts +448 -0
- package/lib/src/security/pageActions.d.ts +40 -0
- package/lib/src/security/permissions.generated.d.ts +78 -0
- package/lib/src/types/Asset.d.ts +414 -0
- package/lib/src/types/Catalog.d.ts +61 -0
- package/lib/src/types/Comment.d.ts +11 -0
- package/lib/src/types/Config.d.ts +388 -0
- package/lib/src/types/Organization.d.ts +78 -0
- package/lib/src/types/OrganizationProvider.d.ts +38 -0
- package/lib/src/types/Page.d.ts +220 -0
- package/lib/src/types/Person.d.ts +56 -0
- package/lib/src/types/PersonProvider.d.ts +25 -0
- package/lib/src/types/Policy.d.ts +139 -0
- package/lib/src/types/Policy.js +17 -0
- package/lib/src/types/Provider.d.ts +810 -0
- package/lib/src/types/Role.d.ts +84 -0
- package/lib/src/types/RoleProvider.d.ts +35 -0
- package/lib/src/types/Schema.d.ts +425 -0
- package/lib/src/types/Share.d.ts +172 -0
- package/lib/src/types/Share.js +81 -0
- package/lib/src/types/User.d.ts +304 -0
- package/lib/src/types/Version.d.ts +189 -0
- package/lib/src/types/WikiEngine.d.ts +128 -0
- package/lib/src/types/express.d.ts +120 -0
- package/lib/src/types/express.js +1 -0
- package/lib/src/types/guards.d.ts +78 -0
- package/lib/src/types/heic-decode.d.ts +16 -0
- package/lib/src/types/index.d.ts +19 -0
- package/lib/src/types/linkedom.d.ts +77 -0
- package/lib/src/types/markdown-it-plugins.d.ts +21 -0
- package/lib/src/utils/DeltaStorage.d.ts +118 -0
- package/lib/src/utils/LocaleUtils.d.ts +105 -0
- package/lib/src/utils/LocaleUtils.js +294 -0
- package/lib/src/utils/PageNameMatcher.d.ts +98 -0
- package/lib/src/utils/PathPreflight.d.ts +38 -0
- package/lib/src/utils/PathPreflight.js +50 -0
- package/lib/src/utils/SectionUtils.d.ts +40 -0
- package/lib/src/utils/addonConfigLayer.d.ts +144 -0
- package/lib/src/utils/addonConfigLayer.js +382 -0
- package/lib/src/utils/addonDatabaseRules.d.ts +25 -0
- package/lib/src/utils/addonDatabaseRules.js +57 -0
- package/lib/src/utils/addonHost.d.ts +51 -0
- package/lib/src/utils/addonHost.js +72 -0
- package/lib/src/utils/addonInstaller.d.ts +109 -0
- package/lib/src/utils/addonLock.d.ts +37 -0
- package/lib/src/utils/addonLock.js +48 -0
- package/lib/src/utils/addonPageSync.d.ts +45 -0
- package/lib/src/utils/addonProvenance.d.ts +48 -0
- package/lib/src/utils/addonTarball.d.ts +41 -0
- package/lib/src/utils/addonsPathResolver.d.ts +76 -0
- package/lib/src/utils/addonsPathResolver.js +129 -0
- package/lib/src/utils/assetMetadataTags.d.ts +66 -0
- package/lib/src/utils/atomicWrite.d.ts +28 -0
- package/lib/src/utils/auditConfigChange.d.ts +57 -0
- package/lib/src/utils/auditEventNames.d.ts +50 -0
- package/lib/src/utils/auditEventNames.generated.d.ts +163 -0
- package/lib/src/utils/auditEventNames.generated.js +168 -0
- package/lib/src/utils/auditEventNames.js +49 -0
- package/lib/src/utils/auditEvents.d.ts +265 -0
- package/lib/src/utils/auditEvents.js +309 -0
- package/lib/src/utils/auditRegistry.d.ts +102 -0
- package/lib/src/utils/auditRegistry.js +168 -0
- package/lib/src/utils/bip39English.d.ts +2 -0
- package/lib/src/utils/configEnvKeys.d.ts +68 -0
- package/lib/src/utils/configFiles.d.ts +74 -0
- package/lib/src/utils/configFiles.js +150 -0
- package/lib/src/utils/delegation.d.ts +48 -0
- package/lib/src/utils/deriveUsername.d.ts +21 -0
- package/lib/src/utils/explainMediaPath.d.ts +123 -0
- package/lib/src/utils/formerTitles.d.ts +69 -0
- package/lib/src/utils/frontmatterAccess.d.ts +54 -0
- package/lib/src/utils/headlessAdminPassword.d.ts +55 -0
- package/lib/src/utils/imageTransform.d.ts +52 -0
- package/lib/src/utils/instanceEnvSecret.d.ts +51 -0
- package/lib/src/utils/jobSlots.d.ts +43 -0
- package/lib/src/utils/keywordNormalizer.d.ts +127 -0
- package/lib/src/utils/logger.d.ts +70 -0
- package/lib/src/utils/logger.js +106 -0
- package/lib/src/utils/magicLinkDeviceState.d.ts +95 -0
- package/lib/src/utils/managerUtils.d.ts +40 -0
- package/lib/src/utils/migrateLegacyPrivateAttachments.d.ts +15 -0
- package/lib/src/utils/orgFilename.d.ts +22 -0
- package/lib/src/utils/pageFeature.d.ts +27 -0
- package/lib/src/utils/pageFrontmatter.d.ts +21 -0
- package/lib/src/utils/pageNotes.d.ts +150 -0
- package/lib/src/utils/pageTitleRule.d.ts +37 -0
- package/lib/src/utils/pageToArticle.d.ts +59 -0
- package/lib/src/utils/pageUrl.d.ts +18 -0
- package/lib/src/utils/passwordChange.d.ts +12 -0
- package/lib/src/utils/passwordHash.d.ts +60 -0
- package/lib/src/utils/permissionCatalog.d.ts +52 -0
- package/lib/src/utils/pluginFormatters.d.ts +452 -0
- package/lib/src/utils/pluginFormatters.js +714 -0
- package/lib/src/utils/privateLinkRewrite.d.ts +42 -0
- package/lib/src/utils/privateStoreAccess.d.ts +57 -0
- package/lib/src/utils/privateStoreAccess.js +65 -0
- package/lib/src/utils/privateStoreCatalogs.d.ts +40 -0
- package/lib/src/utils/privateStoreCrypto.d.ts +127 -0
- package/lib/src/utils/privateStoreDoor.d.ts +181 -0
- package/lib/src/utils/privateStoreExport.d.ts +72 -0
- package/lib/src/utils/privateStoreFiles.d.ts +120 -0
- package/lib/src/utils/privateStoreMeta.d.ts +64 -0
- package/lib/src/utils/privateStoreMigrations.d.ts +37 -0
- package/lib/src/utils/privateStorePath.d.ts +259 -0
- package/lib/src/utils/privateStorePath.js +436 -0
- package/lib/src/utils/privateStoreTakeout.d.ts +76 -0
- package/lib/src/utils/privateStoreUnlock.d.ts +175 -0
- package/lib/src/utils/proxyClaim.d.ts +59 -0
- package/lib/src/utils/proxyClaim.js +30 -0
- package/lib/src/utils/redactPrivateNames.d.ts +21 -0
- package/lib/src/utils/redactPrivateNames.js +89 -0
- package/lib/src/utils/redactSecrets.d.ts +58 -0
- package/lib/src/utils/redactSecrets.js +171 -0
- package/lib/src/utils/renameLinkRewrite.d.ts +112 -0
- package/lib/src/utils/roleGrants.d.ts +35 -0
- package/lib/src/utils/safeRedirect.d.ts +32 -0
- package/lib/src/utils/schedule.d.ts +54 -0
- package/lib/src/utils/secretFileMode.d.ts +17 -0
- package/lib/src/utils/seededShippedPages.d.ts +45 -0
- package/lib/src/utils/sensitiveValues.d.ts +59 -0
- package/lib/src/utils/sensitiveValues.js +106 -0
- package/lib/src/utils/sessionEnd.d.ts +12 -0
- package/lib/src/utils/sessionGeneration.d.ts +24 -0
- package/lib/src/utils/sessionIdle.d.ts +41 -0
- package/lib/src/utils/sessionLimits.d.ts +68 -0
- package/lib/src/utils/shareLockbox.d.ts +64 -0
- package/lib/src/utils/sigstoreTrustedRoot.d.ts +33 -0
- package/lib/src/utils/sniffMime.d.ts +21 -0
- package/lib/src/utils/storeSearchIndex.d.ts +75 -0
- package/lib/src/utils/subjectMayDo.d.ts +21 -0
- package/lib/src/utils/systemCategoryRules.d.ts +30 -0
- package/lib/src/utils/systemCategoryRules.js +41 -0
- package/lib/src/utils/userCreateError.d.ts +62 -0
- package/lib/src/utils/username.d.ts +53 -0
- package/lib/src/utils/vaultUrlRewrite.d.ts +27 -0
- package/lib/src/utils/version.d.ts +84 -0
- package/lib/src/utils/videoFrame.d.ts +21 -0
- package/package.json +54 -3
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LinkParser - Centralized link parsing for ngdpbase
|
|
3
|
+
*
|
|
4
|
+
* Inspired by JSPWiki's link parsing implementation, this class provides
|
|
5
|
+
* a centralized, flexible, and maintainable approach to parsing various
|
|
6
|
+
* types of links in wiki content.
|
|
7
|
+
*
|
|
8
|
+
* Supports the following link formats:
|
|
9
|
+
* - [PageName] - Simple internal wiki links
|
|
10
|
+
* - [DisplayText|Target] - Links with custom display text
|
|
11
|
+
* - [DisplayText|Target|attributes] - Links with custom attributes
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Centralized parsing logic to reduce brittle code
|
|
15
|
+
* - Security-focused attribute validation
|
|
16
|
+
* - Support for internal wiki links, external links, and InterWiki links
|
|
17
|
+
* - Extensible architecture for future link types
|
|
18
|
+
* - Comprehensive error handling and validation
|
|
19
|
+
*
|
|
20
|
+
* @class LinkParser
|
|
21
|
+
*
|
|
22
|
+
* @property {LinkParserOptions} options - Parser configuration options
|
|
23
|
+
* @property {Set<string>} pageNames - Cache of available page names
|
|
24
|
+
* @property {PageNameMatcher|null} pageNameMatcher - Page name matching utility
|
|
25
|
+
* @property {Map<string, InterWikiSiteConfig>} interWikiSites - InterWiki site configurations
|
|
26
|
+
* @property {RegExp} linkPattern - Regular expression for link matching
|
|
27
|
+
*
|
|
28
|
+
* @see {@link PageNameMatcher} for fuzzy page matching
|
|
29
|
+
* @see {@link RenderingManager} for usage
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* const linkParser = new LinkParser();
|
|
33
|
+
* linkParser.setPageNames(['Main', 'Help', 'About']);
|
|
34
|
+
* const html = linkParser.parseLinks('[Main] and [Help|Documentation]');
|
|
35
|
+
*
|
|
36
|
+
* @author ngdpbase
|
|
37
|
+
* @version 1.0.0
|
|
38
|
+
* @see https://github.com/jwilleke/ngdpbase/issues/75
|
|
39
|
+
*/
|
|
40
|
+
import PageNameMatcher from '../utils/PageNameMatcher.js';
|
|
41
|
+
/**
|
|
42
|
+
* A bracket that is not escaped: preceded by an even number of backslashes,
|
|
43
|
+
* none included (#1480). CommonMark's `\[` is a literal `[`, so it is not
|
|
44
|
+
* a link, a variable or a plugin, for the renderer, the link graph or the
|
|
45
|
+
* rename rewriter alike. `\\[` — an escaped backslash — still opens one.
|
|
46
|
+
* A lookbehind, so it consumes nothing and match offsets are unchanged.
|
|
47
|
+
*/
|
|
48
|
+
export declare const UNESCAPED_BRACKET = "(?<=(?:^|[^\\\\])(?:\\\\\\\\)*)";
|
|
49
|
+
/**
|
|
50
|
+
* Not a task-list checkbox (#1476, operator: task lists are supported): a
|
|
51
|
+
* `[ ]`, `[x]` or `[X]` right after a list marker (`-`, `*`, `+`, `1.`,
|
|
52
|
+
* `1)`) at the start of a line, followed by a space. GitHub's task lists —
|
|
53
|
+
* markdown-it-task-lists renders them — and never a link to a page named
|
|
54
|
+
* "x". A lookahead, so it consumes nothing. Needs the `m` flag for `^`, so it
|
|
55
|
+
* spells the line start as `(?:^|\n)` instead.
|
|
56
|
+
*/
|
|
57
|
+
export declare const NOT_TASK_MARKER = "(?!(?<=(?:^|\\n)[ \\t]*(?:[-*+]|\\d+[.)])[ \\t]+)\\[[ xX]\\][ \\t])";
|
|
58
|
+
/**
|
|
59
|
+
* Not a GitHub alert marker (#1493): `[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`,
|
|
60
|
+
* `[!WARNING]` or `[!CAUTION]` alone on a blockquote's line, which the page
|
|
61
|
+
* profile renders as an alert box — never a link to a page named "!NOTE". A
|
|
62
|
+
* lookahead, so it consumes nothing; spells the line start as `(?:^|\n)`.
|
|
63
|
+
*/
|
|
64
|
+
export declare const NOT_ALERT_MARKER = "(?!(?<=(?:^|\\n)[ \\t]*(?:>[ \\t]?)+[ \\t]*)\\[!(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\][ \\t]*(?:\\n|$))";
|
|
65
|
+
/**
|
|
66
|
+
* The wiki link syntax, as a source string: `[text]`, `[text|target]` or
|
|
67
|
+
* `[text|target|attributes]`. The trailing `(?!\()` skips `[text](url)` —
|
|
68
|
+
* that is a markdown link, and its bracket text is not a wiki link target.
|
|
69
|
+
*
|
|
70
|
+
* Exported as a source string rather than a RegExp because the compiled form
|
|
71
|
+
* needs the `g` flag, and a shared global RegExp carries `lastIndex` between
|
|
72
|
+
* callers. Use {@link wikiLinkPattern} to get a fresh one.
|
|
73
|
+
*
|
|
74
|
+
* Shared so that anything reasoning about link targets — rendering, the
|
|
75
|
+
* link graph, the rename rewriter (#1094) — agrees with the parser about what
|
|
76
|
+
* a link *is*. A second copy of this pattern is a second answer waiting to
|
|
77
|
+
* drift from this one.
|
|
78
|
+
*/
|
|
79
|
+
export declare const WIKI_LINK_PATTERN_SOURCE = "(?<=(?:^|[^\\\\])(?:\\\\\\\\)*)(?!(?<=(?:^|\\n)[ \\t]*(?:[-*+]|\\d+[.)])[ \\t]+)\\[[ xX]\\][ \\t])(?!(?<=(?:^|\\n)[ \\t]*(?:>[ \\t]?)+[ \\t]*)\\[!(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\][ \\t]*(?:\\n|$))\\[([^|\\]]+)(?:\\|([^|\\]]+))?(?:\\|([^\\]]+))?\\](?!\\()";
|
|
80
|
+
/** A reference label as CommonMark matches it: case-insensitive, inner whitespace collapsed. */
|
|
81
|
+
export declare function referenceLabel(raw: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* Where the page's reference links are (#1491): each definition's `[label]`,
|
|
84
|
+
* and each use of a defined label — `[text][label]` (no space between),
|
|
85
|
+
* `[label][]` and `[label]`. markdown-it renders them and hides the
|
|
86
|
+
* definitions; every other `[…]` stays a wiki link. A page that defines
|
|
87
|
+
* nothing has no ranges, so it renders exactly as before.
|
|
88
|
+
*/
|
|
89
|
+
export declare function referenceLinkRanges(content: string): Array<[number, number]>;
|
|
90
|
+
/**
|
|
91
|
+
* The link text of every Markdown link whose text holds brackets of its own
|
|
92
|
+
* (#1708): `[a [b] c](url)`. CommonMark allows balanced brackets there, and
|
|
93
|
+
* markdown-it renders them, but the wiki link syntax took the inner `[b`
|
|
94
|
+
* first and split the link. Each range runs from the opening `[` to its
|
|
95
|
+
* matching `]`, which is followed by `(`.
|
|
96
|
+
*
|
|
97
|
+
* Every reader of wiki links skips a match that starts inside one of these
|
|
98
|
+
* ranges, so the renderer, the link graph and the rename rewriter agree that
|
|
99
|
+
* the brackets are link text. An escaped bracket (#1480) is not counted, and
|
|
100
|
+
* link text that starts with NCM's `[[` escape is left to it. One
|
|
101
|
+
* pass with a stack, so a long page costs no more than its length.
|
|
102
|
+
*
|
|
103
|
+
* Reference links (#1491) are Markdown link text too: `[text][label]`,
|
|
104
|
+
* `[label][]` and `[label]` when the page defines `label`, and the
|
|
105
|
+
* definition line's `[label]` itself. See {@link referenceLinkRanges}.
|
|
106
|
+
*/
|
|
107
|
+
export declare function markdownLinkTextRanges(content: string): Array<[number, number]>;
|
|
108
|
+
/** Whether `offset` falls inside one of `ranges`, its opening bracket included. */
|
|
109
|
+
export declare function insideMarkdownLinkText(ranges: ReadonlyArray<[number, number]>, offset: number): boolean;
|
|
110
|
+
/** A fresh global RegExp for the wiki link syntax. Never share one. */
|
|
111
|
+
export declare function wikiLinkPattern(): RegExp;
|
|
112
|
+
/**
|
|
113
|
+
* Target shapes that are NOT internal wiki page names. Non-global, so these
|
|
114
|
+
* are stateless and safe to share.
|
|
115
|
+
*/
|
|
116
|
+
export declare const LINK_URL_PATTERNS: {
|
|
117
|
+
readonly external: RegExp;
|
|
118
|
+
readonly email: RegExp;
|
|
119
|
+
readonly anchor: RegExp;
|
|
120
|
+
readonly absolute: RegExp;
|
|
121
|
+
};
|
|
122
|
+
/** `Site:path` — an InterWiki reference, not a local page. */
|
|
123
|
+
export declare const INTERWIKI_PATTERN: RegExp;
|
|
124
|
+
/**
|
|
125
|
+
* Default CSS classes for different link types
|
|
126
|
+
*/
|
|
127
|
+
export interface DefaultClasses {
|
|
128
|
+
/** Class for internal wiki links */
|
|
129
|
+
internal: string;
|
|
130
|
+
/** Class for external links */
|
|
131
|
+
external: string;
|
|
132
|
+
/** Class for InterWiki links */
|
|
133
|
+
interwiki: string;
|
|
134
|
+
/** Class for red links (non-existent pages) */
|
|
135
|
+
redlink: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* URL pattern definitions for link type detection
|
|
139
|
+
*/
|
|
140
|
+
export interface UrlPatterns {
|
|
141
|
+
/** Pattern for external HTTP/HTTPS URLs */
|
|
142
|
+
external: RegExp;
|
|
143
|
+
/** Pattern for email links */
|
|
144
|
+
email: RegExp;
|
|
145
|
+
/** Pattern for anchor links */
|
|
146
|
+
anchor: RegExp;
|
|
147
|
+
/** Pattern for absolute paths */
|
|
148
|
+
absolute: RegExp;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Security configuration options
|
|
152
|
+
*/
|
|
153
|
+
export interface SecurityOptions {
|
|
154
|
+
/** Validate URLs for safety */
|
|
155
|
+
validateUrls: boolean;
|
|
156
|
+
/** Sanitize HTML attributes */
|
|
157
|
+
sanitizeAttributes: boolean;
|
|
158
|
+
/** Prevent XSS attacks */
|
|
159
|
+
preventXSS: boolean;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* LinkParser configuration options
|
|
163
|
+
*/
|
|
164
|
+
export interface LinkParserOptions {
|
|
165
|
+
/** Allowed HTML attributes for links */
|
|
166
|
+
allowedAttributes: string[];
|
|
167
|
+
/** Default CSS classes for link types */
|
|
168
|
+
defaultClasses: DefaultClasses;
|
|
169
|
+
/** URL patterns for validation */
|
|
170
|
+
urlPatterns: UrlPatterns;
|
|
171
|
+
/** InterWiki site pattern */
|
|
172
|
+
interWikiPattern: RegExp;
|
|
173
|
+
/** Security settings */
|
|
174
|
+
security: SecurityOptions;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* InterWiki site configuration
|
|
178
|
+
*/
|
|
179
|
+
export interface InterWikiSiteConfig {
|
|
180
|
+
/** URL template with %s placeholder for page name */
|
|
181
|
+
url: string;
|
|
182
|
+
/** Description of the InterWiki site */
|
|
183
|
+
description?: string;
|
|
184
|
+
/** Whether to open links in new window */
|
|
185
|
+
openInNewWindow?: boolean;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* HTML attributes for links
|
|
189
|
+
*/
|
|
190
|
+
export interface LinkAttributes {
|
|
191
|
+
[key: string]: string;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Parsing context for link generation
|
|
195
|
+
*/
|
|
196
|
+
export interface ParserContext {
|
|
197
|
+
/** Current page name */
|
|
198
|
+
pageName?: string;
|
|
199
|
+
/** Additional context data */
|
|
200
|
+
[key: string]: unknown;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parser statistics
|
|
204
|
+
*/
|
|
205
|
+
export interface ParserStats {
|
|
206
|
+
/** Number of page names in cache */
|
|
207
|
+
pageNamesCount: number;
|
|
208
|
+
/** Number of InterWiki sites configured */
|
|
209
|
+
interWikiSitesCount: number;
|
|
210
|
+
/** Number of allowed attributes */
|
|
211
|
+
allowedAttributes: number;
|
|
212
|
+
/** Whether security features are enabled */
|
|
213
|
+
securityEnabled: boolean;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Link data structure for Link constructor
|
|
217
|
+
*/
|
|
218
|
+
export interface LinkData {
|
|
219
|
+
/** Original text from content */
|
|
220
|
+
originalText?: string;
|
|
221
|
+
/** Display text for the link */
|
|
222
|
+
text?: string;
|
|
223
|
+
/** Target page or URL */
|
|
224
|
+
target?: string | null;
|
|
225
|
+
/** Raw attributes string */
|
|
226
|
+
attributesString?: string | null;
|
|
227
|
+
/** Parsed attributes object */
|
|
228
|
+
attributes?: LinkAttributes;
|
|
229
|
+
/** Start index in content */
|
|
230
|
+
startIndex?: number;
|
|
231
|
+
/** End index in content */
|
|
232
|
+
endIndex?: number;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Link information object returned by toObject()
|
|
236
|
+
*/
|
|
237
|
+
export interface LinkInfo {
|
|
238
|
+
/** Original text from content */
|
|
239
|
+
originalText: string;
|
|
240
|
+
/** Display text for the link */
|
|
241
|
+
text: string;
|
|
242
|
+
/** Target page or URL */
|
|
243
|
+
target: string | null;
|
|
244
|
+
/** Parsed attributes */
|
|
245
|
+
attributes: LinkAttributes;
|
|
246
|
+
/** Whether this is a simple link */
|
|
247
|
+
isSimple: boolean;
|
|
248
|
+
/** Whether the link has attributes */
|
|
249
|
+
hasAttributes: boolean;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Link type enumeration
|
|
253
|
+
*/
|
|
254
|
+
export type LinkType = 'internal' | 'external' | 'interwiki' | 'email' | 'anchor';
|
|
255
|
+
/**
|
|
256
|
+
* Main LinkParser class
|
|
257
|
+
*/
|
|
258
|
+
export declare class LinkParser {
|
|
259
|
+
/** Parser configuration options */
|
|
260
|
+
options: LinkParserOptions;
|
|
261
|
+
/** Cache of available page names */
|
|
262
|
+
pageNames: Set<string>;
|
|
263
|
+
/** Page name matcher for fuzzy matching */
|
|
264
|
+
pageNameMatcher: PageNameMatcher | null;
|
|
265
|
+
/** InterWiki sites configuration */
|
|
266
|
+
interWikiSites: Map<string, InterWikiSiteConfig>;
|
|
267
|
+
/** Link pattern regex */
|
|
268
|
+
linkPattern: RegExp;
|
|
269
|
+
/**
|
|
270
|
+
* Create a new LinkParser instance
|
|
271
|
+
*
|
|
272
|
+
* @constructor
|
|
273
|
+
* @param {Partial<LinkParserOptions>} [options={}] - Configuration options
|
|
274
|
+
*/
|
|
275
|
+
constructor(options?: Partial<LinkParserOptions>);
|
|
276
|
+
/**
|
|
277
|
+
* Set the list of existing wiki page names for link validation
|
|
278
|
+
* @param {string[]} pageNames - Array of page names
|
|
279
|
+
* @param {boolean} matchEnglishPlurals - Enable plural matching (default: true)
|
|
280
|
+
* @param {boolean} matchCamelCase - Enable CamelCase matching (default: false)
|
|
281
|
+
*/
|
|
282
|
+
setPageNames(pageNames: string[], matchEnglishPlurals?: boolean, matchCamelCase?: boolean): void;
|
|
283
|
+
/**
|
|
284
|
+
* Add a page name to the known pages
|
|
285
|
+
* @param {string} pageName - Page name to add
|
|
286
|
+
*/
|
|
287
|
+
addPageName(pageName: string): void;
|
|
288
|
+
/**
|
|
289
|
+
* Set InterWiki sites configuration
|
|
290
|
+
* @param {Map<string, InterWikiSiteConfig> | Record<string, InterWikiSiteConfig>} sites - InterWiki sites configuration
|
|
291
|
+
*/
|
|
292
|
+
setInterWikiSites(sites: Map<string, InterWikiSiteConfig> | Record<string, InterWikiSiteConfig>): void;
|
|
293
|
+
/**
|
|
294
|
+
* Parse all links in the given content
|
|
295
|
+
* @param {string} content - Content containing wiki links
|
|
296
|
+
* @param {ParserContext} context - Parsing context (pageName, etc.)
|
|
297
|
+
* @returns {string} Content with links converted to HTML
|
|
298
|
+
*/
|
|
299
|
+
parseLinks(content: string, context?: ParserContext): string;
|
|
300
|
+
/**
|
|
301
|
+
* Find all links in the content
|
|
302
|
+
* @param {string} content - Content to search
|
|
303
|
+
* @returns {Link[]} Array of Link objects
|
|
304
|
+
*/
|
|
305
|
+
findLinks(content: string): Link[];
|
|
306
|
+
/**
|
|
307
|
+
* Parse link attributes from attribute string
|
|
308
|
+
* @param {string} attributeString - String containing attributes
|
|
309
|
+
* @returns {LinkAttributes} Parsed attributes object
|
|
310
|
+
*/
|
|
311
|
+
parseAttributes(attributeString: string): LinkAttributes;
|
|
312
|
+
/**
|
|
313
|
+
* Generate HTML for a link
|
|
314
|
+
* @param {Link} link - Link object to process
|
|
315
|
+
* @param {ParserContext} context - Parsing context
|
|
316
|
+
* @returns {string} HTML link
|
|
317
|
+
*/
|
|
318
|
+
generateLinkHtml(link: Link, context: ParserContext): string;
|
|
319
|
+
/**
|
|
320
|
+
* Determine the type of link
|
|
321
|
+
* @param {Link} link - Link object
|
|
322
|
+
* @returns {LinkType} Link type
|
|
323
|
+
*/
|
|
324
|
+
determineLinkType(link: Link): LinkType;
|
|
325
|
+
/**
|
|
326
|
+
* Generate HTML for internal wiki links
|
|
327
|
+
* @param {Link} link - Link object
|
|
328
|
+
* @param {ParserContext} _context - Parsing context (unused)
|
|
329
|
+
* @returns {string} HTML link
|
|
330
|
+
*/
|
|
331
|
+
generateInternalLink(link: Link, _context: ParserContext): string;
|
|
332
|
+
/**
|
|
333
|
+
* Generate HTML for external links
|
|
334
|
+
* @param {Link} link - Link object
|
|
335
|
+
* @param {ParserContext} _context - Parsing context (unused)
|
|
336
|
+
* @returns {string} HTML link
|
|
337
|
+
*/
|
|
338
|
+
generateExternalLink(link: Link, _context: ParserContext): string;
|
|
339
|
+
/**
|
|
340
|
+
* Generate HTML for InterWiki links
|
|
341
|
+
* @param {Link} link - Link object
|
|
342
|
+
* @param {ParserContext} _context - Parsing context (unused)
|
|
343
|
+
* @returns {string} HTML link
|
|
344
|
+
*/
|
|
345
|
+
generateInterWikiLink(link: Link, _context: ParserContext): string;
|
|
346
|
+
/**
|
|
347
|
+
* Generate HTML for email links
|
|
348
|
+
* @param {Link} link - Link object
|
|
349
|
+
* @param {ParserContext} _context - Parsing context (unused)
|
|
350
|
+
* @returns {string} HTML link
|
|
351
|
+
*/
|
|
352
|
+
generateEmailLink(link: Link, _context: ParserContext): string;
|
|
353
|
+
/**
|
|
354
|
+
* Generate HTML for anchor links
|
|
355
|
+
* @param {Link} link - Link object
|
|
356
|
+
* @param {ParserContext} _context - Parsing context (unused)
|
|
357
|
+
* @returns {string} HTML link
|
|
358
|
+
*/
|
|
359
|
+
generateAnchorLink(link: Link, _context: ParserContext): string;
|
|
360
|
+
/**
|
|
361
|
+
* Build HTML attribute string
|
|
362
|
+
* @param {LinkAttributes} customAttributes - Custom attributes from link
|
|
363
|
+
* @param {Record<string, string | undefined>} defaultAttributes - Default attributes
|
|
364
|
+
* @returns {string} HTML attribute string
|
|
365
|
+
*/
|
|
366
|
+
buildAttributeString(customAttributes?: LinkAttributes, defaultAttributes?: Record<string, string | undefined>): string;
|
|
367
|
+
/**
|
|
368
|
+
* Validate URL safety
|
|
369
|
+
* @param {string} url - URL to validate
|
|
370
|
+
* @returns {boolean} True if URL is safe
|
|
371
|
+
*/
|
|
372
|
+
isUrlSafe(url: string): boolean;
|
|
373
|
+
/**
|
|
374
|
+
* Sanitize style attribute value
|
|
375
|
+
* @param {string} style - Style value
|
|
376
|
+
* @returns {string} Sanitized style
|
|
377
|
+
*/
|
|
378
|
+
sanitizeStyleAttribute(style: string): string;
|
|
379
|
+
/**
|
|
380
|
+
* Sanitize attribute value to prevent XSS
|
|
381
|
+
* @param {string} value - Attribute value
|
|
382
|
+
* @returns {string} Sanitized value
|
|
383
|
+
*/
|
|
384
|
+
sanitizeAttributeValue(value: string): string;
|
|
385
|
+
/**
|
|
386
|
+
* Escape HTML characters
|
|
387
|
+
* @param {string} text - Text to escape
|
|
388
|
+
* @returns {string} Escaped text
|
|
389
|
+
*/
|
|
390
|
+
escapeHtml(text: string): string;
|
|
391
|
+
/**
|
|
392
|
+
* Get parser statistics
|
|
393
|
+
* @returns {ParserStats} Parser statistics
|
|
394
|
+
*/
|
|
395
|
+
getStats(): ParserStats;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Link class representing a parsed link
|
|
399
|
+
*/
|
|
400
|
+
export declare class Link {
|
|
401
|
+
/** Original text from content */
|
|
402
|
+
originalText: string;
|
|
403
|
+
/** Display text for the link */
|
|
404
|
+
text: string;
|
|
405
|
+
/** Target page or URL */
|
|
406
|
+
target: string | null;
|
|
407
|
+
/** Raw attributes string */
|
|
408
|
+
attributesString: string | null;
|
|
409
|
+
/** Parsed attributes object */
|
|
410
|
+
attributes: LinkAttributes;
|
|
411
|
+
/** Start index in content */
|
|
412
|
+
startIndex: number;
|
|
413
|
+
/** End index in content */
|
|
414
|
+
endIndex: number;
|
|
415
|
+
/**
|
|
416
|
+
* Create a new Link instance
|
|
417
|
+
* @param {LinkData} data - Link data
|
|
418
|
+
*/
|
|
419
|
+
constructor(data?: LinkData);
|
|
420
|
+
/**
|
|
421
|
+
* Check if this is a simple link (no target specified)
|
|
422
|
+
* @returns {boolean} True if simple link
|
|
423
|
+
*/
|
|
424
|
+
isSimple(): boolean;
|
|
425
|
+
/**
|
|
426
|
+
* Get the effective target (target or text if no target)
|
|
427
|
+
* @returns {string} Effective target
|
|
428
|
+
*/
|
|
429
|
+
getEffectiveTarget(): string;
|
|
430
|
+
/**
|
|
431
|
+
* Check if link has attributes
|
|
432
|
+
* @returns {boolean} True if has attributes
|
|
433
|
+
*/
|
|
434
|
+
hasAttributes(): boolean;
|
|
435
|
+
/**
|
|
436
|
+
* Get attribute value by name
|
|
437
|
+
* @param {string} name - Attribute name
|
|
438
|
+
* @returns {string | undefined} Attribute value
|
|
439
|
+
*/
|
|
440
|
+
getAttribute(name: string): string | undefined;
|
|
441
|
+
/**
|
|
442
|
+
* Set attribute value
|
|
443
|
+
* @param {string} name - Attribute name
|
|
444
|
+
* @param {string} value - Attribute value
|
|
445
|
+
*/
|
|
446
|
+
setAttribute(name: string, value: string): void;
|
|
447
|
+
/**
|
|
448
|
+
* Get link information as object
|
|
449
|
+
* @returns {LinkInfo} Link information
|
|
450
|
+
*/
|
|
451
|
+
toObject(): LinkInfo;
|
|
452
|
+
}
|
|
453
|
+
declare const _default: {
|
|
454
|
+
LinkParser: typeof LinkParser;
|
|
455
|
+
Link: typeof Link;
|
|
456
|
+
};
|
|
457
|
+
export default _default;
|