From 403b08e970bbff0110161811b886625a988b7006 Mon Sep 17 00:00:00 2001 From: Julian Cataldo Date: Thu, 7 Dec 2023 13:16:52 +0100 Subject: [PATCH] docs: new github callouts, design choices --- .gitignore | 1 + .vscode/extensions.json | 9 +- .vscode/settings.json | 21 +++ README.md | 52 +++++-- package.json | 1 + pnpm-lock.yaml | 329 +++++++++++++++++++++++++++++++++++++++- 6 files changed, 394 insertions(+), 19 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index c146584..ed7bb25 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ dist-ssr # Editor directories and files .vscode/* !.vscode/extensions.json +!.vscode/settings.json .idea .DS_Store *.suo diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 0967ef4..796cf33 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1 +1,8 @@ -{} +{ + "recommendations": [ + "stylelint.vscode-stylelint", + "dbaeumer.vscode-eslint", + "runem.lit-plugin", + "esbenp.prettier-vscode" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cbb1d9c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,21 @@ +{ + "cssVariables.lookupFiles": [ + "**/*.css", + "**/*.scss", + "**/*.sass", + "**/*.less", + "packages/shoelace/node_modules/@shoelace-style/shoelace/dist/themes/dark.css", + // "packages/shoelace/node_modules/@shoelace-style/shoelace/dist/themes/light.css", + + "packages/spectrum/node_modules/@spectrum-web-components/styles/spectrum-scale-large.css", + "packages/spectrum/node_modules/@spectrum-web-components/styles/spectrum-theme-dark.css", + "packages/spectrum/node_modules/@spectrum-web-components/styles/typography.css", + "packages/spectrum/node_modules/@spectrum-web-components/styles/core-global.css", + "packages/spectrum/node_modules/@spectrum-web-components/styles/spectrum-core-global.css" + ], + "markdown.extension.toc.levels": "2..6", + + // Unused + "html.customData": ["./vscode.html-custom-data.json"], + "css.customData": ["./vscode.css-custom-data.json"] +} diff --git a/README.md b/README.md index a5a23b3..599c7ae 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # 📝  JSON Schema Form Element [![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/@jsfe/form) -[![ISC License](https://img.shields.io/npm/l/@jsfe/form)](./LICENSE) +[![ISC License](https://img.shields.io/npm/l/@jsfe/form)](./LICENSE) +![Downloads](https://img.shields.io/npm/dt/@jsfe/form) [![GitHub](https://img.shields.io/badge/Repository-222222?logo=github)](https://github.com/json-schema-form-element/jsfe) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen)](https://makeapullrequest.com) [![TypeScript](https://img.shields.io/badge/TypeScript-333333?logo=typescript)](http://www.typescriptlang.org/) @@ -50,7 +51,7 @@ Comes with Shoelace 2 and Google Material 3 web components libraries or barebone Swap built-in components with your own, or add custom widget thanks to [UI schema](#schema) definitions. --> -> **Warning** +> [!CAUTION] > Not for production. > Expect the doc. to be not in sync. with the actual released code. @@ -133,7 +134,7 @@ Jump to [**UI libraries**](#component-libraries): - [Usage](#usage) - [Installation](#installation) - [UI Libraries](#ui-libraries) - - [Implementation](#implementation) + - [Implementations](#implementations) - [All examples](#all-examples) - [Pure HTML with CDN](#pure-html-with-cdn) - [TypeScript (no framework)](#typescript-no-framework) @@ -149,6 +150,7 @@ Jump to [**UI libraries**](#component-libraries): - [Component libraries](#component-libraries) - [Shoelace](#shoelace) - [Custom widgets](#custom-widgets) + - [Design choices](#design-choices) - [Validation](#validation) - [Schema massaging](#schema-massaging) - [Custom Elements Manifests](#custom-elements-manifests) @@ -560,6 +562,8 @@ items: ### Installation +**This is for the bare package**. You'll have to bring all the widgets yourself. + ```sh npm i @jsfe/form # or @@ -572,7 +576,7 @@ yarn add @jsfe/form See [examples/src/pages/flavored.astro](https://github.com/json-schema-form-element/examples/blob/main/src/pages/flavored.astro) -Alternatively: +_Alternatively_: ``` npm install @jsfe/shoelace @@ -601,9 +605,9 @@ import '@shoelace-style/shoelace/dist/themes/dark.css'; See also the [CSS section](#CSS). -### Implementation +### Implementations -> **Warning** +> [!CAUTION] > This project is new, API is subject to changes #### All examples @@ -855,7 +859,7 @@ Please file an issue if an info is wrong or missing. Each implementation examples are trying to show off the most type-safe way to use JSFE, with the least trade-offs. Using it more **declaratively** or **imperatively** is up to you, your framework ability and you coding style. -Bot usages are valid and can be mixed. Typically when you want to use the schema elsewhere in your app., or +Both usages are valid and can be mixed. Typically when you want to use the schema elsewhere in your app., or when your callbacks are getting too beefy, you'll better extract them from templates. Generally, imperative usage get perfect TypeScript support (you just handle the class), whereas declaratively, you'll have @@ -863,7 +867,7 @@ to deal with various template languages limitations (this is an universal proble ## Component libraries -> **Warning** +> [!IMPORTANT] > Before you dive in, here is some context about Web Components libraries support with JSFE. Whereas you are starting from scratch or you want to integrate declarative forms in @@ -880,10 +884,10 @@ Why so? - Keep an eye on converging practices across vendors. - Ensure that _JSFE_ remains not to tied with _Shoelace_ way of things (which is already quite thin, relatively). - Be able to swap out built-ins for custom widgets on a pinch, when needed. -- Borrow valuable ideas from others libraries and re-implement them in Shoelace when lacking. +- Borrow valuable ideas from others libraries and re-implement them with Shoelace bits when lacking. -> **Warning** -> I will not maintain the full spectrum of _JSFE_ widgets, accross all libraries! +> [!WARNING] +> I will not maintain the **full spectrum** of _JSFE_ widgets, accross all libraries! But I will do my best to provide all the hooks you need, thanks to an _agnostic_ and _type-safe_ API, smoothening some peculiarities. @@ -938,6 +942,20 @@ That's why it's the very first library implemented in _JSFE_. ### Custom widgets +#### Design choices + +You might have noticed that _JSFE_ is not using Custom Elements as a medium for injecting widgets. +First prototypes where using them, but I've had troubles regarding the parent form element awareness about its children. +E.g. with Shoelace, inputs weren't responding well with form validation, the ENTER key for submit, etc. +I'm sure there are ways to circumvent those hassles (forwarding events…), I tried, but for now it's not a priority, as that might affect various UI libs in different ways. + +Moreover, Web Components users are eager to see [Custom Registries](https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry) becoming maintream. +That will make the process of overriding widgets much more flexible. + +For now, using Lit's `TemplateResult` (returning an `html` snippet from a function) is straight-forward, however there are some trade-offs; it's a state-less function, no CSS scoping, lit-tied, etc. + +Ultimately, goal is to make JSFE fully modular and agnostic, by using well-defined Custom Elements, for each individual form control. + 🚧……🚧 @@ -962,7 +980,7 @@ Mapping between schema and “real” fields happens at the `HTMLElement` level, ## Validation -You're responsible to hook-up additional / more advanced validation with, e.g, AJV. +You're responsible to hook-up additional / more advanced validation with, e.g, AJV. HTML native validation is already quite powerful, but you might want to do your own wizardry. Note that client-validation is more for user experience, @@ -977,8 +995,8 @@ JSFE doesn't bundle, dereference, nor it is fetching remote schemas. Doing so would add a huge payload to the library, and you might certainly have already those tools at hand somewhere in your stack. Only thing it does is resolving [JSON references](https://datatracker.ietf.org/doc/html/draft-pbryan-zyp-json-ref-03), pointing to **local definitions** only. -Implementation is quite simple, and because this is a much needed feature for DRY-ness, recursivity… -Hopefully it's easy to bring in an advanced parser along, like the [`json-schema-ref-parser`](https://github.com/APIDevTools/json-schema-ref-parser). +This is because implementation is relatively trivial, without much code, and that's a much needed feature for DRY-ness, recursivity… +Hopefully it's easy to bring in an full-featured parser / resolver along, like the [`json-schema-ref-parser`](https://github.com/APIDevTools/json-schema-ref-parser). ## Custom Elements Manifests @@ -1003,7 +1021,7 @@ With internal dependencies included, minus peer dependencies (UI libs.): `@jsfe/form` contains the base class from which all other packages extends themselves from. -You don't need to install it, unless you want to provide widgets and styles from scratch. +**You don't need to install it**, unless you want to provide widgets and styles from scratch. If you just want to override _some_ of the flavored components, `@jsfe/` packages are handy starters. `@jsfe/types` contains everything for assisting your own widgets authoring. @@ -1011,7 +1029,9 @@ It's re-exported from every package so you don't need to install it on your own. ### _Next_ versions -You can try nightly builds from the `next` branch like this: `npm i @jsfe/@next`. +> [!TIP] +> You can try the upcoming release from the [`next` branch](https://github.com/json-schema-form-element/jsfe/tree/next) like this: +> `npm i @jsfe/@next`. ## Experimental features diff --git a/package.json b/package.json index d17f664..26d8f33 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "eslint-plugin-tsdoc": "^0.2.17", "lerna": "^8.0.0", "prettier": "^3.1.0", + "remark": "^15.0.1", "sort-package-json": "^2.6.0", "stylelint": "^15.11.0", "stylelint-config-prettier": "^9.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f07cc8..40c7997 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: prettier: specifier: ^3.1.0 version: 3.1.0 + remark: + specifier: ^15.0.1 + version: 15.0.1 sort-package-json: specifier: ^2.6.0 version: 2.6.0 @@ -2515,7 +2518,6 @@ packages: } dependencies: '@types/ms': 0.7.34 - dev: false /@types/eslint@8.44.8: resolution: @@ -2599,6 +2601,12 @@ packages: '@types/unist': 2.0.10 dev: false + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /@types/minimatch@3.0.5: resolution: { @@ -3353,6 +3361,10 @@ packages: } dev: false + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: true + /balanced-match@1.0.2: resolution: { @@ -4369,7 +4381,6 @@ packages: } dependencies: character-entities: 2.0.2 - dev: false /dedent@0.7.0: resolution: @@ -4534,6 +4545,12 @@ packages: engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } dev: true + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: true + /diff-sequences@29.6.3: resolution: { @@ -7978,6 +7995,25 @@ packages: - supports-color dev: false + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /mdast-util-gfm-autolink-literal@0.1.3: resolution: { @@ -8104,6 +8140,13 @@ packages: unist-util-is: 5.2.1 dev: false + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + dev: true + /mdast-util-to-markdown@0.6.5: resolution: { @@ -8134,6 +8177,19 @@ packages: zwitch: 2.0.4 dev: false + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: true + /mdast-util-to-string@2.0.0: resolution: { @@ -8150,6 +8206,12 @@ packages: '@types/mdast': 3.0.15 dev: false + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + dev: true + /mdn-data@2.0.30: resolution: { @@ -8236,6 +8298,27 @@ packages: uvu: 0.5.6 dev: false + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-extension-gfm-autolink-literal@0.5.7: resolution: { @@ -8314,6 +8397,14 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-label@1.1.0: resolution: { @@ -8326,6 +8417,15 @@ packages: uvu: 0.5.6 dev: false + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-space@1.1.0: resolution: { @@ -8336,6 +8436,13 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-title@1.1.0: resolution: { @@ -8348,6 +8455,15 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-whitespace@1.1.0: resolution: { @@ -8360,6 +8476,15 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-util-character@1.2.0: resolution: { @@ -8370,6 +8495,13 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-util-chunked@1.1.0: resolution: { @@ -8379,6 +8511,12 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: true + /micromark-util-classify-character@1.1.0: resolution: { @@ -8390,6 +8528,14 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-util-combine-extensions@1.1.0: resolution: { @@ -8400,6 +8546,13 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-util-decode-numeric-character-reference@1.1.0: resolution: { @@ -8409,6 +8562,12 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: true + /micromark-util-decode-string@1.1.0: resolution: { @@ -8421,6 +8580,15 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: true + /micromark-util-encode@1.1.0: resolution: { @@ -8428,6 +8596,10 @@ packages: } dev: false + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: true + /micromark-util-html-tag-name@1.2.0: resolution: { @@ -8435,6 +8607,10 @@ packages: } dev: false + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: true + /micromark-util-normalize-identifier@1.1.0: resolution: { @@ -8444,6 +8620,12 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: true + /micromark-util-resolve-all@1.1.0: resolution: { @@ -8453,6 +8635,12 @@ packages: micromark-util-types: 1.1.0 dev: false + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: true + /micromark-util-sanitize-uri@1.2.0: resolution: { @@ -8464,6 +8652,14 @@ packages: micromark-util-symbol: 1.1.0 dev: false + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: true + /micromark-util-subtokenize@1.1.0: resolution: { @@ -8476,6 +8672,15 @@ packages: uvu: 0.5.6 dev: false + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-util-symbol@1.1.0: resolution: { @@ -8483,6 +8688,10 @@ packages: } dev: false + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: true + /micromark-util-types@1.1.0: resolution: { @@ -8490,6 +8699,10 @@ packages: } dev: false + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: true + /micromark@2.11.4: resolution: { @@ -8529,6 +8742,30 @@ packages: - supports-color dev: false + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: { @@ -10422,6 +10659,25 @@ packages: - supports-color dev: false + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: true + /remark-stringify@9.0.1: resolution: { @@ -10431,6 +10687,17 @@ packages: mdast-util-to-markdown: 0.6.5 dev: false + /remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + dependencies: + '@types/mdast': 4.0.3 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /repeat-string@1.6.1: resolution: { @@ -11654,6 +11921,10 @@ packages: } dev: false + /trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: true + /ts-algebra@1.2.2: resolution: { @@ -12025,6 +12296,18 @@ packages: integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==, } + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.1 + dev: true + /unified@9.2.2: resolution: { @@ -12096,6 +12379,12 @@ packages: '@types/unist': 2.0.10 dev: false + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: true + /unist-util-stringify-position@2.0.3: resolution: { @@ -12114,6 +12403,12 @@ packages: '@types/unist': 2.0.10 dev: false + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: true + /unist-util-visit-parents@3.1.1: resolution: { @@ -12134,6 +12429,13 @@ packages: unist-util-is: 5.2.1 dev: false + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: true + /unist-util-visit@4.1.2: resolution: { @@ -12145,6 +12447,14 @@ packages: unist-util-visit-parents: 5.1.3 dev: false + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: true + /universal-user-agent@6.0.1: resolution: { @@ -12285,6 +12595,13 @@ packages: unist-util-stringify-position: 2.0.3 dev: false + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: true + /vfile@4.2.1: resolution: { @@ -12297,6 +12614,14 @@ packages: vfile-message: 2.0.4 dev: false + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: true + /vscode-oniguruma@1.7.0: resolution: {