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.
- package/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- package/util/xml.js +9 -10
|
@@ -10,14 +10,32 @@ import { Extractor } from "./Extractor.js";
|
|
|
10
10
|
* and used by `MergingExtractor` to pair siblings (`{base}.md` + `{base}.ts`) and by `PackageExtractor` to look up sources.
|
|
11
11
|
* - Does NOT set `title` — `title` is only set by subclasses that have a confident source for one (e.g. `MarkupExtractor` uses the first `<h1>`). Renderers fall back to `name` when missing.
|
|
12
12
|
* - Subclasses (e.g. `MarkupExtractor`, `TypescriptExtractor`) override `extractProps()` to parse the content into richer elements.
|
|
13
|
+
*
|
|
14
|
+
* @example new FileExtractor().extract(Bun.file("/abs/path/notes.txt"))
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor
|
|
13
16
|
*/
|
|
14
17
|
export declare class FileExtractor extends Extractor<BunFile, TreeElement> {
|
|
18
|
+
/**
|
|
19
|
+
* Read a file and build a `tree-element` from its text content.
|
|
20
|
+
*
|
|
21
|
+
* @param file The Bun file to read; its `name` must be an absolute path.
|
|
22
|
+
* @returns A promise resolving to the file's `tree-element`, keyed by its verbatim filename.
|
|
23
|
+
* @throws RequiredError If the file has no name or its path is not absolute.
|
|
24
|
+
* @example await new FileExtractor().extract(Bun.file("/abs/path/notes.txt"))
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor/extract
|
|
26
|
+
*/
|
|
15
27
|
extract(file: BunFile): Promise<TreeElement>;
|
|
16
28
|
/**
|
|
17
29
|
* Build the file element props from the extracted content.
|
|
18
30
|
* - `name` is the basename without extension (e.g. `"array"`) — display-ready, used by menus, cards, and URL paths.
|
|
19
31
|
* - Override to parse `text` into richer elements (content/children/description) and to set
|
|
20
32
|
* `title` if a confident title is available.
|
|
33
|
+
*
|
|
34
|
+
* @param name The basename of the file without extension (e.g. `"array"`).
|
|
35
|
+
* @param content The raw text content of the file.
|
|
36
|
+
* @returns The element props, always including a `name`; the base implementation stores `content` verbatim.
|
|
37
|
+
* @example extractProps("notes", "Some text") // { name: "notes", content: "Some text" }
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor/extractProps
|
|
21
39
|
*/
|
|
22
40
|
extractProps(name: string, content: string): Partial<TreeElementProps> & {
|
|
23
41
|
name: string;
|
package/extract/FileExtractor.js
CHANGED
|
@@ -11,8 +11,20 @@ import { Extractor } from "./Extractor.js";
|
|
|
11
11
|
* and used by `MergingExtractor` to pair siblings (`{base}.md` + `{base}.ts`) and by `PackageExtractor` to look up sources.
|
|
12
12
|
* - Does NOT set `title` — `title` is only set by subclasses that have a confident source for one (e.g. `MarkupExtractor` uses the first `<h1>`). Renderers fall back to `name` when missing.
|
|
13
13
|
* - Subclasses (e.g. `MarkupExtractor`, `TypescriptExtractor`) override `extractProps()` to parse the content into richer elements.
|
|
14
|
+
*
|
|
15
|
+
* @example new FileExtractor().extract(Bun.file("/abs/path/notes.txt"))
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor
|
|
14
17
|
*/
|
|
15
18
|
export class FileExtractor extends Extractor {
|
|
19
|
+
/**
|
|
20
|
+
* Read a file and build a `tree-element` from its text content.
|
|
21
|
+
*
|
|
22
|
+
* @param file The Bun file to read; its `name` must be an absolute path.
|
|
23
|
+
* @returns A promise resolving to the file's `tree-element`, keyed by its verbatim filename.
|
|
24
|
+
* @throws RequiredError If the file has no name or its path is not absolute.
|
|
25
|
+
* @example await new FileExtractor().extract(Bun.file("/abs/path/notes.txt"))
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor/extract
|
|
27
|
+
*/
|
|
16
28
|
async extract(file) {
|
|
17
29
|
const source = file.name;
|
|
18
30
|
if (!source || !isAbsolutePath(source))
|
|
@@ -32,6 +44,12 @@ export class FileExtractor extends Extractor {
|
|
|
32
44
|
* - `name` is the basename without extension (e.g. `"array"`) — display-ready, used by menus, cards, and URL paths.
|
|
33
45
|
* - Override to parse `text` into richer elements (content/children/description) and to set
|
|
34
46
|
* `title` if a confident title is available.
|
|
47
|
+
*
|
|
48
|
+
* @param name The basename of the file without extension (e.g. `"array"`).
|
|
49
|
+
* @param content The raw text content of the file.
|
|
50
|
+
* @returns The element props, always including a `name`; the base implementation stores `content` verbatim.
|
|
51
|
+
* @example extractProps("notes", "Some text") // { name: "notes", content: "Some text" }
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/extract/FileExtractor/FileExtractor/extractProps
|
|
35
53
|
*/
|
|
36
54
|
extractProps(name, content) {
|
|
37
55
|
return { name, content };
|
|
@@ -2,7 +2,11 @@ import { type Matchables } from "../util/regexp.js";
|
|
|
2
2
|
import type { TreeElement } from "../util/tree.js";
|
|
3
3
|
import type { Extractor } from "./Extractor.js";
|
|
4
4
|
import { ThroughExtractor } from "./ThroughExtractor.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Options for an `IndexExtractor`.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/extract/IndexExtractor/IndexExtractorOptions
|
|
9
|
+
*/
|
|
6
10
|
export interface IndexExtractorOptions {
|
|
7
11
|
/**
|
|
8
12
|
* Filename patterns treated as a parent's index. Matched case-insensitively against each child element's `key`.
|
|
@@ -16,9 +20,40 @@ export interface IndexExtractorOptions {
|
|
|
16
20
|
* - The matched child's `title`, `description`, `content`, and `children` are folded into the parent.
|
|
17
21
|
* - The matched child is removed from the parent's children list.
|
|
18
22
|
* - Purely name-based: it doesn't care whether an element is a directory or a file — any element with children is processed, deepest level first.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const extractor = new IndexExtractor(new DirectoryExtractor());
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/extract/IndexExtractor
|
|
19
30
|
*/
|
|
20
31
|
export declare class IndexExtractor<I> extends ThroughExtractor<I, TreeElement> {
|
|
21
32
|
private readonly _index;
|
|
33
|
+
/**
|
|
34
|
+
* Wrap a source extractor so each element's index child is absorbed into the element itself.
|
|
35
|
+
*
|
|
36
|
+
* @param source Upstream extractor that produces the `tree-element` tree to process.
|
|
37
|
+
* @param options Options including the `index` filename patterns.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const extractor = new IndexExtractor(new DirectoryExtractor());
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
22
44
|
constructor(source: Extractor<I, TreeElement>, { index }?: IndexExtractorOptions);
|
|
45
|
+
/**
|
|
46
|
+
* Extract the source tree and absorb each element's index child into its parent.
|
|
47
|
+
*
|
|
48
|
+
* @param input Input forwarded to the wrapped source extractor.
|
|
49
|
+
* @returns The source tree with index children folded into their parents.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const tree = await new IndexExtractor(source).extract(input);
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/extract/IndexExtractor/extract
|
|
57
|
+
*/
|
|
23
58
|
extract(input: I): Promise<TreeElement>;
|
|
24
59
|
}
|
|
@@ -14,13 +14,44 @@ const DEFAULT_INDEX = [/^readme\.txt$/i, /^readme\.md$/i, /^index\.md$/i, /^inde
|
|
|
14
14
|
* - The matched child's `title`, `description`, `content`, and `children` are folded into the parent.
|
|
15
15
|
* - The matched child is removed from the parent's children list.
|
|
16
16
|
* - Purely name-based: it doesn't care whether an element is a directory or a file — any element with children is processed, deepest level first.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const extractor = new IndexExtractor(new DirectoryExtractor());
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/extract/IndexExtractor
|
|
17
24
|
*/
|
|
18
25
|
export class IndexExtractor extends ThroughExtractor {
|
|
19
26
|
_index;
|
|
27
|
+
/**
|
|
28
|
+
* Wrap a source extractor so each element's index child is absorbed into the element itself.
|
|
29
|
+
*
|
|
30
|
+
* @param source Upstream extractor that produces the `tree-element` tree to process.
|
|
31
|
+
* @param options Options including the `index` filename patterns.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const extractor = new IndexExtractor(new DirectoryExtractor());
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
20
38
|
constructor(source, { index = DEFAULT_INDEX } = {}) {
|
|
21
39
|
super(source);
|
|
22
40
|
this._index = index;
|
|
23
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Extract the source tree and absorb each element's index child into its parent.
|
|
44
|
+
*
|
|
45
|
+
* @param input Input forwarded to the wrapped source extractor.
|
|
46
|
+
* @returns The source tree with index children folded into their parents.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const tree = await new IndexExtractor(source).extract(input);
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/extract/IndexExtractor/extract
|
|
54
|
+
*/
|
|
24
55
|
async extract(input) {
|
|
25
56
|
const root = await this.source.extract(input);
|
|
26
57
|
return _absorbIndex(root, this._index);
|
|
@@ -8,8 +8,21 @@ import { FileExtractor } from "./FileExtractor.js";
|
|
|
8
8
|
* - When a `title` is found, strips the leading `# h1` from `content` so renderers (which show
|
|
9
9
|
* `title` separately) don't display the heading twice.
|
|
10
10
|
* - Sets `description` to the first prose paragraph as a plain-text summary (used for card listings and `<meta>`).
|
|
11
|
+
*
|
|
12
|
+
* @example new MarkupExtractor().extract(Bun.file("/abs/path/README.md"))
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/MarkupExtractor
|
|
11
14
|
*/
|
|
12
15
|
export declare class MarkupExtractor extends FileExtractor {
|
|
16
|
+
/**
|
|
17
|
+
* Build the file element props for a Markdown file — storing the text as `content` and deriving `title` and `description`.
|
|
18
|
+
* - When a `# h1` title is found it is stripped from `content` so it isn't rendered twice.
|
|
19
|
+
*
|
|
20
|
+
* @param name The basename of the file without extension.
|
|
21
|
+
* @param text The raw Markdown source.
|
|
22
|
+
* @returns The element props with `name`, `content`, and (when present) `title` and `description`.
|
|
23
|
+
* @example new MarkupExtractor().extractProps("guide", "# Guide\n\nIntro text.")
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/MarkupExtractor/extractProps
|
|
25
|
+
*/
|
|
13
26
|
extractProps(name: string, text: string): Partial<TreeElementProps> & {
|
|
14
27
|
name: string;
|
|
15
28
|
};
|
|
@@ -22,6 +35,8 @@ export declare class MarkupExtractor extends FileExtractor {
|
|
|
22
35
|
*
|
|
23
36
|
* @param text The markdown source string (a markdown file's text, or a JSDoc description).
|
|
24
37
|
* @returns An object whose `title` and `description` are each a plain string, or `undefined` when absent.
|
|
38
|
+
* @example extractMarkdownProps("# Title\n\nSome intro.") // { title: "Title", description: "Some intro." }
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/extractMarkdownProps
|
|
25
40
|
*/
|
|
26
41
|
export declare function extractMarkdownProps(text: string): {
|
|
27
42
|
title: string | undefined;
|
|
@@ -9,8 +9,21 @@ import { FileExtractor } from "./FileExtractor.js";
|
|
|
9
9
|
* - When a `title` is found, strips the leading `# h1` from `content` so renderers (which show
|
|
10
10
|
* `title` separately) don't display the heading twice.
|
|
11
11
|
* - Sets `description` to the first prose paragraph as a plain-text summary (used for card listings and `<meta>`).
|
|
12
|
+
*
|
|
13
|
+
* @example new MarkupExtractor().extract(Bun.file("/abs/path/README.md"))
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/MarkupExtractor
|
|
12
15
|
*/
|
|
13
16
|
export class MarkupExtractor extends FileExtractor {
|
|
17
|
+
/**
|
|
18
|
+
* Build the file element props for a Markdown file — storing the text as `content` and deriving `title` and `description`.
|
|
19
|
+
* - When a `# h1` title is found it is stripped from `content` so it isn't rendered twice.
|
|
20
|
+
*
|
|
21
|
+
* @param name The basename of the file without extension.
|
|
22
|
+
* @param text The raw Markdown source.
|
|
23
|
+
* @returns The element props with `name`, `content`, and (when present) `title` and `description`.
|
|
24
|
+
* @example new MarkupExtractor().extractProps("guide", "# Guide\n\nIntro text.")
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/MarkupExtractor/extractProps
|
|
26
|
+
*/
|
|
14
27
|
extractProps(name, text) {
|
|
15
28
|
const { title, description } = extractMarkdownProps(text);
|
|
16
29
|
// The title `# h1` is surfaced separately as `title`, so strip it from the body to avoid rendering it twice.
|
|
@@ -25,6 +38,8 @@ export class MarkupExtractor extends FileExtractor {
|
|
|
25
38
|
*
|
|
26
39
|
* @param text The markdown source string (a markdown file's text, or a JSDoc description).
|
|
27
40
|
* @returns An object whose `title` and `description` are each a plain string, or `undefined` when absent.
|
|
41
|
+
* @example extractMarkdownProps("# Title\n\nSome intro.") // { title: "Title", description: "Some intro." }
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/extract/MarkupExtractor/extractMarkdownProps
|
|
28
43
|
*/
|
|
29
44
|
export function extractMarkdownProps(text) {
|
|
30
45
|
let title;
|
|
@@ -2,7 +2,11 @@ import type { ImmutableDictionary } from "../util/dictionary.js";
|
|
|
2
2
|
import type { TreeElement } from "../util/tree.js";
|
|
3
3
|
import type { Extractor } from "./Extractor.js";
|
|
4
4
|
import { ThroughExtractor } from "./ThroughExtractor.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Options for a `MergingExtractor`.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/extract/MergingExtractor/MergingExtractorOptions
|
|
9
|
+
*/
|
|
6
10
|
export interface MergingExtractorOptions {
|
|
7
11
|
/**
|
|
8
12
|
* Templated key pairs that should merge. Each key is a `{base}` template matched against the secondary element's key;
|
|
@@ -19,9 +23,40 @@ export interface MergingExtractorOptions {
|
|
|
19
23
|
* - The primary (winning) element keeps its `key`, `source`, and `type`; the secondary's `title`, `description`,
|
|
20
24
|
* `content`, and `children` are folded in via `mergeTreeElements()`.
|
|
21
25
|
* - A secondary with no matching primary is left in place — pure prose files (e.g. `concepts.md` with no `concepts.ts`) stand alone.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const extractor = new MergingExtractor(new DirectoryExtractor());
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/extract/MergingExtractor
|
|
22
33
|
*/
|
|
23
34
|
export declare class MergingExtractor<I> extends ThroughExtractor<I, TreeElement> {
|
|
24
35
|
private readonly _merges;
|
|
36
|
+
/**
|
|
37
|
+
* Wrap a source extractor so its produced tree has same-template sibling elements merged.
|
|
38
|
+
*
|
|
39
|
+
* @param source Upstream extractor that produces the `tree-element` tree to merge.
|
|
40
|
+
* @param options Options including the `merges` template map.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const extractor = new MergingExtractor(new DirectoryExtractor());
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
25
47
|
constructor(source: Extractor<I, TreeElement>, { merges }?: MergingExtractorOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Extract the source tree and merge same-template sibling elements at every level.
|
|
50
|
+
*
|
|
51
|
+
* @param input Input forwarded to the wrapped source extractor.
|
|
52
|
+
* @returns The source tree with matching sibling elements merged together.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const tree = await new MergingExtractor(source).extract(input);
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/extract/MergingExtractor/extract
|
|
60
|
+
*/
|
|
26
61
|
extract(input: I): Promise<TreeElement>;
|
|
27
62
|
}
|
|
@@ -18,13 +18,44 @@ const DEFAULT_MERGES = {
|
|
|
18
18
|
* - The primary (winning) element keeps its `key`, `source`, and `type`; the secondary's `title`, `description`,
|
|
19
19
|
* `content`, and `children` are folded in via `mergeTreeElements()`.
|
|
20
20
|
* - A secondary with no matching primary is left in place — pure prose files (e.g. `concepts.md` with no `concepts.ts`) stand alone.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const extractor = new MergingExtractor(new DirectoryExtractor());
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/extract/MergingExtractor
|
|
21
28
|
*/
|
|
22
29
|
export class MergingExtractor extends ThroughExtractor {
|
|
23
30
|
_merges;
|
|
31
|
+
/**
|
|
32
|
+
* Wrap a source extractor so its produced tree has same-template sibling elements merged.
|
|
33
|
+
*
|
|
34
|
+
* @param source Upstream extractor that produces the `tree-element` tree to merge.
|
|
35
|
+
* @param options Options including the `merges` template map.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const extractor = new MergingExtractor(new DirectoryExtractor());
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
24
42
|
constructor(source, { merges = DEFAULT_MERGES } = {}) {
|
|
25
43
|
super(source);
|
|
26
44
|
this._merges = merges;
|
|
27
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract the source tree and merge same-template sibling elements at every level.
|
|
48
|
+
*
|
|
49
|
+
* @param input Input forwarded to the wrapped source extractor.
|
|
50
|
+
* @returns The source tree with matching sibling elements merged together.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const tree = await new MergingExtractor(source).extract(input);
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/extract/MergingExtractor/extract
|
|
58
|
+
*/
|
|
28
59
|
async extract(input) {
|
|
29
60
|
const root = await this.source.extract(input);
|
|
30
61
|
return _mergeElement(root, this._merges);
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { DocumentationElement, TreeElement } from "../util/tree.js";
|
|
2
2
|
import { Extractor } from "./Extractor.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Input for a `ModuleExtractor`.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/extract/ModuleExtractor/ModuleExtractorInput
|
|
7
|
+
*/
|
|
4
8
|
export interface ModuleExtractorInput {
|
|
5
9
|
/** Display name for the module, derived from the package.json export key (e.g. `"util/string"`, `"firestore/client"`). */
|
|
6
10
|
readonly name: string;
|
|
@@ -17,7 +21,27 @@ export interface ModuleExtractorInput {
|
|
|
17
21
|
* `IndexExtractor` are expected to have run upstream so `.md` siblings and `README.md` are already folded in).
|
|
18
22
|
* - The module's `children` are every `tree-documentation` element found by deep-walking the source — flattened across
|
|
19
23
|
* files and subdirectories, but never descending into a `tree-documentation`'s own members.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const module = new ModuleExtractor().extract({ name: "util/string", source });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/extract/ModuleExtractor
|
|
20
31
|
*/
|
|
21
32
|
export declare class ModuleExtractor extends Extractor<ModuleExtractorInput, DocumentationElement> {
|
|
33
|
+
/**
|
|
34
|
+
* Build a `kind: "module"` `DocumentationElement` from a source file or directory element.
|
|
35
|
+
*
|
|
36
|
+
* @param input Module name and source element to build from.
|
|
37
|
+
* @returns `tree-documentation` element of `kind: "module"` with flattened documented children.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const module = new ModuleExtractor().extract({ name: "util/string", source });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/extract/ModuleExtractor/extract
|
|
45
|
+
*/
|
|
22
46
|
extract({ name, source }: ModuleExtractorInput): DocumentationElement;
|
|
23
47
|
}
|
|
@@ -7,8 +7,28 @@ import { Extractor } from "./Extractor.js";
|
|
|
7
7
|
* `IndexExtractor` are expected to have run upstream so `.md` siblings and `README.md` are already folded in).
|
|
8
8
|
* - The module's `children` are every `tree-documentation` element found by deep-walking the source — flattened across
|
|
9
9
|
* files and subdirectories, but never descending into a `tree-documentation`'s own members.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const module = new ModuleExtractor().extract({ name: "util/string", source });
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/extract/ModuleExtractor
|
|
10
17
|
*/
|
|
11
18
|
export class ModuleExtractor extends Extractor {
|
|
19
|
+
/**
|
|
20
|
+
* Build a `kind: "module"` `DocumentationElement` from a source file or directory element.
|
|
21
|
+
*
|
|
22
|
+
* @param input Module name and source element to build from.
|
|
23
|
+
* @returns `tree-documentation` element of `kind: "module"` with flattened documented children.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const module = new ModuleExtractor().extract({ name: "util/string", source });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/extract/ModuleExtractor/extract
|
|
31
|
+
*/
|
|
12
32
|
extract({ name, source }) {
|
|
13
33
|
const children = _collectChildren(source);
|
|
14
34
|
return {
|
|
@@ -3,7 +3,11 @@ import { type AbsolutePath, type Path } from "../util/path.js";
|
|
|
3
3
|
import type { TreeElement } from "../util/tree.js";
|
|
4
4
|
import { Extractor } from "./Extractor.js";
|
|
5
5
|
import { ModuleExtractor } from "./ModuleExtractor.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Options for a `PackageExtractor`.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/extract/PackageExtractor/PackageExtractorOptions
|
|
10
|
+
*/
|
|
7
11
|
export interface PackageExtractorOptions {
|
|
8
12
|
/**
|
|
9
13
|
* Pre-extracted source tree the `package.json` exports resolve against — typically the result of
|
|
@@ -30,13 +34,44 @@ export interface PackageExtractorOptions {
|
|
|
30
34
|
* - Each export's *target* extension (e.g. the `.js` in `"./util/*.js"`) is mapped to source extensions via `extensions`, so built `.js` paths resolve to their `.ts` sources.
|
|
31
35
|
* - The `"."` root export is skipped — its content is the root tree element itself.
|
|
32
36
|
* - Throws if a static export key has no matching source element in the tree.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const tree = await new PackageExtractor({ tree: sourceTree }).extract("package.json");
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/extract/PackageExtractor
|
|
33
44
|
*/
|
|
34
45
|
export declare class PackageExtractor extends Extractor<Path, TreeElement> {
|
|
35
46
|
private readonly _tree;
|
|
36
47
|
private readonly _extensions;
|
|
37
48
|
private readonly _module;
|
|
38
49
|
private readonly _base;
|
|
50
|
+
/**
|
|
51
|
+
* Create a package extractor bound to a pre-extracted source tree.
|
|
52
|
+
*
|
|
53
|
+
* @param options Options including the source `tree`, `extensions` mapping, `module` extractor, and `base` path.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const extractor = new PackageExtractor({ tree: sourceTree });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
39
60
|
constructor({ tree, extensions, module, base }: PackageExtractorOptions);
|
|
61
|
+
/**
|
|
62
|
+
* Read a `package.json` and produce a flat tree of one module element per export entry.
|
|
63
|
+
*
|
|
64
|
+
* @param packageJson Path of the `package.json` to read — resolved against the configured `base`.
|
|
65
|
+
* @returns Promise of the root `tree-element` whose children are the module elements.
|
|
66
|
+
* @throws Error If a static export key has no matching source element in the tree, or a wildcard export is malformed.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* const tree = await new PackageExtractor({ tree: sourceTree }).extract("package.json");
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/extract/PackageExtractor/extract
|
|
74
|
+
*/
|
|
40
75
|
extract(packageJson: Path): Promise<TreeElement>;
|
|
41
76
|
/** Source extensions to try for an export `target`, derived from the target's own extension via the `extensions` mapping. */
|
|
42
77
|
private _sourceExtensions;
|
|
@@ -18,12 +18,29 @@ const DEFAULT_EXTENSIONS = {
|
|
|
18
18
|
* - Each export's *target* extension (e.g. the `.js` in `"./util/*.js"`) is mapped to source extensions via `extensions`, so built `.js` paths resolve to their `.ts` sources.
|
|
19
19
|
* - The `"."` root export is skipped — its content is the root tree element itself.
|
|
20
20
|
* - Throws if a static export key has no matching source element in the tree.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const tree = await new PackageExtractor({ tree: sourceTree }).extract("package.json");
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/extract/PackageExtractor
|
|
21
28
|
*/
|
|
22
29
|
export class PackageExtractor extends Extractor {
|
|
23
30
|
_tree;
|
|
24
31
|
_extensions;
|
|
25
32
|
_module;
|
|
26
33
|
_base;
|
|
34
|
+
/**
|
|
35
|
+
* Create a package extractor bound to a pre-extracted source tree.
|
|
36
|
+
*
|
|
37
|
+
* @param options Options including the source `tree`, `extensions` mapping, `module` extractor, and `base` path.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const extractor = new PackageExtractor({ tree: sourceTree });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
27
44
|
constructor({ tree, extensions = DEFAULT_EXTENSIONS, module = new ModuleExtractor(), base }) {
|
|
28
45
|
super();
|
|
29
46
|
this._tree = tree;
|
|
@@ -31,6 +48,20 @@ export class PackageExtractor extends Extractor {
|
|
|
31
48
|
this._module = module;
|
|
32
49
|
this._base = base;
|
|
33
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Read a `package.json` and produce a flat tree of one module element per export entry.
|
|
53
|
+
*
|
|
54
|
+
* @param packageJson Path of the `package.json` to read — resolved against the configured `base`.
|
|
55
|
+
* @returns Promise of the root `tree-element` whose children are the module elements.
|
|
56
|
+
* @throws Error If a static export key has no matching source element in the tree, or a wildcard export is malformed.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const tree = await new PackageExtractor({ tree: sourceTree }).extract("package.json");
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/extract/PackageExtractor/extract
|
|
64
|
+
*/
|
|
34
65
|
async extract(packageJson) {
|
|
35
66
|
const pkgPath = requirePath(packageJson, this._base, this.extract);
|
|
36
67
|
const pkg = (await Bun.file(pkgPath).json());
|
|
@@ -4,10 +4,31 @@ import { Extractor } from "./Extractor.js";
|
|
|
4
4
|
* Base class for an extractor that wraps another extractor.
|
|
5
5
|
* - Subclasses delegate to `source` and (optionally) transform the input before or the output after.
|
|
6
6
|
* - Composes the same way `Through*Provider` chains do — chain multiple `ThroughExtractor`s to build up behaviour.
|
|
7
|
+
*
|
|
8
|
+
* @example new MergingExtractor(new DirectoryExtractor()) // a ThroughExtractor wrapping a source extractor
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor
|
|
7
10
|
*/
|
|
8
11
|
export declare abstract class ThroughExtractor<I, O extends TreeElement = TreeElement> extends Extractor<I, O> {
|
|
12
|
+
/**
|
|
13
|
+
* The wrapped source extractor this through extractor delegates to.
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor/source
|
|
15
|
+
*/
|
|
9
16
|
readonly source: Extractor<I, O>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a `ThroughExtractor` wrapping a source extractor.
|
|
19
|
+
*
|
|
20
|
+
* @param source The inner extractor to delegate to.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor
|
|
22
|
+
*/
|
|
10
23
|
constructor(source: Extractor<I, O>);
|
|
11
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Extract from the input by forwarding to `source.extract()`.
|
|
26
|
+
* - Default implementation is a pass-through; subclasses override to do work before or after.
|
|
27
|
+
*
|
|
28
|
+
* @param input The input value to extract from.
|
|
29
|
+
* @returns The extracted `TreeElement`, or a promise resolving to one.
|
|
30
|
+
* @example await myThroughExtractor.extract(input)
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor/extract
|
|
32
|
+
*/
|
|
12
33
|
extract(input: I): O | Promise<O>;
|
|
13
34
|
}
|
|
@@ -3,14 +3,35 @@ import { Extractor } from "./Extractor.js";
|
|
|
3
3
|
* Base class for an extractor that wraps another extractor.
|
|
4
4
|
* - Subclasses delegate to `source` and (optionally) transform the input before or the output after.
|
|
5
5
|
* - Composes the same way `Through*Provider` chains do — chain multiple `ThroughExtractor`s to build up behaviour.
|
|
6
|
+
*
|
|
7
|
+
* @example new MergingExtractor(new DirectoryExtractor()) // a ThroughExtractor wrapping a source extractor
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor
|
|
6
9
|
*/
|
|
7
10
|
export class ThroughExtractor extends Extractor {
|
|
11
|
+
/**
|
|
12
|
+
* The wrapped source extractor this through extractor delegates to.
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor/source
|
|
14
|
+
*/
|
|
8
15
|
source;
|
|
16
|
+
/**
|
|
17
|
+
* Create a `ThroughExtractor` wrapping a source extractor.
|
|
18
|
+
*
|
|
19
|
+
* @param source The inner extractor to delegate to.
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor
|
|
21
|
+
*/
|
|
9
22
|
constructor(source) {
|
|
10
23
|
super();
|
|
11
24
|
this.source = source;
|
|
12
25
|
}
|
|
13
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Extract from the input by forwarding to `source.extract()`.
|
|
28
|
+
* - Default implementation is a pass-through; subclasses override to do work before or after.
|
|
29
|
+
*
|
|
30
|
+
* @param input The input value to extract from.
|
|
31
|
+
* @returns The extracted `TreeElement`, or a promise resolving to one.
|
|
32
|
+
* @example await myThroughExtractor.extract(input)
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/extract/ThroughExtractor/ThroughExtractor/extract
|
|
34
|
+
*/
|
|
14
35
|
extract(input) {
|
|
15
36
|
return this.source.extract(input);
|
|
16
37
|
}
|
|
@@ -13,8 +13,29 @@ import { FileExtractor } from "./FileExtractor.js";
|
|
|
13
13
|
* - Members declared with the `override` or `declare` modifier are skipped — the base class already documents overrides, and `declare` members are ambient type-only re-declarations rather than new API.
|
|
14
14
|
* - Keys are the raw declared `name` (case-preserving) so case-distinct exports like `Collection` and `COLLECTION` stay separate.
|
|
15
15
|
* - The file element itself has no `title` — a TS source file has no confident title source; renderers fall back to `name`.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const element = new TypescriptExtractor().extractProps("string.ts", sourceText);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/extract/TypescriptExtractor
|
|
16
23
|
*/
|
|
17
24
|
export declare class TypescriptExtractor extends FileExtractor {
|
|
25
|
+
/**
|
|
26
|
+
* Parse a TypeScript source file into the props of a `tree-element`.
|
|
27
|
+
*
|
|
28
|
+
* @param name Filename of the source (used as the source file name and the element `name`).
|
|
29
|
+
* @param text Full TypeScript source text to parse.
|
|
30
|
+
* @returns Partial `tree-element` props with `name`, `description`, `content`, and `children`.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* const props = new TypescriptExtractor().extractProps("string.ts", sourceText);
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/extract/TypescriptExtractor/extractProps
|
|
38
|
+
*/
|
|
18
39
|
extractProps(name: string, text: string): Partial<TreeElementProps> & {
|
|
19
40
|
name: string;
|
|
20
41
|
};
|