@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.
Files changed (302) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +16 -2
  3. package/lib/packages/ngdpbase-types/index.d.ts +32 -0
  4. package/lib/packages/ngdpbase-types/testing.d.ts +43 -0
  5. package/lib/packages/ngdpbase-types/testing.js +53 -0
  6. package/lib/src/cache/CacheDependencies.d.ts +50 -0
  7. package/lib/src/cache/CacheDependencies.js +50 -0
  8. package/lib/src/cache/ICacheAdapter.d.ts +86 -0
  9. package/lib/src/cache/RegionCache.d.ts +171 -0
  10. package/lib/src/context/ActorContext.d.ts +48 -0
  11. package/lib/src/context/ActorContext.js +33 -0
  12. package/lib/src/context/ApiContext.d.ts +194 -0
  13. package/lib/src/context/ApiContext.js +273 -0
  14. package/lib/src/context/BaseContext.d.ts +110 -0
  15. package/lib/src/context/BaseContext.js +143 -0
  16. package/lib/src/context/JobContext.d.ts +153 -0
  17. package/lib/src/context/JobContext.js +144 -0
  18. package/lib/src/context/WikiContext.d.ts +404 -0
  19. package/lib/src/context/bootActions.d.ts +64 -0
  20. package/lib/src/context/bootActions.js +111 -0
  21. package/lib/src/converters/HtmlConverter.d.ts +70 -0
  22. package/lib/src/converters/IContentConverter.d.ts +94 -0
  23. package/lib/src/converters/JSPWikiConverter.d.ts +117 -0
  24. package/lib/src/converters/conversionWarning.d.ts +15 -0
  25. package/lib/src/converters/ncm/bridge.d.ts +22 -0
  26. package/lib/src/converters/ncm/existing.d.ts +23 -0
  27. package/lib/src/converters/ncm/fix/blocks.d.ts +89 -0
  28. package/lib/src/converters/ncm/fix/bulletMarkers.d.ts +21 -0
  29. package/lib/src/converters/ncm/fix/index.d.ts +36 -0
  30. package/lib/src/converters/ncm/fix/jspwikiBullets.d.ts +20 -0
  31. package/lib/src/converters/ncm/fix/jspwikiCodeMarkers.d.ts +38 -0
  32. package/lib/src/converters/ncm/fix/jspwikiHeadings.d.ts +25 -0
  33. package/lib/src/converters/ncm/fix/jspwikiIndent.d.ts +24 -0
  34. package/lib/src/converters/ncm/fix/jspwikiInsert.d.ts +21 -0
  35. package/lib/src/converters/ncm/fix/jspwikiItalic.d.ts +29 -0
  36. package/lib/src/converters/ncm/fix/jspwikiLinkLeftovers.d.ts +27 -0
  37. package/lib/src/converters/ncm/fix/moreInformationFooter.d.ts +25 -0
  38. package/lib/src/converters/ncm/fix/styleClosers.d.ts +25 -0
  39. package/lib/src/converters/ncm/fix/tightenLists.d.ts +30 -0
  40. package/lib/src/converters/ncm/fix/types.d.ts +33 -0
  41. package/lib/src/converters/ncm/footnotes.d.ts +39 -0
  42. package/lib/src/converters/ncm/images.d.ts +49 -0
  43. package/lib/src/converters/ncm/index.d.ts +20 -0
  44. package/lib/src/converters/ncm/links.d.ts +21 -0
  45. package/lib/src/converters/ncm/normalize.d.ts +39 -0
  46. package/lib/src/converters/ncm/placeholder.d.ts +25 -0
  47. package/lib/src/converters/ncm/tables.d.ts +36 -0
  48. package/lib/src/converters/ncm/types.d.ts +42 -0
  49. package/lib/src/http/egressPolicy.d.ts +52 -0
  50. package/lib/src/http/guardedFetch.d.ts +89 -0
  51. package/lib/src/http/guardedFetch.js +113 -0
  52. package/lib/src/http/guardedLookup.d.ts +48 -0
  53. package/lib/src/http/guardedLookup.js +73 -0
  54. package/lib/src/http/ssrf.d.ts +83 -0
  55. package/lib/src/http/ssrf.js +311 -0
  56. package/lib/src/mail/MailProvider.d.ts +36 -0
  57. package/lib/src/mail/NodemailerMailProvider.d.ts +26 -0
  58. package/lib/src/managers/AddonsManager.d.ts +691 -0
  59. package/lib/src/managers/AgentTokenManager.d.ts +269 -0
  60. package/lib/src/managers/AssetManager.d.ts +116 -0
  61. package/lib/src/managers/AttachmentManager.d.ts +1032 -0
  62. package/lib/src/managers/AuthManager.d.ts +1257 -0
  63. package/lib/src/managers/BackgroundJobManager.d.ts +434 -0
  64. package/lib/src/managers/BaseManager.d.ts +391 -0
  65. package/lib/src/managers/BaseManager.js +415 -0
  66. package/lib/src/managers/CacheManager.d.ts +159 -0
  67. package/lib/src/managers/CatalogManager.d.ts +235 -0
  68. package/lib/src/managers/CommentManager.d.ts +75 -0
  69. package/lib/src/managers/ConfigurationManager.d.ts +747 -0
  70. package/lib/src/managers/DatabaseManager.d.ts +89 -0
  71. package/lib/src/managers/DatabaseManager.js +236 -0
  72. package/lib/src/managers/EmailManager.d.ts +47 -0
  73. package/lib/src/managers/ExportManager.d.ts +129 -0
  74. package/lib/src/managers/ExportManager.js +420 -0
  75. package/lib/src/managers/FootnoteManager.d.ts +118 -0
  76. package/lib/src/managers/MediaManager.d.ts +279 -0
  77. package/lib/src/managers/MetricsManager.d.ts +89 -0
  78. package/lib/src/managers/NotificationManager.d.ts +165 -0
  79. package/lib/src/managers/OidcManager.d.ts +210 -0
  80. package/lib/src/managers/OrganizationManager.d.ts +107 -0
  81. package/lib/src/managers/PageManager.d.ts +1645 -0
  82. package/lib/src/managers/PersonManager.d.ts +48 -0
  83. package/lib/src/managers/PluginManager.d.ts +179 -0
  84. package/lib/src/managers/PluginManager.js +393 -0
  85. package/lib/src/managers/PolicyEvaluator.d.ts +213 -0
  86. package/lib/src/managers/RenderingManager.d.ts +358 -0
  87. package/lib/src/managers/RoleManager.d.ts +134 -0
  88. package/lib/src/managers/SearchManager.d.ts +402 -0
  89. package/lib/src/managers/ShareManager.d.ts +251 -0
  90. package/lib/src/managers/TemplateManager.d.ts +176 -0
  91. package/lib/src/managers/ThemeManager.d.ts +56 -0
  92. package/lib/src/managers/UserManager.d.ts +480 -0
  93. package/lib/src/managers/ValidationManager.d.ts +426 -0
  94. package/lib/src/managers/VariableManager.d.ts +145 -0
  95. package/lib/src/middleware/csrf.d.ts +3 -0
  96. package/lib/src/parsers/LinkParser.d.ts +457 -0
  97. package/lib/src/parsers/MarkupParser.d.ts +769 -0
  98. package/lib/src/parsers/context/ParseContext.d.ts +314 -0
  99. package/lib/src/parsers/data/emoji-map.d.ts +18 -0
  100. package/lib/src/parsers/dom/DOMBuilder.d.ts +210 -0
  101. package/lib/src/parsers/dom/DOMParser.d.ts +252 -0
  102. package/lib/src/parsers/dom/Tokenizer.d.ts +358 -0
  103. package/lib/src/parsers/dom/WikiDocument.d.ts +272 -0
  104. package/lib/src/parsers/dom/handlers/DOMLinkHandler.d.ts +260 -0
  105. package/lib/src/parsers/dom/handlers/DOMPluginHandler.d.ts +212 -0
  106. package/lib/src/parsers/dom/handlers/DOMVariableHandler.d.ts +171 -0
  107. package/lib/src/parsers/filters/BaseFilter.d.ts +269 -0
  108. package/lib/src/parsers/filters/FilterChain.d.ts +320 -0
  109. package/lib/src/parsers/handlers/BaseSyntaxHandler.d.ts +331 -0
  110. package/lib/src/parsers/handlers/HandlerRegistry.d.ts +225 -0
  111. package/lib/src/parsers/handlers/JSPWikiPreprocessor.d.ts +89 -0
  112. package/lib/src/parsers/handlers/LinkParserHandler.d.ts +80 -0
  113. package/lib/src/parsers/handlers/PluginSyntaxHandler.d.ts +78 -0
  114. package/lib/src/parsers/handlers/WikiFormHandler.d.ts +149 -0
  115. package/lib/src/parsers/handlers/WikiTagHandler.d.ts +125 -0
  116. package/lib/src/parsers/jspwikiTableRow.d.ts +39 -0
  117. package/lib/src/parsers/styleBlockSyntax.d.ts +14 -0
  118. package/lib/src/plugins/types.d.ts +79 -0
  119. package/lib/src/providers/AgentTokenAuthProvider.d.ts +40 -0
  120. package/lib/src/providers/AuthentikBearerAuthProvider.d.ts +75 -0
  121. package/lib/src/providers/BaseAttachmentProvider.d.ts +197 -0
  122. package/lib/src/providers/BaseAuthProvider.d.ts +220 -0
  123. package/lib/src/providers/BaseCacheProvider.d.ts +140 -0
  124. package/lib/src/providers/BaseCredentialsProvider.d.ts +84 -0
  125. package/lib/src/providers/BaseDatabaseProvider.d.ts +22 -0
  126. package/lib/src/providers/BaseDatabaseProvider.js +12 -0
  127. package/lib/src/providers/BaseLoggingProvider.d.ts +68 -0
  128. package/lib/src/providers/BaseLoggingProvider.js +37 -0
  129. package/lib/src/providers/BaseMediaProvider.d.ts +308 -0
  130. package/lib/src/providers/BasePageProvider.d.ts +337 -0
  131. package/lib/src/providers/BaseProvider.d.ts +98 -0
  132. package/lib/src/providers/BaseProvider.js +74 -0
  133. package/lib/src/providers/BaseSearchProvider.d.ts +362 -0
  134. package/lib/src/providers/BasicAttachmentProvider.d.ts +599 -0
  135. package/lib/src/providers/CloudflareAccessAuthProvider.d.ts +72 -0
  136. package/lib/src/providers/FileCredentialsProvider.d.ts +33 -0
  137. package/lib/src/providers/FileJobStateProvider.d.ts +58 -0
  138. package/lib/src/providers/FileLoggingProvider.d.ts +43 -0
  139. package/lib/src/providers/FileLoggingProvider.js +120 -0
  140. package/lib/src/providers/FileOidcAdapter.d.ts +25 -0
  141. package/lib/src/providers/FileSystemMediaProvider.d.ts +403 -0
  142. package/lib/src/providers/LunrSearchProvider.d.ts +280 -0
  143. package/lib/src/providers/MagicLinkAuthProvider.d.ts +125 -0
  144. package/lib/src/providers/NullCacheProvider.d.ts +72 -0
  145. package/lib/src/providers/OidcAuthProvider.d.ts +180 -0
  146. package/lib/src/providers/OidcBearerAuthProvider.d.ts +30 -0
  147. package/lib/src/providers/PasskeyAuthProvider.d.ts +58 -0
  148. package/lib/src/providers/PasswordAuthProvider.d.ts +20 -0
  149. package/lib/src/providers/SqliteDatabaseProvider.d.ts +55 -0
  150. package/lib/src/providers/SqliteDatabaseProvider.js +90 -0
  151. package/lib/src/providers/SqliteJobStateProvider.d.ts +41 -0
  152. package/lib/src/providers/databaseMigrations.d.ts +8 -0
  153. package/lib/src/providers/databaseMigrations.js +47 -0
  154. package/lib/src/providers/jobState.d.ts +99 -0
  155. package/lib/src/providers/lunrQueryToMiniSearch.d.ts +32 -0
  156. package/lib/src/providers/mediaFilenameDate.d.ts +22 -0
  157. package/lib/src/providers/sqliteLocation.d.ts +17 -0
  158. package/lib/src/providers/sqliteLocation.js +55 -0
  159. package/lib/src/providers/sqliteMigrations.d.ts +48 -0
  160. package/lib/src/providers/sqliteMigrations.js +72 -0
  161. package/lib/src/rendering/githubAlerts.d.ts +22 -0
  162. package/lib/src/rendering/htmlPolicy.d.ts +76 -0
  163. package/lib/src/rendering/markdownConverter.d.ts +73 -0
  164. package/lib/src/security/PolicyDecisionPoint.d.ts +245 -0
  165. package/lib/src/security/PolicyInformationPoint.d.ts +448 -0
  166. package/lib/src/security/pageActions.d.ts +40 -0
  167. package/lib/src/security/permissions.generated.d.ts +78 -0
  168. package/lib/src/types/Asset.d.ts +414 -0
  169. package/lib/src/types/Catalog.d.ts +61 -0
  170. package/lib/src/types/Comment.d.ts +11 -0
  171. package/lib/src/types/Config.d.ts +388 -0
  172. package/lib/src/types/Organization.d.ts +78 -0
  173. package/lib/src/types/OrganizationProvider.d.ts +38 -0
  174. package/lib/src/types/Page.d.ts +220 -0
  175. package/lib/src/types/Person.d.ts +56 -0
  176. package/lib/src/types/PersonProvider.d.ts +25 -0
  177. package/lib/src/types/Policy.d.ts +139 -0
  178. package/lib/src/types/Policy.js +17 -0
  179. package/lib/src/types/Provider.d.ts +810 -0
  180. package/lib/src/types/Role.d.ts +84 -0
  181. package/lib/src/types/RoleProvider.d.ts +35 -0
  182. package/lib/src/types/Schema.d.ts +425 -0
  183. package/lib/src/types/Share.d.ts +172 -0
  184. package/lib/src/types/Share.js +81 -0
  185. package/lib/src/types/User.d.ts +304 -0
  186. package/lib/src/types/Version.d.ts +189 -0
  187. package/lib/src/types/WikiEngine.d.ts +128 -0
  188. package/lib/src/types/express.d.ts +120 -0
  189. package/lib/src/types/express.js +1 -0
  190. package/lib/src/types/guards.d.ts +78 -0
  191. package/lib/src/types/heic-decode.d.ts +16 -0
  192. package/lib/src/types/index.d.ts +19 -0
  193. package/lib/src/types/linkedom.d.ts +77 -0
  194. package/lib/src/types/markdown-it-plugins.d.ts +21 -0
  195. package/lib/src/utils/DeltaStorage.d.ts +118 -0
  196. package/lib/src/utils/LocaleUtils.d.ts +105 -0
  197. package/lib/src/utils/LocaleUtils.js +294 -0
  198. package/lib/src/utils/PageNameMatcher.d.ts +98 -0
  199. package/lib/src/utils/PathPreflight.d.ts +38 -0
  200. package/lib/src/utils/PathPreflight.js +50 -0
  201. package/lib/src/utils/SectionUtils.d.ts +40 -0
  202. package/lib/src/utils/addonConfigLayer.d.ts +144 -0
  203. package/lib/src/utils/addonConfigLayer.js +382 -0
  204. package/lib/src/utils/addonDatabaseRules.d.ts +25 -0
  205. package/lib/src/utils/addonDatabaseRules.js +57 -0
  206. package/lib/src/utils/addonHost.d.ts +51 -0
  207. package/lib/src/utils/addonHost.js +72 -0
  208. package/lib/src/utils/addonInstaller.d.ts +109 -0
  209. package/lib/src/utils/addonLock.d.ts +37 -0
  210. package/lib/src/utils/addonLock.js +48 -0
  211. package/lib/src/utils/addonPageSync.d.ts +45 -0
  212. package/lib/src/utils/addonProvenance.d.ts +48 -0
  213. package/lib/src/utils/addonTarball.d.ts +41 -0
  214. package/lib/src/utils/addonsPathResolver.d.ts +76 -0
  215. package/lib/src/utils/addonsPathResolver.js +129 -0
  216. package/lib/src/utils/assetMetadataTags.d.ts +66 -0
  217. package/lib/src/utils/atomicWrite.d.ts +28 -0
  218. package/lib/src/utils/auditConfigChange.d.ts +57 -0
  219. package/lib/src/utils/auditEventNames.d.ts +50 -0
  220. package/lib/src/utils/auditEventNames.generated.d.ts +163 -0
  221. package/lib/src/utils/auditEventNames.generated.js +168 -0
  222. package/lib/src/utils/auditEventNames.js +49 -0
  223. package/lib/src/utils/auditEvents.d.ts +265 -0
  224. package/lib/src/utils/auditEvents.js +309 -0
  225. package/lib/src/utils/auditRegistry.d.ts +102 -0
  226. package/lib/src/utils/auditRegistry.js +168 -0
  227. package/lib/src/utils/bip39English.d.ts +2 -0
  228. package/lib/src/utils/configEnvKeys.d.ts +68 -0
  229. package/lib/src/utils/configFiles.d.ts +74 -0
  230. package/lib/src/utils/configFiles.js +150 -0
  231. package/lib/src/utils/delegation.d.ts +48 -0
  232. package/lib/src/utils/deriveUsername.d.ts +21 -0
  233. package/lib/src/utils/explainMediaPath.d.ts +123 -0
  234. package/lib/src/utils/formerTitles.d.ts +69 -0
  235. package/lib/src/utils/frontmatterAccess.d.ts +54 -0
  236. package/lib/src/utils/headlessAdminPassword.d.ts +55 -0
  237. package/lib/src/utils/imageTransform.d.ts +52 -0
  238. package/lib/src/utils/instanceEnvSecret.d.ts +51 -0
  239. package/lib/src/utils/jobSlots.d.ts +43 -0
  240. package/lib/src/utils/keywordNormalizer.d.ts +127 -0
  241. package/lib/src/utils/logger.d.ts +70 -0
  242. package/lib/src/utils/logger.js +106 -0
  243. package/lib/src/utils/magicLinkDeviceState.d.ts +95 -0
  244. package/lib/src/utils/managerUtils.d.ts +40 -0
  245. package/lib/src/utils/migrateLegacyPrivateAttachments.d.ts +15 -0
  246. package/lib/src/utils/orgFilename.d.ts +22 -0
  247. package/lib/src/utils/pageFeature.d.ts +27 -0
  248. package/lib/src/utils/pageFrontmatter.d.ts +21 -0
  249. package/lib/src/utils/pageNotes.d.ts +150 -0
  250. package/lib/src/utils/pageTitleRule.d.ts +37 -0
  251. package/lib/src/utils/pageToArticle.d.ts +59 -0
  252. package/lib/src/utils/pageUrl.d.ts +18 -0
  253. package/lib/src/utils/passwordChange.d.ts +12 -0
  254. package/lib/src/utils/passwordHash.d.ts +60 -0
  255. package/lib/src/utils/permissionCatalog.d.ts +52 -0
  256. package/lib/src/utils/pluginFormatters.d.ts +452 -0
  257. package/lib/src/utils/pluginFormatters.js +714 -0
  258. package/lib/src/utils/privateLinkRewrite.d.ts +42 -0
  259. package/lib/src/utils/privateStoreAccess.d.ts +57 -0
  260. package/lib/src/utils/privateStoreAccess.js +65 -0
  261. package/lib/src/utils/privateStoreCatalogs.d.ts +40 -0
  262. package/lib/src/utils/privateStoreCrypto.d.ts +127 -0
  263. package/lib/src/utils/privateStoreDoor.d.ts +181 -0
  264. package/lib/src/utils/privateStoreExport.d.ts +72 -0
  265. package/lib/src/utils/privateStoreFiles.d.ts +120 -0
  266. package/lib/src/utils/privateStoreMeta.d.ts +64 -0
  267. package/lib/src/utils/privateStoreMigrations.d.ts +37 -0
  268. package/lib/src/utils/privateStorePath.d.ts +259 -0
  269. package/lib/src/utils/privateStorePath.js +436 -0
  270. package/lib/src/utils/privateStoreTakeout.d.ts +76 -0
  271. package/lib/src/utils/privateStoreUnlock.d.ts +175 -0
  272. package/lib/src/utils/proxyClaim.d.ts +59 -0
  273. package/lib/src/utils/proxyClaim.js +30 -0
  274. package/lib/src/utils/redactPrivateNames.d.ts +21 -0
  275. package/lib/src/utils/redactPrivateNames.js +89 -0
  276. package/lib/src/utils/redactSecrets.d.ts +58 -0
  277. package/lib/src/utils/redactSecrets.js +171 -0
  278. package/lib/src/utils/renameLinkRewrite.d.ts +112 -0
  279. package/lib/src/utils/roleGrants.d.ts +35 -0
  280. package/lib/src/utils/safeRedirect.d.ts +32 -0
  281. package/lib/src/utils/schedule.d.ts +54 -0
  282. package/lib/src/utils/secretFileMode.d.ts +17 -0
  283. package/lib/src/utils/seededShippedPages.d.ts +45 -0
  284. package/lib/src/utils/sensitiveValues.d.ts +59 -0
  285. package/lib/src/utils/sensitiveValues.js +106 -0
  286. package/lib/src/utils/sessionEnd.d.ts +12 -0
  287. package/lib/src/utils/sessionGeneration.d.ts +24 -0
  288. package/lib/src/utils/sessionIdle.d.ts +41 -0
  289. package/lib/src/utils/sessionLimits.d.ts +68 -0
  290. package/lib/src/utils/shareLockbox.d.ts +64 -0
  291. package/lib/src/utils/sigstoreTrustedRoot.d.ts +33 -0
  292. package/lib/src/utils/sniffMime.d.ts +21 -0
  293. package/lib/src/utils/storeSearchIndex.d.ts +75 -0
  294. package/lib/src/utils/subjectMayDo.d.ts +21 -0
  295. package/lib/src/utils/systemCategoryRules.d.ts +30 -0
  296. package/lib/src/utils/systemCategoryRules.js +41 -0
  297. package/lib/src/utils/userCreateError.d.ts +62 -0
  298. package/lib/src/utils/username.d.ts +53 -0
  299. package/lib/src/utils/vaultUrlRewrite.d.ts +27 -0
  300. package/lib/src/utils/version.d.ts +84 -0
  301. package/lib/src/utils/videoFrame.d.ts +21 -0
  302. package/package.json +54 -3
@@ -0,0 +1,320 @@
1
+ /**
2
+ * FilterChain - Modular content filtering pipeline with complete configuration support
3
+ *
4
+ * Provides a sophisticated, configurable filter system that processes content through
5
+ * multiple stages with priority-based execution, performance monitoring, and error handling.
6
+ *
7
+ * Design Principles:
8
+ * - Complete modularity through app-default-config.json and app-custom-config.json
9
+ * - Zero hardcoded values - everything configurable
10
+ * - Reusable architecture for any content filtering needs
11
+ * - Performance monitoring and caching integration
12
+ *
13
+ * Related Issue: Phase 4 - Filter Pipeline Core
14
+ * Epic: #41 - Implement JSPWikiMarkupParser for Complete Enhancement Support
15
+ */
16
+ import BaseFilter from './BaseFilter.js';
17
+ import type { FilterPhase } from './BaseFilter.js';
18
+ import type { ParseContext } from '../context/ParseContext.js';
19
+ /**
20
+ * Structured error returned by FilterChain.collectErrors() (#596).
21
+ * Filters that opt in implement their own collectErrors() returning rule
22
+ * violations of `severity: 'error'`. The chain accumulates them across all
23
+ * enabled filters; the save path (WikiRoutes.savePage) uses the array to
24
+ * decide whether to block the save and what to surface to the editor.
25
+ */
26
+ export interface FilterValidationError {
27
+ filterId: string;
28
+ rule: string;
29
+ severity: 'error';
30
+ message: string;
31
+ line?: number;
32
+ column?: number;
33
+ }
34
+ /**
35
+ * Filter chain configuration
36
+ */
37
+ export interface FilterChainConfig {
38
+ enabled: boolean;
39
+ maxFilters: number;
40
+ timeout: number;
41
+ enableProfiling: boolean;
42
+ failOnError: boolean;
43
+ cacheResults: boolean;
44
+ cacheTTL: number;
45
+ preventXSS: boolean;
46
+ sanitizeHTML: boolean;
47
+ stripDangerousContent: boolean;
48
+ enableParallelExecution: boolean;
49
+ maxConcurrentFilters: number;
50
+ }
51
+ /**
52
+ * Filter execution statistics
53
+ */
54
+ export interface FilterExecutionStats {
55
+ executionCount: number;
56
+ totalTime: number;
57
+ errorCount: number;
58
+ lastExecuted: Date | null;
59
+ }
60
+ /**
61
+ * Filter chain statistics
62
+ */
63
+ export interface FilterChainStats {
64
+ executionCount: number;
65
+ totalTime: number;
66
+ filterExecutions: Map<string, FilterExecutionStats>;
67
+ errorCount: number;
68
+ lastExecution: Date | null;
69
+ }
70
+ /**
71
+ * Performance execution record
72
+ */
73
+ export interface PerformanceExecution {
74
+ executionTime: number;
75
+ success: boolean;
76
+ timestamp: number;
77
+ }
78
+ /**
79
+ * Alert thresholds
80
+ */
81
+ export interface AlertThresholds {
82
+ executionTime: number;
83
+ errorRate: number;
84
+ }
85
+ /**
86
+ * Performance monitor
87
+ */
88
+ export interface PerformanceMonitor {
89
+ enabled: boolean;
90
+ recentExecutions: PerformanceExecution[];
91
+ maxRecentEntries: number;
92
+ alertThresholds: AlertThresholds;
93
+ }
94
+ /**
95
+ * Initialization context
96
+ */
97
+ export interface FilterChainInitContext {
98
+ engine?: WikiEngine;
99
+ }
100
+ /**
101
+ * WikiEngine minimal interface
102
+ */
103
+ export interface WikiEngine {
104
+ getManager(name: string): unknown;
105
+ }
106
+ /**
107
+ * Chain statistics summary
108
+ */
109
+ export interface ChainStatsSummary {
110
+ executionCount: number;
111
+ totalTime: number;
112
+ averageTime: number;
113
+ errorCount: number;
114
+ lastExecution: Date | null;
115
+ filterCount: number;
116
+ enabledFilterCount: number;
117
+ }
118
+ /**
119
+ * Extended filter chain statistics
120
+ */
121
+ export interface ExtendedFilterChainStats {
122
+ chain: ChainStatsSummary;
123
+ filters: Record<string, FilterExecutionStats & {
124
+ averageTime: number;
125
+ }>;
126
+ configuration: {
127
+ enabled: boolean;
128
+ maxFilters: number;
129
+ timeout: number;
130
+ enableProfiling: boolean;
131
+ failOnError: boolean;
132
+ };
133
+ performance: {
134
+ recentExecutionCount: number;
135
+ alertThresholds: AlertThresholds;
136
+ } | null;
137
+ }
138
+ /**
139
+ * Exported filter info
140
+ */
141
+ export interface ExportedFilterInfo {
142
+ filterId: string;
143
+ priority: number;
144
+ enabled: boolean;
145
+ description: string;
146
+ }
147
+ /**
148
+ * Exported chain state
149
+ */
150
+ export interface ExportedChainState {
151
+ config: FilterChainConfig;
152
+ stats: Omit<FilterChainStats, 'filterExecutions'> & {
153
+ filterExecutions: Record<string, FilterExecutionStats>;
154
+ };
155
+ filters: ExportedFilterInfo[];
156
+ }
157
+ /**
158
+ * Configuration summary
159
+ */
160
+ export interface ConfigurationSummary extends FilterChainConfig {
161
+ filterCount: number;
162
+ enabledFilterCount: number;
163
+ configurationSource: string;
164
+ }
165
+ /**
166
+ * FilterChain - Modular content filtering pipeline
167
+ */
168
+ declare class FilterChain {
169
+ private engine;
170
+ private filters;
171
+ private filtersByPriority;
172
+ private filterMap;
173
+ private config;
174
+ private stats;
175
+ private performanceMonitor;
176
+ constructor(engine?: WikiEngine | null);
177
+ /**
178
+ * Initialize FilterChain with complete modular configuration
179
+ * @param context - Initialization context
180
+ */
181
+ initialize(context?: FilterChainInitContext): Promise<void>;
182
+ /**
183
+ * Load modular configuration from app-default-config.json and app-custom-config.json
184
+ * Demonstrates complete configuration modularity and reusability
185
+ */
186
+ loadModularConfiguration(): void;
187
+ /**
188
+ * Initialize performance monitoring for filter execution
189
+ */
190
+ private initializePerformanceMonitoring;
191
+ /**
192
+ * Add filter to the chain with modular configuration
193
+ * @param filter - Filter to add
194
+ * @param _options - Registration options
195
+ * @returns True if added successfully
196
+ */
197
+ addFilter(filter: BaseFilter, _options?: Record<string, unknown>): boolean;
198
+ /**
199
+ * Remove filter from the chain
200
+ * @param filterId - Filter ID to remove
201
+ * @returns True if removed successfully
202
+ */
203
+ removeFilter(filterId: string): boolean;
204
+ /**
205
+ * Rebuild priority-sorted filter list (modular ordering)
206
+ */
207
+ private rebuildPriorityList;
208
+ /**
209
+ * Process content through the filter chain with modular execution
210
+ * @param content - Content to filter
211
+ * @param context - Parse context
212
+ * @returns Filtered content
213
+ */
214
+ process(content: string, context: ParseContext, phase?: FilterPhase): Promise<string>;
215
+ /**
216
+ * Collect error-severity rule violations across all enabled filters without
217
+ * mutating content. Used by the save path to decide whether to block a save
218
+ * and what structured errors to surface to the editor (#596).
219
+ *
220
+ * Each filter that opts in exposes its own async `collectErrors(content,
221
+ * context)` returning a `FilterValidationError[]`. Filters without that
222
+ * method are skipped silently — they participate in render-time `process()`
223
+ * only.
224
+ *
225
+ * @param content - Content to validate
226
+ * @param context - Parse context
227
+ * @returns Aggregated error-severity violations from all enabled filters
228
+ */
229
+ collectErrors(content: string, context: ParseContext, phase?: FilterPhase): Promise<FilterValidationError[]>;
230
+ /**
231
+ * Execute filters sequentially (default, safe mode)
232
+ * @param content - Content to process
233
+ * @param context - Parse context
234
+ * @returns Processed content
235
+ */
236
+ private executeFiltersSequential;
237
+ /**
238
+ * Execute filters in parallel (advanced mode - configurable)
239
+ * @param content - Content to process
240
+ * @param context - Parse context
241
+ * @returns Processed content
242
+ */
243
+ private executeFiltersParallel;
244
+ /**
245
+ * Execute a single filter with error handling
246
+ * @param filter - Filter to execute
247
+ * @param content - Content to process
248
+ * @param context - Parse context
249
+ * @returns Processed content
250
+ */
251
+ private executeFilter;
252
+ /**
253
+ * Track filter execution for performance monitoring (modular monitoring)
254
+ * @param executionTime - Execution time in milliseconds
255
+ * @param success - Whether execution was successful
256
+ */
257
+ private trackFilterExecution;
258
+ /**
259
+ * Check performance thresholds and generate alerts (modular alerting)
260
+ */
261
+ private checkPerformanceThresholds;
262
+ /**
263
+ * Generate performance alert (modular alerting)
264
+ * @param type - Alert type
265
+ * @param message - Alert message
266
+ */
267
+ private generateAlert;
268
+ /**
269
+ * Get filter by ID
270
+ * @param filterId - Filter ID
271
+ * @returns Filter or null if not found
272
+ */
273
+ getFilter(filterId: string): BaseFilter | null;
274
+ /**
275
+ * Get all filters sorted by priority
276
+ * @param enabledOnly - Only return enabled filters
277
+ * @returns Filters sorted by priority
278
+ */
279
+ getFilters(enabledOnly?: boolean): BaseFilter[];
280
+ /**
281
+ * Enable filter by ID
282
+ * @param filterId - Filter ID
283
+ * @returns True if successful
284
+ */
285
+ enableFilter(filterId: string): boolean;
286
+ /**
287
+ * Disable filter by ID
288
+ * @param filterId - Filter ID
289
+ * @returns True if successful
290
+ */
291
+ disableFilter(filterId: string): boolean;
292
+ /**
293
+ * Get comprehensive filter chain statistics (modular monitoring)
294
+ * @returns Filter chain statistics
295
+ */
296
+ getStats(): ExtendedFilterChainStats;
297
+ /**
298
+ * Reset all filter statistics
299
+ */
300
+ resetStats(): void;
301
+ /**
302
+ * Get configuration summary for debugging (modular introspection)
303
+ * @returns Configuration summary
304
+ */
305
+ getConfiguration(): ConfigurationSummary;
306
+ /**
307
+ * Export filter chain state for persistence or debugging
308
+ * @returns Serializable state
309
+ */
310
+ exportState(): ExportedChainState;
311
+ /**
312
+ * Clear all filters and reset state
313
+ */
314
+ clearAll(): Promise<void>;
315
+ /**
316
+ * Shutdown filter chain
317
+ */
318
+ shutdown(): Promise<void>;
319
+ }
320
+ export default FilterChain;
@@ -0,0 +1,331 @@
1
+ import type ParseContext from '../context/ParseContext.js';
2
+ /**
3
+ * BaseSyntaxHandler - Abstract base class for all markup syntax handlers
4
+ *
5
+ * Defines the contract that all syntax handlers must implement and provides
6
+ * common utilities for pattern matching, parameter parsing, and error handling.
7
+ *
8
+ * Related Issue: #56 - Handler Registration and Priority System
9
+ * Epic: #41 - Implement JSPWikiMarkupParser for Complete Enhancement Support
10
+ */
11
+ /**
12
+ * Handler configuration options
13
+ */
14
+ export interface HandlerOptions {
15
+ enabled?: boolean;
16
+ timeout?: number;
17
+ caseSensitive?: boolean;
18
+ multiline?: boolean;
19
+ global?: boolean;
20
+ version?: string;
21
+ description?: string;
22
+ dependencies?: Array<string | DependencySpec>;
23
+ throwOnError?: boolean;
24
+ }
25
+ /**
26
+ * Specific dependency specification
27
+ */
28
+ export interface DependencySpec {
29
+ type: 'manager' | 'handler';
30
+ name: string;
31
+ version?: string;
32
+ optional?: boolean;
33
+ }
34
+ /**
35
+ * Handler performance statistics
36
+ */
37
+ export interface HandlerStats {
38
+ executionCount: number;
39
+ totalTime: number;
40
+ errorCount: number;
41
+ lastExecuted: Date | null;
42
+ averageTime: number;
43
+ }
44
+ /**
45
+ * Dependency validation error
46
+ */
47
+ export interface DependencyError {
48
+ type: 'manager' | 'handler' | 'validation_error';
49
+ name?: string;
50
+ dependency?: unknown;
51
+ message: string;
52
+ dependencySpec?: DependencySpec;
53
+ }
54
+ /**
55
+ * Parameter validation rule
56
+ */
57
+ export interface ValidationRule {
58
+ type?: 'string' | 'number' | 'boolean' | 'object';
59
+ required?: boolean;
60
+ default?: unknown;
61
+ min?: number;
62
+ max?: number;
63
+ pattern?: string;
64
+ }
65
+ /**
66
+ * Parameter validation result
67
+ */
68
+ export interface ValidationResult {
69
+ isValid: boolean;
70
+ errors: string[];
71
+ params: Record<string, unknown>;
72
+ }
73
+ /**
74
+ * Single parameter validation result
75
+ */
76
+ export interface ParameterValidationResult {
77
+ error?: string;
78
+ value?: unknown;
79
+ }
80
+ /**
81
+ * Error context for debugging
82
+ */
83
+ export interface ErrorContext {
84
+ handlerId: string;
85
+ error: string;
86
+ stack?: string;
87
+ contentLength: number;
88
+ contentPreview: string;
89
+ context: {
90
+ pageName?: string;
91
+ userName?: string;
92
+ processingTime?: number;
93
+ };
94
+ stats: HandlerStats;
95
+ timestamp: string;
96
+ }
97
+ /**
98
+ * Handler metadata
99
+ */
100
+ export interface HandlerMetadata {
101
+ id: string;
102
+ version: string;
103
+ description: string;
104
+ priority: number;
105
+ pattern: string;
106
+ dependencies: Array<string | DependencySpec>;
107
+ options: Required<HandlerOptions>;
108
+ stats: HandlerStats & {
109
+ handlerId: string;
110
+ priority: number;
111
+ enabled: boolean;
112
+ initialized: boolean;
113
+ };
114
+ }
115
+ /**
116
+ * Handler clone configuration
117
+ */
118
+ export interface HandlerCloneConfig {
119
+ handlerId?: string;
120
+ pattern: RegExp;
121
+ priority: number;
122
+ options: Required<HandlerOptions>;
123
+ version: string;
124
+ description: string;
125
+ dependencies: Array<string | DependencySpec>;
126
+ }
127
+ /**
128
+ * Initialization context (minimal interface for unconverted dependencies)
129
+ */
130
+ export interface InitializationContext {
131
+ engine?: {
132
+ getManager(name: string): unknown;
133
+ };
134
+ handlerRegistry?: {
135
+ getHandler(name: string): unknown;
136
+ };
137
+ }
138
+ /**
139
+ * ParseContext re-export — the real class from `../context/ParseContext.js`.
140
+ * Kept as a re-export so existing handlers can keep their
141
+ * `import { ParseContext }` paths unchanged. (#629 Pass 2 resolved the
142
+ * long-standing TODO of using the proper ParseContext type.)
143
+ */
144
+ export type { ParseContext };
145
+ /**
146
+ * BaseSyntaxHandler - Abstract base class for all markup syntax handlers
147
+ */
148
+ declare abstract class BaseSyntaxHandler {
149
+ priority: number;
150
+ readonly pattern: RegExp;
151
+ readonly handlerId: string;
152
+ readonly version: string;
153
+ readonly description: string;
154
+ readonly dependencies: Array<string | DependencySpec>;
155
+ protected options: Required<HandlerOptions>;
156
+ protected stats: HandlerStats;
157
+ protected initialized: boolean;
158
+ protected enabled: boolean;
159
+ protected initContext?: InitializationContext;
160
+ protected dependencyErrors?: DependencyError[];
161
+ /**
162
+ * Create a syntax handler
163
+ * @param pattern - Pattern to match (regex or string)
164
+ * @param priority - Handler priority (0-1000, higher = executed first)
165
+ * @param options - Handler configuration options
166
+ */
167
+ constructor(pattern: RegExp | string, priority?: number, options?: HandlerOptions);
168
+ /**
169
+ * Compile pattern into RegExp if it's a string
170
+ * @param pattern - Pattern to compile
171
+ * @returns Compiled regular expression
172
+ */
173
+ protected compilePattern(pattern: RegExp | string): RegExp;
174
+ /**
175
+ * Build regex flags based on options
176
+ * @returns Regex flags string
177
+ */
178
+ protected buildRegexFlags(): string;
179
+ /**
180
+ * Initialize the handler (optional override)
181
+ * Called when handler is registered
182
+ * @param context - Initialization context
183
+ */
184
+ initialize(context?: InitializationContext): Promise<void>;
185
+ /**
186
+ * Custom initialization logic (override in subclasses)
187
+ * @param _context - Initialization context
188
+ */
189
+ protected onInitialize(_context: InitializationContext): Promise<void>;
190
+ /**
191
+ * Validate handler dependencies
192
+ * @param context - Initialization context
193
+ */
194
+ protected validateDependencies(context: InitializationContext): void;
195
+ /**
196
+ * Validate specific dependency requirement
197
+ * @param dependency - Dependency specification
198
+ * @param context - Initialization context
199
+ */
200
+ protected validateSpecificDependency(dependency: DependencySpec, context: InitializationContext): void;
201
+ /**
202
+ * Get dependency validation errors
203
+ * @returns Array of dependency errors
204
+ */
205
+ getDependencyErrors(): DependencyError[];
206
+ /**
207
+ * Check if handler has unresolved dependencies
208
+ * @returns True if there are dependency errors
209
+ */
210
+ hasDependencyErrors(): boolean;
211
+ /**
212
+ * Main processing method - MUST be implemented by subclasses
213
+ * @param content - Content to process
214
+ * @param context - Parse context
215
+ * @returns Processed content
216
+ */
217
+ abstract process(content: string, context: ParseContext): Promise<string>;
218
+ /**
219
+ * Handle a specific match - called for each pattern match
220
+ * @param match - Regex match result
221
+ * @param context - Parse context
222
+ * @returns Replacement content
223
+ */
224
+ handle(_match: RegExpMatchArray, _context: ParseContext): Promise<string>;
225
+ /**
226
+ * Execute the handler with performance tracking and error handling
227
+ * @param content - Content to process
228
+ * @param context - Parse context
229
+ * @returns Processed content
230
+ */
231
+ execute(content: string, context: ParseContext): Promise<string>;
232
+ /**
233
+ * Create timeout promise for handler execution
234
+ * @returns Promise that rejects after timeout
235
+ */
236
+ protected createTimeoutPromise(): Promise<string>;
237
+ /**
238
+ * Create error context for debugging
239
+ * @param error - The error that occurred
240
+ * @param content - Content being processed
241
+ * @param context - Parse context
242
+ * @returns Error context
243
+ */
244
+ protected createErrorContext(error: Error, content: string, context: ParseContext): ErrorContext;
245
+ /**
246
+ * Parse parameters from parameter string
247
+ * Handles various formats: key=value, key='value', key="value"
248
+ * @param paramString - Parameter string to parse
249
+ * @returns Parsed parameters
250
+ */
251
+ parseParameters(paramString: string | null | undefined): Record<string, unknown>;
252
+ /**
253
+ * Validate parameters against schema
254
+ * @param params - Parameters to validate
255
+ * @param schema - Validation schema
256
+ * @returns Validation result
257
+ */
258
+ validateParameters(params: Record<string, unknown>, schema?: Record<string, ValidationRule>): ValidationResult;
259
+ /**
260
+ * Validate a single parameter
261
+ * @param key - Parameter key
262
+ * @param value - Parameter value
263
+ * @param rule - Validation rule
264
+ * @returns Validation result
265
+ */
266
+ protected validateParameter(key: string, value: unknown, rule: ValidationRule): ParameterValidationResult;
267
+ /**
268
+ * Enable the handler
269
+ */
270
+ enable(): void;
271
+ /**
272
+ * Disable the handler
273
+ */
274
+ disable(): void;
275
+ /**
276
+ * Check if handler is enabled
277
+ * @returns True if enabled
278
+ */
279
+ isEnabled(): boolean;
280
+ /**
281
+ * Get handler statistics
282
+ * @returns Handler statistics
283
+ */
284
+ getStats(): HandlerStats & {
285
+ handlerId: string;
286
+ priority: number;
287
+ enabled: boolean;
288
+ initialized: boolean;
289
+ };
290
+ /**
291
+ * Reset handler statistics
292
+ */
293
+ resetStats(): void;
294
+ /**
295
+ * Get handler metadata
296
+ * @returns Handler metadata
297
+ */
298
+ getMetadata(): HandlerMetadata;
299
+ /**
300
+ * Clean up handler resources (optional override)
301
+ * Called when handler is unregistered
302
+ */
303
+ shutdown(): Promise<void>;
304
+ /**
305
+ * Custom shutdown logic (override in subclasses)
306
+ */
307
+ protected onShutdown(): Promise<void>;
308
+ /**
309
+ * Create a clone of this handler with different options
310
+ * @param overrides - Option overrides
311
+ * @returns Handler configuration for creating new instance
312
+ */
313
+ clone(overrides?: Partial<HandlerOptions> & {
314
+ handlerId?: string;
315
+ priority?: number;
316
+ }): HandlerCloneConfig;
317
+ /**
318
+ * String representation of handler
319
+ * @returns String representation
320
+ */
321
+ toString(): string;
322
+ }
323
+ /**
324
+ * Custom error class for handler execution errors
325
+ */
326
+ export declare class HandlerExecutionError extends Error {
327
+ readonly handlerId: string;
328
+ readonly context: ErrorContext;
329
+ constructor(message: string, handlerId: string, context: ErrorContext);
330
+ }
331
+ export default BaseSyntaxHandler;