@jwilleke/ngdpbase-types 0.0.0 → 5.19.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 (304) 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 +427 -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 +188 -0
  71. package/lib/src/managers/DatabaseManager.js +590 -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/sqliteBackup.d.ts +128 -0
  158. package/lib/src/providers/sqliteBackup.js +365 -0
  159. package/lib/src/providers/sqliteLocation.d.ts +17 -0
  160. package/lib/src/providers/sqliteLocation.js +55 -0
  161. package/lib/src/providers/sqliteMigrations.d.ts +48 -0
  162. package/lib/src/providers/sqliteMigrations.js +72 -0
  163. package/lib/src/rendering/githubAlerts.d.ts +22 -0
  164. package/lib/src/rendering/htmlPolicy.d.ts +76 -0
  165. package/lib/src/rendering/markdownConverter.d.ts +73 -0
  166. package/lib/src/security/PolicyDecisionPoint.d.ts +245 -0
  167. package/lib/src/security/PolicyInformationPoint.d.ts +448 -0
  168. package/lib/src/security/pageActions.d.ts +40 -0
  169. package/lib/src/security/permissions.generated.d.ts +78 -0
  170. package/lib/src/types/Asset.d.ts +414 -0
  171. package/lib/src/types/Catalog.d.ts +61 -0
  172. package/lib/src/types/Comment.d.ts +11 -0
  173. package/lib/src/types/Config.d.ts +388 -0
  174. package/lib/src/types/Organization.d.ts +78 -0
  175. package/lib/src/types/OrganizationProvider.d.ts +38 -0
  176. package/lib/src/types/Page.d.ts +220 -0
  177. package/lib/src/types/Person.d.ts +56 -0
  178. package/lib/src/types/PersonProvider.d.ts +25 -0
  179. package/lib/src/types/Policy.d.ts +139 -0
  180. package/lib/src/types/Policy.js +17 -0
  181. package/lib/src/types/Provider.d.ts +810 -0
  182. package/lib/src/types/Role.d.ts +84 -0
  183. package/lib/src/types/RoleProvider.d.ts +35 -0
  184. package/lib/src/types/Schema.d.ts +425 -0
  185. package/lib/src/types/Share.d.ts +172 -0
  186. package/lib/src/types/Share.js +81 -0
  187. package/lib/src/types/User.d.ts +304 -0
  188. package/lib/src/types/Version.d.ts +189 -0
  189. package/lib/src/types/WikiEngine.d.ts +128 -0
  190. package/lib/src/types/express.d.ts +120 -0
  191. package/lib/src/types/express.js +1 -0
  192. package/lib/src/types/guards.d.ts +78 -0
  193. package/lib/src/types/heic-decode.d.ts +16 -0
  194. package/lib/src/types/index.d.ts +19 -0
  195. package/lib/src/types/linkedom.d.ts +77 -0
  196. package/lib/src/types/markdown-it-plugins.d.ts +21 -0
  197. package/lib/src/utils/DeltaStorage.d.ts +118 -0
  198. package/lib/src/utils/LocaleUtils.d.ts +105 -0
  199. package/lib/src/utils/LocaleUtils.js +294 -0
  200. package/lib/src/utils/PageNameMatcher.d.ts +98 -0
  201. package/lib/src/utils/PathPreflight.d.ts +38 -0
  202. package/lib/src/utils/PathPreflight.js +50 -0
  203. package/lib/src/utils/SectionUtils.d.ts +40 -0
  204. package/lib/src/utils/addonConfigLayer.d.ts +144 -0
  205. package/lib/src/utils/addonConfigLayer.js +382 -0
  206. package/lib/src/utils/addonDatabaseRules.d.ts +25 -0
  207. package/lib/src/utils/addonDatabaseRules.js +57 -0
  208. package/lib/src/utils/addonHost.d.ts +51 -0
  209. package/lib/src/utils/addonHost.js +72 -0
  210. package/lib/src/utils/addonInstaller.d.ts +109 -0
  211. package/lib/src/utils/addonLock.d.ts +37 -0
  212. package/lib/src/utils/addonLock.js +48 -0
  213. package/lib/src/utils/addonPageSync.d.ts +45 -0
  214. package/lib/src/utils/addonProvenance.d.ts +48 -0
  215. package/lib/src/utils/addonTarball.d.ts +41 -0
  216. package/lib/src/utils/addonsPathResolver.d.ts +76 -0
  217. package/lib/src/utils/addonsPathResolver.js +129 -0
  218. package/lib/src/utils/assetMetadataTags.d.ts +66 -0
  219. package/lib/src/utils/atomicWrite.d.ts +28 -0
  220. package/lib/src/utils/auditConfigChange.d.ts +57 -0
  221. package/lib/src/utils/auditEventNames.d.ts +50 -0
  222. package/lib/src/utils/auditEventNames.generated.d.ts +169 -0
  223. package/lib/src/utils/auditEventNames.generated.js +174 -0
  224. package/lib/src/utils/auditEventNames.js +49 -0
  225. package/lib/src/utils/auditEvents.d.ts +265 -0
  226. package/lib/src/utils/auditEvents.js +309 -0
  227. package/lib/src/utils/auditRegistry.d.ts +102 -0
  228. package/lib/src/utils/auditRegistry.js +168 -0
  229. package/lib/src/utils/bip39English.d.ts +2 -0
  230. package/lib/src/utils/configEnvKeys.d.ts +68 -0
  231. package/lib/src/utils/configFiles.d.ts +74 -0
  232. package/lib/src/utils/configFiles.js +150 -0
  233. package/lib/src/utils/delegation.d.ts +48 -0
  234. package/lib/src/utils/deriveUsername.d.ts +21 -0
  235. package/lib/src/utils/explainMediaPath.d.ts +123 -0
  236. package/lib/src/utils/formerTitles.d.ts +69 -0
  237. package/lib/src/utils/frontmatterAccess.d.ts +54 -0
  238. package/lib/src/utils/headlessAdminPassword.d.ts +55 -0
  239. package/lib/src/utils/imageTransform.d.ts +52 -0
  240. package/lib/src/utils/instanceEnvSecret.d.ts +51 -0
  241. package/lib/src/utils/jobSlots.d.ts +43 -0
  242. package/lib/src/utils/keywordNormalizer.d.ts +127 -0
  243. package/lib/src/utils/logger.d.ts +70 -0
  244. package/lib/src/utils/logger.js +106 -0
  245. package/lib/src/utils/magicLinkDeviceState.d.ts +95 -0
  246. package/lib/src/utils/managerUtils.d.ts +40 -0
  247. package/lib/src/utils/migrateLegacyPrivateAttachments.d.ts +15 -0
  248. package/lib/src/utils/orgFilename.d.ts +22 -0
  249. package/lib/src/utils/pageFeature.d.ts +27 -0
  250. package/lib/src/utils/pageFrontmatter.d.ts +21 -0
  251. package/lib/src/utils/pageNotes.d.ts +150 -0
  252. package/lib/src/utils/pageTitleRule.d.ts +37 -0
  253. package/lib/src/utils/pageToArticle.d.ts +59 -0
  254. package/lib/src/utils/pageUrl.d.ts +18 -0
  255. package/lib/src/utils/passwordChange.d.ts +12 -0
  256. package/lib/src/utils/passwordHash.d.ts +60 -0
  257. package/lib/src/utils/permissionCatalog.d.ts +52 -0
  258. package/lib/src/utils/pluginFormatters.d.ts +452 -0
  259. package/lib/src/utils/pluginFormatters.js +714 -0
  260. package/lib/src/utils/privateLinkRewrite.d.ts +42 -0
  261. package/lib/src/utils/privateStoreAccess.d.ts +57 -0
  262. package/lib/src/utils/privateStoreAccess.js +65 -0
  263. package/lib/src/utils/privateStoreCatalogs.d.ts +40 -0
  264. package/lib/src/utils/privateStoreCrypto.d.ts +127 -0
  265. package/lib/src/utils/privateStoreDoor.d.ts +181 -0
  266. package/lib/src/utils/privateStoreExport.d.ts +72 -0
  267. package/lib/src/utils/privateStoreFiles.d.ts +120 -0
  268. package/lib/src/utils/privateStoreMeta.d.ts +64 -0
  269. package/lib/src/utils/privateStoreMigrations.d.ts +37 -0
  270. package/lib/src/utils/privateStorePath.d.ts +259 -0
  271. package/lib/src/utils/privateStorePath.js +436 -0
  272. package/lib/src/utils/privateStoreTakeout.d.ts +76 -0
  273. package/lib/src/utils/privateStoreUnlock.d.ts +175 -0
  274. package/lib/src/utils/proxyClaim.d.ts +59 -0
  275. package/lib/src/utils/proxyClaim.js +30 -0
  276. package/lib/src/utils/redactPrivateNames.d.ts +21 -0
  277. package/lib/src/utils/redactPrivateNames.js +89 -0
  278. package/lib/src/utils/redactSecrets.d.ts +58 -0
  279. package/lib/src/utils/redactSecrets.js +171 -0
  280. package/lib/src/utils/renameLinkRewrite.d.ts +112 -0
  281. package/lib/src/utils/roleGrants.d.ts +35 -0
  282. package/lib/src/utils/safeRedirect.d.ts +32 -0
  283. package/lib/src/utils/schedule.d.ts +54 -0
  284. package/lib/src/utils/secretFileMode.d.ts +17 -0
  285. package/lib/src/utils/seededShippedPages.d.ts +45 -0
  286. package/lib/src/utils/sensitiveValues.d.ts +59 -0
  287. package/lib/src/utils/sensitiveValues.js +106 -0
  288. package/lib/src/utils/sessionEnd.d.ts +12 -0
  289. package/lib/src/utils/sessionGeneration.d.ts +24 -0
  290. package/lib/src/utils/sessionIdle.d.ts +41 -0
  291. package/lib/src/utils/sessionLimits.d.ts +68 -0
  292. package/lib/src/utils/shareLockbox.d.ts +64 -0
  293. package/lib/src/utils/sigstoreTrustedRoot.d.ts +33 -0
  294. package/lib/src/utils/sniffMime.d.ts +21 -0
  295. package/lib/src/utils/storeSearchIndex.d.ts +75 -0
  296. package/lib/src/utils/subjectMayDo.d.ts +21 -0
  297. package/lib/src/utils/systemCategoryRules.d.ts +30 -0
  298. package/lib/src/utils/systemCategoryRules.js +41 -0
  299. package/lib/src/utils/userCreateError.d.ts +62 -0
  300. package/lib/src/utils/username.d.ts +53 -0
  301. package/lib/src/utils/vaultUrlRewrite.d.ts +27 -0
  302. package/lib/src/utils/version.d.ts +84 -0
  303. package/lib/src/utils/videoFrame.d.ts +21 -0
  304. package/package.json +54 -3
@@ -0,0 +1,235 @@
1
+ /**
2
+ * CatalogManager — controlled-vocabulary registry for system keywords (#424).
3
+ *
4
+ * Provides a pluggable provider registry so that:
5
+ * - Core config-driven terms come from DefaultCatalogProvider
6
+ * - Addons contribute domain vocabularies via registerProvider()
7
+ * - Future AI-based term suggestion is scaffolded via AICatalogProvider
8
+ *
9
+ * Registration pattern (in addon's register() hook):
10
+ * const catalog = engine.getManager<CatalogManager>('CatalogManager');
11
+ * if (catalog) catalog.registerProvider(new GeoscienceCatalogProvider());
12
+ *
13
+ * Related: #424 (CatalogManager), #507 (auto-tagging), #149 (microdata itemid)
14
+ */
15
+ import BaseManager, { type BackupData, type ManagerStats } from './BaseManager.js';
16
+ import type { WikiEngine } from '../types/WikiEngine.js';
17
+ import type { CatalogProvider, CatalogTerm } from '../types/Catalog.js';
18
+ import type { CatalogSource, CatalogQuery, CatalogPage, CreativeWork, SchemaVersionReport, SchemaType } from '../types/Schema.js';
19
+ export interface UserKeywordConfig {
20
+ label?: string;
21
+ description?: string;
22
+ category?: CatalogTerm['category'];
23
+ enabled?: boolean;
24
+ restrictEditing?: boolean;
25
+ allowedRoles?: string[];
26
+ uri?: string;
27
+ source?: string;
28
+ }
29
+ /**
30
+ * Serves the user-keywords vocabulary (the human tagging bucket in the #869
31
+ * five-bucket model) through the provider registry, so it shares one interface
32
+ * with system-keywords: SKOS ConceptScheme emission at
33
+ * /api/catalog/vocabulary/user-keywords, altLabels aliasing later, and the
34
+ * drift report's canonical side.
35
+ *
36
+ * #896: vocabulary is content, not configuration. Two layers:
37
+ * - SEED — `ngdpbase.user-keywords` read from the SHIPPED defaults only
38
+ * (`getDefaultProperty`), so legacy whole-catalog snapshots in instance
39
+ * custom config can't shadow it (the #895 propagation bug).
40
+ * - STORE — `<instance-data>/vocabulary/user-keywords.json`, read-write,
41
+ * owned by this provider. Holds instance-created/adopted terms and
42
+ * per-key overrides of seed entries (disable = `enabled:false` delta).
43
+ * `getCatalogObject()` merges the two (store wins per key);
44
+ * `saveCatalogObject()` diffs against the seed and persists only deltas.
45
+ * All catalog writes (admin CRUD, drift Adopt, import auto-register) go
46
+ * through this provider — never through ConfigurationManager.setProperty.
47
+ */
48
+ export declare class UserKeywordsCatalogProvider implements CatalogProvider {
49
+ readonly id = "user-keywords";
50
+ readonly displayName = "User Keywords";
51
+ readonly domain = "user-keywords";
52
+ private engine;
53
+ constructor(engine: WikiEngine);
54
+ /** Absolute path of the instance vocabulary store. */
55
+ getStorePath(): string | null;
56
+ private seedCatalog;
57
+ private readStore;
58
+ /**
59
+ * Full catalog as an id-keyed object (seed merged with store, store wins).
60
+ * Includes disabled entries — callers filter as needed.
61
+ */
62
+ getCatalogObject(): Promise<Record<string, UserKeywordConfig>>;
63
+ /**
64
+ * Persist a full catalog object. Only deltas against the seed are written
65
+ * to the store: entries identical to their seed counterpart are omitted;
66
+ * seed entries absent from `catalog` are stored as `enabled:false`
67
+ * overrides (a seed key can't be deleted, only disabled).
68
+ */
69
+ saveCatalogObject(catalog: Record<string, UserKeywordConfig>): Promise<void>;
70
+ /**
71
+ * #896 backup contract: raw instance-store contents (NOT the merged
72
+ * catalog — the seed ships with the code and needs no backup).
73
+ */
74
+ readStoreForBackup(): Promise<Record<string, UserKeywordConfig>>;
75
+ /** #896 restore contract: write store contents verbatim (no delta pass). */
76
+ restoreStore(store: Record<string, UserKeywordConfig>): Promise<void>;
77
+ getTerms(): Promise<CatalogTerm[]>;
78
+ resolveUri(term: string): Promise<string | null>;
79
+ }
80
+ declare class CatalogManager extends BaseManager {
81
+ readonly description = "Two-registry coordinator: vocabulary providers (#424) + asset sources (#755)";
82
+ private providers;
83
+ private aiProvider;
84
+ /**
85
+ * Asset-source registry (Slice 3 of #755).
86
+ *
87
+ * Parallel to the vocabulary `providers` map. Each entry is a Manager
88
+ * (PageManager, MediaManager, AttachmentManager) that produces CreativeWork
89
+ * records — see `src/types/Schema.ts` `CatalogSource` interface.
90
+ */
91
+ private sources;
92
+ constructor(engine: WikiEngine);
93
+ initialize(config?: Record<string, unknown>): Promise<void>;
94
+ /**
95
+ * Register a catalog provider.
96
+ * Addons call this in their register() hook to contribute domain vocabularies.
97
+ * Calling registerProvider() with an id that already exists replaces the prior provider.
98
+ */
99
+ registerProvider(provider: CatalogProvider): void;
100
+ /**
101
+ * Return all terms from all registered providers, merged in registration order.
102
+ * @param domain Optional domain filter — only includes providers with a matching domain
103
+ * (providers with no domain set are always included).
104
+ */
105
+ getTerms(domain?: string): Promise<CatalogTerm[]>;
106
+ /**
107
+ * Resolve a term string to a Linked-Data URI.
108
+ * Walks providers in registration order; returns the first non-null hit.
109
+ */
110
+ resolveUri(term: string): Promise<string | null>;
111
+ /**
112
+ * Suggest controlled-vocabulary terms for the given page content.
113
+ * Delegates to any provider that implements suggestTerms().
114
+ * Returns [] when no AI provider is wired or ai is disabled.
115
+ */
116
+ suggestTerms(content: string, title: string): Promise<CatalogTerm[]>;
117
+ /**
118
+ * Return info about all registered providers (for admin UIs / diagnostics).
119
+ */
120
+ getProviderInfo(): Array<{
121
+ id: string;
122
+ displayName: string;
123
+ domain?: string;
124
+ }>;
125
+ /**
126
+ * Slice 6c of #760 (#767) — return one provider's terms for SKOS emission.
127
+ * The aggregate `getTerms()` is the wrong surface for SKOS publishing:
128
+ * `/api/catalog/vocabulary/<scheme-id>` is per-provider, so the route
129
+ * needs per-provider access. Returns null when the schemeId doesn't match
130
+ * a registered provider (caller renders 404).
131
+ */
132
+ /**
133
+ * #896: typed accessor for the user-keywords provider — the write interface
134
+ * for the instance vocabulary store (admin CRUD, drift Adopt, import
135
+ * auto-register all go through it).
136
+ */
137
+ getUserKeywordsProvider(): UserKeywordsCatalogProvider | null;
138
+ getProviderTerms(schemeId: string): Promise<{
139
+ displayName: string;
140
+ terms: CatalogTerm[];
141
+ } | null>;
142
+ /**
143
+ * #1467: canonical keyword value → the vocabulary's display title, for a
144
+ * caller snapping a page's or an asset's keywords to the catalogued form.
145
+ *
146
+ * This map is the vocabulary's own derived view, so it is declared here and
147
+ * nowhere else. It used to be written out twice — once in `PageManager`
148
+ * (#915) and once in `WikiRoutes` (#918) — and the `PageManager` copy cast
149
+ * `getProviderTerms` to an array, which it has never returned. The cast is
150
+ * what let the mismatch compile; `for...of` then threw on every page save
151
+ * and the catch swallowed it, so keyword title-snapping never ran at all.
152
+ *
153
+ * Best-effort by contract: an empty map when the vocabulary is unreachable,
154
+ * so a caller's dedup still runs, just without title-snapping.
155
+ *
156
+ * Only ENABLED terms are in the map — a disabled term is not part of the
157
+ * vocabulary, so nothing should be snapped to it.
158
+ */
159
+ getCanonicalKeywordMap(schemeId?: string): Promise<Map<string, string>>;
160
+ /**
161
+ * Register an asset source (Slice 3 of #755).
162
+ *
163
+ * PageManager, MediaManager, AttachmentManager call this during their own
164
+ * `initialize()` to expose CreativeWork records via this Manager. Replacing
165
+ * by `sourceId` is allowed (last registration wins).
166
+ */
167
+ registerSource(source: CatalogSource): void;
168
+ /**
169
+ * Look up a single CreativeWork by stable identifier across all registered
170
+ * sources. Returns the first non-null hit; returns null when no source has
171
+ * the identifier or all matching sources filter it out via ACL.
172
+ *
173
+ * Pass `opts.sourceId` to restrict the lookup to one source — useful when
174
+ * the caller already knows which source owns the record.
175
+ */
176
+ getCreativeWork(identifier: string, opts?: {
177
+ sourceId?: string;
178
+ }): Promise<CreativeWork | null>;
179
+ /**
180
+ * List CreativeWorks across registered sources matching the query.
181
+ *
182
+ * When `query.types` is set, only sources advertising at least one of the
183
+ * requested @types are queried. Cursors are scoped to a single source —
184
+ * callers paginating across multiple sources receive items in source
185
+ * registration order without a unified cursor (initial slice; can be
186
+ * extended once a real consumer needs cross-source pagination).
187
+ */
188
+ listCreativeWorks(query: CatalogQuery): Promise<CatalogPage>;
189
+ /**
190
+ * Check whether each source's on-disk index is up to date with its in-code
191
+ * `currentSchemaVersion` constant (Decision 6). Sources report `isStale =
192
+ * true` when the index file lags behind code; the admin dashboard surfaces
193
+ * a banner per stale source.
194
+ *
195
+ * Each source is expected to compare its own on-disk version against
196
+ * `currentSchemaVersion` and return both numbers. CatalogManager just
197
+ * aggregates and routes the report to consumers.
198
+ */
199
+ checkSchemaVersions(): SchemaVersionReport;
200
+ /**
201
+ * Reads the on-disk schemaVersion from a source.
202
+ *
203
+ * For now this just returns the source's currentSchemaVersion — the per-file
204
+ * on-disk schemaVersion machinery (Decision 6) is wired in later slices as
205
+ * each source's persisted index file gains the `schemaVersion` field.
206
+ * Until then, all sources report fresh, which matches the actual state
207
+ * (everything is at v1, no upgrade-from-prior-version path needed yet).
208
+ */
209
+ private readOnDiskSchemaVersion;
210
+ /** Diagnostics — list registered sources for admin UIs / dashboards. */
211
+ /**
212
+ * #1006: registered catalog sources, wrapping the existing getSourceInfo().
213
+ *
214
+ * This is the shape #780's bespoke source list becomes one row of, which is
215
+ * the point of the contract: a manager stops needing its own admin page.
216
+ */
217
+ getManagerStats(): Promise<ManagerStats>;
218
+ getSourceInfo(): Array<{
219
+ sourceId: string;
220
+ types: readonly SchemaType[];
221
+ currentSchemaVersion: number;
222
+ }>;
223
+ /**
224
+ * #896: back up the instance vocabulary store(s). Only provider-owned
225
+ * instance data is included — the seed vocabulary ships with the code and
226
+ * the AI provider owns no terms. Keyed by provider id so future
227
+ * provider-owned stores slot in without a format change.
228
+ */
229
+ backup(): Promise<BackupData>;
230
+ /**
231
+ * #896: restore instance vocabulary store(s) written by backup().
232
+ */
233
+ restore(backupData: BackupData): Promise<void>;
234
+ }
235
+ export default CatalogManager;
@@ -0,0 +1,75 @@
1
+ import BaseManager from './BaseManager.js';
2
+ import type { WikiEngine } from '../types/WikiEngine.js';
3
+ import type { PageComment } from '../types/Comment.js';
4
+ import { type ActorContext } from '../context/ActorContext.js';
5
+ import { type VaultPageNotesOutside, type PageRef } from '../utils/pageNotes.js';
6
+ export default class CommentManager extends BaseManager {
7
+ private commentsDir;
8
+ private enabled;
9
+ /** Vault pages whose comments are still in the public folder (#1839), and the repair's re-check (#1842). */
10
+ private readonly outsideCheck;
11
+ constructor(engine: WikiEngine);
12
+ initialize(): Promise<void>;
13
+ isEnabled(): boolean;
14
+ /** The public folder and the vaults, as configured now (#1839). */
15
+ private roots;
16
+ /**
17
+ * Where `page`'s comments are (#1839): the public folder for a public page,
18
+ * the page's own vault for a vault page, read and written through that
19
+ * vault's store I/O. A locked vault, or a sealed kind's vault not yet
20
+ * opened, throws: a vault page's comments are never read or written in the
21
+ * clear.
22
+ */
23
+ private place;
24
+ private commentFile;
25
+ /**
26
+ * A page's comments, read as `ctx` may (#1839). Whether `ctx` may read the
27
+ * page is the caller's to decide, as for the page itself; this finds and
28
+ * opens them.
29
+ */
30
+ getComments(page: PageRef, ctx: ActorContext): Promise<PageComment[]>;
31
+ /**
32
+ * Add a comment on someone's behalf (#1232, security-posture P1).
33
+ *
34
+ * `ctx` is the request's subject — `wikiContext.userContext`, forwarded —
35
+ * or a JobContext for an import; never a name. The author and display
36
+ * name are read from it, and the write is recorded as `comment-create`.
37
+ */
38
+ addComment(page: PageRef, ctx: ActorContext, content: string): Promise<PageComment>;
39
+ /**
40
+ * Mark a comment deleted on someone's behalf (#1232). Soft: the file stays
41
+ * with `deleted`, `deletedBy`, `deletedAt`. Recorded as `comment-delete`,
42
+ * naming whose comment it was and whether the deleter was its author.
43
+ */
44
+ deleteComment(page: PageRef, commentId: string, ctx: ActorContext): Promise<boolean>;
45
+ /** Lazily resolved: AuditManager initialises last, and a missing sink is a configuration state, not a failure. */
46
+ private auditSink;
47
+ getComment(page: PageRef, commentId: string, ctx: ActorContext): Promise<PageComment | null>;
48
+ /**
49
+ * Take a page's comments with it when it changes place (#1839): into a
50
+ * vault, out of one, or between two, through both sides' store I/O as its
51
+ * history goes, sealed into a sealed vault and opened coming out. The page
52
+ * door calls this after the page itself has moved; a rename in place moves
53
+ * nothing.
54
+ */
55
+ movePageComments(uuid: string, fromName: string, toName: string, ctx: ActorContext): Promise<boolean>;
56
+ /** Vault pages whose comments the last check found in the public folder (#1839): owner, vault, page uuid. */
57
+ vaultPageNotesOutside(): VaultPageNotesOutside[];
58
+ /** Run that check again (#1842): after a repair, so the subsystem banner clears once nothing is left. */
59
+ recheckVaultPageNotesOutside(): Promise<VaultPageNotesOutside[]>;
60
+ /**
61
+ * Move vault page `uuid`'s comments left in the public folder into its
62
+ * vault (#1842), sealed when the vault is; one the vault already holds is
63
+ * kept. Who may ask, and that `uuid` is a page of `vault`, is the caller's
64
+ * (`PageManager.repairVaultPage`) to decide.
65
+ *
66
+ * @returns how many comment files were (or, with `dryRun`, would be) moved
67
+ */
68
+ moveOutsideCommentsIntoVault(vault: {
69
+ owner: string;
70
+ store: string;
71
+ }, uuid: string, ctx: ActorContext, opts?: {
72
+ dryRun?: boolean;
73
+ }): Promise<number>;
74
+ shutdown(): Promise<void>;
75
+ }