@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,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;
|