@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,33 @@
1
+ import BaseCredentialsProvider, { type CredentialRecord, type RejectedCredential } from './BaseCredentialsProvider.js';
2
+ import type { ProviderDurability } from './BaseProvider.js';
3
+ declare class FileCredentialsProvider extends BaseCredentialsProvider {
4
+ private readonly file;
5
+ private readonly key;
6
+ protected providerName: string;
7
+ protected providerDescription: string;
8
+ private rows;
9
+ /** #1633: rows that failed verification, exactly as read, written back unchanged. */
10
+ private quarantine;
11
+ /**
12
+ * @param file the store; created on first write
13
+ * @param key `NGDPBASE_CREDENTIALS_KEY`; refused when empty
14
+ */
15
+ constructor(file: string, key: string);
16
+ private sign;
17
+ private verifies;
18
+ initialize(onRejected: (rejected: RejectedCredential[]) => void): Promise<void>;
19
+ list(username: string): CredentialRecord[];
20
+ listKind(kind: CredentialRecord['kind']): CredentialRecord[];
21
+ get(id: string): CredentialRecord | null;
22
+ add(record: CredentialRecord): Promise<void>;
23
+ remove(id: string): Promise<boolean>;
24
+ findBySubject(kind: CredentialRecord['kind'], subject: string): CredentialRecord | null;
25
+ touch(id: string, at: string, secret?: string): Promise<void>;
26
+ relabel(id: string, label: string): Promise<boolean>;
27
+ location(): string;
28
+ quarantined(): RejectedCredential[];
29
+ retrustQuarantined(): Promise<CredentialRecord[]>;
30
+ getDurability(): ProviderDurability;
31
+ private save;
32
+ }
33
+ export default FileCredentialsProvider;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Scheduled-job state as files in FAST_STORAGE (#1714). See `jobState.ts`.
3
+ *
4
+ * <root>/state/<jobId>.json last slot done, next slot, current run
5
+ * <root>/runs/<jobId>.json run history, newest first, capped
6
+ * <root>/checkpoints/<jobId>/<runId>.json
7
+ * <root>/locks/<jobId>@<slot>.lock { owner, expiresAt }
8
+ *
9
+ * Every write is atomic and flushed (temp file, fsync, rename), so a crash
10
+ * mid-write leaves the previous file whole. A lock is created exclusively:
11
+ * of any servers racing for a slot, the one whose create lands wins. An
12
+ * expired lock is stolen by renaming it aside and creating a fresh one; the
13
+ * rename succeeds for one stealer only. Renewal is the holder's job, well
14
+ * inside the lock's lifetime, so a live holder is never stolen from.
15
+ *
16
+ * Refuses to start on NFS or SMB: exclusive create and rename are what the
17
+ * locks rest on, and network filesystems do not promise them across clients.
18
+ *
19
+ * @module providers/FileJobStateProvider
20
+ */
21
+ import { type StatFsLike } from './sqliteLocation.js';
22
+ import { type JobRunRecord, type JobState, type JobStateLimits, type JobStateProvider } from './jobState.js';
23
+ export interface FileJobStateOptions extends JobStateLimits {
24
+ /** For tests: the filesystem probe and platform behind the network-filesystem refusal. */
25
+ statfs?: (p: string) => StatFsLike;
26
+ platform?: string;
27
+ /** For tests: the clock. */
28
+ now?: () => number;
29
+ }
30
+ declare class FileJobStateProvider implements JobStateProvider {
31
+ private readonly root;
32
+ readonly backend: "file";
33
+ private readonly historyLimit;
34
+ private readonly checkpointMaxBytes;
35
+ private readonly now;
36
+ /** One read-modify-write at a time per file, within this process. */
37
+ private readonly queues;
38
+ constructor(root: string, options?: FileJobStateOptions);
39
+ private file;
40
+ private checkpointFile;
41
+ private lockFile;
42
+ private readJson;
43
+ private write;
44
+ /** Run `task` after every earlier task on the same file has settled. */
45
+ private serial;
46
+ getState(jobId: string): Promise<JobState | null>;
47
+ putState(state: JobState): Promise<void>;
48
+ recordRun(jobId: string, run: JobRunRecord): Promise<void>;
49
+ listRuns(jobId: string): Promise<JobRunRecord[]>;
50
+ saveCheckpoint(jobId: string, runId: string, data: unknown): Promise<void>;
51
+ loadCheckpoint(jobId: string, runId: string): Promise<unknown>;
52
+ clearCheckpoint(jobId: string, runId: string): Promise<void>;
53
+ private createLock;
54
+ takeLock(jobId: string, slot: string, owner: string, ttlMs: number): Promise<boolean>;
55
+ renewLock(jobId: string, slot: string, owner: string, ttlMs: number): Promise<boolean>;
56
+ releaseLock(jobId: string, slot: string, owner: string): Promise<void>;
57
+ }
58
+ export default FileJobStateProvider;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * FileLoggingProvider - Default logging provider (Issue #169)
3
+ *
4
+ * Winston console + rotating-file transports with a timestamped single-line
5
+ * format. This is the behaviour `src/utils/logger.ts` shipped before #169 —
6
+ * extracted verbatim behind {@link BaseLoggingProvider} so the storage backend
7
+ * is swappable without touching call sites. The exported `logger` API is
8
+ * unchanged.
9
+ *
10
+ * @class FileLoggingProvider
11
+ * @extends BaseLoggingProvider
12
+ */
13
+ import { Logform } from 'winston';
14
+ import type Transport from 'winston-transport';
15
+ import BaseLoggingProvider, { LoggingProviderConfig, LoggingProviderInfo } from './BaseLoggingProvider.js';
16
+ declare class FileLoggingProvider extends BaseLoggingProvider {
17
+ /**
18
+ * Console transport always; rotating-file transport added only when `dir`
19
+ * is provided (avoids creating ./data/logs before ConfigurationManager
20
+ * resolves paths — same guard as the pre-#169 logger).
21
+ */
22
+ createTransports(config: LoggingProviderConfig): Transport[];
23
+ createFormat(): Logform.Format;
24
+ /**
25
+ * Render whatever a caller passed as the second argument to `logger.*`.
26
+ *
27
+ * Winston merges that object onto `info` alongside its own keys, so the
28
+ * three it owns are excluded, as are its symbol-keyed internals (`level`,
29
+ * `message`, `splat`) — those are winston's plumbing and putting them in the
30
+ * line would be noise at best.
31
+ *
32
+ * A `stack` is emitted on its own lines because a one-line stack is
33
+ * unreadable, and reading the stack is the entire reason this exists.
34
+ *
35
+ * @param info - The winston info object for one log record
36
+ * @returns The rendered metadata, or an empty string when there is none
37
+ */
38
+ private static renderMeta;
39
+ getProviderInfo(): LoggingProviderInfo;
40
+ /** Convert a number or `'<n>[MB|KB|B]'` string to a byte count. */
41
+ private resolveMaxSize;
42
+ }
43
+ export default FileLoggingProvider;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * FileLoggingProvider - Default logging provider (Issue #169)
3
+ *
4
+ * Winston console + rotating-file transports with a timestamped single-line
5
+ * format. This is the behaviour `src/utils/logger.ts` shipped before #169 —
6
+ * extracted verbatim behind {@link BaseLoggingProvider} so the storage backend
7
+ * is swappable without touching call sites. The exported `logger` API is
8
+ * unchanged.
9
+ *
10
+ * @class FileLoggingProvider
11
+ * @extends BaseLoggingProvider
12
+ */
13
+ import path from 'path';
14
+ import { format, transports } from 'winston';
15
+ import BaseLoggingProvider from './BaseLoggingProvider.js';
16
+ import { redactSecretsFormat } from '../utils/redactSecrets.js';
17
+ import { redactPrivateNamesFormat } from '../utils/redactPrivateNames.js';
18
+ /** Fallback when maxSize is unset or unparseable (1MB) */
19
+ const DEFAULT_MAX_SIZE = 1048576;
20
+ class FileLoggingProvider extends BaseLoggingProvider {
21
+ /**
22
+ * Console transport always; rotating-file transport added only when `dir`
23
+ * is provided (avoids creating ./data/logs before ConfigurationManager
24
+ * resolves paths — same guard as the pre-#169 logger).
25
+ */
26
+ createTransports(config) {
27
+ const logTransports = [new transports.Console()];
28
+ if (config.dir) {
29
+ logTransports.push(new transports.File({
30
+ filename: path.join(config.dir, 'app.log'),
31
+ maxsize: this.resolveMaxSize(config.maxSize),
32
+ maxFiles: config.maxFiles
33
+ }));
34
+ }
35
+ return logTransports;
36
+ }
37
+ createFormat() {
38
+ return format.combine(format.timestamp(),
39
+ // #1030: strike configured secrets before anything renders them. Placed
40
+ // here rather than inside printf so it covers every transport at once,
41
+ // and before printf because printf is what produces the final line.
42
+ // The table is empty until WikiEngine fills it — see redactSecrets.ts for
43
+ // why it cannot be read from config at this point.
44
+ redactSecretsFormat(),
45
+ // #1461: private page titles never reach a log line or /admin/logs.
46
+ redactPrivateNamesFormat(), format.printf((info) => {
47
+ const ts = typeof info.timestamp === 'string' ? info.timestamp : JSON.stringify(info.timestamp);
48
+ const msg = typeof info.message === 'string' ? info.message : JSON.stringify(info.message);
49
+ // #1141: render the metadata too. This printf used to emit only
50
+ // timestamp/level/message, so the second argument of every
51
+ // `logger.error(msg, { error, stack })` call in the codebase was
52
+ // dropped — a 500 on every missing page logged as the bare line
53
+ // `[error]: [VIEW] Error viewing page`, with the cause nowhere on
54
+ // disk. Redaction runs before this (see redactSecretsFormat above),
55
+ // so what arrives here has already been stripped of secrets.
56
+ const meta = FileLoggingProvider.renderMeta(info);
57
+ return meta ? `${ts} [${info.level}]: ${msg} ${meta}` : `${ts} [${info.level}]: ${msg}`;
58
+ }));
59
+ }
60
+ /**
61
+ * Render whatever a caller passed as the second argument to `logger.*`.
62
+ *
63
+ * Winston merges that object onto `info` alongside its own keys, so the
64
+ * three it owns are excluded, as are its symbol-keyed internals (`level`,
65
+ * `message`, `splat`) — those are winston's plumbing and putting them in the
66
+ * line would be noise at best.
67
+ *
68
+ * A `stack` is emitted on its own lines because a one-line stack is
69
+ * unreadable, and reading the stack is the entire reason this exists.
70
+ *
71
+ * @param info - The winston info object for one log record
72
+ * @returns The rendered metadata, or an empty string when there is none
73
+ */
74
+ static renderMeta(info) {
75
+ const own = new Set(['timestamp', 'level', 'message']);
76
+ const parts = [];
77
+ let stack;
78
+ for (const key of Object.keys(info)) {
79
+ if (own.has(key))
80
+ continue;
81
+ const value = info[key];
82
+ if (value === undefined)
83
+ continue;
84
+ if (key === 'stack' && typeof value === 'string') {
85
+ stack = value;
86
+ continue;
87
+ }
88
+ parts.push(`${key}=${typeof value === 'string' ? value : JSON.stringify(value)}`);
89
+ }
90
+ const inline = parts.length > 0 ? parts.join(' ') : '';
91
+ if (stack) {
92
+ return inline ? `${inline}\n${stack}` : stack;
93
+ }
94
+ return inline;
95
+ }
96
+ getProviderInfo() {
97
+ return {
98
+ name: 'FileLoggingProvider',
99
+ version: '1.0.0',
100
+ description: 'Winston console + rotating-file transports (default)',
101
+ features: ['console', 'file', 'rotation']
102
+ };
103
+ }
104
+ /** Convert a number or `'<n>[MB|KB|B]'` string to a byte count. */
105
+ resolveMaxSize(maxSize) {
106
+ if (typeof maxSize === 'number')
107
+ return maxSize;
108
+ if (typeof maxSize === 'string') {
109
+ const m = maxSize.match(/^(\d+(?:\.\d+)?)\s*(MB|KB|B)?$/i);
110
+ if (m) {
111
+ const [, size, unit] = m;
112
+ const mult = unit?.toUpperCase() === 'MB' ? 1024 * 1024
113
+ : unit?.toUpperCase() === 'KB' ? 1024 : 1;
114
+ return parseFloat(size) * mult;
115
+ }
116
+ }
117
+ return DEFAULT_MAX_SIZE;
118
+ }
119
+ }
120
+ export default FileLoggingProvider;
@@ -0,0 +1,25 @@
1
+ import type { Adapter as OidcAdapter, AdapterPayload as OidcAdapterPayload } from 'oidc-provider';
2
+ export declare class FileOidcAdapterStore {
3
+ private readonly dir;
4
+ private readonly now;
5
+ private readonly models;
6
+ private readonly queues;
7
+ constructor(dir: string, now?: () => number);
8
+ /** Make the directory owner-only. Returns a warning when the filesystem ignores modes. */
9
+ prepare(): string | null;
10
+ /** The factory node-oidc-provider calls once per model. */
11
+ adapterFactory(): (name: string) => OidcAdapter;
12
+ adapter(name: string): OidcAdapter;
13
+ /** Live rows of one model whose payload matches, for the manager's own sweeps (sign-out, grants). */
14
+ listLive(name: string): Promise<OidcAdapterPayload[]>;
15
+ /** Delete every row of one model whose payload matches; returns how many went. For sign-out (#1572). */
16
+ destroyWhere(name: string, match: (payload: OidcAdapterPayload) => boolean): Promise<number>;
17
+ /** Wait for every pending write; used at shutdown. */
18
+ flush(): Promise<void>;
19
+ private live;
20
+ private findBy;
21
+ private file;
22
+ private rows;
23
+ private persist;
24
+ }
25
+ export default FileOidcAdapterStore;