shelving 1.236.0 → 1.236.2

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 (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
@@ -1,40 +1,65 @@
1
1
  import { getLink } from "../util/link.js";
2
2
  import { HTTP_SCHEMES } from "../util/uri.js";
3
3
  import { MARKUP_RULES } from "./rule/index.js";
4
+ /**
5
+ * Parses a Markdownish markup string and renders it as a React node using a tiered, masking rule engine.
6
+ * - The syntax isn't hardcoded — it's defined entirely by the `rules` supplied (defaults to `MARKUP_RULES`).
7
+ * - Rules are grouped into priority tiers and resolved highest tier first; a claimed region is masked so lower-priority rules can't match into or across it.
8
+ * - Rules own the recursion into their own children by calling `parse()` again, optionally with a different context.
9
+ *
10
+ * @example
11
+ * const node = new MarkupParser().parse("This is a *bold* string.");
12
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser
13
+ */
4
14
  export class MarkupParser {
5
15
  /**
6
16
  * The list of parsing rules this parser applies.
17
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/rules
7
18
  */
8
19
  rules;
9
20
  /**
10
21
  * Calculated list of priorities to iterate over (extracted from the rules), e.g. [10, 0, -10]
22
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/priorities
11
23
  */
12
24
  priorities;
13
25
  /**
14
26
  * Set the `rel=""` property used for any links (e.g. `rel="nofollow ugc"`).
15
27
  * @example "nofollow ugc"
28
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/rel
16
29
  */
17
30
  rel;
18
31
  /**
19
32
  * Current page URL — used as the base for resolving relative refs (`./foo`, `#x`, bare segments) in link hrefs.
20
33
  * @default Falls back to `root` if not set.
34
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/url
21
35
  */
22
36
  url;
23
37
  /**
24
38
  * Site root URL — used as the base for resolving site-absolute path hrefs (`/foo`), honoring its subfolder.
25
39
  * @default Falls back to `url` if not set.
40
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/root
26
41
  */
27
42
  root;
28
43
  /**
29
44
  * Valid URI schemes/protocols for URLs and URIs.
30
45
  * @example ["http:", "https:"]
31
46
  * @default ["http:", "https:"]
47
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/schemes
32
48
  */
33
49
  schemes;
34
50
  /**
35
51
  * Default context to use if one isn't set. Defaults to `"block"`
52
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/context
36
53
  */
37
54
  context;
55
+ /**
56
+ * Create a new `MarkupParser` from a set of options.
57
+ *
58
+ * @param options Options configuring the rules, link resolution, and default context (all optional).
59
+ * @returns A `MarkupParser` instance.
60
+ * @example new MarkupParser({ rel: "nofollow ugc" })
61
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser
62
+ */
38
63
  constructor({ rules = MARKUP_RULES, rel, url, root, schemes = HTTP_SCHEMES, context = "block" } = {}) {
39
64
  this.rules = rules;
40
65
  this.priorities = _getPriorities(rules);
@@ -45,30 +70,40 @@ export class MarkupParser {
45
70
  this.context = context;
46
71
  }
47
72
  /**
48
- * Parse a text string as Markdownish markup syntax and render it as elements.
73
+ * Parse a text string as Markdownish markup syntax and render it as a React node.
49
74
  * - Syntax is not defined by this code, but by the rules supplied to it.
50
75
  *
51
- * @param input The string content possibly containing markup syntax, e.g. "This is a *bold* string.
52
- * @param parser A markup parser instance.
76
+ * @param input The string content possibly containing markup syntax, e.g. `"This is a *bold* string."`.
53
77
  * @param context The context to render in (defaults to `"block"`).
54
- *
55
78
  * @returns A React node — an element, a string, `null`, or an array of zero or more of those.
79
+ * @example new MarkupParser().parse("This is a *bold* string.")
80
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/parse
56
81
  */
57
82
  parse(input, context = "block") {
58
83
  const nodes = _parseNodes(input, this, context);
59
84
  return !nodes.length ? null : nodes.length === 1 ? nodes[0] : nodes;
60
85
  }
61
- /** Yield the rules active in `context` that sit in the given priority tier. */
86
+ /**
87
+ * Yield the rules active in `context` that sit in the given priority tier.
88
+ *
89
+ * @param context The render context to filter rules by (e.g. `"block"`, `"inline"`).
90
+ * @param priority The priority tier to filter rules by.
91
+ * @returns An iterable of the matching `MarkupRule` instances.
92
+ * @example for (const rule of parser.getRules("block", 0)) { ... }
93
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/getRules
94
+ */
62
95
  *getRules(context, priority) {
63
96
  for (const r of this.rules)
64
97
  if (r.priority === priority && r.contexts.includes(context))
65
98
  yield r;
66
99
  }
67
100
  /**
68
- * Get a HREF link with the correct context of our `options.url` and `options.root`
101
+ * Resolve a link href against this parser's `url` and `root`, returning it only if its scheme is allowed.
69
102
  *
70
- * @returns `ImmutableURI` a (URL) object if the link matches and is parseable and has an allowed scheme.
71
- * @returns `undefined` if the link does not amtch the allowed `options.schemes`
103
+ * @param href The raw link reference to resolve (relative or absolute), or a nullish value.
104
+ * @returns An `ImmutableURI` if the link parses and its scheme is in `schemes`, otherwise `undefined`.
105
+ * @example parser.getLink("/about") // ImmutableURI | undefined
106
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MarkupParser/getLink
72
107
  */
73
108
  getLink(href) {
74
109
  const link = getLink(href, this.url, this.root);
@@ -250,5 +285,11 @@ function _mask(text, start, end) {
250
285
  blanked += text[i] === "\n" ? "\n" : _MASK_CHAR;
251
286
  return `${text.slice(0, start)}${blanked}${text.slice(end)}`;
252
287
  }
253
- /** MarkupParser sentinel with the default markup rules */
288
+ /**
289
+ * Shared `MarkupParser` instance configured with the default markup rules and behaviour.
290
+ * - Use this singleton when no custom rules, link resolution, or default context are needed.
291
+ *
292
+ * @example MARKUP_PARSER.parse("This is a *bold* string.")
293
+ * @see https://dhoulb.github.io/shelving/markup/MarkupParser/MARKUP_PARSER
294
+ */
254
295
  export const MARKUP_PARSER = new MarkupParser();
@@ -2,7 +2,19 @@ import type { ReactElement } from "react";
2
2
  import type { EmptyDictionary } from "../util/dictionary.js";
3
3
  import type { NamedRegExp, NamedRegExpData } from "../util/regexp.js";
4
4
  import type { MarkupParser } from "./MarkupParser.js";
5
+ /**
6
+ * One or more named contexts a markup rule renders in (e.g. `["block"]`, `["inline", "list", "link"]`).
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/markup/MarkupRule/MarkupContexts
9
+ */
5
10
  export type MarkupContexts = [string, ...string[]];
11
+ /**
12
+ * A single markup rule: a regular expression that matches a span of input plus a renderer that turns the match into an element.
13
+ * - Rules are grouped into priority tiers and resolved highest tier first by `MarkupParser`.
14
+ * - A rule renders only in the contexts it lists, letting the same syntax behave differently in block vs inline vs list context.
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/markup/MarkupRule/MarkupRule
17
+ */
6
18
  export interface MarkupRule {
7
19
  /** Regular expression used for matching the rule. */
8
20
  regexp: RegExp;
@@ -13,7 +25,28 @@ export interface MarkupRule {
13
25
  /** Priority for this rule (higher priority rules override lower priority rules). */
14
26
  priority: number;
15
27
  }
28
+ /**
29
+ * An immutable list of `MarkupRule` instances applied by a `MarkupParser`.
30
+ *
31
+ * @see https://dhoulb.github.io/shelving/markup/MarkupRule/MarkupRules
32
+ */
16
33
  export type MarkupRules = readonly MarkupRule[];
17
- /** Helper to make it easier to create typed `MarkupRule` instances using `NamedRegExp` regular expressions. */
34
+ /**
35
+ * Create a typed `MarkupRule` from a `NamedRegExp`, a renderer, its contexts, and an optional priority.
36
+ *
37
+ * *Factory for `MarkupRule`.*
38
+ *
39
+ * - The overload taking a `NamedRegExp<T>` infers the named capture groups handed to `render`.
40
+ * - Higher `priority` rules are resolved (and masked) before lower-priority ones.
41
+ *
42
+ * @param regexp Regular expression used to match the rule (a `NamedRegExp` to type the render data).
43
+ * @param render Renderer turning a `key`, the matched `data`, and the active `parser` into a `ReactElement`.
44
+ * @param contexts One or more contexts this rule renders in (e.g. `["block"]`).
45
+ * @param priority Tier priority — higher rules override lower ones (defaults to `0`).
46
+ * @returns A `MarkupRule` ready to add to a `MarkupRules` list.
47
+ * @example
48
+ * const HR_RULE = createMarkupRule(/^---$/m, key => <hr key={key} />, ["block"]);
49
+ * @see https://dhoulb.github.io/shelving/markup/MarkupRule/createMarkupRule
50
+ */
18
51
  export declare function createMarkupRule<T extends NamedRegExpData>(regexp: NamedRegExp<T>, render: (key: string, data: T, parser: MarkupParser) => ReactElement, contexts: MarkupContexts, priority?: number): MarkupRule;
19
52
  export declare function createMarkupRule(regexp: RegExp, render: (key: string, data: EmptyDictionary, parser: MarkupParser) => ReactElement, contexts: MarkupContexts, priority?: number): MarkupRule;
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Base class for a parser that converts an input of type `I` into an output of type `O`.
3
+ * - Subclasses implement `parse()` to define the actual transformation.
4
+ * - `MarkupParser` is the canonical implementation — it parses a markup string into a React node.
5
+ *
6
+ * @example
7
+ * class UppercaseParser extends Parser<string, string> {
8
+ * parse(input: string): string { return input.toUpperCase(); }
9
+ * }
10
+ * @see https://dhoulb.github.io/shelving/markup/Parser/Parser
11
+ */
1
12
  export declare abstract class Parser<I, O> {
13
+ /**
14
+ * Parse an input value into an output value.
15
+ *
16
+ * @param input The input value to parse.
17
+ * @returns The parsed output value.
18
+ * @see https://dhoulb.github.io/shelving/markup/Parser/Parser/parse
19
+ */
2
20
  abstract parse(input: I): O;
3
21
  }
package/markup/Parser.js CHANGED
@@ -1,2 +1,13 @@
1
+ /**
2
+ * Base class for a parser that converts an input of type `I` into an output of type `O`.
3
+ * - Subclasses implement `parse()` to define the actual transformation.
4
+ * - `MarkupParser` is the canonical implementation — it parses a markup string into a React node.
5
+ *
6
+ * @example
7
+ * class UppercaseParser extends Parser<string, string> {
8
+ * parse(input: string): string { return input.toUpperCase(); }
9
+ * }
10
+ * @see https://dhoulb.github.io/shelving/markup/Parser/Parser
11
+ */
1
12
  export class Parser {
2
13
  }
@@ -3,5 +3,8 @@
3
3
  * - `>` quote character followed by zero or more spaces.
4
4
  * - No spaces can appear before the `>` quote character.
5
5
  * - Quote block is only broken by `\n\n` two newline characters.
6
+ *
7
+ * @example new MarkupParser({ rules: [BLOCKQUOTE_RULE] }).parse("> Quoted text")
8
+ * @see https://dhoulb.github.io/shelving/markup/rule/blockquote/BLOCKQUOTE_RULE
6
9
  */
7
10
  export declare const BLOCKQUOTE_RULE: import("../MarkupRule.js").MarkupRule;
@@ -8,5 +8,8 @@ const INDENT = new RegExp(`^${PREFIX}`, "gm");
8
8
  * - `>` quote character followed by zero or more spaces.
9
9
  * - No spaces can appear before the `>` quote character.
10
10
  * - Quote block is only broken by `\n\n` two newline characters.
11
+ *
12
+ * @example new MarkupParser({ rules: [BLOCKQUOTE_RULE] }).parse("> Quoted text")
13
+ * @see https://dhoulb.github.io/shelving/markup/rule/blockquote/BLOCKQUOTE_RULE
11
14
  */
12
15
  export const BLOCKQUOTE_RULE = createMarkupRule(createBlockRegExp(`(?<quote>${PREFIX}${BLOCK_CONTENT_REGEXP})`), (key, { quote }, parser) => _jsx("blockquote", { children: parser.parse(quote.replace(INDENT, ""), "block") }, key), ["block", "list"]);
@@ -5,5 +5,8 @@
5
5
  * - Closing characters must exactly match opening characters.
6
6
  * - Works inside link text too, e.g. `` [`code`](url) ``.
7
7
  * - Same as Markdown syntax.
8
+ *
9
+ * @example new MarkupParser({ rules: [CODE_RULE] }).parse("Some `inline code` here")
10
+ * @see https://dhoulb.github.io/shelving/markup/rule/code/CODE_RULE
8
11
  */
9
12
  export declare const CODE_RULE: import("../MarkupRule.js").MarkupRule;
@@ -9,6 +9,9 @@ import { BLOCK_CONTENT_REGEXP } from "../util/regexp.js";
9
9
  * - Closing characters must exactly match opening characters.
10
10
  * - Works inside link text too, e.g. `` [`code`](url) ``.
11
11
  * - Same as Markdown syntax.
12
+ *
13
+ * @example new MarkupParser({ rules: [CODE_RULE] }).parse("Some `inline code` here")
14
+ * @see https://dhoulb.github.io/shelving/markup/rule/code/CODE_RULE
12
15
  */
13
16
  // Priority 10: code is a higher-precedence tier, resolved and masked before links/emphasis, so a
14
17
  // code span that straddles a link delimiter wins and the link cannot form across it.
@@ -6,5 +6,8 @@
6
6
  * - Closing fence must be exactly the same as the opening fence, and can be made of three or more "```" backticks, or three or more `~~~` tildes.
7
7
  * - If there's no closing fence the code block will run to the end of the current string.
8
8
  * - Markdown-style four-space indent syntax is not supported (only fenced code since it's less confusing and more common).
9
+ *
10
+ * @example new MarkupParser({ rules: [FENCED_RULE] }).parse("```\ncode block\n```")
11
+ * @see https://dhoulb.github.io/shelving/markup/rule/fenced/FENCED_RULE
9
12
  */
10
13
  export declare const FENCED_RULE: import("../MarkupRule.js").MarkupRule;
@@ -10,6 +10,9 @@ const FENCE = "`{3,}|~{3,}";
10
10
  * - Closing fence must be exactly the same as the opening fence, and can be made of three or more "```" backticks, or three or more `~~~` tildes.
11
11
  * - If there's no closing fence the code block will run to the end of the current string.
12
12
  * - Markdown-style four-space indent syntax is not supported (only fenced code since it's less confusing and more common).
13
+ *
14
+ * @example new MarkupParser({ rules: [FENCED_RULE] }).parse("```\ncode block\n```")
15
+ * @see https://dhoulb.github.io/shelving/markup/rule/fenced/FENCED_RULE
13
16
  */
14
17
  export const FENCED_RULE = createMarkupRule(createBlockRegExp(`(?<code>${BLOCK_CONTENT_REGEXP})`, `${BLOCK_START_REGEXP}(?<fence>${FENCE}) *(?<title>${LINE_CONTENT_REGEXP})\n`, // Starts with the fence
15
18
  `(?:${LINE_SPACE_REGEXP}*\n\\k<fence>(?:\\s*\\n)?|$)`), (key, { title, code }) => {
@@ -3,5 +3,8 @@
3
3
  * - `#` 1-6 hashes, then one or more spaces, then the title.
4
4
  * - `#` must be the first character on the line.
5
5
  * - Markdown's underline syntax is not supported (for simplification).
6
+ *
7
+ * @example new MarkupParser({ rules: [HEADING_RULE] }).parse("# Title")
8
+ * @see https://dhoulb.github.io/shelving/markup/rule/heading/HEADING_RULE
6
9
  */
7
10
  export declare const HEADING_RULE: import("../MarkupRule.js").MarkupRule;
@@ -6,6 +6,9 @@ import { createLineRegExp, LINE_CONTENT_REGEXP, LINE_SPACE_REGEXP } from "../uti
6
6
  * - `#` 1-6 hashes, then one or more spaces, then the title.
7
7
  * - `#` must be the first character on the line.
8
8
  * - Markdown's underline syntax is not supported (for simplification).
9
+ *
10
+ * @example new MarkupParser({ rules: [HEADING_RULE] }).parse("# Title")
11
+ * @see https://dhoulb.github.io/shelving/markup/rule/heading/HEADING_RULE
9
12
  */
10
13
  export const HEADING_RULE = createMarkupRule(createLineRegExp(`(?<prefix>#{1,6})(?:${LINE_SPACE_REGEXP}+(?<heading>${LINE_CONTENT_REGEXP}))?`), (key, { prefix, heading = "" }, parser) => {
11
14
  // The hash count picks the heading level; cast the dynamic tag to the known `h1`–`h6` set.
@@ -1,15 +1,28 @@
1
1
  import type { MarkupRules } from "../MarkupRule.js";
2
- /** Markup rules that work in a block context. */
2
+ /**
3
+ * Default markup rules that render in a block context — fenced code, headings, separators, lists, blockquotes, tables, and paragraphs.
4
+ *
5
+ * @example new MarkupParser({ rules: MARKUP_RULES_BLOCK })
6
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES_BLOCK
7
+ */
3
8
  export declare const MARKUP_RULES_BLOCK: MarkupRules;
4
- /** Markup rules that work in an inline context. */
9
+ /**
10
+ * Default markup rules that render in an inline context — inline code, links, autolinks, emphasis, and hard linebreaks.
11
+ *
12
+ * @example new MarkupParser({ rules: MARKUP_RULES_INLINE })
13
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES_INLINE
14
+ */
5
15
  export declare const MARKUP_RULES_INLINE: MarkupRules;
6
16
  /**
7
- * Default markup rules
17
+ * Default markup rules — the combined block and inline rules `MarkupParser` uses when none are supplied.
8
18
  *
9
19
  * These rules define a syntax similar to Markdown but with improvements:
10
20
  * 1. Syntax is more intuitive (e.g. `*strong*` always uses `*` asterisk and `_em_` always uses `_` underscore, and URLs are always autolinked).
11
21
  * 2. More compatible with textboxes that wrap lines by default (e.g. single `\n` linebreaks don't need the trailing double space to, they're always treated as `<br />`).
12
22
  * 3. Don't support fussy fragile syntax that lets users make mistakes (e.g. literal HTML tags or `&amp;` character entities).
23
+ *
24
+ * @example new MarkupParser({ rules: MARKUP_RULES }).parse("This is a *bold* string.")
25
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES
13
26
  */
14
27
  export declare const MARKUP_RULES: MarkupRules;
15
28
  export * from "./blockquote.js";
@@ -10,7 +10,12 @@ import { PARAGRAPH_RULE } from "./paragraph.js";
10
10
  import { SEPARATOR_RULE } from "./separator.js";
11
11
  import { TABLE_RULE } from "./table.js";
12
12
  import { UNORDERED_RULE } from "./unordered.js";
13
- /** Markup rules that work in a block context. */
13
+ /**
14
+ * Default markup rules that render in a block context — fenced code, headings, separators, lists, blockquotes, tables, and paragraphs.
15
+ *
16
+ * @example new MarkupParser({ rules: MARKUP_RULES_BLOCK })
17
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES_BLOCK
18
+ */
14
19
  export const MARKUP_RULES_BLOCK = [
15
20
  FENCED_RULE,
16
21
  HEADING_RULE,
@@ -21,7 +26,12 @@ export const MARKUP_RULES_BLOCK = [
21
26
  TABLE_RULE,
22
27
  PARAGRAPH_RULE,
23
28
  ];
24
- /** Markup rules that work in an inline context. */
29
+ /**
30
+ * Default markup rules that render in an inline context — inline code, links, autolinks, emphasis, and hard linebreaks.
31
+ *
32
+ * @example new MarkupParser({ rules: MARKUP_RULES_INLINE })
33
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES_INLINE
34
+ */
25
35
  export const MARKUP_RULES_INLINE = [
26
36
  CODE_RULE, //
27
37
  LINK_RULE,
@@ -30,12 +40,15 @@ export const MARKUP_RULES_INLINE = [
30
40
  LINEBREAK_RULE,
31
41
  ];
32
42
  /**
33
- * Default markup rules
43
+ * Default markup rules — the combined block and inline rules `MarkupParser` uses when none are supplied.
34
44
  *
35
45
  * These rules define a syntax similar to Markdown but with improvements:
36
46
  * 1. Syntax is more intuitive (e.g. `*strong*` always uses `*` asterisk and `_em_` always uses `_` underscore, and URLs are always autolinked).
37
47
  * 2. More compatible with textboxes that wrap lines by default (e.g. single `\n` linebreaks don't need the trailing double space to, they're always treated as `<br />`).
38
48
  * 3. Don't support fussy fragile syntax that lets users make mistakes (e.g. literal HTML tags or `&amp;` character entities).
49
+ *
50
+ * @example new MarkupParser({ rules: MARKUP_RULES }).parse("This is a *bold* string.")
51
+ * @see https://dhoulb.github.io/shelving/markup/rule/MARKUP_RULES
39
52
  */
40
53
  export const MARKUP_RULES = [
41
54
  ...MARKUP_RULES_BLOCK, //
@@ -3,12 +3,15 @@
3
3
  * - Inline strong text wrapped in one or more `*` asterisks.
4
4
  * - Inline emphasis text wrapped in one or more `_` underscores.
5
5
  * - Inline inserted text wrapped in one or more `+` pluses.
6
- * - Inline deleted text wrapped in one or more `-` minuses or `~` tildes.
6
+ * - Inline deleted text wrapped in one or more `~` tildes.
7
7
  * - Inline highlighted text wrapped in one or more `=` equals or `:` colons.
8
8
  * - Whitespace cannot be the first or last character of the element (e.g. `* abc *` will not work).
9
9
  * - Closing chars must match opening characters.
10
10
  * - Cannot occur in the middle of a word (e.g. `this*that*this` will not work).
11
11
  * - Closing characters must exactly match opening characters.
12
12
  * - Different to Markdown: strong is always surrounded by `*asterisks*` and emphasis is always surrounded by `_underscores_` (strong isn't 'double emphasis').
13
+ *
14
+ * @example new MarkupParser({ rules: [INLINE_RULE] }).parse("This is *bold* and _italic_")
15
+ * @see https://dhoulb.github.io/shelving/markup/rule/inline/INLINE_RULE
13
16
  */
14
17
  export declare const INLINE_RULE: import("../MarkupRule.js").MarkupRule;
@@ -2,19 +2,22 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createMarkupRule } from "../MarkupRule.js";
3
3
  import { createWordRegExp } from "../util/regexp.js";
4
4
  /** Map characters, e.g. `*`, to their coresponding HTML tag, e.g. `strong` */
5
- const INLINE_CHARS = { "-": "del", "~": "del", "+": "ins", "*": "strong", _: "em", "=": "mark" }; // Hyphen must be first so it works when we use the keys as a character class.
5
+ const INLINE_CHARS = { "~": "del", "+": "ins", "*": "strong", _: "em", "=": "mark" };
6
6
  /**
7
7
  * Inline strong, emphasis, insert, delete, highlight.
8
8
  * - Inline strong text wrapped in one or more `*` asterisks.
9
9
  * - Inline emphasis text wrapped in one or more `_` underscores.
10
10
  * - Inline inserted text wrapped in one or more `+` pluses.
11
- * - Inline deleted text wrapped in one or more `-` minuses or `~` tildes.
11
+ * - Inline deleted text wrapped in one or more `~` tildes.
12
12
  * - Inline highlighted text wrapped in one or more `=` equals or `:` colons.
13
13
  * - Whitespace cannot be the first or last character of the element (e.g. `* abc *` will not work).
14
14
  * - Closing chars must match opening characters.
15
15
  * - Cannot occur in the middle of a word (e.g. `this*that*this` will not work).
16
16
  * - Closing characters must exactly match opening characters.
17
17
  * - Different to Markdown: strong is always surrounded by `*asterisks*` and emphasis is always surrounded by `_underscores_` (strong isn't 'double emphasis').
18
+ *
19
+ * @example new MarkupParser({ rules: [INLINE_RULE] }).parse("This is *bold* and _italic_")
20
+ * @see https://dhoulb.github.io/shelving/markup/rule/inline/INLINE_RULE
18
21
  */
19
22
  export const INLINE_RULE = createMarkupRule(createWordRegExp(`(?<wrap>(?<char>[${Object.keys(INLINE_CHARS).join("")}])+)(?<text>(?!\\k<char>)\\S(?:[\\s\\S]*?(?!\\k<char>)\\S)?)\\k<wrap>`), (key, { char, text }, parser) => {
20
23
  const Inline = INLINE_CHARS[char];
@@ -7,5 +7,8 @@
7
7
  * - We just directly convert any `\n` linebreak into a `<br />` tag (lines without two spaces are not joined together).
8
8
  * - This is more intuitive (a linebreak becomes a linebreak is isn't silently ignored).
9
9
  * - This works better with textareas that wrap text (since manually breaking up long lines is no longer necessary).
10
+ *
11
+ * @example new MarkupParser({ rules: [LINEBREAK_RULE] }).parse("Line one\nLine two")
12
+ * @see https://dhoulb.github.io/shelving/markup/rule/linebreak/LINEBREAK_RULE
10
13
  */
11
14
  export declare const LINEBREAK_RULE: import("../MarkupRule.js").MarkupRule;
@@ -9,6 +9,9 @@ import { createMarkupRule } from "../MarkupRule.js";
9
9
  * - We just directly convert any `\n` linebreak into a `<br />` tag (lines without two spaces are not joined together).
10
10
  * - This is more intuitive (a linebreak becomes a linebreak is isn't silently ignored).
11
11
  * - This works better with textareas that wrap text (since manually breaking up long lines is no longer necessary).
12
+ *
13
+ * @example new MarkupParser({ rules: [LINEBREAK_RULE] }).parse("Line one\nLine two")
14
+ * @see https://dhoulb.github.io/shelving/markup/rule/linebreak/LINEBREAK_RULE
12
15
  */
13
16
  export const LINEBREAK_RULE = createMarkupRule(/[^\n\S]*\n[^\n\S]*/, //
14
17
  //
@@ -5,6 +5,9 @@
5
5
  * - Does not need space before/after the link.
6
6
  * - If link is not valid (using `new URL(url)` then unparsed text will be returned.
7
7
  * - For security only schemes that appear in `MarkupOptions.schemes` will match (defaults to `http:` and `https:`).
8
+ *
9
+ * @example new MarkupParser({ rules: [LINK_RULE] }).parse("[Google Maps](http://google.com/maps)")
10
+ * @see https://dhoulb.github.io/shelving/markup/rule/link/LINK_RULE
8
11
  */
9
12
  export declare const LINK_RULE: import("../MarkupRule.js").MarkupRule;
10
13
  /**
@@ -13,5 +16,8 @@ export declare const LINK_RULE: import("../MarkupRule.js").MarkupRule;
13
16
  * - If no title is specified a cleaned up version of the URL will be used, e.g. `google.com/maps`
14
17
  * - If link is not valid (using `new URL(url)` then unparsed text will be returned.
15
18
  * - For security only schemes that appear in `MarkupOptions.schemes` will match (defaults to `http:` and `https:`).
19
+ *
20
+ * @example new MarkupParser({ rules: [AUTOLINK_RULE] }).parse("http://google.com/maps (Google Maps)")
21
+ * @see https://dhoulb.github.io/shelving/markup/rule/link/AUTOLINK_RULE
16
22
  */
17
23
  export declare const AUTOLINK_RULE: import("../MarkupRule.js").MarkupRule;
@@ -14,6 +14,9 @@ function _renderLink(key, { title, href }, parser) {
14
14
  * - Does not need space before/after the link.
15
15
  * - If link is not valid (using `new URL(url)` then unparsed text will be returned.
16
16
  * - For security only schemes that appear in `MarkupOptions.schemes` will match (defaults to `http:` and `https:`).
17
+ *
18
+ * @example new MarkupParser({ rules: [LINK_RULE] }).parse("[Google Maps](http://google.com/maps)")
19
+ * @see https://dhoulb.github.io/shelving/markup/rule/link/LINK_RULE
17
20
  */
18
21
  export const LINK_RULE = createMarkupRule(getRegExp(/\[(?<title>[^\]\n]*?)\]\((?<href>[^)\n]*?)\)/), //
19
22
  _renderLink, ["inline", "list"]);
@@ -23,6 +26,9 @@ _renderLink, ["inline", "list"]);
23
26
  * - If no title is specified a cleaned up version of the URL will be used, e.g. `google.com/maps`
24
27
  * - If link is not valid (using `new URL(url)` then unparsed text will be returned.
25
28
  * - For security only schemes that appear in `MarkupOptions.schemes` will match (defaults to `http:` and `https:`).
29
+ *
30
+ * @example new MarkupParser({ rules: [AUTOLINK_RULE] }).parse("http://google.com/maps (Google Maps)")
31
+ * @see https://dhoulb.github.io/shelving/markup/rule/link/AUTOLINK_RULE
26
32
  */
27
33
  export const AUTOLINK_RULE = createMarkupRule(getRegExp(/(?<href>[a-z]{3,}?:\S+)(?: +(?:\((?<title>[^)\n]*?)\)))?/), //
28
34
  _renderLink, ["inline", "list"]);
@@ -6,5 +6,8 @@
6
6
  * - List block runs until a blank line that is not followed by another item or an indented continuation line.
7
7
  * - A list with blank lines between its items (or before a continuation paragraph) is "loose": its items are wrapped in `<p>` tags.
8
8
  * - Sparse lists are not supported.
9
+ *
10
+ * @example new MarkupParser({ rules: [ORDERED_RULE] }).parse("1. First\n2. Second")
11
+ * @see https://dhoulb.github.io/shelving/markup/rule/ordered/ORDERED_RULE
9
12
  */
10
13
  export declare const ORDERED_RULE: import("../MarkupRule.js").MarkupRule;
@@ -19,6 +19,9 @@ const _LOOSE = new RegExp(`\\n${LINE_SPACE_REGEXP}*\\n`);
19
19
  * - List block runs until a blank line that is not followed by another item or an indented continuation line.
20
20
  * - A list with blank lines between its items (or before a continuation paragraph) is "loose": its items are wrapped in `<p>` tags.
21
21
  * - Sparse lists are not supported.
22
+ *
23
+ * @example new MarkupParser({ rules: [ORDERED_RULE] }).parse("1. First\n2. Second")
24
+ * @see https://dhoulb.github.io/shelving/markup/rule/ordered/ORDERED_RULE
22
25
  */
23
26
  export const ORDERED_RULE = createMarkupRule(createBlockRegExp(`(?<list>${_NUMBER}(?:${LINE_SPACE_REGEXP}+${BLOCK_CONTENT_REGEXP})?)`, BLOCK_START_REGEXP, _END), (key, { list }, parser) => _jsx("ol", { children: Array.from(_getOrderedItems(list, parser)) }, key), ["block", "list"]);
24
27
  /** Parse a markdown list into a set of items elements. */
@@ -3,5 +3,8 @@
3
3
  * - Captures almost anything in a block context.
4
4
  * - Any run of non-whitespace.
5
5
  * - Leading and trailing whitespace is trimmed.
6
+ *
7
+ * @example new MarkupParser({ rules: [PARAGRAPH_RULE] }).parse("Some plain text")
8
+ * @see https://dhoulb.github.io/shelving/markup/rule/paragraph/PARAGRAPH_RULE
6
9
  */
7
10
  export declare const PARAGRAPH_RULE: import("../MarkupRule.js").MarkupRule;
@@ -6,5 +6,8 @@ import { BLOCK_SPACE_REGEXP, BLOCK_START_REGEXP, createBlockRegExp } from "../ut
6
6
  * - Captures almost anything in a block context.
7
7
  * - Any run of non-whitespace.
8
8
  * - Leading and trailing whitespace is trimmed.
9
+ *
10
+ * @example new MarkupParser({ rules: [PARAGRAPH_RULE] }).parse("Some plain text")
11
+ * @see https://dhoulb.github.io/shelving/markup/rule/paragraph/PARAGRAPH_RULE
9
12
  */
10
13
  export const PARAGRAPH_RULE = createMarkupRule(createBlockRegExp("(?<paragraph>(?:(?=\\S)[\\s\\S]*?\\S))", `${BLOCK_START_REGEXP}${BLOCK_SPACE_REGEXP}*`), (key, { paragraph }, parser) => _jsx("p", { children: parser.parse(paragraph, "inline") }, key), ["block"], -10);
@@ -4,5 +4,8 @@
4
4
  * - Character must be repeated three (or more) times.
5
5
  * - Character must be the same every time (can't mix)
6
6
  * - Might have infinite number of spaces between the characters.
7
+ *
8
+ * @example new MarkupParser({ rules: [SEPARATOR_RULE] }).parse("---")
9
+ * @see https://dhoulb.github.io/shelving/markup/rule/separator/SEPARATOR_RULE
7
10
  */
8
11
  export declare const SEPARATOR_RULE: import("../MarkupRule.js").MarkupRule;
@@ -7,6 +7,9 @@ import { createLineRegExp } from "../util/regexp.js";
7
7
  * - Character must be repeated three (or more) times.
8
8
  * - Character must be the same every time (can't mix)
9
9
  * - Might have infinite number of spaces between the characters.
10
+ *
11
+ * @example new MarkupParser({ rules: [SEPARATOR_RULE] }).parse("---")
12
+ * @see https://dhoulb.github.io/shelving/markup/rule/separator/SEPARATOR_RULE
10
13
  */
11
14
  export const SEPARATOR_RULE = createMarkupRule(createLineRegExp("([-*•+_=])(?: *\\1){2,}"), //
12
15
  //
@@ -5,5 +5,8 @@
5
5
  * - Extra `|---|` delimiter rows split the table into sections: the first section becomes `<thead>`, the last becomes `<tfoot>` (only when there are three or more sections), and every section in between becomes its own `<tbody>`.
6
6
  * - Column count and per-column alignment (`:--` left, `--:` right, `:-:` centered) come from the first delimiter row; ragged rows are padded or truncated to that count.
7
7
  * - Cell content is rendered as inline markup; write `\|` for a literal pipe inside a cell.
8
+ *
9
+ * @example new MarkupParser({ rules: [TABLE_RULE] }).parse("| A | B |\n|---|---|\n| 1 | 2 |")
10
+ * @see https://dhoulb.github.io/shelving/markup/rule/table/TABLE_RULE
8
11
  */
9
12
  export declare const TABLE_RULE: import("../MarkupRule.js").MarkupRule;
@@ -15,6 +15,9 @@ const _SPLIT = /(?<!\\)\|/; // Splits a row into cells on unescaped pipes.
15
15
  * - Extra `|---|` delimiter rows split the table into sections: the first section becomes `<thead>`, the last becomes `<tfoot>` (only when there are three or more sections), and every section in between becomes its own `<tbody>`.
16
16
  * - Column count and per-column alignment (`:--` left, `--:` right, `:-:` centered) come from the first delimiter row; ragged rows are padded or truncated to that count.
17
17
  * - Cell content is rendered as inline markup; write `\|` for a literal pipe inside a cell.
18
+ *
19
+ * @example new MarkupParser({ rules: [TABLE_RULE] }).parse("| A | B |\n|---|---|\n| 1 | 2 |")
20
+ * @see https://dhoulb.github.io/shelving/markup/rule/table/TABLE_RULE
18
21
  */
19
22
  export const TABLE_RULE = createMarkupRule(createBlockRegExp(`(?<table>${_ROW}\\n${_DELIMITER_SOURCE}(?:\\n${_ROW})*)`), (key, { table }, parser) => {
20
23
  const lines = table.split("\n");
@@ -9,6 +9,9 @@ import type { MarkupParser } from "../MarkupParser.js";
9
9
  * - A list with blank lines between its items (or before a continuation paragraph) is "loose": its items are wrapped in `<p>` tags.
10
10
  * - An item starting with `[ ]` or `[x]` (case-insensitive) is a todo item: a checkbox `<input>` plus the content wrapped in a `<label>` so clicking it toggles the checkbox.
11
11
  * - Sparse lists are not supported.
12
+ *
13
+ * @example new MarkupParser({ rules: [UNORDERED_RULE] }).parse("- First\n- Second")
14
+ * @see https://dhoulb.github.io/shelving/markup/rule/unordered/UNORDERED_RULE
12
15
  */
13
16
  export declare const UNORDERED_RULE: import("../MarkupRule.js").MarkupRule;
14
17
  /** Parse a markdown list into a set of items elements. */
@@ -23,6 +23,9 @@ const _LOOSE = new RegExp(`\\n${LINE_SPACE_REGEXP}*\\n`);
23
23
  * - A list with blank lines between its items (or before a continuation paragraph) is "loose": its items are wrapped in `<p>` tags.
24
24
  * - An item starting with `[ ]` or `[x]` (case-insensitive) is a todo item: a checkbox `<input>` plus the content wrapped in a `<label>` so clicking it toggles the checkbox.
25
25
  * - Sparse lists are not supported.
26
+ *
27
+ * @example new MarkupParser({ rules: [UNORDERED_RULE] }).parse("- First\n- Second")
28
+ * @see https://dhoulb.github.io/shelving/markup/rule/unordered/UNORDERED_RULE
26
29
  */
27
30
  export const UNORDERED_RULE = createMarkupRule(createBlockRegExp(`(?<list>${_BULLET}(?:${LINE_SPACE_REGEXP}+${BLOCK_CONTENT_REGEXP})?)`, BLOCK_START_REGEXP, _END), (key, { list }, parser) => _jsx("ul", { children: Array.from(_getItems(list, parser)) }, key), ["block", "list"]);
28
31
  /** Parse a markdown list into a set of items elements. */