Hello, my name is John and I am 30 years old.
"
+```
+
+## Parameters
+
+- `templates` (TemplateStringsArray): An array of string literals representing the static parts of the HTML template.
+
+- `...args` (any[]): Any number of additional arguments that will be interpolated into the template to generate the dynamic parts of the HTML.
+
+## Return Value
+
+- Returns a string that represents the HTML content generated by interpolating the template literals and values provided in the `args` array.
+
+ = (value, name, head) => {
}
```
+Use validators for a runtime contract. Convert inputs deliberately when your application needs a different type.
+
## See Also
1. [defineComponent](/api/defineComponent)
2. [Components guide](/guide/components)
3. [TypeScript guide](/guide/typescript)
+
+
diff --git a/docs-site/src/content/docs/api/raw.md b/docs-site/content/api/raw.mdx
similarity index 50%
rename from docs-site/src/content/docs/api/raw.md
rename to docs-site/content/api/raw.mdx
index c9f63e7..c44fbab 100644
--- a/docs-site/src/content/docs/api/raw.md
+++ b/docs-site/content/api/raw.mdx
@@ -1,11 +1,26 @@
---
title: raw
+description: "Use the html tag’s string-assembly behavior under its raw alias."
---
+raw Utilities Use the html tag’s string-assembly behavior under its raw alias.
+
## Overview
The `raw` function in Regor is an alias for the `html` function. It serves the same purpose and can be used interchangeably with `html` to create HTML strings from template literals and interpolated values. It is commonly used to generate HTML content dynamically within Regor components.
+## Try it live
+
+
+ From strings to structured DOM Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the text, then convert a JSON template into a detached fragment and serialize its element back to JSON.
+
+
## Usage
The `raw` function is essentially identical to the `html` function, and its usage is the same. It allows you to create HTML strings with dynamic content using template literals and interpolating values into the resulting string.
@@ -34,6 +49,8 @@ const htmlString = raw`Hello, my name is ${name} and I am ${age} years old.
- Returns a string that represents the HTML content generated by interpolating the template literals and values provided in the `args` array.
+raw does not mean markRaw. It assembles a string and does not sanitize values interpolated into that string.
+
## Notes
- The `raw` function is functionally equivalent to the `html` function and can be used interchangeably. It provides a convenient way to create HTML strings with dynamic content.
@@ -46,7 +63,13 @@ const htmlString = raw`
Hello, my name is ${name} and I am ${age} years old.
## See Also
-- [html](/api/html)
-- [svg](/api/svg)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/ref.md b/docs-site/content/api/ref.mdx
similarity index 54%
rename from docs-site/src/content/docs/api/ref.md
rename to docs-site/content/api/ref.mdx
index 99c6d7d..12397a2 100644
--- a/docs-site/src/content/docs/api/ref.md
+++ b/docs-site/content/api/ref.mdx
@@ -1,13 +1,28 @@
---
title: ref
+description: "Create writable state and recursively convert nested object and array fields to refs."
---
+ref Reactivity Create writable state and recursively convert nested object and array fields to refs.
+
## Overview
The `ref` function converts a given value and its nested properties into ref objects recursively, returning a ref object that reflects the structure of the input value.
[**`Try It Online`**](https://stackblitz.com/edit/regor-sample-ref?file=index.ts)
+## Try it live
+
+
+ Compare deep, copied, and shallow state Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the name and apply it. Inspect the nested values, ref checks, and flattened snapshot.
+
+
## Usage
### Getting the Ref Value
@@ -38,6 +53,8 @@ To update the value of a ref object, you have two options:
The `ref` function returns a ref object representing the input value and its nested properties. The specific type of the returned ref object depends on the input value's type.
+ref converts the supplied structure in place. Choose cref when you need a copied structure.
+
## Notes
- Certain types such as Node, Date, RegExp, Promise, and Error are not recursively converted into ref objects. They are treated as-is and returned as the value of the ref object.
@@ -101,17 +118,23 @@ console.log(myRef().age()) // Outputs 35
## See Also
-- [`cref`](/api/cref)
-- [`sref`](/api/sref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/regorConfig.md b/docs-site/content/api/regorConfig.mdx
similarity index 69%
rename from docs-site/src/content/docs/api/regorConfig.md
rename to docs-site/content/api/regorConfig.mdx
index 867df52..1aa2141 100644
--- a/docs-site/src/content/docs/api/regorConfig.md
+++ b/docs-site/content/api/regorConfig.mdx
@@ -1,11 +1,26 @@
---
title: RegorConfig
+description: "Configure an app’s directives, global context, interpolation, and validation policy."
---
+RegorConfig App and Components Configure an app’s directives, global context, interpolation, and validation policy.
+
## Overview
The `RegorConfig` class is used to configure and customize the behavior of the Regor library. It provides options for setting directives, global context, and other configuration parameters.
+## Try it live
+
+
+ Configure one app instance Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Apply a validation policy to the local config used by this preview’s browser mount.
+
+
## Usage
The `RegorConfig` class is typically used to create a configuration object that can be passed to Regor during initialization. You can customize various aspects of Regor's behavior using this configuration.
@@ -135,6 +150,8 @@ config.updateDirectives((directiveMap, builtInNames) => {
The `RegorConfig` class provides default configuration values for various properties and options. These defaults are used if no custom configuration is provided.
+Pass a separate RegorConfig instance to createApp when one island needs custom behavior.
+
## Notes
- The `RegorConfig` class allows you to fine-tune Regor's behavior to match your specific application requirements.
@@ -153,10 +170,16 @@ The `RegorConfig` class provides default configuration values for various proper
## See Also
-- [`createApp`](/api/createApp)
-- [`defineComponent`](/api/defineComponent)
-- [`pval`](/api/pval)
-- [`toFragment`](/api/toFragment)
-- [`toJsonTemplate`](/api/toJsonTemplate)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/removeNode.mdx b/docs-site/content/api/removeNode.mdx
new file mode 100644
index 0000000..f853310
--- /dev/null
+++ b/docs-site/content/api/removeNode.mdx
@@ -0,0 +1,71 @@
+---
+title: removeNode
+description: "Remove a node and schedule cleanup of its bindings."
+---
+
+removeNode Cleanup and Unbind Remove a node and schedule cleanup of its bindings.
+
+## Overview
+
+The `removeNode` function in Regor is responsible for removing a DOM node and initiating the unbinding process to clean up associated data bindings and event listeners. This function ensures that elements are safely removed from the DOM while also releasing any resources associated with them.
+
+## Try it live
+
+
+ Own a node through its full lifetime Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Mount, write, unbind, or remove and drain. Watch the DOM, observer count, and registered cleanup.
+
+
+## Usage
+
+### Removing a DOM Node and Unbinding
+
+The `removeNode` function takes a single parameter:
+
+- `node`: The DOM node you want to remove from the document. This function will also initiate the unbinding process to clean up associated data bindings and event listeners.
+
+### Example
+
+```javascript
+import { removeNode } from 'regor'
+
+// Remove a DOM node and clean up associated data bindings and event listeners
+const someElement = document.getElementById('example')
+removeNode(someElement)
+```
+
+## Parameters
+
+- `node`: The DOM node you want to remove from the document. This function will also initiate the unbinding process to clean up associated data bindings and event listeners.
+
+removeNode detaches the node immediately and queues unbinding. drainUnbind flushes the deferred work when you need deterministic cleanup.
+
+## Notes
+
+- The `removeNode` function is used to safely remove a DOM node from the document while ensuring that any bound data and associated logic are properly unbound and cleaned up.
+
+- When called on a specific DOM node, the function also initiates the unbinding process, which includes removing event listeners and cleaning up data bindings associated with the node and its descendants.
+
+- This function is typically used internally within Regor to facilitate the cleanup process when components are unmounted or when elements are removed from the DOM as part of Regor's rendering and lifecycle management.
+
+- It is essential to use the `removeNode` function or Regor's lifecycle management mechanisms when removing elements from the DOM to prevent memory leaks and ensure proper cleanup.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/resume.mdx b/docs-site/content/api/resume.mdx
new file mode 100644
index 0000000..c8ecc14
--- /dev/null
+++ b/docs-site/content/api/resume.mdx
@@ -0,0 +1,81 @@
+---
+title: resume
+description: "Resume a ref’s notification behavior after a pause."
+---
+
+resume Reactivity Resume a ref’s notification behavior after a pause.
+
+## Overview
+
+The `resume` function is used to resume the automatic triggering of observers for a specific ref that has previously been paused using the `pause` function. When a ref is resumed, its observers are reactivated, and changes to the ref's value will once again trigger observer callbacks.
+
+## Try it live
+
+
+ Separate stored values from notifications Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Pause, write, resume, and trigger. Compare the stored value with what the observer last received.
+
+
+## Usage
+
+### Resuming Observers
+
+To resume the observers of a specific ref, call the `resume` function with the ref as the `source` argument. This will reactivate the observers associated with the ref.
+
+```ts
+import { pause, resume, ref, observe } from 'regor'
+
+const myRef = ref(5)
+
+observe(myRef, () => {
+ console.log('Observer triggered:', myRef.value)
+})
+
+myRef.value = 10 // The observer is automatically triggered
+
+// Pause the observers of myRef
+pause(myRef)
+
+myRef.value = 15 // The observer is not triggered
+
+// Resume the observers of myRef
+resume(myRef)
+
+myRef.value = 20 // The observer is triggered again
+
+// Outputs:
+// Observer triggered: 10
+// Observer triggered: 20
+```
+
+## Parameters
+
+- `source`: The ref for which you want to resume the automatic triggering of observers.
+
+The preview separates writing, resuming, and explicitly triggering so their effects are visible.
+
+## Notes
+
+- The `resume` function is used to reactivate observers for a ref that has previously been paused using the `pause` function. This allows you to continue receiving observer notifications when changes are made to the ref's value.
+
+- Resuming a ref's observers does not trigger observer callbacks for past changes made while the ref was paused. Only future changes to the ref's value will trigger observers.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/silence.mdx b/docs-site/content/api/silence.mdx
new file mode 100644
index 0000000..bf24968
--- /dev/null
+++ b/docs-site/content/api/silence.mdx
@@ -0,0 +1,104 @@
+---
+title: silence
+description: "Exclude an action’s ref reads from active dependency collection."
+---
+
+silence Computed and Effects Exclude an action’s ref reads from active dependency collection.
+
+## Overview
+
+The `silence` function is an internal utility provided by Regor. It is used to temporarily suspend the normal behavior of collecting refs within the callback of `watchEffect`, `computed` or `collectRefs`. This allows you to perform actions on refs excluded from normal behavior of `watchEffect`, `computed` or `collectRefs`. It is useful in specific scenarios when you want to prevent ref collection for some refs.
+
+## Try it live
+
+
+ See which reads become dependencies Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the tracked and silenced values separately. Collect the reads to inspect the dependency count and returned result.
+
+
+## Usage
+
+### Silencing Ref Collection
+
+To temporarily suspend ref collection within the callback of `watchEffect`, `computed` or `collectRefs`, you can wrap your action function with `silence`.
+
+```ts
+import { silence, watchEffect, ref } from 'regor'
+
+const myRef = ref(5)
+const anotherRef = ref(7)
+
+watchEffect(() => {
+ console.log(myRef.value) // myRef is collected and will be observed.
+
+ silence(() => {
+ anotherRef.value = 10 // anotherRef is excluded from the ref collection and will not be observed.
+ console.log(anotherRef.value)
+ })
+})
+
+myRef.value = 8 // watchEffect's callback will be invoked.
+anotherRef.value = 9 // watchEffect's callback will not be invoked
+```
+
+## Parameters
+
+- `action`: A function that performs some logic within the callback of `watchEffect`, `computed` or `collectRefs` but temporarily suspends ref collection. The function is executed within a scope where ref collection is silenced.
+
+## Return Value
+
+- The `silence` function returns the result of the action function, allowing you to access the outcome of the action.
+
+## Example
+
+```ts
+import { silence, watchEffect, ref } from 'regor'
+
+const myRef = ref(5)
+
+watchEffect(() => {
+ console.log(myRef.value) // Outputs 5
+
+ silence(() => {
+ myRef.value = 10
+ console.log(myRef.value) // Outputs 10
+ })
+
+ console.log(myRef.value) // Outputs 10
+})
+```
+
+Refs still hold reactive values. Their reads inside silence are excluded from the surrounding collector.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/sref.mdx b/docs-site/content/api/sref.mdx
new file mode 100644
index 0000000..4216aa3
--- /dev/null
+++ b/docs-site/content/api/sref.mdx
@@ -0,0 +1,121 @@
+---
+title: sref
+description: "Hold shallow writable state and replace plain object values to notify bindings."
+---
+
+sref Reactivity Hold shallow writable state and replace plain object values to notify bindings.
+
+## Overview
+
+The `sref` function converts a given value into an sref (short for "simple ref") object and returns the sref. An sref allows you to both retrieve and update its value.
+
+The nested properties of an sref are not converted to refs.
+
+[**`Try It Online`**](https://stackblitz.com/edit/regor-sample-ref?file=index.ts)
+
+## Try it live
+
+
+ Compare deep, copied, and shallow state Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the name and apply it. Inspect the nested values, ref checks, and flattened snapshot.
+
+
+## Usage
+
+### Getting the SRef Value
+
+You can access the value of the sref object using two methods:
+
+1. `srefObj.value`: Accesses the value directly.
+2. `srefObj()`: Invokes the sref object to retrieve its value.
+
+### Setting the SRef Value
+
+To update the value of an sref object, you have two options:
+
+1. `srefObj.value = newValue`: Sets the value directly.
+2. `srefObj(newValue)`: Invokes the sref object with the new value to update it.
+
+## Parameters
+
+- `value` (optional): Any value that you want to convert into an sref object. The function supports several input types:
+
+ - Basic types such as numbers, strings, booleans, Date etc.
+ - sref objects.
+ - objects
+ - Array, Map, Set.
+ - `null` or `undefined`.
+
+## Return Value
+
+The `sref` function returns an sref object representing the input value. The specific type of the returned sref object depends on the input value's type.
+
+For ordinary objects, mutating a nested field does not notify by itself. Replace the object or trigger intentionally.
+
+## Notes
+
+- `sref` modifies prototype of arrays, maps, and sets to make them reactive.
+
+- Observers can be attached to the sref object to be notified of changes to its value.
+
+- The function also supports batch collecting changes and pausing/resuming auto-triggering of observers.
+- Every `ref` is an `sref`, but not every `sref` is a `ref`.
+
+## Example
+
+```ts
+import { sref } from 'regor'
+
+const initialValue = {
+ name: 'John',
+ age: 30,
+ hobbies: ['reading', 'swimming'],
+}
+
+const mySRef = sref(initialValue)
+
+// Accessing the sref value using function call
+console.log(mySRef()) // Outputs the initial value
+
+// Accessing the sref value using value getter
+console.log(mySRef.value) // Outputs the initial value
+
+// Updating the sref value
+mySRef().name = 'Alice' // Directly modifying the sref value
+console.log(mySRef().name) // Outputs 'Alice'
+
+mySRef({
+ name: 'Alice',
+ age: 35,
+ hobbies: ['reading', 'swimming'],
+}) // Invoking the sref with a new value
+console.log(mySRef().age) // Outputs 35
+```
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/startBatch.mdx b/docs-site/content/api/startBatch.mdx
new file mode 100644
index 0000000..f09fa65
--- /dev/null
+++ b/docs-site/content/api/startBatch.mdx
@@ -0,0 +1,74 @@
+---
+title: startBatch
+description: "Start a manual notification batch to be closed with endBatch."
+---
+
+startBatch Observation and Batch Start a manual notification batch to be closed with endBatch.
+
+## Overview
+
+The `startBatch` function is used in conjunction with the `batch` function to batch multiple updates to refs, optimizing performance by reducing the number of observer notifications and triggers during a series of updates. The `startBatch` function initializes a batch operation, and any ref updates made after calling `startBatch` are batched together until the `endBatch` function is called.
+
+## Try it live
+
+
+ Same writes, different notification counts Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Each action adds three to one ref. Compare plain writes, batch, and a manual start/end pair.
+
+
+## Usage
+
+### Starting a Batch
+
+To start a batch of ref updates, call the `startBatch` function. Once a batch is started, any subsequent changes made to refs are considered part of that batch and are not immediately observed or triggered. Instead, observers are notified only once at the end of the batch.
+
+```javascript
+import { batch, startBatch, endBatch, ref } from 'regor'
+
+const myRef1 = ref(5)
+const myRef2 = ref(10)
+
+startBatch() // Start a batch
+
+myRef1.value = 15
+myRef2.value = 20
+
+endBatch() // End the batch
+
+// Observers are notified only once at the end of the batch
+// Outputs:
+// Observer triggered: 20
+```
+
+Put endBatch in finally so an exception cannot leave later notifications inside an unfinished batch.
+
+## Notes
+
+- The `startBatch` function is used in conjunction with the `endBatch` function to group ref updates together within a batch. After starting a batch with `startBatch`, any subsequent changes to refs are included in that batch until the `endBatch` function is called.
+
+- Batching updates with the `startBatch` and `endBatch` functions can help improve the performance of your application when multiple changes are made to refs in a short period. It reduces the number of observer notifications and triggers, which can be especially beneficial in situations with complex reactivity logic.
+
+- It's essential to call the `endBatch` function to finalize the batch and notify observers of the ref updates made during the batch.
+
+- Important: When using the batch functions, keep in mind that reads of refs within the batch can return potentially stale or outdated values due to pausing auto-updates. Ensure that your code logic accounts for this situation when reading refs within a batch.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/svg.mdx b/docs-site/content/api/svg.mdx
new file mode 100644
index 0000000..9121882
--- /dev/null
+++ b/docs-site/content/api/svg.mdx
@@ -0,0 +1,61 @@
+---
+title: svg
+description: "Assemble an SVG template string with the same tag behavior as html."
+---
+
+svg Utilities Assemble an SVG template string with the same tag behavior as html.
+
+## Overview
+
+The `svg` function is an alias-style template tag with the same interpolation behavior as `html`, tailored for authoring SVG markup in TypeScript templates.
+
+## Try it live
+
+
+ From strings to structured DOM Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the text, then convert a JSON template into a detached fragment and serialize its element back to JSON.
+
+
+## Usage
+
+```ts
+import { svg } from 'regor'
+
+const radius = 16
+const icon = svg`
+
+ `
+```
+
+## Parameters
+
+- `templates` (`TemplateStringsArray`): Static segments of the template literal.
+- `...args` (`unknown[]`): Interpolated values inserted between template segments.
+
+## Return Value
+
+- Returns a `string` containing the combined SVG markup.
+
+svg assembles a string. The mounting or fragment options determine how nodes are created and bound.
+
+## Notes
+
+- `svg` behaves exactly like `html` at runtime (string assembly), so you can use it anywhere a template string is accepted.
+- Use `svg` when you want semantic clarity in code and editor hinting for SVG snippets.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/toFragment.md b/docs-site/content/api/toFragment.mdx
similarity index 50%
rename from docs-site/src/content/docs/api/toFragment.md
rename to docs-site/content/api/toFragment.mdx
index 7190ec4..f980740 100644
--- a/docs-site/src/content/docs/api/toFragment.md
+++ b/docs-site/content/api/toFragment.mdx
@@ -1,11 +1,26 @@
---
title: toFragment
+description: "Build a DocumentFragment from a JSON template describing HTML or SVG."
---
+toFragment App and Components Build a DocumentFragment from a JSON template describing HTML or SVG.
+
## Overview
The `toFragment` function is used to convert a JSON template, representing HTML or SVG elements, into a DocumentFragment. This can be particularly useful when you want to create a lightweight, in-memory representation of the DOM structure for further manipulation or rendering.
+## Try it live
+
+
+ From strings to structured DOM Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the text, then convert a JSON template into a detached fragment and serialize its element back to JSON.
+
+
## Usage
### Converting a JSON Template to a DocumentFragment
@@ -25,11 +40,11 @@ const jsonTemplate = {
{
t: 'h1',
a: { class: 'title' },
- d: 'Hello, Regor!',
+ c: [{ d: 'Hello, Regor!' }],
},
{
t: 'p',
- d: 'Regor is awesome.',
+ c: [{ d: 'Regor is awesome.' }],
},
],
}
@@ -54,6 +69,8 @@ targetElement.appendChild(fragment)
The `toFragment` function returns a `DocumentFragment` containing the elements created from the provided JSON template(s).
+toFragment builds DOM structure. Use createApp when those nodes should also participate in Regor bindings.
+
## Notes
- The `toFragment` function is useful for creating DocumentFragments that can be used for lightweight rendering and manipulation of DOM structures.
@@ -62,14 +79,20 @@ The `toFragment` function returns a `DocumentFragment` containing the elements c
- The resulting `DocumentFragment` can be appended to the DOM or further manipulated using standard DOM methods.
-- Ensure that the JSON template follows the expected structure with tag names (`t`), attributes (`a`), children (`c`), and text content (`d`) as specified in the parameter descriptions.
+- Use `t` for an element, `a` for its attributes, and `c` for its child nodes. A text node uses `d`; element text belongs in a child such as `c: [{ d: 'Hello' }]`.
- Custom attribute handling and other options can be configured using the `config` parameter.
## See Also
-- [`toJsonTemplate`](/api/toJsonTemplate)
-- [`createApp`](/api/createApp)
-- [`defineComponent`](/api/defineComponent)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/toJsonTemplate.md b/docs-site/content/api/toJsonTemplate.mdx
similarity index 54%
rename from docs-site/src/content/docs/api/toJsonTemplate.md
rename to docs-site/content/api/toJsonTemplate.mdx
index 5e6bf94..bc1ebab 100644
--- a/docs-site/src/content/docs/api/toJsonTemplate.md
+++ b/docs-site/content/api/toJsonTemplate.mdx
@@ -1,7 +1,10 @@
---
title: toJsonTemplate
+description: "Convert DOM elements into JSON templates for inspection or later rendering."
---
+toJsonTemplate App and Components Convert DOM elements into JSON templates for inspection or later rendering.
+
## Overview
The `toJsonTemplate` function is used to convert an HTML element or an array of HTML elements into a JSON structure. This can be useful for:
@@ -9,6 +12,18 @@ The `toJsonTemplate` function is used to convert an HTML element or an array of
- Rendering HTML content in strict content security policy (CSP) pages.
- Improving rendering performance.
+## Try it live
+
+
+ From strings to structured DOM Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the text, then convert a JSON template into a detached fragment and serialize its element back to JSON.
+
+
## Usage
### Converting an HTML Element to JSON
@@ -47,10 +62,12 @@ The `toJsonTemplate` function returns a JSON structure that represents the HTML
- `c` (array): An array of JSON structures representing the child elements of the HTML element. Each child element is converted to a JSON structure and added to this array.
-- `d` (string): The text node content of the HTML element. This property is present if the HTML element contains text content.
+- `d` (string): The content of a text node. Element text is represented by text-node entries inside `c`.
- `n` (number): The node type of the HTML element, specifically for comment nodes. This property is present if the HTML element is a comment node.
+The JSON describes nodes and attributes. Event listeners and app state need their own context and binding step.
+
## Notes
- The `toJsonTemplate` function can handle both single HTML elements and arrays of HTML elements. When converting an array, it returns an array of JSON structures.
@@ -63,8 +80,14 @@ The `toJsonTemplate` function returns a JSON structure that represents the HTML
## See Also
-- [`toFragment`](/api/toFragment)
-- [`createApp`](/api/createApp)
-- [`defineComponent`](/api/defineComponent)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/trigger.mdx b/docs-site/content/api/trigger.mdx
new file mode 100644
index 0000000..818201d
--- /dev/null
+++ b/docs-site/content/api/trigger.mdx
@@ -0,0 +1,101 @@
+---
+title: trigger
+description: "Notify a ref’s observers explicitly, with optional recursive triggering."
+---
+
+trigger Reactivity Notify a ref’s observers explicitly, with optional recursive triggering.
+
+## Overview
+
+The `trigger` function is used to manually trigger observers and update dependent refs. This function is particularly useful when you need to manually control when ref updates and observer notifications occur.
+
+## Try it live
+
+
+ Separate stored values from notifications Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Pause, write, resume, and trigger. Compare the stored value with what the observer last received.
+
+
+## Usage
+
+### Manually Triggering Observers
+
+To manually trigger observers for a specific ref, call the `trigger` function with the ref as the `source` argument. This will notify all observers of the ref and update any dependent refs.
+
+```ts
+import { trigger, ref, observe } from 'regor'
+
+const myRef = ref(5)
+
+observe(myRef, () => {
+ console.log('Observer triggered:', myRef.value)
+})
+
+myRef.value = 10 // The observer is automatically triggered
+
+// Manually trigger the observer
+trigger(myRef)
+
+// Outputs:
+// Observer triggered: 10
+```
+
+### Recursive Triggering
+
+By default, the `trigger` function only notifies observers of the specified ref. If you want to trigger observers recursively for nested refs within arrays, sets, maps, or objects, you can set the `isRecursive` argument to `true`. This will trigger observers for all nested refs.
+
+```ts
+import { trigger, ref, observe } from 'regor'
+
+const myRef = ref([1, 2, 3])
+
+observe(myRef, () => {
+ console.log('Observer triggered:', myRef.value)
+})
+
+myRef.value.push(4) // The observer is automatically triggered
+
+// Manually trigger the observer recursively
+trigger(myRef, undefined, true)
+
+// Outputs:
+// Observer triggered: [1, 2, 3, 4]
+```
+
+## Parameters
+
+- `source`: The ref for which you want to manually trigger observers.
+- `eventSource` (optional): An optional event source that can be provided to identify the source of the trigger. This can be useful for debugging and tracking trigger events.
+- `isRecursive` (optional): A boolean flag that, when set to `true`, triggers observers recursively for nested refs within arrays, sets, maps, and objects. By default, this is set to `false`.
+
+Use trigger when a change needs notification beyond the normal setter behavior. Keep recursive triggering scoped to the data that needs it.
+
+## Notes
+
+- The `trigger` function is typically used for advanced scenarios where manual control over observer notifications is required. In most cases, observers are automatically notified when a ref's value changes.
+
+- Recursive triggering can be resource-intensive if there are deep and complex nested structures. Use it judiciously to avoid unnecessary performance overhead.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/unbind.mdx b/docs-site/content/api/unbind.mdx
new file mode 100644
index 0000000..c0c6631
--- /dev/null
+++ b/docs-site/content/api/unbind.mdx
@@ -0,0 +1,73 @@
+---
+title: unbind
+description: "Stop a node’s bindings and descendant listeners while retaining the DOM."
+---
+
+unbind Cleanup and Unbind Stop a node’s bindings and descendant listeners while retaining the DOM.
+
+## Overview
+
+The `unbind` function in Regor is responsible for removing bound data and associated logic from a DOM node and its descendants. This function is crucial for cleaning up data bindings and event listeners when elements are removed from the DOM or when they are no longer needed.
+
+## Try it live
+
+
+ Own a node through its full lifetime Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Mount, write, unbind, or remove and drain. Watch the DOM, observer count, and registered cleanup.
+
+
+## Usage
+
+### Removing Bound Data and Logic
+
+The `unbind` function takes a single parameter:
+
+- `node`: The DOM node from which you want to start the unbinding process. The function will recursively unbind data and logic from this node and its descendants.
+
+### Example
+
+```javascript
+import { unbind } from 'regor'
+
+// Remove bound data and associated logic from a DOM node and its descendants
+const someElement = document.getElementById('example')
+unbind(someElement)
+```
+
+## Parameters
+
+- `node`: The DOM node from which you want to start the unbinding process. The function will recursively unbind data and logic from this node and its descendants.
+
+The retained node can show its last value while the source continues to change. Remove it separately when its DOM is no longer needed.
+
+## Notes
+
+- The `unbind` function is typically used internally within Regor to clean up data bindings and event listeners associated with DOM nodes that are being removed or are no longer needed.
+
+- When called on a specific DOM node, the function recursively traverses all child nodes, unbinding data and logic as it goes.
+
+- The primary purpose of this function is to ensure that there are no memory leaks or lingering event listeners when elements are removed from the DOM.
+
+- It is essential to call the `unbind` function when elements are removed from the DOM manually or as part of a Regor component's lifecycle management.
+
+- In most cases, you do not need to call this function explicitly, as Regor handles the unbinding process automatically when components are unmounted or when elements are removed from the DOM through Regor's rendering and cleanup mechanisms.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/content/api/unref.mdx b/docs-site/content/api/unref.mdx
new file mode 100644
index 0000000..91d3299
--- /dev/null
+++ b/docs-site/content/api/unref.mdx
@@ -0,0 +1,86 @@
+---
+title: unref
+description: "Read one ref layer, or return a non-ref value unchanged."
+---
+
+unref Reactivity Read one ref layer, or return a non-ref value unchanged.
+
+## Overview
+
+The `unref` function allows you to safely retrieve the original value from a ref object if the given value is a ref, or it simply returns the value itself if it's not a ref.
+
+## Try it live
+
+
+ Compare deep, copied, and shallow state Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the name and apply it. Inspect the nested values, ref checks, and flattened snapshot.
+
+
+## Usage
+
+### Unwrapping a Ref
+
+To safely retrieve the original value from a ref or non-ref value, you can use the `unref` function.
+
+```ts
+import { unref } from 'regor'
+
+const myValue = /* Your ref or non-ref value here */
+
+const unwrappedValue = unref(myValue)
+```
+
+## Parameters
+
+- `value`: The value you want to unwrap. It can be a ref object or a non-ref value.
+
+## Return Value
+
+- The `unref` function returns the original value if the provided `value` is a ref. If `value` is not a ref, it returns the same `value` itself.
+
+## Example
+
+```ts
+import { ref, unref } from 'regor'
+
+const myRef = ref('Hello, Regor!')
+
+// Unwrapping a ref value
+const unwrappedValue = unref(myRef)
+console.log(unwrappedValue) // Outputs 'Hello, Regor!'
+
+const nonRefValue = 'This is not a ref.'
+
+// Unwrapping a non-ref value (no change)
+const sameValue = unref(nonRefValue)
+console.log(sameValue) // Outputs 'This is not a ref.'
+```
+
+unref is useful for a value-or-ref input. Use flatten when you need to unwrap a whole nested structure.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/useScope.md b/docs-site/content/api/useScope.mdx
similarity index 53%
rename from docs-site/src/content/docs/api/useScope.md
rename to docs-site/content/api/useScope.mdx
index 94843a4..a133c52 100644
--- a/docs-site/src/content/docs/api/useScope.md
+++ b/docs-site/content/api/useScope.mdx
@@ -1,13 +1,28 @@
---
title: useScope
+description: "Create a context with owned effects and lifecycle cleanup."
---
+useScope Lifecycle and Scope Create a context with owned effects and lifecycle cleanup.
+
## Overview
The `useScope` function allows you to create a scope for an app or composable, enabling you to manage initialization and cleanup tasks specific to that scope. Scopes are useful for organizing and encapsulating logic within your components.
Components are always created in scope using `defineComponent` function.
+## Try it live
+
+
+ Setup and cleanup with an owner Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Mount the child ticker, then unmount it. The parent keeps totals while the child releases its interval.
+
+
## Usage
### Creating a Scope
@@ -19,13 +34,14 @@ To create a scope for an app or composable, call the `useScope` function and pas
import { createApp, defineComponent, html, useScope, onUnmounted, ref, computed, watchEffect } from 'regor'
const userRow = defineComponent(html`
`, {
- context: () => ({
+ context: () => {
// Register an onUnmounted callback
onUnmounted(() => {
// Perform cleanup tasks
console.log('Component is unmounted!')
})
- }),
+ return {}
+ },
})
createApp(
@@ -65,6 +81,8 @@ Scopes are especially useful for defining cleanup behavior when a component is u
- `context`: The context of the scope that can be used within the component or composable.
- `unmount`: A function that, when called, triggers the cleanup tasks registered within the scope. It is automatically being called when the app or component is unmounted. It can be manually caled for custom scopes.
+Use useScope around app setup. A component’s context factory already runs in a component scope.
+
## Notes
- Scopes help you encapsulate and organize component-specific logic, making it easier to manage initialization and cleanup tasks.
@@ -73,7 +91,13 @@ Scopes are especially useful for defining cleanup behavior when a component is u
## See Also
-- [`onMounted`](/api/onMounted)
-- [`onUnmounted`](/api/onUnmounted)
+
+
+
[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/content/docs/api/warningHandler.md b/docs-site/content/api/warningHandler.mdx
similarity index 71%
rename from docs-site/src/content/docs/api/warningHandler.md
rename to docs-site/content/api/warningHandler.mdx
index aa3aeed..db60f4c 100644
--- a/docs-site/src/content/docs/api/warningHandler.md
+++ b/docs-site/content/api/warningHandler.mdx
@@ -1,11 +1,18 @@
---
title: warningHandler
+description: "Customize Regor’s warning handling and retain a way to restore the previous handler."
---
+warningHandler Logging Customize Regor’s warning handling and retain a way to restore the previous handler.
+
## Overview
The `warningHandler` is a configuration object in Regor that specifies how warning messages should be handled. Warnings are used to provide developers with information about potential issues or best practices when using the Regor library.
+A handler with a restoration path Install a temporary handler with a matching restore function.
+
+
+
## Usage
The `warningHandler` object is used to define a function for handling warning messages. By default, it is set to log warning messages to the browser console using `console.warn`. However, you can customize this behavior by providing your own warning handling function.
@@ -42,6 +49,8 @@ In a production environment, it is common practice to turn off warning messages
This ensures that warnings do not impact the user experience in production while still providing valuable information during development and debugging.
+Install a custom warning policy deliberately, and restore the previous handler when a temporary integration ends.
+
## Notes
- Warnings in Regor are typically used to inform developers about potential issues or best practices related to the usage of the library. They are not errors but serve as helpful hints to improve code quality and maintainability.
diff --git a/docs-site/content/api/watchEffect.mdx b/docs-site/content/api/watchEffect.mdx
new file mode 100644
index 0000000..d4ebb44
--- /dev/null
+++ b/docs-site/content/api/watchEffect.mdx
@@ -0,0 +1,93 @@
+---
+title: watchEffect
+description: "Run an effect immediately, then rerun it when the refs it reads change."
+---
+
+watchEffect Computed and Effects Run an effect immediately, then rerun it when the refs it reads change.
+
+## Overview
+
+The `watchEffect` function allows you to create an "effect" that automatically reacts to changes in reactive data, such as ref objects or other observables. This effect is useful for handling side effects, such as updating the UI, in a reactive and efficient manner.
+
+## Try it live
+
+
+ See which reads become dependencies Live API
+
+ Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the tracked and silenced values separately. Collect the reads to inspect the dependency count and returned result.
+
+
+## Usage
+
+### Creating Effects
+
+To create an effect using `watchEffect`, you provide a function that defines the effect. This function will be called immediately and then re-called whenever the reactive data it depends on changes.
+
+```ts
+import { watchEffect, ref } from 'regor'
+
+const myRef = ref('Hello, Regor!')
+
+// Create a watch effect
+const stopWatching = watchEffect(() => {
+ console.log('Value:', myRef.value)
+})
+
+// Later, when the effect is no longer needed, stop it
+stopWatching()
+```
+
+## Parameters
+
+- `effect`: A function that defines the effect you want to create. This function may optionally receive a callback function (`onCleanup`) as an argument.
+
+## Return Value
+
+- The `watchEffect` function returns a `stopWatching` function that allows you to stop the effect when it's no longer needed. Calling `stopWatching` will unsubscribe the effect from the reactive data.
+
+## Example
+
+```ts
+import { watchEffect, ref } from 'regor'
+
+const myRef = ref('Hello, Regor!')
+
+// Create a watch effect that updates the UI
+const stopWatching = watchEffect(() => {
+ console.log('Value:', myRef.value)
+})
+
+// Later, when the effect is no longer needed, stop it
+stopWatching()
+```
+
+Keep unrelated reads outside the effect or wrap them with silence. Use the cleanup callback for resources from an effect run.
+
+## See Also
+
+
+
+
+
+[Back to the API list](/api/)
+
+
diff --git a/docs-site/src/assets/regor-logo.svg b/docs-site/content/assets/regor-logo.svg
similarity index 100%
rename from docs-site/src/assets/regor-logo.svg
rename to docs-site/content/assets/regor-logo.svg
diff --git a/docs-site/content/assets/social-preview.png b/docs-site/content/assets/social-preview.png
new file mode 100644
index 0000000..b23c1ae
Binary files /dev/null and b/docs-site/content/assets/social-preview.png differ
diff --git a/docs-site/src/content/docs/directives/class.md b/docs-site/content/directives/class.mdx
similarity index 66%
rename from docs-site/src/content/docs/directives/class.md
rename to docs-site/content/directives/class.mdx
index a997c00..27727d9 100644
--- a/docs-site/src/content/docs/directives/class.md
+++ b/docs-site/content/directives/class.mdx
@@ -1,9 +1,27 @@
---
title: :class Directive
+description: "Toggle CSS classes with object, array, or string expressions while retaining static classes."
---
The `:class` directive in Regor allows you to dynamically apply CSS classes to HTML elements. It provides a way to bind and update the `class` attribute of an element based on data or expressions. With `:class`, you can create dynamic and responsive class-based styling for your components.
+
+ :class Appearance
+ Toggle CSS classes with object, array, or string expressions while retaining static classes.
+
+
+## Try it live
+
+
+ Give state a visual difference Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Toggle the two states. The static card class remains while the conditional classes change.
+
+
## Syntax
```html
@@ -70,6 +88,8 @@ The `:class` directive is useful in various scenarios:
4. **Conditional Styling**: You can combine `:class` with `:style` to apply both dynamic styles and classes to elements, providing fine-grained control over the appearance of your components.
+Use conditional classes for meaningful states such as highlighted or muted. Put their visual rules in your stylesheet.
+
## Notes
- The `:class` directive accepts an object, an array, or an expression as its value. In the object form, keys represent class names, and their values determine whether the class should be added (`true`) or removed (`false`). In the array form, each element of the array represents a CSS class name.
@@ -83,3 +103,7 @@ The `:class` directive is useful in various scenarios:
By using the `:class` directive in your Regor templates, you can create flexible and responsive user interfaces with the ability to toggle, add, or remove classes based on various conditions and user interactions.
[Back to the directives](/directives/)
+
+Compare classes with inline styles , or return to the directive map .
+
+
diff --git a/docs-site/content/directives/context.mdx b/docs-site/content/directives/context.mdx
new file mode 100644
index 0000000..1b32182
--- /dev/null
+++ b/docs-site/content/directives/context.mdx
@@ -0,0 +1,78 @@
+---
+title: :context Directive
+description: "Pass multiple reactive fields into a component through object-style context input."
+---
+
+`:context` assigns an object into a component instance context, reactively.
+`r-context` is an alias with the same behavior.
+
+Use it when you want to pass multiple values to a component in one place, including fields that are not declared in `props`.
+
+
+ :context / r-context Composition
+ Pass multiple reactive fields into a component through object-style context input.
+
+
+## Try it live
+
+
+ An object crosses the boundary Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the parent title and permissions. Object-style input updates the child context.
+
+
+## What it does
+
+```html
+
+
+```
+
+In the component, `title` and `theme` become available as component context fields (or update existing ref fields when applicable).
+When `pageTitle` or `activeTheme` changes, the component values are updated.
+
+## When to use `:context`
+
+Use `:context` for object-style component input.
+`r-context` is equivalent and can be used interchangeably.
+
+Use `:prop-name="value"` or `r-bind:prop-name="value"` (same single-prop binding behavior) when the prop is declared in the component `props` list.
+
+Use object-form attribute binding (`r-bind="{...}"` or `:="{...}"`) for normal host attribute fallthrough, not for component context assignment.
+
+## Example
+
+```html
+
+```
+
+```ts
+const UserCard = defineComponent('', {
+ props: ['userId'],
+ context: (head) => ({
+ userId: head.props.userId,
+ badge: head.props.badge,
+ canEdit: head.props.canEdit,
+ }),
+})
+```
+
+In this example:
+
+- `userId` comes from declared prop binding (`:user-id`)
+- `badge` and `canEdit` come from `:context`
+
+[Back to the directives](/directives/)
+
+Use :context for fields in a component context. Object-form r-bind targets host attributes instead.
+
+Select components dynamically , or return to the directive map .
+
+
diff --git a/docs-site/content/directives/demos/bind.ts b/docs-site/content/directives/demos/bind.ts
new file mode 100644
index 0000000..596b4a2
--- /dev/null
+++ b/docs-site/content/directives/demos/bind.ts
@@ -0,0 +1,57 @@
+import { html, ref } from 'regor'
+
+export function createBind(interactive = false) {
+ const title = ref('Launch your next idea')
+ const enabled = ref(true)
+ const clicks = ref(0)
+ return {
+ interactive,
+ title,
+ enabled,
+ clicks,
+ increment: () => clicks(clicks() + 1),
+ }
+}
+
+export const bindTemplate = html`
+
+ Button title and accessible name
+ Enable the button
+
+
+
+ Try the binding
+
+
+
+
title
+ {{ title }}
+
+
+
disabled
+ {{ !enabled }}
+
+
+
Clicks
+ {{ clicks }}
+
+
+
+
`
diff --git a/docs-site/content/directives/demos/browser.ts b/docs-site/content/directives/demos/browser.ts
new file mode 100644
index 0000000..cde0419
--- /dev/null
+++ b/docs-site/content/directives/demos/browser.ts
@@ -0,0 +1,12 @@
+import { createApp, useScope } from 'regor'
+import { directiveExamples } from './examples'
+
+const element = document.getElementById('directive-demo')
+const name = element?.dataset.example
+if (element && name && Object.hasOwn(directiveExamples, name)) {
+ const example = directiveExamples[name as keyof typeof directiveExamples]
+ createApp(
+ useScope(() => example.create(true)),
+ { element, template: example.template },
+ )
+}
diff --git a/docs-site/content/directives/demos/class.ts b/docs-site/content/directives/demos/class.ts
new file mode 100644
index 0000000..d25d3d9
--- /dev/null
+++ b/docs-site/content/directives/demos/class.ts
@@ -0,0 +1,37 @@
+import { html, ref } from 'regor'
+
+export function createClass(interactive = false) {
+ return { interactive, highlighted: ref(true), muted: ref(false) }
+}
+
+export const classTemplate = html`
+
+
+ CLASS LIST / REACTIVE One card, changing emphasis.
+
+ {{ highlighted ? 'is-highlighted' : 'No highlight' }} · {{ muted ?
+ 'is-muted' : 'Full emphasis' }}
+
+
+
`
diff --git a/docs-site/content/directives/demos/context.ts b/docs-site/content/directives/demos/context.ts
new file mode 100644
index 0000000..56a16ee
--- /dev/null
+++ b/docs-site/content/directives/demos/context.ts
@@ -0,0 +1,45 @@
+import { defineComponent, html, ref } from 'regor'
+
+export function createContext(interactive = false) {
+ const ReleaseCard = defineComponent(
+ html`
+ CHILD CONTEXT / OBJECT INPUT {{ title || 'Untitled release' }}
+
+ {{ editable ? 'Editing is available.' : 'This release is read-only.' }}
+
+ `,
+ {
+ context: () => ({ title: ref(''), editable: ref(false) }),
+ },
+ )
+ return {
+ interactive,
+ title: ref('Regor release'),
+ editable: ref(true),
+ components: { ReleaseCard },
+ }
+}
+
+export const contextTemplate = html` `
diff --git a/docs-site/content/directives/demos/examples.ts b/docs-site/content/directives/demos/examples.ts
new file mode 100644
index 0000000..80b32c0
--- /dev/null
+++ b/docs-site/content/directives/demos/examples.ts
@@ -0,0 +1,33 @@
+import { createText, textTemplate } from './text'
+import { createHtml, htmlTemplate } from './html'
+import { createBind, bindTemplate } from './bind'
+import { createModel, modelTemplate } from './model'
+import { createOn, onTemplate } from './on'
+import { createShow, showTemplate } from './show'
+import { createClass, classTemplate } from './class'
+import { createStyle, styleTemplate } from './style'
+import { createIf, ifTemplate } from './if'
+import { createFor, forTemplate } from './for'
+import { createIs, isTemplate } from './is'
+import { createContext, contextTemplate } from './context'
+import { createRef, refTemplate } from './ref'
+import { createPre, preTemplate } from './pre'
+import { createTeleport, teleportTemplate } from './teleport'
+
+export const directiveExamples = {
+ text: { create: createText, template: textTemplate },
+ html: { create: createHtml, template: htmlTemplate },
+ bind: { create: createBind, template: bindTemplate },
+ model: { create: createModel, template: modelTemplate },
+ on: { create: createOn, template: onTemplate },
+ show: { create: createShow, template: showTemplate },
+ class: { create: createClass, template: classTemplate },
+ style: { create: createStyle, template: styleTemplate },
+ if: { create: createIf, template: ifTemplate },
+ for: { create: createFor, template: forTemplate },
+ is: { create: createIs, template: isTemplate },
+ context: { create: createContext, template: contextTemplate },
+ ref: { create: createRef, template: refTemplate },
+ pre: { create: createPre, template: preTemplate },
+ teleport: { create: createTeleport, template: teleportTemplate },
+} as const
diff --git a/docs-site/content/directives/demos/for.ts b/docs-site/content/directives/demos/for.ts
new file mode 100644
index 0000000..90d0509
--- /dev/null
+++ b/docs-site/content/directives/demos/for.ts
@@ -0,0 +1,49 @@
+import { html, sref } from 'regor'
+
+const initial = [
+ { id: 'design', label: 'Design the interface' },
+ { id: 'build', label: 'Connect the state' },
+ { id: 'check', label: 'Verify the behavior' },
+]
+
+export function createFor(interactive = false) {
+ const rows = sref(initial.map((row) => ({ ...row })))
+ return {
+ interactive,
+ rows,
+ reverse: () => rows([...rows()].reverse()),
+ remove: (id: string) => rows(rows().filter((row) => row.id !== id)),
+ reset: () => rows(initial.map((row) => ({ ...row }))),
+ }
+}
+
+export const forTemplate = html`
+
+
+ Reverse order
+ Reset list
+
+
+
+
+ The list is empty. Reset it to start again.
+
+
+ Reverse the order: stable keys let Regor reuse the existing row elements.
+
+
`
diff --git a/docs-site/content/directives/demos/html.ts b/docs-site/content/directives/demos/html.ts
new file mode 100644
index 0000000..ac7891e
--- /dev/null
+++ b/docs-site/content/directives/demos/html.ts
@@ -0,0 +1,31 @@
+import { html, ref, computed } from 'regor'
+
+// Only these fixed, trusted strings can reach r-html in this example.
+const snippets = {
+ welcome: 'Welcome aboard. Your workspace is ready.',
+ update: 'A small update: the next release is in review.',
+ shortcut: 'Ctrl + K opens search.',
+}
+
+export function createHtml(interactive = false) {
+ const selected = ref('welcome')
+ return { interactive, selected, markup: computed(() => snippets[selected()]) }
+}
+
+export const htmlTemplate = html`
+
+ Trusted snippet
+ Welcome
+ Release update
+ Keyboard shortcut
+
+
+
+
+ The preview uses fixed strings. r-html does not sanitize arbitrary content.
+
+
`
diff --git a/docs-site/content/directives/demos/if.ts b/docs-site/content/directives/demos/if.ts
new file mode 100644
index 0000000..cd33272
--- /dev/null
+++ b/docs-site/content/directives/demos/if.ts
@@ -0,0 +1,37 @@
+import { html, ref } from 'regor'
+
+export function createIf(interactive = false) {
+ return { interactive, status: ref('review') }
+}
+
+export const ifTemplate = html`
+
+ Release status
+ In review
+ Ready
+ Blocked
+
+
+
+ R-IF / READY Ready to ship.
+ All checks passed. The release can move forward.
+
+
+ R-ELSE-IF / REVIEW One more look.
+ The release is waiting for a review.
+
+
+ R-ELSE / BLOCKED Resolve the blocker.
+ The release is paused until the issue is fixed.
+
+
+ Exactly one branch is mounted. Switching status replaces it.
+
+
`
diff --git a/docs-site/content/directives/demos/is.ts b/docs-site/content/directives/demos/is.ts
new file mode 100644
index 0000000..5c3e5ab
--- /dev/null
+++ b/docs-site/content/directives/demos/is.ts
@@ -0,0 +1,42 @@
+import { defineComponent, html, ref } from 'regor'
+
+export function createIs(interactive = false) {
+ const SummaryCard = defineComponent(
+ html`
+ SUMMARY COMPONENT Release 1.0
+ A compact view of the upcoming release.
+ `,
+ )
+ const DetailCard = defineComponent(
+ html`
+ DETAIL COMPONENT Release 1.0
+
+ State and templates connected
+ Keyboard interactions reviewed
+ Cleanup verified
+
+ `,
+ )
+ return {
+ interactive,
+ selected: ref('SummaryCard'),
+ components: { SummaryCard, DetailCard },
+ }
+}
+
+export const isTemplate = html`
+
+ Component to render
+ SummaryCard
+ DetailCard
+
+
+
+
+ The selected name resolves to a registered component. Changing it mounts the
+ other template.
+
+
`
diff --git a/docs-site/content/directives/demos/model.ts b/docs-site/content/directives/demos/model.ts
new file mode 100644
index 0000000..299d64a
--- /dev/null
+++ b/docs-site/content/directives/demos/model.ts
@@ -0,0 +1,78 @@
+import { html, ref } from 'regor'
+
+export function createModel(interactive = false) {
+ const name = ref('Ada')
+ const seats = ref(3)
+ const email = ref(true)
+ const plan = ref('Team')
+ const reset = () => {
+ name('Ada')
+ seats(3)
+ email(true)
+ plan('Team')
+ }
+ return { interactive, name, seats, email, plan, reset }
+}
+
+export const modelTemplate = html`
+
+ Name · trim option
+ Seats · .number
+ Plan
+ Solo
+ Team
+ Studio
+
+
+ Email updates
+ Reset from state
+
+
+
+
FORM STATE / TWO WAYS
+
+
+
Name
+ {{ name || 'Not set' }}
+
+
+
Seats
+ {{ seats }}
+
+
+
Plan
+ {{ plan }}
+
+
+
Email
+ {{ email ? 'Enabled' : 'Disabled' }}
+
+
+
Controls update state. Resetting state updates the controls.
+
+
`
diff --git a/docs-site/content/directives/demos/on.ts b/docs-site/content/directives/demos/on.ts
new file mode 100644
index 0000000..a3e34b1
--- /dev/null
+++ b/docs-site/content/directives/demos/on.ts
@@ -0,0 +1,35 @@
+import { html, ref } from 'regor'
+
+export function createOn(interactive = false) {
+ const message = ref('Ship something useful')
+ const submissions = ref(0)
+ const lastMessage = ref('Nothing submitted yet.')
+ const submit = () => {
+ submissions(submissions() + 1)
+ lastMessage(message().trim() || 'An empty message')
+ }
+ return { interactive, message, submissions, lastMessage, submit }
+}
+
+export const onTemplate = html`
+
+
+
SUBMIT EVENT / HANDLED {{ submissions }}
+
{{ lastMessage }}
+
+
`
diff --git a/docs-site/content/directives/demos/pre.ts b/docs-site/content/directives/demos/pre.ts
new file mode 100644
index 0000000..8660f11
--- /dev/null
+++ b/docs-site/content/directives/demos/pre.ts
@@ -0,0 +1,32 @@
+import { html, ref } from 'regor'
+
+export function createPre(interactive = false) {
+ return { interactive, message: ref('This part is reactive.') }
+}
+
+export const preTemplate = html`
+
+ Reactive message
+
+
+
+
NORMAL SUBTREE
+
{{ message }}
+
+
+
R-PRE SUBTREE
+
{{ message }}
+
+
+
+ The r-pre subtree keeps its literal interpolation syntax.
+
+
`
diff --git a/docs-site/content/directives/demos/ref.ts b/docs-site/content/directives/demos/ref.ts
new file mode 100644
index 0000000..66524ba
--- /dev/null
+++ b/docs-site/content/directives/demos/ref.ts
@@ -0,0 +1,35 @@
+import { html, ref, sref } from 'regor'
+
+export function createRef(interactive = false) {
+ const input = sref(null)
+ const focused = ref(false)
+ return {
+ interactive,
+ input,
+ focused,
+ focus: () => input()?.focus(),
+ onFocus: () => focused(true),
+ onBlur: () => focused(false),
+ }
+}
+
+export const refTemplate = html`
+
+ Referenced input
+ Focus the input
+
+
+
+ {{ focused ? 'The referenced input has focus.' : 'Click the button to focus
+ the input directly.' }}
+
+
`
diff --git a/docs-site/content/directives/demos/show.ts b/docs-site/content/directives/demos/show.ts
new file mode 100644
index 0000000..4952b44
--- /dev/null
+++ b/docs-site/content/directives/demos/show.ts
@@ -0,0 +1,26 @@
+import { html, ref } from 'regor'
+
+export function createShow(interactive = false) {
+ const visible = ref(true)
+ return { interactive, visible, toggle: () => visible(!visible()) }
+}
+
+export const showTemplate = html`
+
+
+ {{ visible ? 'Hide details' : 'Show details' }} display: {{ visible ? 'visible' : 'none' }}
+
+
+
+ Edit the draft, hide it, and show it again. The element stays mounted; its
+ display changes.
+
+
`
diff --git a/docs-site/content/directives/demos/style.ts b/docs-site/content/directives/demos/style.ts
new file mode 100644
index 0000000..8b1403a
--- /dev/null
+++ b/docs-site/content/directives/demos/style.ts
@@ -0,0 +1,40 @@
+import { computed, html, ref } from 'regor'
+
+export function createStyle(interactive = false) {
+ const fill = ref(65)
+ const rounded = ref(true)
+ const barStyle = computed(() => ({
+ width: `${fill()}%`,
+ borderRadius: rounded() ? '12px' : '0px',
+ }))
+ return { interactive, fill, rounded, barStyle }
+}
+
+export const styleTemplate = html`
+
+ Fill {{ fill }}%
+ Rounded corners
+
+
+
+ A computed style object controls width and borderRadius.
+
+
`
diff --git a/docs-site/content/directives/demos/teleport.ts b/docs-site/content/directives/demos/teleport.ts
new file mode 100644
index 0000000..220ef2e
--- /dev/null
+++ b/docs-site/content/directives/demos/teleport.ts
@@ -0,0 +1,47 @@
+import { html, ref } from 'regor'
+
+export function createTeleport(interactive = false) {
+ const active = ref(true)
+ return {
+ interactive,
+ active,
+ message: ref('Still bound to the source context.'),
+ toggle: () => active(!active()),
+ }
+}
+
+export const teleportTemplate = html`
+
+ Message in the source context
+ {{ active ? 'Unmount message' : 'Mount message' }}
+
+
+
+
+ SOURCE / DECLARED HERE
+ The message's template starts in this region.
+
+ {{ message }}
+
+
+
+ TARGET / RENDERED HERE
+
+
+
+
+ The element moves to the target. Its bindings still read the source context.
+
+
`
diff --git a/docs-site/content/directives/demos/text.ts b/docs-site/content/directives/demos/text.ts
new file mode 100644
index 0000000..a944fbf
--- /dev/null
+++ b/docs-site/content/directives/demos/text.ts
@@ -0,0 +1,30 @@
+import { html, ref } from 'regor'
+
+export function createText(interactive = false) {
+ return { interactive, message: ref('Hello, Regor.') }
+}
+
+export const textTemplate = html`
+
+
Your message
+
+ Try typing <strong>Hello</strong>. It stays text.
+
+
+
+ TEXT CONTENT / LIVE
+
+
`
diff --git a/docs-site/content/directives/index.mdx b/docs-site/content/directives/index.mdx
new file mode 100644
index 0000000..1962515
--- /dev/null
+++ b/docs-site/content/directives/index.mdx
@@ -0,0 +1,80 @@
+---
+title: Directives
+description: "Explore every Regor directive through focused live examples and syntax references."
+order: 5
+---
+
+Directives are Regor’s runtime template control surface.
+
+By default, directive names start with `r-`. You can customize the prefix with `RegorConfig`.
+
+Bindings Control flow Composition Choose a directive by the behavior you need. Every topic below has a live preview with its actual source.
+
+## Core Rules
+
+1. `r-` directives are explicit full-form syntax.
+2. `:` is shorthand for `r-bind`.
+3. `@` is shorthand for `r-on`.
+4. `.` shorthand binds DOM properties (equivalent to `r-bind.prop`).
+
+## Try it live
+
+
+ From form controls to state Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ A small form brings r-model, event handling, and text bindings together. Open any directive below for a focused example.
+
+
+## Binding
+
+
+ r-text r-text Bind expressions to textContent and display text without interpreting it as HTML.
Explore r-text
+ r-html r-html Render trusted HTML strings and understand the boundary between text and markup.
Explore r-html
+ r-bind / : / . r-bind Bind attributes, DOM properties, and object values to reactive expressions.
Explore r-bind
+ r-model r-model Connect form controls and writable refs in both directions, with optional conversion modifiers.
Explore r-model
+ r-on / @ r-on Handle DOM events with methods, expressions, and modifiers such as .prevent and .stop.
Explore r-on
+ r-show r-show Toggle visibility through display while keeping the element and its bindings mounted.
Explore r-show
+ :class :class Toggle CSS classes with object, array, or string expressions while retaining static classes.
Explore :class
+ :style :style Bind inline CSS values to state and computed style objects.
Explore :style
+
+
+## Control Flow
+
+
+ r-if / r-else-if / r-else r-if Mount one conditional branch at a time and remove the branch that no longer matches.
Explore r-if
+ r-for + :key r-for + :key Render reactive collections with stable keys that preserve each item’s identity.
Explore r-for + :key
+
+
+## Component and Utility
+
+
+ :is :is Select and mount registered components dynamically from a reactive value.
Explore :is
+ :context / r-context :context Pass multiple reactive fields into a component through object-style context input.
Explore :context
+ :ref :ref Capture element references to focus controls or integrate directly with DOM APIs.
Explore :ref
+ r-pre r-pre Leave a subtree uncompiled and preserve literal template syntax.
Explore r-pre
+ r-teleport r-teleport Move a subtree to a target selector while preserving its original binding context.
Explore r-teleport
+
+
+Use stable, unique item identities when a collection can reorder, filter, or remove rows.
+
+## Important Keying Note
+
+In `r-for`, both `key="row.id"` and `:key="row.id"` are expression bindings in Regor templates. Both are supported. Nested paths like `a.b.c.d` are supported.
+
+Use stable keys whenever list identity matters.
+
+## Recommendation
+
+Read in this order:
+
+1. [`r-bind`](/directives/r-bind)
+2. [`r-text`](/directives/r-text)
+3. [`r-if`](/directives/r-if)
+4. [`r-for`](/directives/r-for)
+5. [`r-model`](/directives/r-model)
+
+
diff --git a/docs-site/src/content/docs/directives/is.md b/docs-site/content/directives/is.mdx
similarity index 61%
rename from docs-site/src/content/docs/directives/is.md
rename to docs-site/content/directives/is.mdx
index 1a7412f..855c6ca 100644
--- a/docs-site/src/content/docs/directives/is.md
+++ b/docs-site/content/directives/is.mdx
@@ -1,9 +1,27 @@
---
title: :is Directive
+description: "Select and mount registered components dynamically from a reactive value."
---
The `:is` directive in Regor allows you to dynamically render components based on a value or expression. It provides a way to conditionally choose which component to render in a template, enabling you to create dynamic and flexible user interfaces.
+
+ :is Composition
+ Select and mount registered components dynamically from a reactive value.
+
+
+## Try it live
+
+
+ Choose the component to render Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Switch between summary and detail. Each choice is a separate registered component.
+
+
## Syntax
```html
@@ -36,7 +54,7 @@ import { componentA, componentB } from 'components'
const showComponentA = ref(true)
const currentComponent = computed(() =>
- showComponentA ? componentA : componentB,
+ showComponentA() ? componentA : componentB,
)
createApp({
components: {
@@ -62,6 +80,8 @@ The `:is` directive is valuable in several scenarios:
4. **Component-Based Routing**: When working with component-based routing libraries, you can use `:is` to render components based on the current route.
+The selected name must resolve to a registered component. Changing it replaces the previous component instance.
+
## Notes
- The `:is` directive expects a component name or variable that represents the component to render. This can be a reference to a component or a dynamically determined component name.
@@ -73,3 +93,7 @@ The `:is` directive is valuable in several scenarios:
By using the `:is` directive in your Regor templates, you can take advantage of dynamic component rendering to create versatile and interactive web applications.
[Back to the directives](/directives/)
+
+Pass an object into a component , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-bind.md b/docs-site/content/directives/r-bind.mdx
similarity index 51%
rename from docs-site/src/content/docs/directives/r-bind.md
rename to docs-site/content/directives/r-bind.mdx
index 43ae0a0..650223e 100644
--- a/docs-site/src/content/docs/directives/r-bind.md
+++ b/docs-site/content/directives/r-bind.mdx
@@ -1,11 +1,29 @@
---
title: r-bind Directive
+description: "Bind attributes, DOM properties, and object values to reactive expressions."
---
`r-bind` is Regor’s generic binding directive.
It maps to attribute binding by default, with property binding available via shorthand/flag.
+
+ r-bind / : / . Binding
+ Bind attributes, DOM properties, and object values to reactive expressions.
+
+
+## Try it live
+
+
+ Attributes and properties in sync Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the title or disable the button. Inspect its tooltip, accessible name, and disabled property.
+
+
## Syntax
```html
@@ -56,6 +74,8 @@ For template-authored dynamic option keys, Regor uses normalized dynamic markers
When dynamic **attribute** key changes, previous attribute is removed and new attribute is set.
+Use :title for an attribute and .disabled for the DOM property. The preview shows both changing from the same context.
+
## Notes
1. Attribute path handles boolean attributes and `xlink:*` attributes.
@@ -78,3 +98,7 @@ When dynamic **attribute** key changes, previous attribute is removed and new at
4. [r-for](/directives/r-for)
+
+Bind form state in two directions , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-for.md b/docs-site/content/directives/r-for.mdx
similarity index 53%
rename from docs-site/src/content/docs/directives/r-for.md
rename to docs-site/content/directives/r-for.mdx
index 9d876cc..14453ea 100644
--- a/docs-site/src/content/docs/directives/r-for.md
+++ b/docs-site/content/directives/r-for.mdx
@@ -1,9 +1,27 @@
---
title: r-for Directive
+description: "Render reactive collections with stable keys that preserve each item’s identity."
---
`r-for` renders repeated template instances from arrays, iterables, and object-like values.
+
+ r-for + :key Control flow
+ Render reactive collections with stable keys that preserve each item’s identity.
+
+
+## Try it live
+
+
+ A list with stable identity Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Reverse the list or remove rows. Keys let surviving items keep their DOM elements.
+
+
## Usage
```html
@@ -107,8 +125,14 @@ const tableRow = defineComponent(
3. Avoid expensive per-row expressions in large lists.
4. Prefer pagination/windowing for very large data sets.
+Use row.id when it is stable and unique. The row position changes when you reorder a list.
+
## See Also
1. [r-if](/directives/r-if)
2. [r-bind](/directives/r-bind)
3. [r-text](/directives/r-text)
+
+Add conditional empty states , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-html.md b/docs-site/content/directives/r-html.mdx
similarity index 54%
rename from docs-site/src/content/docs/directives/r-html.md
rename to docs-site/content/directives/r-html.mdx
index 4311d14..5f41263 100644
--- a/docs-site/src/content/docs/directives/r-html.md
+++ b/docs-site/content/directives/r-html.mdx
@@ -1,9 +1,27 @@
---
title: r-html Directive
+description: "Render trusted HTML strings and understand the boundary between text and markup."
---
The `r-html` directive is used to render HTML content within an HTML element based on the result of an expression. It allows you to dynamically insert and update HTML markup inside an element.
+
+ r-html Binding
+ Render trusted HTML strings and understand the boundary between text and markup.
+
+
+## Try it live
+
+
+ Markup, rendered as markup Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Choose a fixed trusted snippet. Strong text, emphasis, and keyboard tags render as HTML.
+
+
## Syntax
```html
@@ -27,6 +45,8 @@ The `r-html` directive is particularly useful when you need to display content w
In this example, the HTML content inside the `` element will be dynamically updated based on the value of the `dynamicHtml` property in your component's data. Any changes to the `dynamicHtml` property will automatically reflect in the rendered HTML content.
+r-html writes innerHTML. It does not sanitize content, and inserted markup is not compiled as a Regor template.
+
## Notes
- The `r-html` directive renders HTML content, including tags and elements. Be cautious when using this directive with user-generated or untrusted content to prevent security vulnerabilities like Cross-Site Scripting (XSS) attacks.
@@ -50,3 +70,7 @@ In this example, if the `dynamicHtmlContent` property in your component's data i
The `r-html` directive empowers you to create dynamic and interactive user interfaces that incorporate rich HTML content, making your Regor-powered applications more versatile and engaging.
[Back to the directives](/directives/)
+
+Compare HTML with text , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-if.md b/docs-site/content/directives/r-if.mdx
similarity index 68%
rename from docs-site/src/content/docs/directives/r-if.md
rename to docs-site/content/directives/r-if.mdx
index cd652ac..d94da34 100644
--- a/docs-site/src/content/docs/directives/r-if.md
+++ b/docs-site/content/directives/r-if.mdx
@@ -1,9 +1,27 @@
---
title: r-if
+description: "Mount one conditional branch at a time and remove the branch that no longer matches."
---
In Regor, conditional rendering allows you to control the visibility of elements in your templates based on the evaluation of expressions. You can conditionally render elements, provide alternatives, and create complex conditional structures using the following directives:
+
+ r-if / r-else-if / r-else Control flow
+ Mount one conditional branch at a time and remove the branch that no longer matches.
+
+
+## Try it live
+
+
+ One condition, one mounted view Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Switch the release status. Only the matching branch is mounted.
+
+
## `r-if` Directive
The `r-if` directive is used to conditionally render an element based on the truthiness of an expression. It allows you to control whether an element should be displayed or omitted from the rendered output.
@@ -97,6 +115,8 @@ To use the `r-else-if` directive, place it after an `r-if` directive or another
In this example, different greetings are displayed based on the user's role. The first paragraph is displayed for premium users, the second for regular users, and the third for non-logged-in users.
+Changing branches removes the previous subtree. Use r-show when you want to preserve a mounted element and hide it instead.
+
## Notes
- You can create complex conditional structures by combining `r-if`, `r-else`, and `r-else-if` directives within your templates.
@@ -105,3 +125,7 @@ In this example, different greetings are displayed based on the user's role. The
Conditional rendering directives in Regor empower you to create dynamic and context-aware user interfaces, improving the user experience of your applications.
[Back to the directives](/directives/)
+
+Compare mounting with visibility , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-model.md b/docs-site/content/directives/r-model.mdx
similarity index 70%
rename from docs-site/src/content/docs/directives/r-model.md
rename to docs-site/content/directives/r-model.mdx
index 109bab2..bcc43b2 100644
--- a/docs-site/src/content/docs/directives/r-model.md
+++ b/docs-site/content/directives/r-model.mdx
@@ -1,9 +1,27 @@
---
title: r-model Directive
+description: "Connect form controls and writable refs in both directions, with optional conversion modifiers."
---
The `r-model` directive provides two-way data binding for form elements in your Regor components. It allows you to bind the value of form inputs to a component's data, ensuring that changes to the input are reflected in the component's data and vice versa.
+
+ r-model Forms
+ Connect form controls and writable refs in both directions, with optional conversion modifiers.
+
+
+## Try it live
+
+
+ A form and its state, connected Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the controls, then reset from state. Both directions update the same view.
+
+
## Syntax
```html
@@ -92,6 +110,8 @@ In this example, the `r-model` directive is used with a multi-select dropdown. T
## Modifiers
+The live preview passes the trim option explicitly as a second expression: `r-model="name, { trim: true }"`. This trims the value written to the ref as you type.
+
The `r-model` directive supports modifiers to enable additional behavior on the bound element. Modifiers are added to the directive with a dot notation.
### Example with Modifiers
@@ -103,17 +123,19 @@ The `r-model` directive supports modifiers to enable additional behavior on the
```
-In this example, the `.trim` modifier is used to trim any leading or trailing whitespace from the input's value before binding it to the `trimmedMessage` property.
+The `.trim` modifier trims the text control when it emits `change`. The live preview uses the explicit `trim` option to trim the bound state as you type.
#### Available Modifiers
-- `.trim`: Removes leading and trailing whitespace from the input's value.
+- `.trim`: Removes leading and trailing whitespace from the text control on `change`. Use the explicit `trim` option above to trim the bound value during input.
- `.lazy`: Updates the component's data property only when the input element emits the `change` event (useful for input fields that have debounced input events).
- `.number`: Converts the input's value to a numeric type (e.g., `Number`) before binding it to the data property.
- `.int`: Converts the input's value to an integer type (e.g., `parseInt`) before binding it to the data property.
You can use these modifiers individually or combine them to achieve the desired behavior for your form elements.
+Computed values are read-only. Bind r-model to a writable ref, then derive summaries from that state.
+
## Notes
- The `r-model` directive is ideal for creating interactive forms and ensuring that user input is synchronized with your component's data.
@@ -129,3 +151,7 @@ You can use these modifiers individually or combine them to achieve the desired
The `r-model` directive simplifies the process of creating interactive forms in your Regor-powered applications by enabling two-way data binding between form elements and your component's data properties. It ensures that your forms remain in sync with the underlying data, providing a seamless user experience.
[Back to the directives](/directives/)
+
+Handle form events , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-on.md b/docs-site/content/directives/r-on.mdx
similarity index 69%
rename from docs-site/src/content/docs/directives/r-on.md
rename to docs-site/content/directives/r-on.mdx
index 39b4196..1ed07d1 100644
--- a/docs-site/src/content/docs/directives/r-on.md
+++ b/docs-site/content/directives/r-on.mdx
@@ -1,10 +1,28 @@
---
title: r-on Directive
+description: "Handle DOM events with methods, expressions, and modifiers such as .prevent and .stop."
---
The `r-on` directive in Regor is used to attach event listeners to HTML elements and invoke specified component methods when those events occur. It provides a way to make your components interactive and responsive to user actions.
+
+ r-on / @ Events
+ Handle DOM events with methods, expressions, and modifiers such as .prevent and .stop.
+
+
+## Try it live
+
+
+ Handle a submit without leaving Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Submit by button or keyboard. The local handler updates state and .prevent stops navigation.
+
+
## Usage
The `r-on` directive is typically used in the following format:
@@ -28,7 +46,7 @@ You can use the shorthand notation `@` to achieve the same effect as `r-on`. For
### Supported Flags
-The `r-on` directive supports various flags that allow you to customize event handling behavior. Flags are added to the event name and are separated by commas. Here are the available flags:
+The `r-on` directive supports flags that customize event handling behavior. Add them to the event name with dots, as in `@click.stop.prevent`. Here are the available flags:
- `stop`: Stops event propagation, preventing it from bubbling up the DOM tree.
- `prevent`: Prevents the default behavior of the event from occurring (e.g., form submission).
@@ -94,6 +112,8 @@ You can use object syntax with the `r-on` directive to attach multiple event lis
In the above example, the element will have multiple event listeners attached, each invoking a different component method when the specified events occur.
+Use .prevent to stop the default browser action and .stop to stop propagation. They control different parts of an event.
+
## Notes
- The `r-on` directive is a powerful tool for making your components interactive by listening to DOM events.
@@ -119,3 +139,7 @@ In the above example, the element will have multiple event listeners attached, e
- [r-show Directive](/directives/r-show)
[Back to the directives](/directives)
+
+Connect your input to state , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-pre.md b/docs-site/content/directives/r-pre.mdx
similarity index 59%
rename from docs-site/src/content/docs/directives/r-pre.md
rename to docs-site/content/directives/r-pre.mdx
index 49a7174..c2f31c9 100644
--- a/docs-site/src/content/docs/directives/r-pre.md
+++ b/docs-site/content/directives/r-pre.mdx
@@ -1,9 +1,27 @@
---
title: r-pre Directive
+description: "Leave a subtree uncompiled and preserve literal template syntax."
---
The `r-pre` directive is a utility directive in Regor that allows you to exclude specific HTML elements from Regor's data binding and templating. This directive is useful when you want to preserve certain parts of your HTML markup as static content that should not be subject to data binding or dynamic updates.
+
+ r-pre DOM utilities
+ Leave a subtree uncompiled and preserve literal template syntax.
+
+
+## Try it live
+
+
+ Reactive next to literal Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the message. One subtree updates; the r-pre subtree keeps its literal braces.
+
+
## Syntax
```html
@@ -41,6 +59,8 @@ The `r-pre` directive is helpful in various scenarios, including:
3. **Embedding Third-Party Widgets**: When embedding third-party widgets or components that rely on their own JavaScript, applying `r-pre` ensures that Regor doesn't interfere with the widget's functionality.
+r-pre skips Regor compilation of its subtree. It is useful for literal examples and content owned by another system.
+
## Notes
- Elements marked with `r-pre` will not participate in data binding or template rendering. Therefore, any expressions or variables within those elements will not be evaluated or updated by Regor.
@@ -50,3 +70,7 @@ The `r-pre` directive is helpful in various scenarios, including:
By using the `r-pre` directive in your Regor templates, you can effectively manage which parts of your HTML are subject to data binding and dynamic updates and which parts remain static and unaltered. This flexibility allows you to create dynamic and interactive user interfaces while preserving the integrity of your existing HTML content.
[Back to the directives](/directives/)
+
+Bind the text that should update , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/r-show.md b/docs-site/content/directives/r-show.mdx
similarity index 59%
rename from docs-site/src/content/docs/directives/r-show.md
rename to docs-site/content/directives/r-show.mdx
index 459df60..ad1c569 100644
--- a/docs-site/src/content/docs/directives/r-show.md
+++ b/docs-site/content/directives/r-show.mdx
@@ -1,9 +1,27 @@
---
title: r-show Directive
+description: "Toggle visibility through display while keeping the element and its bindings mounted."
---
The `r-show` directive is used to conditionally display or hide an HTML element based on the truthiness of an expression. It allows you to control the visibility of an element dynamically.
+
+ r-show Visibility
+ Toggle visibility through display while keeping the element and its bindings mounted.
+
+
+## Try it live
+
+
+ Hide a view, keep its DOM Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the local draft, then hide and show it. The same input element remains in the DOM.
+
+
## Syntax
```html
@@ -29,6 +47,8 @@ The `r-show` directive is useful when you want to toggle the visibility of an el
In this example, the `
` element will be displayed if the `isContentVisible` property in your component's data is `true`. If `isContentVisible` becomes `false`, the element will be hidden.
+r-show changes display. Use r-if when a subtree should be mounted or removed with the condition.
+
## Notes
- The `r-show` directive operates by toggling the element's `display` CSS property. When the expression evaluates to `true`, the `display` property is set to its default value (usually `"block"` or `"inline"`), making the element visible. When the expression evaluates to `false`, the `display` property is set to `"none"`, hiding the element.
@@ -53,3 +73,7 @@ In this example, clicking the "Toggle Visibility" button will trigger the `toggl
The `r-show` directive provides a straightforward way to implement conditional visibility in your Regor-powered applications, making it easier to control what content is displayed to users in response to various conditions and interactions.
[Back to the directives](/directives/)
+
+Compare visibility with conditional mounting , or return to the directive map .
+
+
diff --git a/docs-site/content/directives/r-teleport.mdx b/docs-site/content/directives/r-teleport.mdx
new file mode 100644
index 0000000..baeb6b9
--- /dev/null
+++ b/docs-site/content/directives/r-teleport.mdx
@@ -0,0 +1,74 @@
+---
+title: r-teleport Directive
+description: "Move a subtree to a target selector while preserving its original binding context."
+---
+
+The `r-teleport` directive in Regor is a straightforward directive that empowers you to move an element anywhere within your document's DOM structure. This can be especially useful when you need to dynamically relocate elements to different parts of your web page.
+
+
+ r-teleport DOM utilities
+ Move a subtree to a target selector while preserving its original binding context.
+
+
+## Try it live
+
+
+ Move the DOM, keep the context Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the source message. It renders in the target region, and unmounting removes it there too.
+
+
+## Usage
+
+To utilize the `r-teleport` directive, follow this basic syntax:
+
+```html
+
+```
+
+- `element`: The HTML element you wish to teleport/move.
+- `targetSelector`: A selector indicating the destination where you want to place the element.
+
+## Example
+
+Here's an example of how you can employ the `r-teleport` directive:
+
+```html
+
+
+
This element will be teleported.
+
+```
+
+In this example, the outer `` and its contents move under the element with ID `destination`. Their bindings continue to read the original context.
+
+
Use a selector that resolves to the intended destination. Moving the DOM does not change which context its bindings read.
+
+## Notes
+
+- The `r-teleport` directive allows you to dynamically reposition elements within the DOM structure, enhancing flexibility and interactivity in your web applications.
+
+- It works by selecting a target element based on a CSS selector (`targetSelector`) and moving the element to that location in the document.
+
+- This directive can be particularly handy for creating dynamic UIs and interactive web pages.
+
+- You can use this directive in combination with other Regor directives and features to create rich and dynamic web applications.
+
+## See Also
+
+- [r-bind Directive](/directives/r-bind)
+- [r-model Directive](/directives/r-model)
+- [r-text Directive](/directives/r-text)
+- [r-html Directive](/directives/r-html)
+- [r-on Directive](/directives/r-on)
+- [r-show Directive](/directives/r-show)
+
+[Back to the directives](/directives/)
+
+
Access elements directly , or return to the directive map .
+
+
diff --git a/docs-site/content/directives/r-text.mdx b/docs-site/content/directives/r-text.mdx
new file mode 100644
index 0000000..aa7e273
--- /dev/null
+++ b/docs-site/content/directives/r-text.mdx
@@ -0,0 +1,82 @@
+---
+title: r-text Directive
+description: "Bind expressions to textContent and display text without interpreting it as HTML."
+---
+
+`r-text` binds an expression to an element’s `textContent`.
+
+It is the safest and most direct way to render text output.
+
+
+ r-text Binding
+ Bind expressions to textContent and display text without interpreting it as HTML.
+
+
+## Try it live
+
+
+ Text that follows your input Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Edit the message. The output binds directly to textContent.
+
+
+## Syntax
+
+```html
+
+```
+
+## Basic Example
+
+```html
+
+```
+
+When `message` changes, the element text updates reactively.
+
+## Expression Example
+
+```html
+
+```
+
+## `r-text` vs `{{ ... }}`
+
+Both are valid. Prefer `r-text` when:
+
+1. You want explicit binding at element level.
+2. You are optimizing repeated row templates and want predictable binding points.
+3. You want to avoid accidental surrounding whitespace behavior from text nodes.
+
+
Choose r-text for plain text. Markup characters are displayed rather than interpreted.
+
+## Security and Behavior
+
+1. `r-text` writes plain text, not HTML.
+2. HTML tags in values are escaped as text.
+3. Use [`r-html`](/directives/r-html) only when you intentionally need HTML rendering.
+
+## Common Patterns
+
+```html
+
+
+
+
+```
+
+This is a clear and performant default for list text output.
+
+## See Also
+
+1. [r-bind](/directives/r-bind)
+2. [r-html](/directives/r-html)
+3. [r-for](/directives/r-for)
+
+
Compare text with HTML , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/ref.md b/docs-site/content/directives/ref.mdx
similarity index 59%
rename from docs-site/src/content/docs/directives/ref.md
rename to docs-site/content/directives/ref.mdx
index dbdd326..ede8ff2 100644
--- a/docs-site/src/content/docs/directives/ref.md
+++ b/docs-site/content/directives/ref.mdx
@@ -1,9 +1,27 @@
---
title: :ref Directive
+description: "Capture element references to focus controls or integrate directly with DOM APIs."
---
The `:ref` directive in Regor allows you to create references to HTML elements within your templates. These references enable you to interact with and manipulate specific DOM elements programmatically in your components.
+
+ :ref DOM utilities
+ Capture element references to focus controls or integrate directly with DOM APIs.
+
+
+## Try it live
+
+
+ Reach the DOM when you need it Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ The button focuses an input through its captured element reference.
+
+
## Syntax
```html
@@ -51,6 +69,8 @@ The `:ref` directive is useful in various scenarios, including:
3. **Integrating Third-Party Libraries**: When working with third-party libraries or components that require direct access to DOM elements, using `:ref` provides a way to pass those elements to external libraries.
+
A template ref is populated when the element binds and cleared when it is unbound. Check that it exists before using it.
+
## Notes
- The `:ref` directive establishes a reference to the HTML element in the component's data, making it accessible via the specified reference name.
@@ -64,3 +84,7 @@ The `:ref` directive is useful in various scenarios, including:
By using the `:ref` directive in your Regor templates, you can bridge the gap between your component's JavaScript logic and the HTML elements in your template, enhancing your ability to create dynamic and interactive user interfaces.
[Back to the directives](/directives/)
+
+
Connect DOM interactions to events , or return to the directive map .
+
+
diff --git a/docs-site/src/content/docs/directives/style.md b/docs-site/content/directives/style.mdx
similarity index 64%
rename from docs-site/src/content/docs/directives/style.md
rename to docs-site/content/directives/style.mdx
index 9767acd..83e634e 100644
--- a/docs-site/src/content/docs/directives/style.md
+++ b/docs-site/content/directives/style.mdx
@@ -1,11 +1,29 @@
---
title: :style Directive
+description: "Bind inline CSS values to state and computed style objects."
---
The `:style` directive in Regor allows you to dynamically apply inline styles to HTML elements. It provides a way to bind and update the `style` attribute of an element based on data or expressions. With `:style`, you can create dynamic and responsive styling for your components.
`r-style` is an alias of `:style` and behaves the same way.
+
+ :style Appearance
+ Bind inline CSS values to state and computed style objects.
+
+
+## Try it live
+
+
+ Turn state into dimensions Live Regor
+
+
Enable JavaScript to try the controls. This preview is rendered at build time.
+
+
+
+ Change the fill or corner treatment. A computed object drives both inline style properties.
+
+
## Syntax
```html
@@ -61,6 +79,8 @@ The `:style` directive is useful in various scenarios:
4. **Animation and Transitions**: It's often paired with animation libraries to animate elements by changing their styles over time.
+
Width and borderRadius are data-driven values here. A named CSS class is often clearer for a larger visual state.
+
## Notes
- The `:style` directive accepts an object as its value, where keys represent style properties (in camelCase or hyphenated) and values specify the corresponding style values. You can also use expressions to compute style values dynamically.
@@ -74,3 +94,7 @@ The `:style` directive is useful in various scenarios:
By using the `:style` directive in your Regor templates, you can create flexible and responsive user interfaces with the ability to adapt and change styles based on various conditions and user interactions.
[Back to the directives](/directives/)
+
+
Compare styles with classes , or return to the directive map .
+
+
diff --git a/docs-site/content/examples/chart-model.ts b/docs-site/content/examples/chart-model.ts
new file mode 100644
index 0000000..6b3eb7e
--- /dev/null
+++ b/docs-site/content/examples/chart-model.ts
@@ -0,0 +1,196 @@
+import { computed, ref, sref } from 'regor'
+
+const samples = 60
+const vertical = { top: 24, bottom: 264, ceiling: 240 }
+const definitions = [
+ { id: 'search', label: 'Search', base: 112, amplitude: 32, offset: 0 },
+ { id: 'events', label: 'Events', base: 76, amplitude: 25, offset: 2.4 },
+ { id: 'jobs', label: 'Jobs', base: 42, amplitude: 17, offset: 4.6 },
+] as const
+
+interface Point {
+ x: number
+ y: number
+}
+
+function smoothPath(points: Point[]) {
+ let path = `M ${points[0].x.toFixed(2)} ${points[0].y.toFixed(2)}`
+ for (let i = 1; i < points.length; i++) {
+ const before = points[Math.max(0, i - 2)]
+ const start = points[i - 1]
+ const end = points[i]
+ const after = points[Math.min(points.length - 1, i + 1)]
+ const control1 = {
+ x: start.x + (end.x - before.x) / 6,
+ y: start.y + (end.y - before.y) / 6,
+ }
+ const control2 = {
+ x: end.x - (after.x - start.x) / 6,
+ y: end.y - (after.y - start.y) / 6,
+ }
+ path += ` C ${control1.x.toFixed(2)} ${control1.y.toFixed(2)}, ${control2.x.toFixed(2)} ${control2.y.toFixed(2)}, ${end.x.toFixed(2)} ${end.y.toFixed(2)}`
+ }
+ return path
+}
+
+export function createChartModel(interactive = false) {
+ const phase = ref(0)
+ const intensity = ref(100)
+ const workload = ref('steady')
+ const running = ref(interactive)
+ const enabled = sref
(definitions.map((s) => s.id))
+ const selected = ref(null)
+ const width = ref(980)
+ const plot = computed(() => ({ ...vertical, left: 58, right: width() - 36 }))
+ const index = computed(() => selected() ?? samples - 1)
+ const cursorX = computed(
+ () =>
+ plot().left + (index() / (samples - 1)) * (plot().right - plot().left),
+ )
+ const signals = computed(() =>
+ definitions.map((s) => ({ ...s, enabled: enabled().includes(s.id) })),
+ )
+ const series = computed(() => {
+ const time = phase()
+ const scale = intensity() / 100
+ const mode = workload()
+ const bounds = plot()
+ return definitions
+ .filter((s) => enabled().includes(s.id))
+ .map((signal) => {
+ const values = Array.from({ length: samples }, (_, i) => {
+ const x = i / (samples - 1)
+ const wave = Math.sin(i * 0.15 + time * 0.7 + signal.offset)
+ const detail = Math.sin(i * 0.39 - time * 0.4 + signal.offset) * 0.22
+ const surge =
+ mode === 'launch'
+ ? Math.exp(
+ -(((x - (0.58 + Math.sin(time * 0.3) * 0.14)) / 0.13) ** 2),
+ ) * 66
+ : 0
+ const pulse =
+ mode === 'waves' ? Math.sin(i * 0.28 + time * 1.3) * 22 : 0
+ return Math.max(
+ 4,
+ Math.min(
+ bounds.ceiling - 4,
+ (signal.base +
+ (wave + detail) * signal.amplitude +
+ surge +
+ pulse) *
+ scale,
+ ),
+ )
+ })
+ const points = values.map((value, i) => ({
+ x: bounds.left + (i / (samples - 1)) * (bounds.right - bounds.left),
+ y:
+ bounds.bottom -
+ (value / bounds.ceiling) * (bounds.bottom - bounds.top),
+ }))
+ const line = smoothPath(points)
+ return {
+ ...signal,
+ values,
+ points,
+ line,
+ area: `${line} L ${bounds.right} ${bounds.bottom} L ${bounds.left} ${bounds.bottom} Z`,
+ }
+ })
+ })
+ const readout = computed(() =>
+ series().map((s) => ({
+ id: s.id,
+ label: s.label,
+ value: Math.round(s.values[index()]),
+ x: s.points[index()].x,
+ y: s.points[index()].y,
+ })),
+ )
+ const average = computed(() =>
+ Math.round(
+ series().reduce(
+ (sum, s) => sum + s.values.reduce((a, b) => a + b, 0) / samples,
+ 0,
+ ),
+ ),
+ )
+ const peak = computed(() =>
+ Math.round(Math.max(0, ...series().flatMap((s) => s.values))),
+ )
+ const status = computed(() =>
+ !interactive ? 'Static preview' : running() ? 'Live simulation' : 'Paused',
+ )
+ const sampleLabel = computed(
+ () => `Sample ${String(index() + 1).padStart(2, '0')} / ${samples}`,
+ )
+ const description = computed(
+ () =>
+ `${series().length} visible streams. Average combined rate ${average()} events per second. Peak stream rate ${peak()} events per second. ${status()}.`,
+ )
+
+ return {
+ interactive,
+ phase,
+ intensity,
+ workload,
+ running,
+ signals,
+ series,
+ readout,
+ average,
+ peak,
+ status,
+ sampleLabel,
+ description,
+ selected,
+ index,
+ cursorX,
+ plot,
+ width,
+ grid: [0, 60, 120, 180, 240].map((value) => ({
+ value,
+ y:
+ vertical.bottom -
+ (value / vertical.ceiling) * (vertical.bottom - vertical.top),
+ })),
+ ticks: computed(() =>
+ [0, 14, 29, 44, 59].map((i) => ({
+ x: plot().left + (i / (samples - 1)) * (plot().right - plot().left),
+ label: String(i + 1).padStart(2, '0'),
+ })),
+ ),
+ toggle: (id: string) => {
+ const current = enabled()
+ if (current.includes(id)) {
+ enabled(current.filter((s) => s !== id))
+ } else enabled([...current, id])
+ },
+ togglePlayback: () => running(!running()),
+ newWindow: () => phase(phase() + 12),
+ selectSample: (event: Event) =>
+ selected((event.target as HTMLInputElement).valueAsNumber),
+ inspect: (event: PointerEvent) => {
+ const rect = (
+ event.currentTarget as SVGSVGElement
+ ).getBoundingClientRect()
+ const x = ((event.clientX - rect.left) / rect.width) * width()
+ const bounds = plot()
+ selected(
+ Math.max(
+ 0,
+ Math.min(
+ samples - 1,
+ Math.round(
+ ((x - bounds.left) / (bounds.right - bounds.left)) *
+ (samples - 1),
+ ),
+ ),
+ ),
+ )
+ },
+ followLatest: () => selected(null),
+ }
+}
+
+export type ChartModel = ReturnType
diff --git a/docs-site/content/examples/chart-view.ts b/docs-site/content/examples/chart-view.ts
new file mode 100644
index 0000000..0587154
--- /dev/null
+++ b/docs-site/content/examples/chart-view.ts
@@ -0,0 +1,208 @@
+import { html } from 'regor'
+
+export const chartTemplate = html`
+
+
+
Workload
+
+ Steady flow
+ Launch spike
+ Traffic waves
+
+
+
Intensity
+
+
+
+
+
+
+
+
+
+
+ Total average events/s
+
+
+ Stream peak events/s
+
+
+ Visible streams / 3
+
+
+
+
+ Enable a stream to bring the chart back.
+
+
+
+ Simulated event rates across 60 samples
+
+
+
+
+
+
+
+
+
+
+
+
+ EVENTS / SECOND
+
+
+
+
+
+
+
+
+
+
`
diff --git a/docs-site/content/examples/first-app/counter.ts b/docs-site/content/examples/first-app/counter.ts
new file mode 100644
index 0000000..704a798
--- /dev/null
+++ b/docs-site/content/examples/first-app/counter.ts
@@ -0,0 +1,36 @@
+import { html, ref } from 'regor'
+
+export function createCounter(interactive = false) {
+ const count = ref(0)
+ return {
+ interactive,
+ count,
+ increment: () => count(count() + 1),
+ reset: () => count(0),
+ }
+}
+
+export const counterTemplate = html`
+
+
Change state. Watch the DOM.
+
The buttons update a ref. Regor updates the text bound to it.
+
+
+ Increment
+
+
+ Reset
+
+
+
+
+
YOUR FIRST REF / COUNT
+
+
One ref, an event handler, and a text binding.
+
+
`
diff --git a/docs-site/content/examples/first-app/mount.ts b/docs-site/content/examples/first-app/mount.ts
new file mode 100644
index 0000000..f9167ed
--- /dev/null
+++ b/docs-site/content/examples/first-app/mount.ts
@@ -0,0 +1,14 @@
+import { createApp, useScope } from 'regor'
+import { createCounter, counterTemplate } from './counter'
+
+const element = document.getElementById('app')
+if (element) {
+ const app = createApp(
+ useScope(() => createCounter(true)),
+ { element, template: counterTemplate },
+ )
+
+ // When this root is no longer needed:
+ // app.unbind() // Stop bindings and listeners, keeping the DOM.
+ // app.unmount() // Stop bindings and listeners, removing the root.
+}
diff --git a/docs-site/content/examples/signal-chart.ts b/docs-site/content/examples/signal-chart.ts
new file mode 100644
index 0000000..42137af
--- /dev/null
+++ b/docs-site/content/examples/signal-chart.ts
@@ -0,0 +1,65 @@
+import { createApp, observe, onMounted, onUnmounted, useScope } from 'regor'
+import { createChartModel } from './chart-model'
+import { chartTemplate } from './chart-view'
+
+const root = document.getElementById('signal-chart')
+if (root) {
+ createApp(
+ useScope(() => {
+ const model = createChartModel(true)
+ const reducedMotion = matchMedia('(prefers-reduced-motion: reduce)')
+ if (reducedMotion.matches) model.running(false)
+ let visible = false
+ let frame = 0
+ let lastTime = 0
+
+ // Regor owns the state and SVG bindings. The browser supplies a frame clock.
+ const tick = (time: number) => {
+ if (lastTime === 0) lastTime = time
+ if (time - lastTime >= 32) {
+ model.phase(model.phase() + Math.min(time - lastTime, 80) / 1000)
+ lastTime = time
+ }
+ frame = requestAnimationFrame(tick)
+ }
+ const reconcile = () => {
+ cancelAnimationFrame(frame)
+ frame = 0
+ lastTime = 0
+ if (visible && model.running() && !document.hidden)
+ frame = requestAnimationFrame(tick)
+ }
+ const visibility = new IntersectionObserver(
+ (entries) => {
+ visible = entries.some((entry) => entry.isIntersecting)
+ reconcile()
+ },
+ { threshold: 0.1 },
+ )
+ const motionChanged = () => {
+ if (reducedMotion.matches) model.running(false)
+ }
+ const resize = new ResizeObserver((entries) => {
+ const width = entries[0]?.contentRect.width
+ if (width > 0) model.width(width)
+ })
+ observe(model.running, reconcile)
+ onMounted(() => {
+ visibility.observe(root)
+ const svg = root.querySelector('.signal-svg')
+ if (svg) resize.observe(svg)
+ document.addEventListener('visibilitychange', reconcile)
+ reducedMotion.addEventListener('change', motionChanged)
+ })
+ onUnmounted(() => {
+ cancelAnimationFrame(frame)
+ visibility.disconnect()
+ resize.disconnect()
+ document.removeEventListener('visibilitychange', reconcile)
+ reducedMotion.removeEventListener('change', motionChanged)
+ })
+ return model
+ }),
+ { element: root, template: chartTemplate },
+ )
+}
diff --git a/docs-site/content/footer.mdx b/docs-site/content/footer.mdx
new file mode 100644
index 0000000..9a4a5e6
--- /dev/null
+++ b/docs-site/content/footer.mdx
@@ -0,0 +1,14 @@
+
diff --git a/docs-site/content/getting-started.mdx b/docs-site/content/getting-started.mdx
new file mode 100644
index 0000000..cb5e2c7
--- /dev/null
+++ b/docs-site/content/getting-started.mdx
@@ -0,0 +1,212 @@
+---
+title: Getting Started
+description: "Install Regor, mount your first reactive view, and try it live."
+order: 3
+---
+
+Regor binds runtime behavior directly to DOM you already have, or to template
+content you provide at mount time.
+
+This means you can start from static HTML, mount only where needed, and scale
+to multiple independent runtime islands on the same page.
+
+
+ 01 / Install Add Regor Use your package manager or start with a browser module.
+ 02 / Mount Choose a root Bind existing HTML or supply a template for your app.
+ 03 / Interact Connect state Use refs and events to make your view respond.
+
+
+## Install
+
+
+
+
+```sh
+npm install regor
+```
+
+
+
+
+```sh
+yarn add regor
+```
+
+
+
+
+## Quick Start (TypeScript)
+
+Add a mount target to your HTML, then run your TypeScript entry after that element exists (for example, with a module script).
+
+```html
+
+```
+
+
+ Your first reactive view Live Regor
+
+
Enable JavaScript to try the buttons. The counter above is a static preview.
+
+
+
+ Click Increment, then Reset. Open the source tabs to see the state, template, and mount code used by this preview.
+
+
+
+
+```ts
+import { createApp, html, ref } from 'regor'
+
+const app = createApp(
+ {
+ count: ref(0),
+ inc() {
+ this.count(this.count() + 1)
+ },
+ },
+ {
+ element: document.querySelector('#app')!,
+ template: html`
+
+ `,
+ },
+)
+
+// optional teardown
+// app.unbind()
+// app.unmount()
+```
+
+
+
+Regor binds to the element you select. Make sure its selector matches your HTML and that the element is present when createApp runs.
+
+## CDN ESM
+
+```html
+
+
+```
+
+## Core Mount Modes
+
+1. Bind existing markup in place:
+
+```ts
+createApp({ userName: ref('Ada') }, { selector: '#profile-island' })
+```
+
+2. Replace root content from template string:
+
+```ts
+createApp(
+ { title: ref('Home') },
+ {
+ selector: '#app',
+ template: ' ',
+ },
+)
+```
+
+3. Replace root content from JSON template:
+
+```ts
+createApp(
+ { label: ref('Save') },
+ {
+ element: document.querySelector('#app')!,
+ json: { t: 'button', a: { 'r-text': 'label' } },
+ },
+)
+```
+
+## Reactivity Basics
+
+`ref` for values and deep object conversion:
+
+```ts
+import { ref } from 'regor'
+
+const count = ref(0)
+count(1)
+console.log(count())
+```
+
+`sref` for shallow object state:
+
+```ts
+import { sref } from 'regor'
+
+const user = sref({ name: 'Ada', age: 30 })
+user().name = 'Grace'
+user({ ...user(), age: 31 })
+```
+
+Inside templates, refs are auto-unwrapped, so use `count`, `user.name`, not
+`count()` or `.value`.
+
+With sref, editing a plain nested property does not notify bindings by itself. Replace the object, as in the example above, to update the view.
+
+## Component Quick Example
+
+```ts
+import { createApp, defineComponent, ref } from 'regor'
+
+const UserCard = defineComponent(' ', {
+ props: ['name'],
+ context: (head) => ({
+ name: head.props.name ?? 'Anonymous',
+ }),
+})
+
+createApp({
+ components: { UserCard },
+ activeName: ref('Ada Lovelace'),
+})
+```
+
+```html
+
+```
+
+## Template Syntax You Will Use Daily
+
+1. `r-text="expr"` for text.
+2. `:attr="expr"` or `r-bind:attr="expr"` for attributes.
+3. `.prop="expr"` or `:prop.prop="expr"` for DOM properties.
+4. `@event="handler"` for events.
+5. `r-if` / `r-else-if` / `r-else` for conditional branches.
+6. `r-for="item, #i in items"` for loops.
+7. `:context="{ ... }"` / `r-context="{ ... }"` for object-style component input.
+8. `{{ expr }}` and `[[ expr ]]` interpolation (enabled by default).
+
+## Where To Go Next
+
+
+ Overview See how Regor connects state, templates, and the DOM.
Explore overview
+ Guide Explore the concepts with more live examples.
Explore guide
+ Directives Find the bindings for lists, forms, attributes, and events.
Explore directives
+ API Reference Look up function signatures and usage details.
Explore api reference
+ Guide: Mounting Bind existing markup and compose independent islands.
Explore guide: mounting
+
+
+
diff --git a/docs-site/src/content/docs/guide/components.md b/docs-site/content/guide/components.mdx
similarity index 86%
rename from docs-site/src/content/docs/guide/components.md
rename to docs-site/content/guide/components.mdx
index baf3628..a0cf04e 100644
--- a/docs-site/src/content/docs/guide/components.md
+++ b/docs-site/content/guide/components.mdx
@@ -1,11 +1,28 @@
---
title: Components
-sidebar:
- order: 30
+description: "Compose typed components with reactive props, named slots, and explicit context boundaries."
+order: 30
---
This guide documents how Regor components work in runtime, based on current implementation and tests.
+
+ Props Slots Composition
+ Define a reusable view, then decide which state belongs to its parent.
+
+
+## Try it live
+
+
+ Compose a profile, live Live Regor
+
+
Enable JavaScript to try the controls. The preview above is rendered at build time.
+
+
+
+ The parent owns the form. The child receives live props, computes initials, and renders a named slot supplied by the parent.
+
+
## Define a Component
```ts
@@ -369,6 +386,8 @@ context: (head) => {
}
```
+Set head.enableSwitch = true when slot expressions should resolve against the parent. The preview uses this for the availability footer.
+
## Attribute inheritance (`inheritAttrs`)
By default, component host attributes are inherited into component output root (`inheritAttrs: true`).
@@ -417,3 +436,5 @@ Unmount cleans child component bindings and observers.
5. [TypeScript Guide](/guide/typescript)
6. [Directive: r-for](/directives/r-for)
7. [contextRegistry API](/api/contextRegistry)
+
+
diff --git a/docs-site/content/guide/demos/browser.ts b/docs-site/content/guide/demos/browser.ts
new file mode 100644
index 0000000..9880514
--- /dev/null
+++ b/docs-site/content/guide/demos/browser.ts
@@ -0,0 +1,24 @@
+import { createApp, useScope } from 'regor'
+import { createQuote, quoteTemplate } from './quote'
+import { createServices, servicesTemplate } from './services'
+import { createProfile, profileTemplate } from './profile'
+import { createLifecycle, lifecycleTemplate } from './lifecycle'
+
+// Each guide mounts only its own island. Everything outside the root stays static.
+function mount(
+ id: string,
+ create: (interactive: boolean) => T,
+ template: string,
+) {
+ const element = document.getElementById(id)
+ if (element)
+ createApp(
+ useScope(() => create(true)),
+ { element, template },
+ )
+}
+
+mount('guide-quote', createQuote, quoteTemplate)
+mount('guide-services', createServices, servicesTemplate)
+mount('guide-profile', createProfile, profileTemplate)
+mount('guide-lifecycle', createLifecycle, lifecycleTemplate)
diff --git a/docs-site/content/guide/demos/lifecycle.ts b/docs-site/content/guide/demos/lifecycle.ts
new file mode 100644
index 0000000..1dc6349
--- /dev/null
+++ b/docs-site/content/guide/demos/lifecycle.ts
@@ -0,0 +1,61 @@
+import { defineComponent, html, onMounted, onUnmounted, ref } from 'regor'
+
+export function createLifecycle(interactive = false) {
+ const active = ref(false)
+ const toggle = () => active(!active())
+ const ticks = ref(0)
+ const starts = ref(0)
+ const cleanups = ref(0)
+ const lastEvent = ref('Ready. Mount the ticker to start its interval.')
+ const SessionTicker = defineComponent(
+ html`
+ Interval running ●
+
`,
+ {
+ context: () => {
+ let timer: ReturnType | undefined
+ onMounted(() => {
+ starts(starts() + 1)
+ lastEvent('onMounted → start interval')
+ timer = setInterval(() => ticks(ticks() + 1), 500)
+ })
+ onUnmounted(() => {
+ clearInterval(timer)
+ cleanups(cleanups() + 1)
+ lastEvent('onUnmounted → clear interval')
+ })
+ return {}
+ },
+ },
+ )
+ // No child is mounted during static rendering, so the build creates no timer.
+ return {
+ interactive,
+ active,
+ toggle,
+ ticks,
+ starts,
+ cleanups,
+ lastEvent,
+ components: { SessionTicker },
+ }
+}
+
+export const lifecycleTemplate = html`
+
+
+ {{ active ? 'Unmount ticker' : 'Mount ticker' }} {{ active ? 'Child is mounted' : 'Child is unmounted' }}
+
+
+
+
{{ ticks }} Total ticks
+
{{ starts }} Mounts
+
{{ cleanups }} Cleanups
+
+
{{ lastEvent }}
+
+ Unmount the child: the tick count stops. Remount it: a fresh interval
+ starts. The parent keeps the totals.
+
+
`
diff --git a/docs-site/content/guide/demos/profile.ts b/docs-site/content/guide/demos/profile.ts
new file mode 100644
index 0000000..8704b64
--- /dev/null
+++ b/docs-site/content/guide/demos/profile.ts
@@ -0,0 +1,95 @@
+import {
+ computed,
+ defineComponent,
+ html,
+ ref,
+ unref,
+ type RefOrValue,
+} from 'regor'
+
+interface ProfileProps {
+ name: RefOrValue
+ role: RefOrValue
+ compact: RefOrValue
+}
+
+export function createProfile(interactive = false) {
+ const ProfileCard = defineComponent<
+ ProfileProps & { initials: RefOrValue }
+ >(
+ html`
+ {{ initials }}
+
+
{{ name || 'Your name' }}
+
{{ role }}
+
+
+ `,
+ {
+ props: ['name', 'role', 'compact'],
+ context: (head) => {
+ head.enableSwitch = true // The named slot reads the parent's context.
+ return {
+ ...head.props,
+ initials: computed(
+ () =>
+ unref(head.props.name)
+ .trim()
+ .split(/\s+/)
+ .slice(0, 2)
+ .map((word) => word[0] ?? '')
+ .join('')
+ .toUpperCase() || '?',
+ ),
+ }
+ },
+ },
+ )
+ return {
+ interactive,
+ name: ref('Ada Lovelace'),
+ role: ref('Engineer'),
+ compact: ref(false),
+ available: ref(true),
+ components: { ProfileCard },
+ }
+}
+
+export const profileTemplate = html` `
diff --git a/docs-site/content/guide/demos/quote.ts b/docs-site/content/guide/demos/quote.ts
new file mode 100644
index 0000000..f780ce7
--- /dev/null
+++ b/docs-site/content/guide/demos/quote.ts
@@ -0,0 +1,78 @@
+import { batch, computed, html, ref } from 'regor'
+
+export function createQuote(interactive = false) {
+ const quantity = ref(4)
+ const unitPrice = ref(25)
+ const discounted = ref(false)
+ const subtotal = computed(() => quantity() * unitPrice())
+ const savings = computed(() => (discounted() ? subtotal() * 0.1 : 0))
+ const total = computed(() => subtotal() - savings())
+ const money = (value: number) => `$${value.toFixed(2)}`
+ const reset = () =>
+ batch(() => {
+ quantity(4)
+ unitPrice(25)
+ discounted(false)
+ })
+ return {
+ interactive,
+ quantity,
+ unitPrice,
+ discounted,
+ subtotal,
+ savings,
+ total,
+ money,
+ reset,
+ }
+}
+
+export const quoteTemplate = html`
+
+ Seats {{ quantity }}
+
+ Price per seat {{ money(unitPrice) }}
+
+
+ Apply a 10% team discount
+
+ Reset quote
+
+
+
+
YOUR TEAM / MONTHLY
+
{{ money(total) }}
+
+
+
Subtotal
+ {{ money(subtotal) }}
+
+
+
Discount
+ {{ money(savings) }}
+
+
+
Two inputs. Three computed values. One connected view.
+
+
`
diff --git a/docs-site/content/guide/demos/services.ts b/docs-site/content/guide/demos/services.ts
new file mode 100644
index 0000000..3a937bb
--- /dev/null
+++ b/docs-site/content/guide/demos/services.ts
@@ -0,0 +1,86 @@
+import { computed, html, ref, sref } from 'regor'
+
+const initialServices = [
+ { id: 'api', name: 'Public API', region: 'Frankfurt', healthy: true },
+ { id: 'search', name: 'Search index', region: 'Amsterdam', healthy: false },
+ { id: 'jobs', name: 'Background jobs', region: 'Frankfurt', healthy: true },
+ { id: 'media', name: 'Media delivery', region: 'London', healthy: true },
+]
+
+export function createServices(interactive = false) {
+ const query = ref('')
+ const status = ref('all')
+ const services = sref(initialServices.map((service) => ({ ...service })))
+ const visible = computed(() =>
+ services().filter((service) => {
+ const matchesText = `${service.name} ${service.region}`
+ .toLowerCase()
+ .includes(query().trim().toLowerCase())
+ return (
+ matchesText &&
+ (status() === 'all' || service.healthy === (status() === 'healthy'))
+ )
+ }),
+ )
+ // The row objects are plain values: replace the shallow ref's array to notify.
+ const toggle = (id: string) =>
+ services(
+ services().map((service) =>
+ service.id === id ? { ...service, healthy: !service.healthy } : service,
+ ),
+ )
+ const reset = () => {
+ query('')
+ status('all')
+ }
+ return { interactive, query, status, services, visible, toggle, reset }
+}
+
+export const servicesTemplate = html`
+
+ Find a service
+ Status
+ All services
+ Healthy
+ Degraded
+
+
+
+ {{ visible.length }} of {{ services.length }} services · illustrative data
+
+
+
+
No matching services.
+
Try a different search or status.
+
+ Clear filters
+
+
+
+ Filter the list, then click a status to change it. Stable keys identify each
+ row.
+
+
`
diff --git a/docs-site/content/guide/index.mdx b/docs-site/content/guide/index.mdx
new file mode 100644
index 0000000..9982314
--- /dev/null
+++ b/docs-site/content/guide/index.mdx
@@ -0,0 +1,72 @@
+---
+title: Guide
+description: Learn Regor from live examples, then explore the patterns behind reactive interfaces.
+order: 4
+---
+
+Build your understanding from state to screen. Start with reactivity, templates, and components, then explore the topics your application needs.
+
+Four guides include live previews with their actual source: a computed quote, a service board, a profile component, and a ticker with lifecycle cleanup.
+
+## Guide Map
+
+
+
+ 01 / Core concepts
+ Reactivity
+ Model state with refs, derive values with computed, and coordinate updates.
+ Explore reactivity
+
+
+ 02 / Core concepts
+ Templates and Expressions
+ Connect HTML to state with expressions, keyed lists, events, and form bindings.
+ Explore templates and expressions
+
+
+ 03 / Core concepts
+ Components
+ Compose typed components with reactive props, named slots, and explicit context boundaries.
+ Explore components
+
+
+ 04 / In practice
+ TypeScript
+ Type app contexts, component inputs, and runtime contracts without losing reactive behavior.
+ Explore typescript
+
+
+ 05 / In practice
+ Lifecycle and Cleanup
+ Own timers, listeners, and subscriptions through scoped mount and unmount hooks.
+ Explore lifecycle and cleanup
+
+
+ 06 / In practice
+ Mounting
+ Enhance existing markup or mount independent reactive islands on a static page.
+ Explore mounting
+
+
+ 07 / In practice
+ Persisted State
+ Keep selected reactive preferences across reloads with persist and stable storage keys.
+ Explore persisted state
+
+
+ 08 / In practice
+ Performance
+ Measure DOM workloads, investigate bottlenecks, and verify improvements against a baseline.
+ Explore performance
+
+
+ 09 / In practice
+ Troubleshooting
+ Trace mounting, bindings, component inputs, and cleanup problems from symptom to cause.
+ Explore troubleshooting
+
+
+
+
+ Follow Getting started to mount your first app. Try the reactivity and template previews. Compose your views with components , then learn how to clean up their resources .
+
diff --git a/docs-site/src/content/docs/guide/lifecycle-and-cleanup.md b/docs-site/content/guide/lifecycle-and-cleanup.mdx
similarity index 64%
rename from docs-site/src/content/docs/guide/lifecycle-and-cleanup.md
rename to docs-site/content/guide/lifecycle-and-cleanup.mdx
index 2d46ac3..7ebed6b 100644
--- a/docs-site/src/content/docs/guide/lifecycle-and-cleanup.md
+++ b/docs-site/content/guide/lifecycle-and-cleanup.mdx
@@ -1,11 +1,28 @@
---
title: Lifecycle and Cleanup
-sidebar:
- order: 50
+description: "Own timers, listeners, and subscriptions through scoped mount and unmount hooks."
+order: 50
---
This page describes Regor lifecycle and teardown behavior from the actual runtime flow.
+
+ Mount Unmount Cleanup
+ Start resources when their owner mounts. Release them when that owner leaves.
+
+
+## Try it live
+
+
+ Watch a component come and go Live Regor
+
+
Enable JavaScript to try the controls. The preview above is rendered at build time.
+
+
+
+ Mount and unmount a child ticker. Its hooks own the interval; the parent retains the tick and cleanup counts.
+
+
## Runtime lifecycle order
`createApp(...)` runs in this order:
@@ -101,6 +118,8 @@ Inside component context, `head.unmount()` is a force-remove tool:
Use only when component wants to self-remove its rendered block.
+Pair intervals with clearInterval, listeners with removeEventListener, and subscriptions with their stop function.
+
## Practical cleanup patterns
1. Page-level app:
@@ -121,3 +140,5 @@ Use only when component wants to self-remove its rendered block.
5. [API: removeNode](/api/removeNode)
6. [API: drainUnbind](/api/drainUnbind)
7. [API: unbind](/api/unbind)
+
+
diff --git a/docs-site/src/content/docs/guide/mounting.md b/docs-site/content/guide/mounting.mdx
similarity index 78%
rename from docs-site/src/content/docs/guide/mounting.md
rename to docs-site/content/guide/mounting.mdx
index c19a84b..299cbe3 100644
--- a/docs-site/src/content/docs/guide/mounting.md
+++ b/docs-site/content/guide/mounting.mdx
@@ -1,7 +1,7 @@
---
title: Mounting
-sidebar:
- order: 60
+description: "Enhance existing markup or mount independent reactive islands on a static page."
+order: 60
---
Regor can mount directly on existing DOM and compose with many rendering/runtime strategies.
@@ -14,6 +14,11 @@ One common pattern is static-first pages with dynamic islands, but Regor is not
In many projects, this can mean mostly static content with selectively mounted dynamic regions.
+
+ Existing HTML Islands Ownership
+ Mount only where interaction is needed. Give each app a clear DOM boundary.
+
+
## Why this is powerful
This architecture gives you:
@@ -33,6 +38,8 @@ Examples where selective mounting is ideal:
4. Search/filter controls.
5. Realtime status chips, notifications, dashboards.
+The live previews in the reactivity, templates, components, and lifecycle guides mount into their own roots. Navigation and the rest of the page stay outside those roots.
+
## Multi-mount pattern
You can mount separate Regor contexts into multiple existing DOM roots:
diff --git a/docs-site/src/content/docs/guide/performance.md b/docs-site/content/guide/performance.mdx
similarity index 87%
rename from docs-site/src/content/docs/guide/performance.md
rename to docs-site/content/guide/performance.mdx
index 8ce0dfe..2f77faf 100644
--- a/docs-site/src/content/docs/guide/performance.md
+++ b/docs-site/content/guide/performance.mdx
@@ -1,7 +1,7 @@
---
title: Performance
-sidebar:
- order: 80
+description: "Measure DOM workloads, investigate bottlenecks, and verify improvements against a baseline."
+order: 80
---
This guide shows how to measure Regor performance with stable, repeatable workflows:
@@ -10,6 +10,11 @@ This guide shows how to measure Regor performance with stable, repeatable workfl
2. Minidom benchmark (engine-only, no paint/layout noise)
3. CPU profiling (find real hotspots before changing code)
+
+ Measure Profile Verify
+ Measure the interaction that matters before deciding what to optimize.
+
+
## Regor Wins Where It Matters
In this repo’s benchmark suite, Regor is the update-throughput winner in many real mutation patterns.
@@ -75,6 +80,8 @@ Interpretation:
Regor shows strong wins on several real mutation patterns.
+Compare the same workload and environment. A benchmark snapshot is a starting point for investigation, not a prediction for every application.
+
## Browser DOM Benchmarks
Use this when you care about user-visible page performance.
diff --git a/docs-site/src/content/docs/guide/persisted-state.md b/docs-site/content/guide/persisted-state.mdx
similarity index 76%
rename from docs-site/src/content/docs/guide/persisted-state.md
rename to docs-site/content/guide/persisted-state.mdx
index 617d631..5518e45 100644
--- a/docs-site/src/content/docs/guide/persisted-state.md
+++ b/docs-site/content/guide/persisted-state.mdx
@@ -1,7 +1,7 @@
---
title: Persisted State
-sidebar:
- order: 70
+description: "Keep selected reactive preferences across reloads with persist and stable storage keys."
+order: 70
---
`persist(...)` is one of Regor’s highest-leverage features:
@@ -10,6 +10,11 @@ sidebar:
2. It returns the same ref instance, so it can be used inline in context creation.
3. State is restored from `localStorage` on startup.
+
+ Preferences Storage keys Persistence
+ Persist deliberate preferences, then use those refs throughout the interface.
+
+
## Why it matters
For static-first sites with dynamic islands, `persist` lets each island keep user state without extra storage wiring.
@@ -96,6 +101,8 @@ const context = {
3. If key is empty, `persist` throws.
4. Updates are synced via reactive observation.
+Use an application prefix and version when needed. Keep private data and short-lived UI state out of a preferences store.
+
## Key strategy
Use namespaced keys:
diff --git a/docs-site/src/content/docs/guide/reactivity.md b/docs-site/content/guide/reactivity.mdx
similarity index 73%
rename from docs-site/src/content/docs/guide/reactivity.md
rename to docs-site/content/guide/reactivity.mdx
index e405e5f..29b2cd3 100644
--- a/docs-site/src/content/docs/guide/reactivity.md
+++ b/docs-site/content/guide/reactivity.mdx
@@ -1,11 +1,28 @@
---
title: Reactivity
-sidebar:
- order: 10
+description: "Model state with refs, derive values with computed, and coordinate updates."
+order: 10
---
This page describes Regor reactivity based on actual runtime behavior.
+
+ State Derived values Observers
+ Keep writable state small. Derive the rest with computed values.
+
+
+## Try it live
+
+
+ A quote that recalculates itself Live Regor
+
+
Enable JavaScript to try the controls. The preview above is rendered at build time.
+
+
+
+ Move either slider or apply the discount. The subtotal, savings, and total share the same reactive state.
+
+
## Core model
1. A ref is a callable value container (`r()`, `r(newValue)`) with `.value` alias.
@@ -67,6 +84,8 @@ Key behavior:
2. Arrays/Map/Set are made reactive via prototype adaptation.
3. `sref(sourceRef)` returns the same ref instance.
+Choose cref() when you need a copy, or sref() when you want to replace plain values yourself.
+
## Access and update forms
For `ref`, `cref`, and `sref`:
@@ -189,3 +208,5 @@ const plain = flatten(state)
1. [API Reference](/api)
2. [Lifecycle and Cleanup](/guide/lifecycle-and-cleanup)
3. [Templates and Expressions](/guide/templates)
+
+
diff --git a/docs-site/src/content/docs/guide/templates.md b/docs-site/content/guide/templates.mdx
similarity index 76%
rename from docs-site/src/content/docs/guide/templates.md
rename to docs-site/content/guide/templates.mdx
index 3ef2ff0..4f38173 100644
--- a/docs-site/src/content/docs/guide/templates.md
+++ b/docs-site/content/guide/templates.mdx
@@ -1,11 +1,28 @@
---
title: Templates and Expressions
-sidebar:
- order: 20
+description: "Connect HTML to state with expressions, keyed lists, events, and form bindings."
+order: 20
---
This page describes how Regor turns templates into live bindings, and what expression syntax is supported in runtime.
+
+ Expressions Lists Forms
+ The template declares the view. Your context supplies its state and behavior.
+
+
+## Try it live
+
+
+ A service board that responds Live Regor
+
+
Enable JavaScript to try the controls. The preview above is rendered at build time.
+
+
+
+ Search by name or region, filter by status, and change individual services. The list uses r-model, r-if, and a keyed r-for.
+
+
## Template Sources
Regor accepts templates from multiple sources in `createApp(...)` / `defineComponent(...)`:
@@ -106,6 +123,8 @@ Both forms are supported for expression-based keys:
Nested paths such as `a.b.c.d` are supported.
Use stable domain IDs for predictable updates.
+Use an item identity such as service.id. A position in a filtered list does not identify the same item over time.
+
## Practical Patterns
1. Prefer `r-text` for hot repeated rows.
@@ -223,3 +242,5 @@ Use these when docs/snippets must display `{{ ... }}` without binding.
2. [Reactivity](/guide/reactivity)
3. [Components](/guide/components)
4. [r-for](/directives/r-for)
+
+
diff --git a/docs-site/src/content/docs/guide/troubleshooting.md b/docs-site/content/guide/troubleshooting.mdx
similarity index 85%
rename from docs-site/src/content/docs/guide/troubleshooting.md
rename to docs-site/content/guide/troubleshooting.mdx
index 086601c..d14f201 100644
--- a/docs-site/src/content/docs/guide/troubleshooting.md
+++ b/docs-site/content/guide/troubleshooting.mdx
@@ -1,11 +1,16 @@
---
title: Troubleshooting
-sidebar:
- order: 90
+description: "Trace mounting, bindings, component inputs, and cleanup problems from symptom to cause."
+order: 90
---
Use this page as a symptom -> cause -> fix reference based on current Regor runtime behavior.
+
+ Reproduce Inspect Isolate
+ Start with the smallest failing interaction. Follow its state from context to DOM.
+
+
## Quick Triage
Before deep debugging:
@@ -170,6 +175,8 @@ Frequent warning types and meaning:
5. Model requires ref / unsupported element:
`r-model` target is invalid for current element/source.
+Keep the mount target, state, and one failing binding. Include the Regor version and browser when sharing the reproduction.
+
## When Reporting an Issue
Include:
diff --git a/docs-site/src/content/docs/guide/typescript.md b/docs-site/content/guide/typescript.mdx
similarity index 86%
rename from docs-site/src/content/docs/guide/typescript.md
rename to docs-site/content/guide/typescript.mdx
index cf1fbf8..1ed9cd2 100644
--- a/docs-site/src/content/docs/guide/typescript.md
+++ b/docs-site/content/guide/typescript.mdx
@@ -1,11 +1,16 @@
---
title: TypeScript
-sidebar:
- order: 40
+description: "Type app contexts, component inputs, and runtime contracts without losing reactive behavior."
+order: 40
---
Regor has strong TypeScript support across app context, component context, and component head typing.
+
+ Contexts Props Validation
+ Make state and behavior explicit in your types so the editor can help you compose them.
+
+
## Why this matters
You can model app and component state with real TypeScript types (interfaces/classes), and keep runtime template syntax concise.
@@ -95,6 +100,8 @@ const Card = defineComponent(
```
+TypeScript checks your code during development. Use head.validateProps when component inputs also need a runtime contract.
+
## Typed runtime prop validation with `head.validateProps(...)`
`validateProps(...)` is typed from `ComponentHead`, so editor completion can suggest known prop keys while you write the schema.
diff --git a/docs-site/content/header.mdx b/docs-site/content/header.mdx
new file mode 100644
index 0000000..8282b54
--- /dev/null
+++ b/docs-site/content/header.mdx
@@ -0,0 +1 @@
+
diff --git a/docs-site/content/home.ts b/docs-site/content/home.ts
new file mode 100644
index 0000000..0a6cf45
--- /dev/null
+++ b/docs-site/content/home.ts
@@ -0,0 +1,54 @@
+import { createApp, html, ref } from 'regor'
+import './examples/signal-chart'
+
+const count = ref(0)
+createApp(
+ {
+ count,
+ increment: () => count(count() + 1),
+ reset: () => count(0),
+ },
+ {
+ selector: '#counter',
+ template: html`
+ 0
+ count
+
+
+
+ +1
+
+
+ Reset
+
+
`,
+ },
+)
+
+const status = document.getElementById('copy-status')
+for (const button of document.querySelectorAll(
+ '[data-copy]',
+)) {
+ button.addEventListener('click', async () => {
+ const source = document.getElementById(button.dataset.copy ?? '')
+ if (!source) return
+ try {
+ await navigator.clipboard.writeText(source.textContent?.trim() ?? '')
+ if (status) status.textContent = 'Install command copied.'
+ } catch {
+ const range = document.createRange()
+ range.selectNodeContents(source)
+ const selection = window.getSelection()
+ selection?.removeAllRanges()
+ selection?.addRange(range)
+ if (status)
+ status.textContent = 'Command selected. Use your browser’s Copy action.'
+ }
+ })
+}
diff --git a/docs-site/content/index.mdx b/docs-site/content/index.mdx
new file mode 100644
index 0000000..6649799
--- /dev/null
+++ b/docs-site/content/index.mdx
@@ -0,0 +1,132 @@
+---
+title: Reactive UI for HTML and SVG
+description: A reactive UI library for TypeScript. Connect state to HTML and SVG, compose components, and update the DOM directly.
+template: regor
+order: 1
+nav:
+ title: Home
+layout:
+ fullWidth: true
+ showNav: false
+ showToc: false
+---
+
+
+
+
+
Regor · Open source UI library
+
Small signals.Big possibilities.
+
Regor is a reactive UI library for TypeScript. Connect state to HTML and SVG, compose components, and update the DOM directly.
+
+ Start building
+ Explore the guide
+
+
$ npm install regor Copy
+
+
+
+
+
Two files. One reactive counter. REGOR
+
+
+
+
+```ts
+import { createApp, ref } from 'regor'
+
+const count = ref(0)
+
+createApp({
+ count,
+ increment: () => count(count() + 1),
+ reset: () => count(0),
+}, { selector: '#counter' })
+```
+
+
+
+
+```html
+
+ 0
+ +1
+ Reset
+
+```
+
+
+
+
+
+
Live preview · try it
+
+
Enable JavaScript to try the live counter.
+
+
State → DOM. Directly. No Virtual DOM.
+
+
+
+
+
+
DOM-first Enhance the markup you already have.
+
Fine-grained reactivity Refs, computed values, and observers.
+
TypeScript-native Typed props, contexts, and components.
+
+
+
+ 01 / Closer to the web
State to screen. With less ceremony. Bind a single element or compose an application. The same primitives connect your state, markup, and components.
+
+
+
+
+
+
+
+
+
+
02 / A beautiful full circle Better together. From UI to docs. Regor powers PureStack's UI. It renders PureStack's components and powers its interactive browser applications.
PureStack builds Regor's docs. It turns this site's Markdown, Regor components, and typed styles into HTML, CSS, and JavaScript.
This site puts both to work: PureStack generates the pages, and Regor runs the interactive examples.
+
+
+
Reactive UI →
+
+
Regor Reactive UI library
PureStack Static site generator
+
← This documentation
+
+
Built with PureStack. Interactive with Regor.
+
+
+
+
+
+ 03 / Find your next step
Start here. Keep building. Follow the guide to your first app, then use the directive and API references as you build.
+
+
+
+
+
+
+
+
+
+ 04 / State in motion
Reactive data. Live SVG. Change the workload, adjust intensity, or toggle streams. The chart and its metrics update from the same state.
+
+ This is a static preview. Enable JavaScript to animate the chart and try the controls.
+
+ Explore the sourceState · SVG template · animation lifecycle
+
+
+
+
+
+
+
+
+ Refs hold the state. Computed values derive the curves and metrics. Keyed SVG elements update in place. Learn about reactivity and lifecycle cleanup .
+
+
+Make your next idea reactive. Add Regor to your project and connect your first piece of state.
Start building
+
+
diff --git a/docs-site/content/overview.mdx b/docs-site/content/overview.mdx
new file mode 100644
index 0000000..4370c27
--- /dev/null
+++ b/docs-site/content/overview.mdx
@@ -0,0 +1,128 @@
+---
+title: Overview
+description: "Understand Regor’s reactive state, expressive templates, and direct DOM updates."
+order: 2
+---
+
+Regor is a reactive UI library designed for engineers who want:
+
+1. Direct control over runtime behavior.
+2. A powerful template/directive model.
+3. TypeScript-friendly reactivity primitives.
+4. Freedom to optimize with plain JavaScript and DOM when needed.
+
+Regor is intentionally practical. It does not force one rigid rendering architecture for every use case.
+
+Reactive state Expressive templates Direct DOM updates Choose your mount boundary, connect state to markup, and compose the interactions your interface needs.
+
+## Architecture Positioning
+
+Regor is Vue-inspired in directive syntax, but different by architecture.
+
+1. Regor does not rely on a Virtual DOM layer.
+2. Regor can bind existing server-rendered/static markup in place.
+3. Regor supports runtime composition and reentrance across already-mounted regions.
+4. Regor keeps optimization escape hatches close to plain DOM and JavaScript.
+
+
+ 01 / State Refs and computed Store writable values and derive the values that depend on them.
+ 02 / Template Expressions and directives Declare how state appears in HTML and SVG, and how events update it.
+ 03 / View The actual DOM Regor updates the bound nodes as their reactive dependencies change.
+
+
+## Why Teams Choose Regor
+
+### 1. Runtime flexibility without lock-in
+
+Regor can bind existing markup and progressively enhance real pages. You can adopt it incrementally instead of rewriting everything.
+
+### 2. Reactivity that stays explicit
+
+You get `ref`, `sref`, `computed`, `watchEffect`, `observe`, and batching primitives. State flows are explicit and composable.
+
+Control APIs like `pause`, `resume`, and `entangle` help you shape update behavior intentionally in complex flows.
+
+### 3. Directive model with real depth
+
+Regor supports rich directive workflows:
+
+1. Conditional rendering (`r-if`, `r-else-if`, `r-else`, `r-show`).
+2. List rendering (`r-for` with keys, table use cases, nested structures).
+3. Attribute/property/class/style/event binding (`r-bind`, `.prop`, `.camel`, `:class`, `:style`, `@event`).
+4. Form binding (`r-model`) and dynamic components (`:is`, `:context`).
+
+### 4. Excellent fit for mixed environments
+
+Regor works well when part of your DOM is owned by other systems, or when performance-critical sections need custom handling.
+
+### 5. TypeScript without framework-only indirection
+
+Regor uses plain TypeScript code paths for app and component contexts (`createApp`, `ComponentHead`, interfaces/classes). You keep normal TS ergonomics without relying on custom file format compilers.
+
+## See the flow in action
+
+
+ One state model, a connected view Live Regor
+
+
Enable JavaScript to try the controls. This is a static preview.
+
+
+
+ Inputs update refs. Computed values derive the quote. Template bindings update the displayed totals. Explore reactivity and templates to follow the same example in detail.
+
+
+## Core Philosophy
+
+Regor’s philosophy is:
+
+1. Keep defaults productive.
+2. Keep escape hatches available.
+3. Keep internals understandable.
+4. Keep control in developers’ hands.
+
+## What Regor Is Not Trying To Be
+
+Regor is not built around artificial constraints to optimize only one benchmark shape. It is built for real product constraints where integration flexibility matters.
+
+If your app needs:
+
+1. Existing-markup binding.
+2. Runtime composition.
+3. Context flexibility.
+4. Controlled optimization paths.
+
+Regor is a strong fit.
+
+## Regor vs Vue (Practical Lens)
+
+1. Vue is a strong default for framework-owned SPA architecture.
+2. Regor is a strong default for progressive enhancement and static-first plus dynamic-island architectures.
+3. Vue commonly centers build tooling for peak DX/perf in SPA workflows.
+4. Regor keeps build-less and CSP-constrained runtime options first-class.
+5. Both are capable; pick based on rendering ownership and deployment constraints.
+
+## Practical Tradeoffs
+
+Decide which region Regor owns, then measure the interactions that matter there. The mounting and performance guides explore these choices.
+
+Regor favors flexibility and control. In very binding-dense paths, runtime cost can grow with total DOM + binding volume. This is normal for highly dynamic runtime systems.
+
+The upside is that Regor keeps optimization options open:
+
+1. Reduce binding density where it matters.
+2. Use stable keying and list strategies.
+3. Drop to targeted custom logic in hot sections.
+4. Keep the rest of the app high-level and maintainable.
+
+## Recommended Reading Order
+
+
+ Getting Started Install Regor and mount your first view.
Explore getting started
+ Guide Explore state, templates, components, and cleanup.
Explore guide
+ Directives Try every directive with a focused live preview.
Explore directives
+ API Reference Look up signatures and practical usage examples.
Explore api reference
+ Performance Guide Measure, profile, and verify changes to your interface.
Explore performance guide
+
+
+
+
diff --git a/docs-site/content/purestack.config.ts b/docs-site/content/purestack.config.ts
new file mode 100644
index 0000000..727f178
--- /dev/null
+++ b/docs-site/content/purestack.config.ts
@@ -0,0 +1,4 @@
+import { defineConfig } from 'purestack'
+import { regorPlugin } from '../design/plugin'
+
+export default defineConfig({ plugins: [regorPlugin] })
diff --git a/docs-site/public/sample.html b/docs-site/content/sample.html
similarity index 100%
rename from docs-site/public/sample.html
rename to docs-site/content/sample.html
diff --git a/docs-site/content/siteConfig.json b/docs-site/content/siteConfig.json
new file mode 100644
index 0000000..a7e6718
--- /dev/null
+++ b/docs-site/content/siteConfig.json
@@ -0,0 +1,100 @@
+{
+ "$schema": "../node_modules/@purestack/ts-ssg/schema/siteConfig.schema.json",
+ "siteTitle": "Regor",
+ "favicon": "lucide:orbit",
+ "logo": {
+ "brand": "Regor",
+ "icon": "lucide:orbit",
+ "markStyle": "solid",
+ "markBackground": "var(--ps-semantic-tone-accent-button-rest-background)",
+ "markColor": "var(--ps-semantic-tone-accent-button-rest-text)",
+ "href": "/",
+ "ariaLabel": "Regor home",
+ "suffix": "",
+ "size": "md"
+ },
+ "style": {
+ "themes": ["light", "dark"],
+ "theme": {
+ "skin": "regor"
+ },
+ "fileName": "site.css",
+ "href": "/assets/site.css",
+ "pretty": false
+ },
+ "navigation": {
+ "mode": "hybrid",
+ "navFileName": "_nav.json",
+ "maxDepth": 3,
+ "includeIndex": true,
+ "sortBy": "order",
+ "roots": ["api"],
+ "variant": "spotlight",
+ "class": "spotlight-from-bottom-right"
+ },
+ "pageToc": {
+ "enabled": true
+ },
+ "pagefind": {
+ "enabled": true,
+ "excludePaths": []
+ },
+ "sitemap": {
+ "enabled": true,
+ "baseUrl": "https://regor.purestack.studio",
+ "robots": {
+ "enabled": true,
+ "host": "regor.purestack.studio",
+ "fileName": "robots.txt",
+ "userAgent": "*",
+ "allow": ["/"],
+ "disallow": [],
+ "crawlDelay": 2,
+ "additionalSitemaps": [],
+ "customDirectives": ["# Generated by PureStack"]
+ },
+ "fileName": "sitemap.xml"
+ },
+ "preview": {
+ "title": "Regor | Small signals. Big possibilities.",
+ "description": "A reactive UI library for TypeScript. Connect state to HTML and SVG, compose components, and update the DOM directly.",
+ "siteName": "Regor",
+ "image": "/assets/social-preview.png",
+ "imageAlt": "Regor. Small signals. Big possibilities. Reactive UI for HTML and SVG, in chartreuse on graphite.",
+ "imageWidth": 1200,
+ "imageHeight": 630,
+ "twitterCard": "summary_large_image"
+ },
+ "mdx": {
+ "highlighter": "shiki"
+ },
+ "outDir": "../dist/web-dev",
+ "publishDir": "../dist/web",
+ "auth": {
+ "enabled": false,
+ "signUp": false
+ },
+ "html": {
+ "minify": true
+ },
+ "scripts": {
+ "cacheBusting": true
+ },
+ "consent": {
+ "enabled": true,
+ "policyVersion": "2026-10-07",
+ "privacyPolicyUrl": "https://purestack.studio/legal/privacy/",
+ "categories": [
+ {
+ "id": "necessary",
+ "label": "Necessary",
+ "required": true
+ }
+ ],
+ "services": []
+ },
+ "docLayout": {
+ "sidebarTop": "5.5625rem",
+ "sidebarTopMobile": "4.875rem"
+ }
+}
diff --git a/docs-site/design/apiComponents.ts b/docs-site/design/apiComponents.ts
new file mode 100644
index 0000000..1a70a43
--- /dev/null
+++ b/docs-site/design/apiComponents.ts
@@ -0,0 +1,13 @@
+import { defineComponent } from 'regor'
+import { apiExamples } from '../content/api/demos/examples'
+
+export function defineApiComponents() {
+ return Object.fromEntries(
+ Object.entries(apiExamples).map(([name, example]) => [
+ `Api${name[0].toUpperCase()}${name.slice(1)}`,
+ defineComponent(example.template, {
+ context: () => example.create(),
+ }),
+ ]),
+ )
+}
diff --git a/docs-site/design/apiStyles.ts b/docs-site/design/apiStyles.ts
new file mode 100644
index 0000000..3d4a2e4
--- /dev/null
+++ b/docs-site/design/apiStyles.ts
@@ -0,0 +1,42 @@
+import type { Style } from '@purestack/ts-css'
+import type { ThemePalette } from '@purestack/ts-style'
+
+export function registerApiStyles(root: Style, palette: ThemePalette) {
+ const t = palette.semanticTone
+ root.select('.api-jumps').css({ gap: '8px', marginBlock: '24px' })
+ root.select('.api-jumps .btn').css({ fontSize: '12px' })
+ root.select('.api-map h3').css({
+ fontFamily: "'Cascadia Code', Consolas, monospace",
+ fontSize: '18px',
+ overflowWrap: 'anywhere',
+ })
+ root.select('.api-comparison').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',
+ gap: '12px',
+ })
+ root.select('.api-comparison .directive-card').css({ padding: '16px' })
+ root.select('.api-snapshot').css({
+ margin: '16px 0 0',
+ padding: '16px',
+ borderRadius: '8px',
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ color: t.neutral.text.default,
+ fontSize: '12px',
+ lineHeight: '1.7',
+ whiteSpace: 'pre-wrap',
+ overflowWrap: 'anywhere',
+ maxWidth: '100%',
+ })
+ root.select('.api-actions').css({ marginTop: '20px' })
+ root.select('.guide-metrics.api-metrics-pair').css({
+ gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',
+ })
+ root
+ .select('.api-comparison p')
+ .css({ color: t.neutral.text.subtle, fontSize: '12px' })
+ root
+ .media('max-width: 640px')
+ .select('.api-comparison')
+ .css({ gridTemplateColumns: 'minmax(0, 1fr)' })
+}
diff --git a/docs-site/design/assets/social-preview.svg b/docs-site/design/assets/social-preview.svg
new file mode 100644
index 0000000..4cee33e
--- /dev/null
+++ b/docs-site/design/assets/social-preview.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+Regor.
+Small signals.
+Big possibilities.
+Reactive UI for HTML and SVG.
+Built with TypeScript. Close to your DOM.
+
+
+
+
+
+
+
+DIRECT DOM / REACTIVE STATE / OPEN SOURCE regor.purestack.studio
\ No newline at end of file
diff --git a/docs-site/design/chartStyles.ts b/docs-site/design/chartStyles.ts
new file mode 100644
index 0000000..87562e9
--- /dev/null
+++ b/docs-site/design/chartStyles.ts
@@ -0,0 +1,334 @@
+import type { Style } from '@purestack/ts-css'
+import type { ThemePalette } from '@purestack/ts-style'
+import { regorColors } from './skin'
+
+const mono = "'Cascadia Code', 'SFMono-Regular', Consolas, monospace"
+
+export function registerChartStyles(root: Style, palette: ThemePalette) {
+ const t = palette.semanticTone
+ root.select('.signal-demo').css({ paddingTop: '0' })
+ root.select('.signal-dashboard').css({
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '16px',
+ background: t.neutral.canvas,
+ color: t.neutral.text.default,
+ overflow: 'hidden',
+ boxShadow: palette.effect.softShadow,
+ })
+ root.select('.signal-toolbar').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '24px',
+ padding: '28px 32px',
+ borderBottom: `1px solid ${t.neutral.border.subtle}`,
+ })
+ root.select('.signal-kicker').css({
+ color: t.accent.text.default,
+ font: `11px/1.5 ${mono}`,
+ letterSpacing: '1.5px',
+ })
+ root.select('.signal-toolbar h3').css({
+ fontSize: '20px',
+ marginTop: '7px',
+ letterSpacing: '-0.5px',
+ color: t.neutral.text.default,
+ })
+ root.select('.signal-actions').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '10px',
+ flexWrap: 'wrap',
+ })
+ root.select('.signal-status').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '8px',
+ marginRight: '10px',
+ color: t.neutral.text.subtle,
+ font: `10px/1.5 ${mono}`,
+ whiteSpace: 'nowrap',
+ })
+ root.select('.signal-status i').css({
+ width: '6px',
+ height: '6px',
+ background: t.neutral.text.subtle,
+ borderRadius: '50%',
+ })
+ root.select('.signal-status.is-live i').css({
+ background: regorColors.signal,
+ boxShadow: `0 0 0 4px ${regorColors.signal}16`,
+ })
+ root.select('.signal-button').css({
+ padding: '9px 12px',
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '6px',
+ background: t.neutral.surface.rest.bgcolor,
+ color: t.neutral.text.default,
+ fontSize: '12px !important',
+ lineHeight: '1.4',
+ transition: 'border-color 160ms',
+ })
+ root
+ .select('.signal-button:hover')
+ .css({ borderColor: t.accent.text.default })
+ root
+ .select(
+ '.signal-dashboard button:disabled, .signal-dashboard input:disabled, .signal-dashboard select:disabled',
+ )
+ .css({ cursor: 'default', opacity: '0.6' })
+ root.select('.signal-controls').css({
+ display: 'flex',
+ alignItems: 'end',
+ flexWrap: 'wrap',
+ gap: '24px',
+ padding: '24px 32px',
+ })
+ root.select('.signal-field').css({
+ display: 'flex',
+ flexWrap: 'wrap',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '8px',
+ width: '170px',
+ font: `10px/1.5 ${mono}`,
+ color: t.neutral.text.subtle,
+ })
+ root.select('.signal-field select').css({
+ width: '100%',
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '6px',
+ background: t.neutral.surface.rest.bgcolor,
+ color: t.neutral.text.default,
+ padding: '9px',
+ font: '12px/1.5 inherit',
+ })
+ root.select('.signal-dashboard input[type=range]').css({
+ accentColor: regorColors.signal,
+ cursor: 'pointer',
+ minWidth: '0',
+ height: '18px',
+ margin: '0',
+ })
+ root
+ .select('.signal-intensity input')
+ .css({ width: '100%', marginBlock: '8px !important' })
+ root.select('.signal-legend').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '8px',
+ marginLeft: 'auto',
+ flexWrap: 'wrap',
+ paddingBottom: '3px',
+ })
+ root.select('.signal-chip').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '7px',
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '6px',
+ padding: '8px 11px',
+ background: 'transparent',
+ color: t.neutral.text.default,
+ fontSize: '12px !important',
+ lineHeight: '1.4',
+ })
+ root.select('.signal-chip i, .signal-readouts i').css({
+ background: 'var(--signal-color)',
+ width: '7px',
+ height: '7px',
+ borderRadius: '50%',
+ flexShrink: '0',
+ })
+ root.select('.signal-chip.is-hidden').css({ opacity: '0.45' })
+ root.select('.signal-chip:hover').css({ borderColor: 'var(--signal-color)' })
+ root.select('.signal--search').set('--signal-color', regorColors.signal)
+ root.select('.signal--events').set('--signal-color', '#efb1df')
+ root.select('.signal--jobs').set('--signal-color', '#f2f3ed')
+ root.select('.signal-metrics').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(3,minmax(0,1fr))',
+ gap: '24px',
+ padding: '4px 32px 24px',
+ })
+ root.select('.signal-metrics > div > span').css({
+ display: 'block',
+ color: t.neutral.text.subtle,
+ font: `10px/1.5 ${mono}`,
+ })
+ root.select('.signal-metrics strong').css({
+ display: 'block',
+ marginTop: '8px',
+ fontSize: '30px',
+ fontWeight: '550',
+ lineHeight: '1.2',
+ letterSpacing: '-1px',
+ fontVariantNumeric: 'tabular-nums',
+ })
+ root.select('.signal-metrics small').css({
+ fontSize: '11px',
+ color: t.neutral.text.subtle,
+ fontWeight: '400',
+ letterSpacing: '0',
+ })
+ root
+ .select('.signal-plot')
+ .css({ position: 'relative', marginInline: '16px' })
+ root.select('.signal-svg').css({
+ display: 'block',
+ width: '100%',
+ height: 'auto',
+ overflow: 'visible',
+ touchAction: 'pan-y',
+ })
+ root
+ .select('.signal-svg text')
+ .css({ font: `10px/1 ${mono}`, fill: t.neutral.text.subtle })
+ root.select('.signal-grid line').css({
+ stroke: t.neutral.border.subtle,
+ strokeDasharray: '3 6',
+ vectorEffect: 'non-scaling-stroke',
+ })
+ root
+ .select('.signal-axis-label')
+ .css({ fontSize: '8px !important', letterSpacing: '1px' })
+ root.select('.signal-line').css({
+ fill: 'none',
+ stroke: 'var(--signal-color)',
+ strokeWidth: '2.2px',
+ strokeLinecap: 'round',
+ strokeLinejoin: 'round',
+ vectorEffect: 'non-scaling-stroke',
+ })
+ root.select('.signal-stop').css({ stopColor: 'var(--signal-color)' })
+ root.select('.signal-cursor').css({
+ stroke: t.neutral.text.subtle,
+ strokeDasharray: '3 5',
+ strokeOpacity: '0.45',
+ vectorEffect: 'non-scaling-stroke',
+ })
+ root.select('.signal-point').css({
+ fill: t.neutral.canvas,
+ stroke: 'var(--signal-color)',
+ strokeWidth: '2px',
+ vectorEffect: 'non-scaling-stroke',
+ })
+ root.select('.signal-empty').css({
+ position: 'absolute',
+ top: '40%',
+ left: '0',
+ right: '0',
+ textAlign: 'center',
+ fontSize: '13px',
+ color: t.neutral.text.subtle,
+ })
+ root.select('.signal-inspector').css({
+ display: 'flex',
+ alignItems: 'center',
+ flexWrap: 'wrap',
+ gap: '20px',
+ padding: '18px 32px',
+ borderTop: `1px solid ${t.neutral.border.subtle}`,
+ })
+ root.select('.signal-sample').css({
+ color: t.neutral.text.subtle,
+ font: `10px/1.5 ${mono}`,
+ whiteSpace: 'nowrap',
+ })
+ root.select('.signal-readouts').css({
+ display: 'flex',
+ alignItems: 'center',
+ flexWrap: 'wrap',
+ gap: '18px',
+ fontSize: '12px',
+ })
+ root.select('.signal-readouts > span').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '7px',
+ color: t.neutral.text.subtle,
+ })
+ root.select('.signal-readouts strong').css({
+ color: 'var(--signal-color)',
+ font: `12px/1.5 ${mono}`,
+ minWidth: '24px',
+ })
+ root.select('.signal-scrubber').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '10px',
+ font: `10px/1.5 ${mono}`,
+ color: t.neutral.text.subtle,
+ marginLeft: 'auto',
+ })
+ root.select('.signal-scrubber input').css({ width: '120px' })
+ root.select('.signal-footnote').css({
+ display: 'flex',
+ justifyContent: 'space-between',
+ gap: '16px',
+ padding: '12px 32px',
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ color: t.neutral.text.subtle,
+ font: `9px/1.5 ${mono}`,
+ })
+ root.select('.signal-source').css({
+ marginTop: '16px',
+ border: `1px solid ${t.neutral.border.subtle}`,
+ borderRadius: '10px',
+ background: t.neutral.surface.rest.bgcolor,
+ overflow: 'hidden',
+ })
+ root.select('.signal-source summary').css({
+ padding: '18px 24px',
+ cursor: 'pointer',
+ fontSize: '13px',
+ fontWeight: '600',
+ })
+ root.select('.signal-source summary span').css({
+ float: 'right',
+ color: t.neutral.text.subtle,
+ font: `10px/1.8 ${mono}`,
+ })
+ root
+ .select('.signal-source .tabs__panel-body')
+ .css({ maxHeight: '420px', overflowY: 'auto' })
+ root.select('.signal-source pre').css({
+ margin: '0 !important',
+ fontSize: '12px',
+ border: '0',
+ borderRadius: '0',
+ })
+ root.select('.signal-demo-note').css({
+ marginTop: '18px !important',
+ fontSize: '12px',
+ color: t.neutral.text.subtle,
+ })
+ root
+ .select('.signal-demo-note a')
+ .css({ textDecoration: 'underline !important', textUnderlineOffset: '3px' })
+ const mobile = root.media('max-width: 760px')
+ mobile.select('.signal-toolbar').css({
+ alignItems: 'start',
+ flexDirection: 'column',
+ padding: '22px',
+ gap: '18px',
+ })
+ mobile.select('.signal-controls').css({ padding: '20px 22px', gap: '18px' })
+ mobile.select('.signal-field').css({ width: 'calc(50% - 9px)' })
+ mobile.select('.signal-legend').css({ marginLeft: '0', width: '100%' })
+ mobile.select('.signal-metrics').css({ padding: '0 22px 20px', gap: '12px' })
+ mobile.select('.signal-metrics strong').css({ fontSize: '24px' })
+ mobile
+ .select('.signal-metrics small')
+ .css({ display: 'block', marginTop: '3px' })
+ mobile.select('.signal-plot').css({ marginInline: '4px' })
+ mobile.select('.signal-svg').css({ minHeight: '180px' })
+ mobile.select('.signal-inspector').css({ padding: '16px 22px', gap: '12px' })
+ mobile.select('.signal-readouts').css({ width: '100%', gap: '12px' })
+ mobile.select('.signal-scrubber').css({ marginLeft: '0', width: '100%' })
+ mobile.select('.signal-scrubber input').css({ flex: '1' })
+ mobile
+ .select('.signal-footnote')
+ .css({ padding: '12px 22px', flexDirection: 'column', gap: '4px' })
+ mobile.select('.signal-source summary span').css({ display: 'none' })
+}
diff --git a/docs-site/design/components.ts b/docs-site/design/components.ts
new file mode 100644
index 0000000..2ed3875
--- /dev/null
+++ b/docs-site/design/components.ts
@@ -0,0 +1,63 @@
+import { defineComponent, html } from 'regor'
+import {
+ type ChartModel,
+ createChartModel,
+} from '../content/examples/chart-model'
+import { chartTemplate } from '../content/examples/chart-view'
+import { defineGuideComponents } from './guideComponents'
+import { defineDirectiveComponents } from './directiveComponents'
+import { defineApiComponents } from './apiComponents'
+import { defineRegorTopBar } from './topBar'
+
+export interface RegorFeature {
+ number: string
+ title: string
+ summary: string
+ href: string
+ icon: string
+}
+
+const featureTemplate = html`
+
+ {{ number }}
+
+ {{ title }}
+ {{ summary }}
+ Explore {{ title }}
+ `
+
+export interface RegorResource {
+ number: string
+ title: string
+ summary: string
+ href: string
+}
+
+const resourceTemplate = html`
+ {{ number }}
+
+
{{ title }}
+
{{ summary }}
+
+
+ `
+
+export function defineRegorComponents() {
+ return {
+ RegorTopBar: defineRegorTopBar(),
+ ...defineGuideComponents(),
+ ...defineDirectiveComponents(),
+ ...defineApiComponents(),
+ SignalChart: defineComponent(chartTemplate, {
+ context: () => createChartModel(),
+ }),
+ RegorFeature: defineComponent(featureTemplate, {
+ props: ['number', 'title', 'summary', 'href', 'icon'],
+ }),
+ RegorResource: defineComponent(resourceTemplate, {
+ props: ['number', 'title', 'summary', 'href'],
+ }),
+ }
+}
diff --git a/docs-site/design/directiveComponents.ts b/docs-site/design/directiveComponents.ts
new file mode 100644
index 0000000..aa08b16
--- /dev/null
+++ b/docs-site/design/directiveComponents.ts
@@ -0,0 +1,13 @@
+import { defineComponent } from 'regor'
+import { directiveExamples } from '../content/directives/demos/examples'
+
+export function defineDirectiveComponents() {
+ return Object.fromEntries(
+ Object.entries(directiveExamples).map(([name, example]) => [
+ `Directive${name[0].toUpperCase()}${name.slice(1)}`,
+ defineComponent(example.template, {
+ context: () => example.create(),
+ }),
+ ]),
+ )
+}
diff --git a/docs-site/design/directiveStyles.ts b/docs-site/design/directiveStyles.ts
new file mode 100644
index 0000000..dac8e55
--- /dev/null
+++ b/docs-site/design/directiveStyles.ts
@@ -0,0 +1,97 @@
+import type { Style } from '@purestack/ts-css'
+import type { ThemePalette } from '@purestack/ts-style'
+import { regorColors } from './skin'
+
+export function registerDirectiveStyles(root: Style, palette: ThemePalette) {
+ const t = palette.semanticTone
+ root.select('.directive-output').css({
+ display: 'block',
+ fontSize: '24px',
+ fontWeight: '600',
+ lineHeight: '1.5',
+ marginTop: '16px',
+ overflowWrap: 'anywhere',
+ })
+ root.select('.directive-card').css({
+ padding: '20px',
+ marginTop: '20px',
+ background: t.neutral.surface.rest.bgcolor,
+ color: t.neutral.text.default,
+ border: `1px solid ${t.neutral.border.subtle}`,
+ borderRadius: '10px',
+ overflowWrap: 'anywhere',
+ })
+ root
+ .select('.guide-demo--split > .directive-card')
+ .css({ marginTop: '0', alignSelf: 'center' })
+ root
+ .select('.directive-card > strong')
+ .css({ display: 'block', fontSize: '18px', marginTop: '12px' })
+ root.select('.directive-card kbd').css({
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '4px',
+ padding: '2px 6px',
+ })
+ root.select('.directive-values').css({ margin: '18px 0 0' })
+ root.select('.directive-values > div').css({
+ display: 'flex',
+ flexWrap: 'wrap',
+ justifyContent: 'space-between',
+ gap: '8px 16px',
+ padding: '8px 0',
+ borderBottom: `1px solid ${t.neutral.border.subtle}`,
+ })
+ root
+ .select('.directive-values dt')
+ .css({ color: t.neutral.text.subtle, fontSize: '12px' })
+ root
+ .select('.directive-values dd')
+ .css({ margin: '0', fontWeight: '600', overflowWrap: 'anywhere' })
+ root.select('.directive-class-card.is-highlighted').css({
+ background: t.accent.surface.rest.bgcolor,
+ borderColor: t.accent.border.default,
+ })
+ root.select('.directive-class-card.is-muted').css({ opacity: '0.55' })
+ root.select('.directive-bar-track').css({
+ padding: '8px',
+ borderRadius: '16px',
+ marginTop: '24px',
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ border: `1px solid ${t.neutral.border.subtle}`,
+ })
+ root.select('.directive-bar').css({
+ display: 'flex',
+ alignItems: 'center',
+ minHeight: '64px',
+ minWidth: '40px',
+ padding: '12px',
+ fontWeight: '700',
+ color: regorColors.onSignal,
+ background: regorColors.signal,
+ })
+ root.select('.directive-zones').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',
+ gap: '16px',
+ })
+ root
+ .select('.directive-literal')
+ .css({ fontFamily: "'Cascadia Code', Consolas, monospace" })
+ root.select('.directive-portal-message').css({
+ padding: '16px',
+ borderRadius: '6px',
+ background: t.accent.surface.rest.bgcolor,
+ marginTop: '16px',
+ overflowWrap: 'anywhere',
+ })
+ root.select('.guide-step-title').css({
+ display: 'block',
+ margin: '12px 0 8px',
+ fontSize: '20px',
+ lineHeight: '1.4',
+ })
+ root
+ .media('max-width: 640px')
+ .select('.directive-zones')
+ .css({ gridTemplateColumns: 'minmax(0, 1fr)' })
+}
diff --git a/docs-site/design/guideComponents.ts b/docs-site/design/guideComponents.ts
new file mode 100644
index 0000000..270e724
--- /dev/null
+++ b/docs-site/design/guideComponents.ts
@@ -0,0 +1,35 @@
+import { defineComponent } from 'regor'
+import {
+ createCounter,
+ counterTemplate,
+} from '../content/examples/first-app/counter'
+import { createQuote, quoteTemplate } from '../content/guide/demos/quote'
+import {
+ createServices,
+ servicesTemplate,
+} from '../content/guide/demos/services'
+import { createProfile, profileTemplate } from '../content/guide/demos/profile'
+import {
+ createLifecycle,
+ lifecycleTemplate,
+} from '../content/guide/demos/lifecycle'
+
+export function defineGuideComponents() {
+ return {
+ GettingStartedCounter: defineComponent(counterTemplate, {
+ context: () => createCounter(),
+ }),
+ GuideQuote: defineComponent(quoteTemplate, {
+ context: () => createQuote(),
+ }),
+ GuideServices: defineComponent(servicesTemplate, {
+ context: () => createServices(),
+ }),
+ GuideProfile: defineComponent(profileTemplate, {
+ context: () => createProfile(),
+ }),
+ GuideLifecycle: defineComponent(lifecycleTemplate, {
+ context: () => createLifecycle(),
+ }),
+ }
+}
diff --git a/docs-site/design/guideStyles.ts b/docs-site/design/guideStyles.ts
new file mode 100644
index 0000000..66af4fd
--- /dev/null
+++ b/docs-site/design/guideStyles.ts
@@ -0,0 +1,302 @@
+import type { Style } from '@purestack/ts-css'
+import type { ThemePalette } from '@purestack/ts-style'
+
+export function registerGuideStyles(root: Style, palette: ThemePalette) {
+ const t = palette.semanticTone
+ const ink = t.neutral.text.default
+ const muted = t.neutral.text.subtle
+ const edge = t.neutral.border.subtle
+ const accent = t.accent.text.default
+ root
+ .select('.guide-map, .guide-orientation, .guide-example, .guide-callout')
+ .css({ marginBlock: '24px' })
+ root.select('.guide-map').css({ gap: '16px' })
+ root.select('.guide-map .panel').css({ height: '100%' })
+ root.select('.guide-map h3').css({ margin: '12px 0 8px', fontSize: '20px' })
+ root.select('.guide-map p').css({
+ margin: '0 0 18px',
+ fontSize: '14px',
+ lineHeight: '1.7',
+ color: muted,
+ })
+ root.select('.guide-map a').css({ fontWeight: '600' })
+ root.select('.template-doc .guide-map a.btn').css({ color: accent })
+ root
+ .select('.guide-orientation p, .guide-callout p')
+ .css({ margin: '8px 0 0' })
+ root.select('.guide-example').css({
+ border: `1px solid ${edge}`,
+ borderRadius: '14px',
+ overflow: 'hidden',
+ })
+ root.select('.guide-example-heading').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ flexWrap: 'wrap',
+ gap: '12px',
+ padding: '20px 24px',
+ borderBottom: `1px solid ${edge}`,
+ })
+ root
+ .select('.guide-example-heading strong')
+ .css({ fontSize: '16px', letterSpacing: '-0.3px' })
+ root.select('.guide-example .tabs').css({ margin: '0' })
+ root
+ .select('.guide-example pre')
+ .css({ maxHeight: '480px', overflow: 'auto' })
+ root.select('.guide-example-note').css({
+ margin: '0',
+ padding: '16px 24px',
+ borderTop: `1px solid ${edge}`,
+ fontSize: '13px',
+ color: muted,
+ })
+ root.select('.guide-demo').css({
+ padding: '24px',
+ background: t.neutral.canvas,
+ color: ink,
+ fontSize: '14px',
+ lineHeight: '1.6',
+ })
+ root
+ .select('.guide-demo, .guide-demo *')
+ .css({ boxSizing: 'border-box', minWidth: '0' })
+ root.select('.guide-demo p').css({ fontSize: '14px', margin: '12px 0 0' })
+ root.select('.guide-demo--split').css({
+ display: 'grid',
+ gridTemplateColumns: 'minmax(0, 1fr) minmax(0, 1fr)',
+ gap: '28px',
+ })
+ root.select('.guide-controls').css({
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'stretch',
+ gap: '12px',
+ })
+ root.select('.guide-controls > label:not(.guide-check)').css({
+ display: 'flex',
+ justifyContent: 'space-between',
+ gap: '12px',
+ fontWeight: '600',
+ })
+ root
+ .select(
+ '.guide-demo input:not([type="checkbox"]):not([type="range"]), .guide-demo select',
+ )
+ .css({
+ width: '100%',
+ padding: '10px 12px',
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '6px',
+ background: t.neutral.surface.rest.bgcolor,
+ color: ink,
+ font: 'inherit',
+ })
+ root
+ .select(
+ '.guide-demo input[type="range"], .guide-demo input[type="checkbox"]',
+ )
+ .css({ accentColor: accent })
+ root
+ .select('.guide-demo input[type="range"]')
+ .css({ width: '100%', margin: '2px 0 12px' })
+ root.select('.guide-check').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '10px',
+ fontSize: '13px',
+ })
+ root.select('.guide-demo button').css({
+ padding: '9px 14px',
+ border: `1px solid ${t.neutral.border.default}`,
+ borderRadius: '6px',
+ background: t.neutral.surface.rest.bgcolor,
+ color: ink,
+ font: 'inherit',
+ cursor: 'pointer',
+ alignSelf: 'flex-start',
+ })
+ root.select('.guide-demo button:hover').css({ borderColor: accent })
+ root
+ .select('.guide-demo :is(button, input, select):focus-visible')
+ .css({ outline: `2px solid ${accent}`, outlineOffset: '3px' })
+ root
+ .select('.guide-demo :is(button, input, select):disabled')
+ .css({ opacity: '0.55', cursor: 'default' })
+ root.select('.guide-readout').css({
+ padding: '24px',
+ background: t.accent.surface.rest.bgcolor,
+ borderRadius: '10px',
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: 'center',
+ })
+ root.select('.guide-kicker, .guide-slot-label').css({
+ display: 'block',
+ fontSize: '10px',
+ fontWeight: '700',
+ letterSpacing: '1.1px',
+ color: accent,
+ })
+ root.select('.guide-total').css({
+ display: 'block',
+ fontSize: '42px',
+ lineHeight: '1.2',
+ letterSpacing: '-2px',
+ fontWeight: '700',
+ margin: '14px 0 20px',
+ fontVariantNumeric: 'tabular-nums',
+ })
+ root.select('.guide-readout dl').css({ margin: '0' })
+ root
+ .select('.guide-readout dl > div')
+ .css({ display: 'flex', justifyContent: 'space-between', gap: '12px' })
+ root
+ .select('.guide-readout dd')
+ .css({ margin: '0', fontVariantNumeric: 'tabular-nums' })
+ root
+ .select('.guide-readout p, .guide-hint')
+ .css({ color: muted, fontSize: '12px' })
+ root.select('.guide-filter').css({
+ display: 'grid',
+ gridTemplateColumns: 'minmax(0, 2fr) minmax(0, 1fr)',
+ gap: '16px',
+ })
+ root
+ .select('.guide-filter label')
+ .css({ display: 'grid', gap: '8px', fontWeight: '600' })
+ root.select('.guide-result-count').css({ fontSize: '12px', color: muted })
+ root
+ .select('.guide-service-list')
+ .css({ listStyle: 'none', padding: '0', margin: '16px 0' })
+ root.select('.guide-service-list li').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '12px',
+ padding: '14px 0',
+ margin: '0',
+ borderBottom: `1px solid ${edge}`,
+ })
+ root
+ .select('.guide-service-list small')
+ .css({ display: 'block', color: muted, fontSize: '12px' })
+ root.select('.guide-service-list button').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '8px',
+ whiteSpace: 'nowrap',
+ fontSize: '12px',
+ alignSelf: 'center',
+ })
+ root.select('.guide-service-list i').css({
+ width: '6px',
+ height: '6px',
+ borderRadius: '50%',
+ background: t.warning.text.default,
+ })
+ root.select('.guide-service-list .is-healthy i').css({ background: accent })
+ root.select('.guide-empty').css({ padding: '24px 0' })
+ root.select('.guide-empty button').css({ marginTop: '12px' })
+ root.select('.guide-profile-preview').css({
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: 'center',
+ gap: '16px',
+ })
+ root.select('.guide-profile').css({
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'flex-start',
+ gap: '12px',
+ padding: '24px',
+ border: `1px solid ${edge}`,
+ borderRadius: '10px',
+ background: t.neutral.surface.rest.bgcolor,
+ })
+ root.select('.guide-avatar').css({
+ display: 'grid',
+ placeItems: 'center',
+ width: '56px',
+ height: '56px',
+ flexShrink: '0',
+ borderRadius: '16px',
+ background: t.accent.surface.rest.bgcolor,
+ color: accent,
+ fontSize: '20px',
+ fontWeight: '700',
+ })
+ root
+ .select('.guide-profile h3')
+ .css({ fontSize: '20px', margin: '0', overflowWrap: 'anywhere' })
+ root.select('.guide-profile p').css({ margin: '4px 0 0', color: muted })
+ root.select('.guide-profile footer').css({
+ width: '100%',
+ paddingTop: '12px',
+ borderTop: `1px solid ${edge}`,
+ fontSize: '12px',
+ })
+ root.select('.guide-slot-label').css({ fontSize: '9px', marginBottom: '4px' })
+ root.select('.guide-profile.is-compact').css({
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ alignItems: 'center',
+ padding: '16px',
+ gap: '10px',
+ })
+ root.select('.guide-profile.is-compact .guide-avatar').css({
+ width: '36px',
+ height: '36px',
+ borderRadius: '10px',
+ fontSize: '14px',
+ })
+ root.select('.guide-profile.is-compact h3').css({ fontSize: '16px' })
+ root.select('.guide-session-bar').css({
+ display: 'flex',
+ alignItems: 'center',
+ flexWrap: 'wrap',
+ gap: '16px',
+ })
+ root
+ .select('.guide-session-bar > span')
+ .css({ color: muted, fontSize: '12px' })
+ root.select('.guide-ticker').css({ color: accent })
+ root.select('.guide-metrics').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',
+ gap: '16px',
+ marginBlock: '24px',
+ })
+ root.select('.guide-metrics > div').css({
+ padding: '16px',
+ borderRadius: '8px',
+ background: t.accent.surface.rest.bgcolor,
+ })
+ root.select('.guide-metrics output').css({
+ display: 'block',
+ fontSize: '30px',
+ fontWeight: '700',
+ fontVariantNumeric: 'tabular-nums',
+ })
+ root.select('.guide-metrics span').css({ fontSize: '12px', color: muted })
+ root.select('.guide-event').css({
+ borderLeft: `3px solid ${accent}`,
+ padding: '8px 12px',
+ background: t.neutral.surface.rest.bgcolor,
+ overflowWrap: 'anywhere',
+ })
+ root
+ .media('max-width: 640px')
+ .select('.guide-demo--split, .guide-filter')
+ .css({ gridTemplateColumns: 'minmax(0, 1fr)', gap: '20px' })
+ root
+ .media('max-width: 640px')
+ .select('.guide-demo, .guide-example-heading')
+ .css({ padding: '18px' })
+ root.media('max-width: 640px').select('.guide-metrics').css({ gap: '8px' })
+ root
+ .media('max-width: 640px')
+ .select('.guide-metrics > div')
+ .css({ padding: '12px 8px' })
+}
diff --git a/docs-site/design/plugin.ts b/docs-site/design/plugin.ts
new file mode 100644
index 0000000..176a696
--- /dev/null
+++ b/docs-site/design/plugin.ts
@@ -0,0 +1,88 @@
+import { h } from '@purestack/ts-html'
+import { definePlugin, resolvePageTemplate } from 'purestack'
+import { defineRegorComponents } from './components'
+import { regorSkin } from './skin'
+import { registerRegorStyles } from './styles'
+
+const defaultDoc = resolvePageTemplate('doc').pageTemplate
+
+export const regorPlugin = definePlugin({
+ name: 'regor-site',
+ skins: { regor: regorSkin },
+ components: () => defineRegorComponents(),
+ templates: {
+ doc: async (input) => {
+ const group = input.pageInfo.urlPath.split('/').filter(Boolean)[0]
+ const sections: Record = {
+ guide: 'Guide',
+ api: 'API reference',
+ directives: 'Directives',
+ }
+ const heading = h('header')
+ .class('regor-doc-heading')
+ .id('main')
+ .attr({ tabindex: '-1' })
+ .push(
+ h('nav')
+ .class('regor-breadcrumb')
+ .attr({ 'aria-label': 'Breadcrumb' })
+ .push(
+ h('a').attr({ href: '/' }).text('Regor'),
+ h('span').attr({ 'aria-hidden': 'true' }).text('/'),
+ ...(sections[group]
+ ? [
+ h('a')
+ .attr({ href: `/${group}/` })
+ .text(sections[group]),
+ ]
+ : [h('span').text('Documentation')]),
+ ),
+ h('h1').text(
+ input.pageInfo.frontmatter.title ?? 'Regor documentation',
+ ),
+ ...(input.pageInfo.frontmatter.description
+ ? [h('p').text(input.pageInfo.frontmatter.description)]
+ : []),
+ )
+ input.head.push(
+ h('noscript').push(
+ h('style').raw(
+ 'html:not([data-theme-ready]) body{visibility:visible}',
+ ),
+ ),
+ )
+ const page = await defaultDoc({
+ ...input,
+ bodyHtml: heading.toHtml() + input.bodyHtml,
+ })
+ return page.attr({ 'data-theme': 'light' })
+ },
+ regor: ({ head, bodyHtml, headerHtml, footerHtml }) => {
+ head.push(
+ h('noscript').push(
+ h('style').raw(
+ 'html:not([data-theme-ready]) body{visibility:visible}',
+ ),
+ ),
+ )
+ return h('html')
+ .attr({ lang: 'en', 'data-theme': 'light' })
+ .push(
+ head,
+ h('body')
+ .class('regor-home tone--neutral')
+ .push(
+ h('a')
+ .class('regor-skip')
+ .attr({ href: '#main' })
+ .text('Skip to content'),
+ h('').raw(headerHtml ?? ''),
+ h('main').id('main').attr({ tabindex: '-1' }).raw(bodyHtml),
+ h('consent'),
+ h('').raw(footerHtml ?? ''),
+ ),
+ )
+ },
+ },
+ hooks: { onConfigResolved: () => registerRegorStyles() },
+})
diff --git a/docs-site/design/skin.ts b/docs-site/design/skin.ts
new file mode 100644
index 0000000..18fc5a7
--- /dev/null
+++ b/docs-site/design/skin.ts
@@ -0,0 +1,205 @@
+import {
+ type ThemePalette,
+ type ThemeSkin,
+ themeSkins,
+} from '@purestack/ts-style'
+import { merge } from '@purestack/ts-util'
+
+type Tone = ThemePalette['semanticTone']['neutral']
+
+// One vivid signal against quiet, warm neutrals. Never blue or navy.
+export const regorColors = {
+ signal: '#d2fa56',
+ signalHover: '#e1ff86',
+ signalActive: '#bfe840',
+ onSignal: '#18200e',
+ light: {
+ canvas: '#f6f5ee',
+ surface: '#fffef8',
+ surfaceAlt: '#eeeee4',
+ hover: '#e9ecdf',
+ active: '#e0e5d3',
+ ink: '#20251c',
+ muted: '#606957',
+ border: '#d1d7c7',
+ subtle: '#e0e4d8',
+ accentInk: '#44601c',
+ accentSurface: '#f0f6dd',
+ accentBorder: '#c0d497',
+ },
+ dark: {
+ canvas: '#101211',
+ surface: '#1c1f1d',
+ surfaceAlt: '#151816',
+ hover: '#272c28',
+ active: '#30362f',
+ ink: '#f2f3ed',
+ muted: '#aeb3a9',
+ border: '#3c423a',
+ subtle: '#2d322c',
+ accentInk: '#d2fa56',
+ accentSurface: '#242f15',
+ accentBorder: '#465d26',
+ },
+} as const
+
+function state(background: string, border: string, text: string) {
+ return { background, bgcolor: background, border, text }
+}
+
+function createNeutral(dark: boolean): Tone {
+ const c = dark ? regorColors.dark : regorColors.light
+ const text = { default: c.ink, subtle: c.muted }
+ const border = { default: c.border, subtle: c.subtle, focus: c.accentInk }
+ const disabled = state(c.surfaceAlt, c.subtle, c.muted)
+ const surface = {
+ rest: state(c.surface, c.subtle, c.ink),
+ hover: state(c.hover, c.border, c.ink),
+ active: state(c.active, c.border, c.ink),
+ disabled,
+ focusRing: c.accentInk,
+ }
+ return {
+ tone: c.ink,
+ canvas: c.canvas,
+ canvascolor: c.canvas,
+ spotlight: { field: c.canvas, light: `${regorColors.signal}12` },
+ overlay: dark ? '#080b06cc' : '#20251c44',
+ text,
+ border,
+ root: { text, border },
+ surface,
+ surfaceAlt: { ...surface, rest: state(c.surfaceAlt, c.subtle, c.ink) },
+ button: {
+ ...surface,
+ rest: state(c.surfaceAlt, c.border, c.ink),
+ },
+ }
+}
+
+function createAccent(dark: boolean, neutral: Tone): Tone {
+ const c = dark ? regorColors.dark : regorColors.light
+ const text = { default: c.accentInk, subtle: c.muted }
+ const border = {
+ default: c.accentBorder,
+ subtle: c.subtle,
+ focus: c.accentInk,
+ }
+ const surface = {
+ rest: state(c.accentSurface, c.accentBorder, c.ink),
+ hover: state(dark ? '#303e1c' : '#e6efcc', c.accentInk, c.ink),
+ active: state(dark ? '#394c20' : '#dcebb9', c.accentInk, c.ink),
+ disabled: neutral.surface.disabled,
+ focusRing: c.accentInk,
+ }
+ return {
+ tone: regorColors.signal,
+ canvas: c.accentSurface,
+ canvascolor: c.accentSurface,
+ spotlight: { field: c.accentSurface, light: `${regorColors.signal}20` },
+ overlay: neutral.overlay,
+ text,
+ border,
+ root: { text, border },
+ surface,
+ surfaceAlt: surface,
+ button: {
+ rest: state(regorColors.signal, regorColors.signal, regorColors.onSignal),
+ hover: state(
+ regorColors.signalHover,
+ regorColors.signalHover,
+ regorColors.onSignal,
+ ),
+ active: state(
+ regorColors.signalActive,
+ regorColors.signalActive,
+ regorColors.onSignal,
+ ),
+ disabled: neutral.button.disabled,
+ focusRing: c.accentInk,
+ },
+ }
+}
+
+function createCompanion(dark: boolean, neutral: Tone): Tone {
+ const ink = dark ? '#efb1df' : '#8c286f'
+ const fill = dark ? '#efb1df' : '#a43483'
+ const field = dark ? '#30212c' : '#f9eef5'
+ const edge = dark ? '#604050' : '#e3c6d9'
+ const text = { default: ink, subtle: neutral.text.subtle }
+ const border = { default: edge, subtle: edge, focus: ink }
+ const surface = {
+ rest: state(field, edge, ink),
+ hover: state(field, ink, ink),
+ active: state(field, ink, ink),
+ disabled: neutral.surface.disabled,
+ focusRing: ink,
+ }
+ return {
+ tone: fill,
+ canvas: field,
+ canvascolor: field,
+ spotlight: { field, light: `${fill}20` },
+ overlay: neutral.overlay,
+ text,
+ border,
+ root: { text, border },
+ surface,
+ surfaceAlt: surface,
+ button: {
+ rest: state(fill, fill, dark ? '#281722' : '#ffffff'),
+ hover: state(
+ dark ? '#f7c5e9' : '#8c286f',
+ fill,
+ dark ? '#281722' : '#ffffff',
+ ),
+ active: state(fill, fill, dark ? '#281722' : '#ffffff'),
+ disabled: neutral.button.disabled,
+ focusRing: ink,
+ },
+ }
+}
+
+function createPalette(dark: boolean): ThemePalette {
+ const standard = themeSkins.standard.create()
+ const neutral = createNeutral(dark)
+ const accent = createAccent(dark, neutral)
+ const companion = createCompanion(dark, neutral)
+ const invisible = state('transparent', 'transparent', neutral.text.default)
+ const ghost = {
+ ...neutral,
+ canvas: 'transparent',
+ canvascolor: 'transparent',
+ surface: { ...neutral.surface, rest: invisible },
+ button: { ...neutral.button, rest: invisible },
+ }
+ return merge(dark ? standard.dark : standard.light, {
+ accent: regorColors.signal,
+ font: {
+ family: {
+ base: "'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif",
+ },
+ },
+ radii: { sm: '6px', md: '10px', lg: '16px' },
+ semanticTone: {
+ neutral,
+ accent,
+ ghost,
+ secondary: companion,
+ feature: companion,
+ },
+ effect: {
+ panelShadow: 'none',
+ softShadow: dark ? '0 8px 28px #00000022' : '0 8px 28px #28321b08',
+ floatingShadow: dark ? '0 28px 80px #00000055' : '0 28px 80px #28321b14',
+ glowPrimary: `0 0 48px ${regorColors.signal}18`,
+ glowSecondary: `0 0 32px ${companion.tone}12`,
+ accentShadow: `0 8px 24px ${regorColors.signal}18`,
+ focusGlow: `0 0 0 3px ${regorColors.signal}44`,
+ },
+ })
+}
+
+export const regorSkin: ThemeSkin = {
+ create: () => ({ light: createPalette(false), dark: createPalette(true) }),
+}
diff --git a/docs-site/design/styles.ts b/docs-site/design/styles.ts
new file mode 100644
index 0000000..4d6a53b
--- /dev/null
+++ b/docs-site/design/styles.ts
@@ -0,0 +1,738 @@
+import { styleBuilder, themes } from '@purestack/ts-style'
+import { regorColors } from './skin'
+import { registerChartStyles } from './chartStyles'
+import { registerGuideStyles } from './guideStyles'
+import { registerDirectiveStyles } from './directiveStyles'
+import { registerApiStyles } from './apiStyles'
+
+const mono = "'Cascadia Code', 'SFMono-Regular', Consolas, monospace"
+
+export function registerRegorStyles() {
+ themes.forEach((theme, palette) => {
+ const root = styleBuilder.get(theme)
+ registerChartStyles(root, palette)
+ registerGuideStyles(root, palette)
+ registerDirectiveStyles(root, palette)
+ registerApiStyles(root, palette)
+ const t = palette.semanticTone
+ const ink = t.neutral.text.default
+ const muted = t.neutral.text.subtle
+ const edge = t.neutral.border.subtle
+ const accent = t.accent.text.default
+ const surface = t.neutral.surface.rest.bgcolor
+ root.select(':scope').css({
+ scrollPaddingTop: '100px',
+ colorScheme: theme === 'dark' ? 'dark' : 'light',
+ })
+ root
+ .select('body')
+ .css({ background: t.neutral.canvas, webkitFontSmoothing: 'antialiased' })
+ root.select('.regor-home').css({
+ margin: '0',
+ color: ink,
+ fontFamily: palette.font.family.base,
+ fontSize: '16px',
+ lineHeight: '1.65',
+ })
+ root
+ .select(
+ '.regor-home *, .regor-home *::before, .regor-home *::after, .regor-footer *',
+ )
+ .css({ boxSizing: 'border-box' })
+ root.select('.regor-home :is(h1,h2,h3,p,pre)').css({ margin: '0' })
+ root
+ .select('.regor-home :is(h1,h2,h3)')
+ .css({ color: ink, fontWeight: '650' })
+ root
+ .select('.regor-home a:not(.btn), .regor-footer a')
+ .css({ color: 'inherit', textDecoration: 'none' })
+ root
+ .select(
+ '.regor-home :is(a,button,summary):focus-visible, .regor-footer a:focus-visible',
+ )
+ .css({ outline: `2px solid ${accent}`, outlineOffset: '5px' })
+ root
+ .select('.regor-home button')
+ .css({ font: 'inherit', cursor: 'pointer' })
+ root.select('.regor-home [hidden]').css({ display: 'none !important' })
+ root
+ .select('.regor-container')
+ .css({ width: 'min(1160px, calc(100% - 80px))', marginInline: 'auto' })
+ root.select('.regor-skip').css({
+ position: 'fixed',
+ top: '12px',
+ left: '16px',
+ zIndex: '100',
+ transform: 'translateY(-200%)',
+ padding: '10px 18px',
+ background: surface,
+ border: `1px solid ${accent}`,
+ borderRadius: '8px',
+ })
+ root.select('.regor-skip:focus').css({ transform: 'translateY(0)' })
+ root.select('.regor-topbar').css({
+ borderBottom: `1px solid ${edge}`,
+ background: `color-mix(in srgb, ${t.neutral.canvas} 92%, transparent)`,
+ backdropFilter: 'blur(16px)',
+ })
+ root
+ .select('.regor-topbar .site-logo')
+ .css({ fontWeight: '750', letterSpacing: '-1px' })
+ root.select('.regor-topbar .site-logo__name').css({ lineHeight: '1.4' })
+ root.select('.regor-topbar .topbar__controls').css({ gap: '18px' })
+ root.select('.regor-topbar .header-nav').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '18px',
+ })
+ root.select('.regor-topbar :is(.header-guide,.header-api)').css({
+ color: muted,
+ fontSize: '13px',
+ textDecoration: 'none',
+ fontWeight: '600',
+ })
+ root
+ .select('.regor-topbar :is(.header-guide,.header-api):hover')
+ .css({ color: accent })
+ root
+ .select('.template-doc .doc-content')
+ .css({ fontSize: '16px', lineHeight: '1.85' })
+ root
+ .select('.template-doc .doc-main')
+ .css({ paddingTop: '42px', paddingBottom: '60px' })
+ root
+ .select('.template-doc .doc-content > :is(h2,h3)')
+ .css({ letterSpacing: '-0.5px', marginTop: '40px', lineHeight: '1.3' })
+ root.select('.template-doc .doc-content > h2').css({ fontSize: '26px' })
+ root.select('.template-doc .doc-content > h3').css({ fontSize: '20px' })
+ root.select('.template-doc .doc-content pre').css({
+ fontSize: '13px',
+ lineHeight: '1.8',
+ padding: '22px',
+ borderRadius: '10px',
+ })
+ root
+ .select('.template-doc .doc-sidebar, .template-doc .doc-toc')
+ .css({ fontSize: '13px' })
+ root.select('.regor-doc-heading').css({
+ paddingBottom: '28px',
+ marginBottom: '28px',
+ borderBottom: `1px solid ${edge}`,
+ })
+ root.select('.regor-breadcrumb').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '10px',
+ color: muted,
+ font: `11px/1.5 ${mono}`,
+ marginBottom: '20px',
+ })
+ root
+ .select('.regor-breadcrumb a')
+ .css({ color: muted, textDecoration: 'none' })
+ root.select('.regor-breadcrumb a:hover').css({ color: accent })
+ root.select('.regor-doc-heading h1').css({
+ fontSize: 'clamp(32px, 4vw, 44px)',
+ fontWeight: '700',
+ letterSpacing: '-1.5px',
+ lineHeight: '1.15',
+ margin: '0',
+ })
+ root
+ .select('.regor-doc-heading > p')
+ .css({ color: muted, marginTop: '16px', fontSize: '17px' })
+ root.select('.regor-home .topbar__toggle').css({ display: 'none' })
+ root.select('.regor-hero').css({
+ position: 'relative',
+ isolation: 'isolate',
+ paddingBlock: '100px 76px',
+ })
+ root.select('.regor-hero::before').css({
+ content: '""',
+ position: 'absolute',
+ zIndex: '-1',
+ inset: '0',
+ background: `radial-gradient(ellipse at 84% 40%, ${t.accent.tone}22, transparent 54%)`,
+ pointerEvents: 'none',
+ })
+ root.select('.hero-layout').css({
+ display: 'grid',
+ gridTemplateColumns: '1fr 1.03fr',
+ gap: '64px',
+ alignItems: 'center',
+ })
+ root.select('.eyebrow').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '10px',
+ color: accent,
+ font: `600 11px/1.5 ${mono}`,
+ letterSpacing: '1.5px',
+ textTransform: 'uppercase',
+ })
+ root.select('.release-dot').css({
+ width: '7px',
+ height: '7px',
+ borderRadius: '50%',
+ background: accent,
+ boxShadow: `0 0 0 4px ${t.accent.tone}14`,
+ })
+ root.select('.regor-hero h1').css({
+ marginTop: '24px',
+ fontSize: 'clamp(54px, 6vw, 80px)',
+ letterSpacing: '-4px',
+ lineHeight: '1.02',
+ fontWeight: '700',
+ })
+ root.select('.regor-hero h1 span').css({
+ color: theme === 'light' ? regorColors.onSignal : regorColors.signal,
+ background:
+ theme === 'light'
+ ? `linear-gradient(transparent 12%, ${regorColors.signal} 12%, ${regorColors.signal} 96%, transparent 96%)`
+ : 'none',
+ })
+ root.select('.hero-copy').css({
+ marginTop: '28px !important',
+ color: muted,
+ fontSize: '18px',
+ maxWidth: '450px',
+ lineHeight: '1.75',
+ })
+ root
+ .select('.hero-actions')
+ .css({ gap: '12px', marginTop: '30px', flexWrap: 'wrap' })
+ root
+ .select('.regor-home .hero-actions .btn, .regor-home .closing .btn')
+ .css({
+ minHeight: '48px',
+ padding: '12px 20px',
+ fontSize: '14px',
+ fontWeight: '650',
+ borderRadius: '8px',
+ })
+ root.select('.install-line').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '24px',
+ marginTop: '25px',
+ padding: '9px 12px 9px 16px',
+ background: surface,
+ border: `1px solid ${edge}`,
+ borderRadius: '8px',
+ color: muted,
+ })
+ root
+ .select('.install-line code')
+ .css({ font: `12px/1.5 ${mono}`, color: ink })
+ root
+ .select('.install-line code > span:first-child')
+ .css({ color: accent, marginRight: '10px' })
+ root.select('.install-copy').css({
+ border: '0',
+ background: 'transparent',
+ color: muted,
+ fontSize: '11px !important',
+ padding: '5px',
+ borderRadius: '4px',
+ })
+ root.select('.install-copy:hover').css({ color: accent })
+ root.select('.hero-footnote').css({
+ marginTop: '16px !important',
+ font: `10px/1.5 ${mono}`,
+ color: muted,
+ })
+ root.select('.workbench').css({
+ minWidth: '0',
+ background: surface,
+ border: `1px solid ${edge}`,
+ borderRadius: '16px',
+ overflow: 'hidden',
+ boxShadow: palette.effect.floatingShadow,
+ transform: 'rotate(1deg)',
+ })
+ root.select('.workbench-bar').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '12px',
+ padding: '16px 20px',
+ borderBottom: `1px solid ${edge}`,
+ font: `10px/1.4 ${mono}`,
+ color: muted,
+ })
+ root.select('.window-dots').css({ display: 'flex', gap: '5px' })
+ root.select('.window-dots i').css({
+ width: '7px',
+ height: '7px',
+ borderRadius: '50%',
+ background: t.neutral.border.default,
+ })
+ root.select('.window-dots i:first-child').css({ background: t.accent.tone })
+ root
+ .select('.workbench .code-block')
+ .css({ margin: '0', border: '0', borderRadius: '0', boxShadow: 'none' })
+ root.select('.workbench pre').css({
+ padding: '24px',
+ fontSize: '12px',
+ lineHeight: '1.85',
+ borderRadius: '0',
+ minHeight: '235px',
+ overflowX: 'auto',
+ })
+ root.select('.workbench .tabs__content').css({ padding: '0' })
+ root.select('.live-preview').css({
+ padding: '26px',
+ borderTop: `1px solid ${edge}`,
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ })
+ root.select('.preview-label').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '8px',
+ color: muted,
+ font: `10px/1.5 ${mono}`,
+ letterSpacing: '1px',
+ textTransform: 'uppercase',
+ })
+ root.select('.preview-label .release-dot').css({
+ background: t.secondary.text.default,
+ boxShadow: 'none',
+ width: '5px',
+ height: '5px',
+ })
+ root.select('.counter-row').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '16px',
+ marginTop: '18px',
+ })
+ root
+ .select('.counter-readout')
+ .css({ display: 'flex', alignItems: 'baseline', gap: '12px' })
+ root.select('.counter-value').css({
+ fontSize: '52px',
+ fontWeight: '600',
+ lineHeight: '1',
+ letterSpacing: '-3px',
+ color: accent,
+ fontVariantNumeric: 'tabular-nums',
+ })
+ root.select('.counter-caption').css({ fontSize: '12px', color: muted })
+ root
+ .select('.counter-buttons')
+ .css({ display: 'flex', alignItems: 'center', gap: '8px' })
+ root.select('.counter-increment').css({
+ background: t.accent.button.rest.bgcolor,
+ color: t.accent.button.rest.text,
+ border: `1px solid ${t.accent.button.rest.border}`,
+ borderRadius: '8px',
+ padding: '10px 16px',
+ fontSize: '13px !important',
+ fontWeight: '650 !important',
+ })
+ root
+ .select('.counter-increment:hover')
+ .css({ background: t.accent.button.hover.bgcolor })
+ root.select('.counter-reset').css({
+ border: `1px solid ${edge}`,
+ background: surface,
+ color: ink,
+ padding: '10px 12px',
+ borderRadius: '8px',
+ fontSize: '12px !important',
+ })
+ root.select('.workbench-caption').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ padding: '11px 20px',
+ borderTop: `1px solid ${edge}`,
+ font: `10px/1.5 ${mono}`,
+ color: muted,
+ })
+ root.select('.proof-strip').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(3,1fr)',
+ paddingBlock: '28px',
+ borderBlock: `1px solid ${edge}`,
+ gap: '24px',
+ })
+ root
+ .select('.proof-strip > div')
+ .css({ display: 'flex', alignItems: 'center', gap: '14px' })
+ root
+ .select('.proof-strip .icon')
+ .css({ color: accent, width: '22px', height: '22px' })
+ root
+ .select('.proof-strip strong')
+ .css({ display: 'block', fontSize: '13px', fontWeight: '650' })
+ root.select('.proof-strip small').css({
+ display: 'block',
+ color: muted,
+ fontSize: '11px',
+ marginTop: '2px',
+ })
+ root.select('.regor-section').css({ paddingBlock: '96px' })
+ root.select('.section-heading').css({
+ display: 'flex',
+ alignItems: 'end',
+ justifyContent: 'space-between',
+ gap: '32px',
+ marginBottom: '36px',
+ })
+ root.select('.regor-home h2').css({
+ marginTop: '16px',
+ fontSize: 'clamp(32px, 3.6vw, 46px)',
+ letterSpacing: '-1.8px',
+ lineHeight: '1.13',
+ })
+ root
+ .select('.section-heading > p')
+ .css({ maxWidth: '310px', color: muted, fontSize: '14px' })
+ root.select('.feature-grid').css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(3,minmax(0,1fr))',
+ border: `1px solid ${edge}`,
+ borderRadius: '14px',
+ overflow: 'hidden',
+ background: surface,
+ })
+ root.select('.regor-feature').css({ padding: '30px', minWidth: '0' })
+ root
+ .select('.regor-feature + .regor-feature')
+ .css({ borderLeft: `1px solid ${edge}` })
+ root
+ .select('.feature-meta')
+ .css({ color: accent, font: `11px/1.5 ${mono}`, marginBottom: '36px' })
+ root.select('.feature-meta .icon').css({ width: '25px', height: '25px' })
+ root
+ .select('.regor-feature h3')
+ .css({ fontSize: '20px', letterSpacing: '-0.5px', lineHeight: '1.3' })
+ root.select('.regor-feature p').css({
+ marginTop: '14px',
+ fontSize: '14px',
+ color: muted,
+ lineHeight: '1.8',
+ })
+ root.select('.feature-link').css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: '6px',
+ marginTop: '24px',
+ color: `${accent} !important`,
+ fontSize: '12px',
+ fontWeight: '600',
+ })
+ root.select('.feature-link span').css({
+ position: 'absolute',
+ width: '1px',
+ height: '1px',
+ overflow: 'hidden',
+ clipPath: 'inset(50%)',
+ })
+ root.select('.feature-link:hover').css({
+ textDecoration: 'underline !important',
+ textUnderlineOffset: '4px',
+ })
+ root.select('.ecosystem').css({
+ position: 'relative',
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ borderBlock: `1px solid ${edge}`,
+ overflow: 'hidden',
+ })
+ root.select('.ecosystem-layout').css({
+ display: 'grid',
+ gridTemplateColumns: '1fr 1fr',
+ gap: '80px',
+ alignItems: 'center',
+ })
+ root.select('.ecosystem-copy > p').css({
+ marginTop: '22px',
+ color: muted,
+ fontSize: '15px',
+ maxWidth: '420px',
+ })
+ root
+ .select('.ecosystem-copy > p strong')
+ .css({ color: ink, fontWeight: '650' })
+ root.select('.ecosystem-links').css({
+ display: 'flex',
+ alignItems: 'center',
+ flexWrap: 'wrap',
+ gap: '24px',
+ marginTop: '24px',
+ fontSize: '13px',
+ })
+ root.select('.ecosystem-links a').css({
+ color: `${accent} !important`,
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '8px',
+ fontWeight: '600',
+ })
+ root
+ .select('.cycle-diagram')
+ .css({ position: 'relative', padding: '30px 0', textAlign: 'center' })
+ root.select('.cycle-nodes').css({
+ display: 'grid',
+ gridTemplateColumns: '1fr 1fr',
+ gap: '48px',
+ position: 'relative',
+ zIndex: '1',
+ })
+ root.select('.cycle-node').css({
+ display: 'flex',
+ alignItems: 'center',
+ flexDirection: 'column',
+ gap: '8px',
+ padding: '28px 12px',
+ border: `1px solid ${edge}`,
+ borderRadius: '16px',
+ background: surface,
+ boxShadow: palette.effect.softShadow,
+ })
+ root
+ .select('.cycle-mark')
+ .css({ font: `600 32px/1 ${mono}`, color: accent })
+ root
+ .select('.cycle-node:last-child .cycle-mark')
+ .css({ color: t.secondary.text.default })
+ root.select('.cycle-mark .icon').css({ width: '36px', height: '36px' })
+ root
+ .select('.cycle-node strong')
+ .css({ marginTop: '12px', fontSize: '22px', letterSpacing: '-0.7px' })
+ root.select('.cycle-node small').css({ color: muted, fontSize: '11px' })
+ root.select('.cycle-path').css({
+ position: 'absolute',
+ top: '-2px',
+ left: '10%',
+ width: '80%',
+ height: 'calc(100% + 4px)',
+ border: `1px solid ${t.accent.border.default}`,
+ borderRadius: '70px',
+ pointerEvents: 'none',
+ })
+ root.select('.cycle-label').css({
+ position: 'absolute',
+ zIndex: '2',
+ left: '50%',
+ transform: 'translateX(-50%)',
+ padding: '3px 12px',
+ color: accent,
+ background: t.neutral.surfaceAlt.rest.bgcolor,
+ font: `10px/1.5 ${mono}`,
+ whiteSpace: 'nowrap',
+ })
+ root.select('.cycle-label:first-child').css({ top: '-12px' })
+ root
+ .select('.cycle-label:last-child')
+ .css({ bottom: '-12px', color: t.secondary.text.default })
+ root.select('.cycle-note').css({
+ marginTop: '32px !important',
+ color: muted,
+ font: `10px/1.5 ${mono}`,
+ })
+ root
+ .select('.resource-grid')
+ .css({ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '14px' })
+ root.select('.regor-resource').css({
+ display: 'flex',
+ alignItems: 'center',
+ gap: '22px',
+ padding: '25px',
+ border: `1px solid ${edge}`,
+ borderRadius: '10px',
+ background: surface,
+ transition: 'border-color 160ms, transform 160ms',
+ })
+ root.select('.regor-resource:hover').css({
+ borderColor: t.accent.border.default,
+ transform: 'translateY(-2px)',
+ })
+ root.select('.resource-number').css({
+ color: accent,
+ font: `11px/1.5 ${mono}`,
+ alignSelf: 'start',
+ paddingTop: '3px',
+ })
+ root.select('.regor-resource > div').css({ flex: '1', minWidth: '0' })
+ root
+ .select('.regor-resource h3')
+ .css({ fontSize: '17px', letterSpacing: '-0.3px' })
+ root.select('.regor-resource p').css({
+ color: muted,
+ fontSize: '12px',
+ marginTop: '5px',
+ lineHeight: '1.6',
+ })
+ root
+ .select('.regor-resource > .icon')
+ .css({ color: muted, flexShrink: '0', width: '18px', height: '18px' })
+ root.select('.closing').css({
+ textAlign: 'center',
+ padding: '56px 24px',
+ marginBottom: '76px',
+ borderRadius: '16px',
+ border: `1px solid ${regorColors.signal}`,
+ background: regorColors.signal,
+ })
+ root.select('.closing h2').css({ margin: '0', color: regorColors.onSignal })
+ root
+ .select('.closing p')
+ .css({ color: '#3c4c20', marginBlock: '18px 26px' })
+ root.select('.regor-home .closing .btn').css({
+ background: regorColors.onSignal,
+ borderColor: regorColors.onSignal,
+ color: regorColors.signal,
+ })
+ root
+ .select('.regor-home .closing .btn:hover')
+ .css({ background: '#2d3c16' })
+ root.select('.regor-footer').css({
+ borderTop: `1px solid ${edge}`,
+ paddingBlock: '40px 24px',
+ color: muted,
+ fontSize: '12px',
+ })
+ root.select('.footer-inner, .footer-colophon').css({
+ display: 'flex',
+ justifyContent: 'space-between',
+ gap: '24px',
+ alignItems: 'center',
+ })
+ root.select('.footer-brand').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: '10px',
+ fontSize: '25px',
+ color: `${ink} !important`,
+ fontWeight: '750',
+ letterSpacing: '-1px',
+ })
+ root
+ .select('.footer-brand > .icon, .footer-wordmark > span')
+ .css({ color: accent })
+ root.select('.footer-brand .icon').css({ width: '26px', height: '26px' })
+ root.select('.footer-inner p').css({ margin: '6px 0 0', fontSize: '12px' })
+ root
+ .select('.footer-inner nav')
+ .css({ display: 'flex', gap: '16px', flexWrap: 'wrap' })
+ root.select('.footer-colophon').css({
+ borderTop: `1px solid ${edge}`,
+ paddingTop: '20px',
+ marginTop: '30px',
+ fontSize: '10px',
+ })
+ root.select('.regor-footer .footer-actions').css({ gap: '16px' })
+ root.select('.footer-actions .consent-settings-teleport-area').css({
+ display: 'inline-flex',
+ alignItems: 'center',
+ })
+ root.select('.regor-footer .footer-colophon [data-consent-settings]').css({
+ font: 'inherit',
+ color: 'inherit',
+ background: 'transparent !important',
+ border: 'none !important',
+ outline: 'none !important',
+ borderRadius: '0',
+ padding: '0 !important',
+ margin: '0',
+ minHeight: '0',
+ boxShadow: 'none !important',
+ })
+ root
+ .select('.regor-footer .footer-colophon [data-consent-settings]:hover')
+ .css({ color: accent })
+ root
+ .select(
+ '.regor-footer .footer-colophon [data-consent-settings]:focus-visible',
+ )
+ .css({
+ color: accent,
+ textDecoration: 'underline',
+ textUnderlineOffset: '3px',
+ })
+ root.select('.regor-footer a:hover').css({ color: accent })
+ root
+ .select('.copy-status')
+ .css({ minHeight: '18px', fontSize: '11px', color: muted })
+ root.media('max-width: 1000px').select('.hero-layout').css({ gap: '36px' })
+ root
+ .media('max-width: 1000px')
+ .select('.regor-hero h1')
+ .css({ fontSize: '62px', letterSpacing: '-3px' })
+ root
+ .media('max-width: 1000px')
+ .select('.ecosystem-layout')
+ .css({ gap: '40px' })
+ root
+ .media('max-width: 1000px')
+ .select('.regor-feature')
+ .css({ padding: '24px' })
+ const mobile = root.media('max-width: 760px')
+ mobile.select('.regor-container').css({ width: 'calc(100% - 40px)' })
+ mobile.select('.regor-hero').css({ paddingBlock: '54px 48px' })
+ mobile
+ .select('.hero-layout, .ecosystem-layout')
+ .css({ gridTemplateColumns: 'minmax(0, 1fr)', gap: '44px' })
+ mobile
+ .select('.regor-hero h1')
+ .css({ fontSize: 'clamp(48px, 10vw, 68px)', letterSpacing: '-2.8px' })
+ mobile.select('.hero-copy').css({ fontSize: '16px', maxWidth: '480px' })
+ mobile.select('.workbench').css({ transform: 'none' })
+ mobile
+ .select('.proof-strip')
+ .css({ gridTemplateColumns: '1fr', gap: '20px', paddingBlock: '24px' })
+ mobile.select('.regor-section').css({ paddingBlock: '58px' })
+ mobile.select('.section-heading').css({ display: 'block' })
+ mobile
+ .select('.section-heading > p')
+ .css({ marginTop: '20px', maxWidth: '420px' })
+ mobile
+ .select('.feature-grid, .resource-grid')
+ .css({ gridTemplateColumns: '1fr' })
+ mobile
+ .select('.regor-feature + .regor-feature')
+ .css({ borderLeft: '0', borderTop: `1px solid ${edge}` })
+ mobile.select('.feature-meta').css({ marginBottom: '22px' })
+ mobile.select('.cycle-diagram').css({
+ marginBlock: '15px 0',
+ maxWidth: '500px',
+ width: '100%',
+ marginInline: 'auto',
+ })
+ mobile
+ .select('.closing')
+ .css({ padding: '40px 20px', marginBottom: '48px' })
+ mobile
+ .select('.footer-inner')
+ .css({ alignItems: 'start', flexDirection: 'column' })
+ mobile.select('.regor-topbar .header-nav').css({ gap: '12px' })
+ mobile.select('.regor-topbar .topbar__controls').css({ gap: '12px' })
+ mobile.select('.template-doc .doc-main').css({ paddingTop: '24px' })
+ mobile.select('.template-doc .doc-content').css({ fontSize: '15px' })
+ root
+ .media('max-width: 380px')
+ .select('.regor-topbar .header-api')
+ .css({ display: 'none' })
+ root
+ .media('max-width: 380px')
+ .select('.regor-hero h1')
+ .css({ fontSize: '40px' })
+ root.media('max-width: 380px').select('.counter-row').css({ gap: '10px' })
+ root
+ .media('max-width: 380px')
+ .select('.live-preview')
+ .css({ padding: '20px' })
+ root
+ .media('prefers-reduced-motion: reduce')
+ .select('.regor-home *, .regor-home *::before, .regor-home *::after')
+ .css({
+ transition: 'none !important',
+ animation: 'none !important',
+ scrollBehavior: 'auto !important',
+ })
+ })
+}
diff --git a/docs-site/design/topBar.ts b/docs-site/design/topBar.ts
new file mode 100644
index 0000000..cdf5ec2
--- /dev/null
+++ b/docs-site/design/topBar.ts
@@ -0,0 +1,67 @@
+import { defineTopBarComponents, type TopBar } from '@purestack/ts-components'
+import { defineComponent, html } from 'regor'
+
+// Based on PureStack 1.1.7's TopBar template, with navigation before the icons.
+const topBarTemplate = html`
+ `
+
+export function defineRegorTopBar() {
+ const original = defineTopBarComponents().topBar
+ return defineComponent(topBarTemplate, {
+ context: original.context,
+ props: original.props,
+ inheritAttrs: original.inheritAttrs,
+ })
+}
diff --git a/docs-site/package.json b/docs-site/package.json
index c574063..0cc925e 100644
--- a/docs-site/package.json
+++ b/docs-site/package.json
@@ -3,13 +3,22 @@
"private": true,
"type": "module",
"scripts": {
- "dev": "astro dev",
- "build": "astro build",
- "preview": "astro preview"
+ "serve": "purestack serve --content ./content --port 4400 --clean",
+ "build": "purestack build --content ./content --clean",
+ "publish": "purestack publish --content ./content",
+ "deploy": "pgdeploy deploy --host https://regor.purestack.studio --package ./dist/web --allow-path 'pagefind/*,.ts-ssg/manifest.json'"
},
"dependencies": {
- "@astrojs/starlight": "^0.34.3",
- "astro": "^5.9.2",
- "glob": "^11.0.3"
- }
+ "@purestack/ts-components": "1.1.7",
+ "@purestack/ts-css": "1.1.7",
+ "@purestack/ts-html": "1.1.7",
+ "@purestack/ts-style": "1.1.7",
+ "@purestack/ts-util": "1.1.7",
+ "purestack": "1.1.7",
+ "regor": "1.7.3"
+ },
+ "devDependencies": {
+ "@types/node": "^22.0.0"
+ },
+ "packageManager": "yarn@4.9.2"
}
diff --git a/docs-site/src/content/config.ts b/docs-site/src/content/config.ts
deleted file mode 100644
index 684958b..0000000
--- a/docs-site/src/content/config.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { defineCollection } from 'astro:content'
-import { docsSchema } from '@astrojs/starlight/schema'
-import { docsLoader } from '@astrojs/starlight/loaders'
-
-export const collections = {
- docs: defineCollection({
- schema: docsSchema({}),
- loader: docsLoader(),
- }),
-}
diff --git a/docs-site/src/content/docs/api/addUnbinder.md b/docs-site/src/content/docs/api/addUnbinder.md
deleted file mode 100644
index 60fd04a..0000000
--- a/docs-site/src/content/docs/api/addUnbinder.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: addUnbinder
----
-
-## Overview
-
-The `addUnbinder` function is used to associate an unbinder function with a DOM node in Regor. An unbinder function is used to remove bound data and associated logic from the DOM node when necessary.
-
-## Usage
-
-### Associating an Unbinder Function
-
-To associate an unbinder function with a DOM node, call the `addUnbinder` function with the following parameters:
-
-- `node`: The DOM node to which you want to associate the unbinder function.
-
-- `unbinder`: A function that can be executed later to remove bound data and associated logic from the DOM node.
-
-### Example
-
-```javascript
-import { addUnbinder } from 'regor'
-
-// Create an unbinder function
-const myUnbinder = () => {
- // Remove bound data and associated logic
- // ...
-}
-
-// Associate the unbinder function with a DOM node
-const someElement = document.getElementById('example')
-addUnbinder(someElement, myUnbinder)
-```
-
-## Parameters
-
-- `node`: The DOM node to which you want to associate the unbinder function.
-
-- `unbinder`: A function that can be executed later to remove bound data and associated logic from the DOM node.
-
-## Notes
-
-- The `addUnbinder` function is typically used internally within Regor to manage unbinder functions associated with DOM nodes.
-
-- It provides a way to associate an unbinder function with a specific DOM element, allowing for the clean removal of bound data and logic when needed.
-
-- Unbinder functions are typically created and associated with DOM nodes as part of the data binding process in Regor.
-
-- The unbinder function, when executed, should perform any necessary cleanup or removal of data bindings and associated logic from the DOM node.
-
-- This function is primarily intended for use in advanced scenarios where direct access to Regor's internal data management is required.
-
-## See Also
-
-- [removeNode](/api/removeNode)
-- [unbind](/api/unbind)
-- [getBindData](/api/getBindData)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/batch.md b/docs-site/src/content/docs/api/batch.md
deleted file mode 100644
index 05a5873..0000000
--- a/docs-site/src/content/docs/api/batch.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: batch
----
-
-## Overview
-
-The `batch` function is used to batch multiple updates to refs, which can help optimize performance by reducing the number of observer notifications and triggers during a series of updates. When multiple changes to refs are made within a `batch` block, observers are only notified once, at the end of the batch.
-
-## Usage
-
-### Batching Updates
-
-To batch updates to refs, wrap the code that performs the updates within a `batch` function call. The `batch` function takes an `updater` function as an argument, and all updates made within the `updater` function are batched together.
-
-```ts
-import { batch, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref(10)
-
-batch(() => {
- myRef1.value = 15
- myRef2.value = 20
-})
-
-// Observers are notified only once at the end of the batch
-// Outputs:
-// Observer triggered: 20
-```
-
-## Parameters
-
-- `updater`: A function that contains the updates to refs that should be batched together. Any changes made to refs within this function will be batched.
-
-## Notes
-
-- Batching updates with the `batch` function can help improve the performance of your application when multiple changes are made to refs in a short period. It reduces the number of observer notifications and triggers, which can be especially beneficial in situations with complex reactivity logic.
-
-- When using the `batch` function, observers associated with refs will be notified once, at the end of the batch, rather than for each individual update. This can lead to more efficient reactivity handling.
-
-- The `batch` function can be particularly useful when performing multiple ref updates within a loop or in response to user interactions.
-
-- Important: When using the batch function, keep in mind that reads of refs within the batch can return potentially stale or outdated values due to pausing auto-updates. Ensure that your code logic accounts for this situation when reading refs within a batch.
-
-## See Also
-
-- [`startBatch`](/api/startBatch)
-- [`endBatch`](/api/endBatch)
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`trigger`](/api/trigger)
-- [`observe`](/api/observe)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/collectRefs.md b/docs-site/src/content/docs/api/collectRefs.md
deleted file mode 100644
index 1516530..0000000
--- a/docs-site/src/content/docs/api/collectRefs.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: collectRefs
----
-
-## Overview
-
-The `collectRefs` function allows you to collect a set of reactive references (refs) within a specific scope and return both the result of an action and the collected refs. This is useful for managing and tracking the refs used within a certain code block.
-
-## Usage
-
-### Collecting Refs
-
-To collect refs using `collectRefs`, you provide an action function that performs some logic involving refs. The function will execute within a scope where the refs are collected, and you can access the collected refs along with the result of the action.
-
-```ts
-import { collectRefs, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref('Hello')
-
-const { value, refs } = collectRefs(() => {
- console.log(myRef1.value)
- myRef2.value = 'World'
-})
-
-console.log(value) // Outputs undefined (result of the action)
-console.log(refs) // Outputs an array containing myRef1 and myRef2
-```
-
-## Parameters
-
-- `action`: A function that performs some logic and may involve reactive refs. The function is executed within a scope where the refs are collected.
-
-## Return Value
-
-- The `collectRefs` function returns an object with two properties:
- - `value`: The result of the action function.
- - `refs`: An array containing the collected refs used within the action function.
-
-## Example
-
-```ts
-import { collectRefs, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref('Hello')
-
-const { value, refs } = collectRefs(() => {
- console.log(myRef1.value)
- myRef2.value = 'World'
-})
-
-console.log(value) // Outputs undefined (result of the action)
-console.log(refs) // Outputs an array containing myRef1 and myRef2
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`computed`](/api/computed)
-- [`watchEffect`](/api/watchEffect)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/computeMany.md b/docs-site/src/content/docs/api/computeMany.md
deleted file mode 100644
index efbd5db..0000000
--- a/docs-site/src/content/docs/api/computeMany.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: computeMany
----
-
-## Overview
-
-The `computeMany` function allows you to create a computed ref object that depends on multiple source ref objects and a computation function. The computed ref automatically updates when any of the source refs change, making it useful for deriving values from multiple reactive data sources.
-
-## Usage
-
-### Creating Computed Refs
-
-To create a computed ref using `computeMany`, you provide an array of source ref objects and a computation function. The computation function calculates the computed value based on the values of the source refs, and the computed ref will automatically update when any of the source refs change.
-
-```ts
-import { computeMany, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref(10)
-
-// Create a computed ref that depends on both myRef1 and myRef2
-const computedValue = computeMany(
- [myRef1, myRef2],
- (value1, value2) => value1 + value2,
-)
-
-console.log(computedValue.value) // Outputs 15
-
-// Later, when myRef1 or myRef2 changes, computedValue will automatically update
-myRef1.value = 7
-console.log(computedValue.value) // Outputs 17
-```
-
-## Parameters
-
-- `sources`: An array of source ref objects that the computed ref depends on. Changes to any of the source refs will trigger the computation.
-- `compute`: A function that calculates the computed value based on the values of the source refs. This function should not have side effects and should only depend on reactive data.
-
-## Return Value
-
-- The `computeMany` function returns a computed ref object that holds the computed value. You can access the computed value using the `.value` property of the computed ref or by invoking it directly.
-
-## Example
-
-```ts
-import { computeMany, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref(10)
-
-// Create a computed ref that depends on both myRef1 and myRef2
-const computedValue = computeMany(
- [myRef1, myRef2],
- (value1, value2) => value1 + value2,
-)
-
-console.log(computedValue.value) // Outputs 15
-
-// Later, when myRef1 or myRef2 changes, computedValue will automatically update
-myRef1.value = 7
-console.log(computedValue.value) // Outputs 17
-```
-
-## See Also
-
-- [`computed`](/api/computed)
-- [`computeRef`](/api/computeRef)
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`watchEffect`](/api/watchEffect)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/computeRef.md b/docs-site/src/content/docs/api/computeRef.md
deleted file mode 100644
index fef38c5..0000000
--- a/docs-site/src/content/docs/api/computeRef.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: computeRef
----
-
-## Overview
-
-The `computeRef` function allows you to create a computed ref object that automatically computes its value based on a source ref object and a computation function. This is useful for deriving values from reactive data and ensuring that the computed ref updates whenever the source ref changes.
-
-## Usage
-
-### Creating Computed Refs
-
-To create a computed ref using `computeRef`, you provide a source ref and a computation function. The computation function calculates the computed value based on the value of the source ref, and the computed ref will automatically update when the source ref changes.
-
-```ts
-import { computeRef, ref } from 'regor'
-
-const myRef = ref(5)
-
-// Create a computed ref
-const computedValue = computeRef(myRef, (value) => value * 2)
-
-console.log(computedValue.value) // Outputs 10
-
-// Later, when myRef changes, computedValue will automatically update
-myRef.value = 7
-console.log(computedValue.value) // Outputs 14
-```
-
-## Parameters
-
-- `source`: The source ref object that the computed ref depends on. Changes to the source ref will trigger the computation.
-- `compute`: A function that calculates the computed value based on the current value of the source ref. This function should not have side effects and should only depend on reactive data.
-
-## Return Value
-
-- The `computeRef` function returns a computed ref object that holds the computed value. You can access the computed value using the `.value` property of the computed ref or by invoking it directly.
-
-## Example
-
-```ts
-import { computeRef, ref } from 'regor'
-
-const myRef = ref(5)
-
-// Create a computed ref
-const computedValue = computeRef(myRef, (value) => value * 2)
-
-console.log(computedValue.value) // Outputs 10
-
-// Later, when myRef changes, computedValue will automatically update
-myRef.value = 7
-console.log(computedValue.value) // Outputs 14
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`computed`](/api/computed)
-- [`watchEffect`](/api/watchEffect)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/computed.md b/docs-site/src/content/docs/api/computed.md
deleted file mode 100644
index d97371d..0000000
--- a/docs-site/src/content/docs/api/computed.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: computed
----
-
-## Overview
-
-The `computed` function allows you to create a computed property that depends on reactive data and automatically updates when its dependencies change. Computed properties are useful for performing complex calculations or transformations on reactive data.
-
-[**`Try It Online`**](https://stackblitz.com/edit/regor-sample-ref?file=index.ts)
-
-## Usage
-
-### Creating Computed Properties
-
-To create a computed property using `computed`, you provide a function (`compute`) that calculates the computed value based on reactive data. The computed property will automatically update whenever the reactive data it depends on changes.
-
-```ts
-import { computed, ref } from 'regor'
-
-const myRef = ref(5)
-
-// Create a computed property
-const computedValue = computed(() => myRef.value * 2)
-
-console.log(computedValue.value) // Outputs 10
-
-// Later, when myRef changes, computedValue will automatically update
-myRef.value = 7
-console.log(computedValue.value) // Outputs 14
-```
-
-## Parameters
-
-- `compute`: A function that calculates the computed value based on reactive data. This function should not have any side effects and should only depend on reactive data.
-
-## Return Value
-
-- The `computed` function returns a computed ref object that holds the calculated value. You can access the computed value using the `.value` property of the computed ref or by invoking it directly.
-
-## Example
-
-```ts
-import { computed, ref } from 'regor'
-
-const myRef = ref(5)
-
-// Create a computed property
-const computedValue = computed(() => myRef.value * 2)
-
-console.log(computedValue.value) // Outputs 10
-
-// Later, when myRef changes, computedValue will automatically update
-myRef.value = 7
-console.log(computedValue.value) // Outputs 14
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`watchEffect`](/api/watchEffect)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/cref.md b/docs-site/src/content/docs/api/cref.md
deleted file mode 100644
index 85f0f85..0000000
--- a/docs-site/src/content/docs/api/cref.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: cref
----
-
-## Overview
-
-The `cref` function creates a deep ref from a flattened copy of the given value.
-
-It is equivalent to calling `ref(flatten(value))`: nested refs are unwrapped into plain values first, then the copied structure is converted into deep refs.
-
-Use `cref` when you want deep ref behavior without mutating the original object graph during initial conversion.
-
-## Usage
-
-```ts
-import { cref } from 'regor'
-
-const source = {
- user: {
- name: 'Ada',
- },
-}
-
-const state = cref(source)
-
-state().user().name('Grace')
-
-console.log(source.user.name)
-// Outputs: Ada
-
-console.log(state().user().name())
-// Outputs: Grace
-```
-
-## Parameters
-
-- `value` (optional): Any value that you want to copy and convert into a deep ref.
-
-## Return Value
-
-The `cref` function returns the same kind of deep ref as `ref`.
-
-## Notes
-
-- `cref(value)` is equivalent to `ref(flatten(value))`.
-- `cref` does not mutate the original object graph during initial conversion.
-- `cref` does extra work compared with `ref`, so use `ref` for performance-critical paths where in-place conversion is acceptable.
-- `cref` follows `flatten` behavior for nested refs, arrays, sets, maps, and circular references.
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/drainUnbind.md b/docs-site/src/content/docs/api/drainUnbind.md
deleted file mode 100644
index 01de715..0000000
--- a/docs-site/src/content/docs/api/drainUnbind.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: drainUnbind
----
-
-## Overview
-
-`drainUnbind` flushes Regor's pending unbind queue immediately.
-
-Regor defers some unbind work after `removeNode(...)` for better runtime behavior. Use `drainUnbind()` when you need deterministic cleanup timing.
-
-## Usage
-
-```ts
-import { createApp, drainUnbind, html, ref } from 'regor'
-
-const root = document.createElement('div')
-const show = ref(true)
-
-const app = createApp({
- template: html`Hello
`,
- setup: { show },
-})
-
-app.mount(root)
-show(false) // schedules node removal + deferred unbind
-
-await drainUnbind() // force pending unbind cleanup now
-```
-
-## Signature
-
-```ts
-drainUnbind(): Promise
-```
-
-## Notes
-
-- Safe to call when there is nothing pending.
-- Useful in tests when you need cleanup completed before assertions.
-- Complements `removeNode` and `unbind`; it does not replace app lifecycle (`app.unmount()`).
-
-## See Also
-
-- [removeNode](/api/removeNode)
-- [unbind](/api/unbind)
-- [addUnbinder](/api/addUnbinder)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/endBatch.md b/docs-site/src/content/docs/api/endBatch.md
deleted file mode 100644
index ef34ca0..0000000
--- a/docs-site/src/content/docs/api/endBatch.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: endBatch
----
-
-## Overview
-
-The `endBatch` function is used in conjunction with the `startBatch`function to end a batch of ref updates and notify observers of the changes made during the batch. Batching ref updates using `startBatch` and `endBatch` can improve application performance by reducing the number of observer notifications and triggers during a series of updates.
-
-## Usage
-
-### Ending a Batch
-
-To end a batch of ref updates, call the `endBatch` function. When a batch is ended, observers are notified of the changes made to refs during the batch, but this notification is performed only once, optimizing performance.
-
-```ts
-import { batch, startBatch, endBatch, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref(10)
-
-startBatch() // Start a batch
-
-myRef1.value = 15
-myRef2.value = 20
-
-endBatch() // End the batch and notify observers
-
-// Observers are notified only once at the end of the batch
-// Outputs:
-// Observer triggered: 20
-```
-
-## Notes
-
-- The `endBatch` function is used in conjunction with the `startBatch` function to finalize a batch of ref updates. It ensures that observers are notified of the ref changes made during the batch in an optimized manner, reducing unnecessary notifications.
-
-- Batching updates with `startBatch` and `endBatch` can significantly improve the performance of your application, especially when multiple changes are made to refs in rapid succession. It minimizes the number of observer notifications and triggers.
-
-- It's important to call the `endBatch` function to conclude a batch and ensure that observers are informed of the changes made during the batch.
-
-- Important: When using the batch functions, keep in mind that reads of refs within the batch can return potentially stale or outdated values due to pausing auto-updates. Ensure that your code logic accounts for this situation when reading refs within a batch.
-
-## See Also
-
-- [`startBatch`](/api/startBatch)
-- [`batch`](/api/batch)
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/entangle.md b/docs-site/src/content/docs/api/entangle.md
deleted file mode 100644
index 82e4c9c..0000000
--- a/docs-site/src/content/docs/api/entangle.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: entangle
----
-
-## Overview
-
-The `entangle` function allows you to create a bidirectional link between two refs, ensuring that changes in one ref are mirrored in the other. This bidirectional linking is particularly useful when you want two refs to always have the same value.
-
-## Usage
-
-### Creating a Bidirectional Link
-
-To create a bidirectional link between two refs, simply call the `entangle` function with the two refs as arguments. After calling `entangle`, any changes made to one ref will be automatically reflected in the other.
-
-```ts
-import { entangle, ref } from 'regor'
-
-const ref1 = ref(5)
-const ref2 = ref(10)
-
-const stopEntangle = entangle(ref1, ref2)
-
-console.log(ref1.value) // Outputs: 5
-console.log(ref2.value) // Outputs: 5
-
-ref1.value = 15 // Both refs are updated
-console.log(ref1.value) // Outputs: 15
-console.log(ref2.value) // Outputs: 15
-
-stopEntangle() // Stop the bidirectional linking
-```
-
-## Parameters
-
-- `r1`: The first ref that you want to entangle.
-- `r2`: The second ref that you want to entangle.
-
-## Return Value
-
-- The `entangle` function returns a function that, when called, stops the bidirectional linking between the two refs.
-
-## Notes
-
-- Changes made to either of the entangled refs will be automatically reflected in the other, ensuring that they always have the same value.
-
-- It's important to call the returned function to stop the bidirectional linking when you no longer need it to prevent unintended updates.
-
-- Circular entanglements, where ref1 and ref2 form a circular dependency, should be avoided, as they can lead to infinite loops and unpredictable behavior.
-
-## Example
-
-```ts
-import { entangle, ref } from 'regor'
-
-const ref1 = ref(5)
-const ref2 = ref(10)
-
-const stopEntangle = entangle(ref1, ref2)
-
-console.log(ref1.value) // Outputs: 5
-console.log(ref2.value) // Outputs: 5
-
-ref1.value = 15 // Both refs are updated
-console.log(ref1.value) // Outputs: 15
-console.log(ref2.value) // Outputs: 15
-
-stopEntangle() // Stop the bidirectional linking
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`unref`](/api/unref)
-- [`isRef`](/api/isRef)
-- [`isDeepRef`](/api/isDeepRef)
-- [`computeRef`](/api/computeRef)
-- [`watchEffect`](/api/watchEffect)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/flatten.md b/docs-site/src/content/docs/api/flatten.md
deleted file mode 100644
index bf662a4..0000000
--- a/docs-site/src/content/docs/api/flatten.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: flatten
----
-
-## Overview
-
-The `flatten` function recursively traverses a nested structure, such as an object, array, set, or map, and returns a flattened version of the structure. This means that it removes any nested references and produces a structure containing no refs.
-
-## Usage
-
-### Flattening Nested Structures
-
-To flatten a nested structure, simply pass the reference to the `flatten` function. It will return a new structure with all nested references removed.
-
-```ts
-import { flatten, ref } from 'regor'
-
-const nestedData = {
- name: 'John',
- age: ref(30),
- hobbies: ['reading', 'swimming', ref('drawing')],
-}
-
-const flattenedData = flatten(nestedData)
-
-console.log(flattenedData)
-// Outputs: { name: 'John', age: 30, hobbies: [ 'reading', 'swimming', 'drawing' ] }
-```
-
-## Parameters
-
-- `reference`: The nested structure (object, array, set, map) that you want to flatten. It can contain nested refs, which will be resolved during flattening.
-
-## Return Value
-
-- The `flatten` function returns a new structure that is a flattened version of the input `reference`. Any nested refs within the structure are resolved, resulting in a single-level structure.
-
-## Notes
-
-- The `flatten` function recursively flattens nested structures, including arrays, sets, maps, and objects.
-
-- If the input `reference` contains refs, they are automatically unrefed during flattening, and their values are included in the flattened structure.
-
-- Circular references within the input `reference` are not supported, and attempting to flatten such structures may result in unexpected behavior.
-
-## Example
-
-```ts
-import { flatten, ref } from 'regor'
-
-const nestedData = {
- name: 'John',
- age: ref(30),
- hobbies: ['reading', 'swimming', ref('drawing')],
-}
-
-const flattenedData = flatten(nestedData)
-
-console.log(flattenedData)
-// Outputs: { name: 'John', age: 30, hobbies: [ 'reading', 'swimming', 'drawing' ] }
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`cref`](/api/cref)
-- [`sref`](/api/sref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/html.md b/docs-site/src/content/docs/api/html.md
deleted file mode 100644
index 256db4f..0000000
--- a/docs-site/src/content/docs/api/html.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: html
----
-
-## Overview
-
-The `html` function in Regor is a utility function for creating HTML strings using template literals and interpolating values into the resulting string. It is commonly used to generate HTML content dynamically within Regor components.
-
-## Usage
-
-### Creating HTML Strings
-
-The `html` function takes two parameters:
-
-- `templates` (TemplateStringsArray): An array of string literals representing the static parts of the HTML template.
-
-- `...args` (any[]): Any number of additional arguments that will be interpolated into the template to generate the dynamic parts of the HTML.
-
-### Example
-
-```javascript
-import { html } from 'regor'
-
-// Create an HTML string with dynamic content
-const name = 'John'
-const age = 30
-const htmlString = html`
- Hello, my name is ${name} and I am ${age} years old.
-
`
-
-// The resulting HTML string:
-// "Hello, my name is John and I am 30 years old.
"
-```
-
-## Parameters
-
-- `templates` (TemplateStringsArray): An array of string literals representing the static parts of the HTML template.
-
-- `...args` (any[]): Any number of additional arguments that will be interpolated into the template to generate the dynamic parts of the HTML.
-
-## Return Value
-
-- Returns a string that represents the HTML content generated by interpolating the template literals and values provided in the `args` array.
-
-## Notes
-
-- The `html` function is useful for creating HTML strings with dynamic content, such as when generating HTML markup for Regor components or templates.
-
-- It uses JavaScript's template literal syntax to define the static parts of the HTML template and interpolates values into the template using `${...}` placeholders.
-
-- The resulting HTML string can be directly used in your Regor components or inserted into the DOM as needed.
-
-- In Regor, this function is commonly used in conjunction with template rendering and component creation to generate HTML content.
-
-## See Also
-
-- [raw](/api/raw)
-- [svg](/api/svg)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/index.md b/docs-site/src/content/docs/api/index.md
deleted file mode 100644
index 0c09c73..0000000
--- a/docs-site/src/content/docs/api/index.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Regor API
-sidebar:
- order: 6
----
-
-This section contains the function-level reference for Regor.
-
-Use this page as an index, then open each API page for signature details and examples.
-
-## App and Components
-
-1. [`createApp`](/api/createApp)
-2. [`defineComponent`](/api/defineComponent)
-3. [`pval`](/api/pval)
-4. [`toFragment`](/api/toFragment)
-5. [`toJsonTemplate`](/api/toJsonTemplate)
-6. [`RegorConfig`](/api/regorConfig)
-
-## Reactivity
-
-1. [`ref`](/api/ref)
-2. [`cref`](/api/cref)
-3. [`sref`](/api/sref)
-4. [`isRef`](/api/isRef)
-5. [`isDeepRef`](/api/isDeepRef)
-6. [`unref`](/api/unref)
-7. [`pause`](/api/pause)
-8. [`resume`](/api/resume)
-9. [`trigger`](/api/trigger)
-10. [`entangle`](/api/entangle)
-
-## Computed and Effects
-
-1. [`computed`](/api/computed)
-2. [`computeRef`](/api/computeRef)
-3. [`computeMany`](/api/computeMany)
-4. [`watchEffect`](/api/watchEffect)
-5. [`collectRefs`](/api/collectRefs)
-6. [`silence`](/api/silence)
-
-## Observation and Batch
-
-1. [`observe`](/api/observe)
-2. [`observeMany`](/api/observeMany)
-3. [`observerCount`](/api/observerCount)
-4. [`batch`](/api/batch)
-5. [`startBatch`](/api/startBatch)
-6. [`endBatch`](/api/endBatch)
-
-## Lifecycle and Scope
-
-1. [`useScope`](/api/useScope)
-2. [`onMounted`](/api/onMounted)
-3. [`onUnmounted`](/api/onUnmounted)
-4. [`contextRegistry`](/api/contextRegistry)
-
-## Cleanup and Unbind
-
-1. [`addUnbinder`](/api/addUnbinder)
-2. [`getBindData`](/api/getBindData)
-3. [`removeNode`](/api/removeNode)
-4. [`unbind`](/api/unbind)
-5. [`drainUnbind`](/api/drainUnbind)
-
-## Utilities
-
-1. [`flatten`](/api/flatten)
-2. [`markRaw`](/api/markRaw)
-3. [`isRaw`](/api/isRaw)
-4. [`persist`](/api/persist)
-5. [`html`](/api/html)
-6. [`raw`](/api/raw)
-7. [`svg`](/api/svg)
-
-## Logging
-
-1. [`warningHandler`](/api/warningHandler)
-
-## Recommendation
-
-Start with:
-
-1. [`createApp`](/api/createApp)
-2. [`ref`](/api/ref)
-3. [`cref`](/api/cref)
-4. [`sref`](/api/sref)
-5. [`computed`](/api/computed)
-6. [`watchEffect`](/api/watchEffect)
diff --git a/docs-site/src/content/docs/api/isDeepRef.md b/docs-site/src/content/docs/api/isDeepRef.md
deleted file mode 100644
index c632b9d..0000000
--- a/docs-site/src/content/docs/api/isDeepRef.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: isDeepRef
----
-
-## Overview
-
-The `isDeepRef` function determines whether a given value is a deep ref object, indicating that it has been deeply converted into a ref object using `ref` or `cref`.
-
-## Usage
-
-### Checking for Deep Ref
-
-To check if a value is a deep ref, you can use the `isDeepRef` function.
-
-```ts
-import { isDeepRef } from 'regor'
-
-const myValue = /* Your value here */
-
-if (isDeepRef(myValue)) {
- console.log('The value is a deep ref.')
-} else {
- console.log('The value is not a deep ref.')
-}
-```
-
-## Parameters
-
-- `value`: The value you want to check for being a deep ref object.
-
-## Return Value
-
-- The `isDeepRef` function returns `true` if the provided `value` is a deep ref object, and `false` otherwise.
-
-## Example
-
-```ts
-import { isDeepRef } from 'regor'
-
-const deepRefValue = /* A deep ref value created using ref or cref */
-
-if (isDeepRef(deepRefValue)) {
- console.log('This value is a deep ref object.')
-} else {
- console.log('This value is not a deep ref object.')
-}
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`cref`](/api/cref)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`sref`](/api/sref)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/isRaw.md b/docs-site/src/content/docs/api/isRaw.md
deleted file mode 100644
index 609eb5d..0000000
--- a/docs-site/src/content/docs/api/isRaw.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: isRaw
----
-
-## Overview
-
-The `isRaw` function determines whether a given value has been marked as "raw" using the `markRaw` function, indicating that it should not be deeply converted into a deep ref when using the `ref` function.
-
-## Usage
-
-### Checking for Raw Value
-
-To check if a value is marked as raw, you can use the `isRaw` function.
-
-```ts
-import { isRaw } from 'regor'
-
-const myValue = /* Your value here */
-
-if (isRaw(myValue)) {
- console.log('The value is marked as raw.')
-} else {
- console.log('The value is not marked as raw.')
-}
-```
-
-## Parameters
-
-- `value`: The value you want to check for being marked as raw.
-
-## Return Value
-
-- The `isRaw` function returns `true` if the provided `value` is marked as raw using `markRaw`, and `false` otherwise.
-
-## Implementation Details
-
-- The function checks if the provided value has a property marked with the `rawSymbol` set to `1`, indicating that it is marked as raw.
-
-## Example
-
-```ts
-import { markRaw, isRaw } from 'regor'
-
-const data = {
- name: 'Alice',
- age: 30,
- rawProperty: markRaw({ nested: 'value' }),
-}
-
-// Check if rawProperty is marked as raw
-if (isRaw(data.rawProperty)) {
- console.log('The rawProperty is marked as raw.')
-} else {
- console.log('The rawProperty is not marked as raw.')
-}
-```
-
-## See Also
-
-- [`markRaw`](/api/markRaw)
-- [`ref`](/api/ref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/isRef.md b/docs-site/src/content/docs/api/isRef.md
deleted file mode 100644
index 0ac49bb..0000000
--- a/docs-site/src/content/docs/api/isRef.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: isRef
----
-
-## Overview
-
-The `isRef` function determines whether a given value is a ref object, indicating that it has been converted into a ref using the `ref`, `sref` or `computed` functions.
-
-## Usage
-
-### Checking for Ref
-
-To check if a value is a ref, you can use the `isRef` function.
-
-```ts
-import { isRef } from 'regor'
-
-const myValue = /* Your value here */
-
-if (isRef(myValue)) {
- console.log('The value is a ref.')
-} else {
- console.log('The value is not a ref.')
-}
-```
-
-## Parameters
-
-- `value`: The value you want to check for being a ref object.
-
-## Return Value
-
-- The `isRef` function returns `true` if the provided `value` is a ref object, and `false` otherwise.
-
-## Example
-
-```ts
-import { isRef } from 'regor'
-
-const refValue = /* A ref value created using the ref or sref function */
-
-if (isRef(refValue)) {
- console.log('This value is a ref object.')
-} else {
- console.log('This value is not a ref object.')
-}
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/markRaw.md b/docs-site/src/content/docs/api/markRaw.md
deleted file mode 100644
index a1226a1..0000000
--- a/docs-site/src/content/docs/api/markRaw.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: markRaw
----
-
-## Overview
-
-The `markRaw` function allows you to mark a given value as "raw," indicating that it should not be converted into a deep ref when using the `ref` function. Marking a value as "raw" ensures that specific nested properties or the entire object will remain untracked and not reactive.
-
-## Usage
-
-### Marking a Value as Raw
-
-To mark a value as raw, you can use the `markRaw` function.
-
-```ts
-import { markRaw } from 'regor'
-
-const myValue = /* Your object here */
-
-// Marking the object as raw
-const rawValue = markRaw(myValue)
-```
-
-## Parameters
-
-- `value`: The object or value you want to mark as raw, preventing it from being deeply converted into a ref object.
-
-## Return Value
-
-- The `markRaw` function returns the same value that you passed as an argument, but with an additional marker indicating it is a raw value.
-
-## Implementation Details
-
-- The function sets a marker on the provided value using the `rawSymbol` to indicate that it should not be deeply converted into a ref.
-- The marked object remains untracked when used with the `ref` function.
-
-## Example
-
-```ts
-import { markRaw, ref } from 'regor'
-
-const data = {
- name: 'Alice',
- age: 30,
- rawProperty: markRaw({ nested: 'value' }),
-}
-
-const myRef = ref(data)
-
-// Changes to rawProperty will not trigger reactivity
-myRef().rawProperty.nested = 'updated value'
-console.log(myRef().rawProperty.nested) // Outputs 'updated value'
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/observe.md b/docs-site/src/content/docs/api/observe.md
deleted file mode 100644
index 2ad3099..0000000
--- a/docs-site/src/content/docs/api/observe.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: observe
----
-
-## Overview
-
-The `observe` function allows you to create observers that react to changes in ref objects, providing a callback that triggers when the ref's value changes. This is useful for handling side effects or updating UI elements based on reactive data.
-
-[**`Try It Online`**](https://stackblitz.com/edit/regor-sample-ref?file=index.ts)
-
-## Usage
-
-### Creating Observers
-
-To create an observer, you can use the `observe` function, passing in a ref object and a callback function.
-
-```ts
-import { observe, ref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Create an observer
-const stopObserving = observe(myRef, (newValue) => {
- console.log('Value changed:', newValue)
-})
-```
-
-## Parameters
-
-- `source`: The ref object you want to observe for changes.
-- `observer`: A callback function that will be triggered whenever the ref's value changes.
-- `init` (optional): If `true`, the observer will be immediately invoked with the current value of the ref when it's created.
-
-## Return Value
-
-- The `observe` function returns a `stopObserving` function that allows you to stop the observer when it's no longer needed. Calling `stopObserving` will unsubscribe the observer from the ref object.
-
-## Example
-
-```ts
-import { observe, ref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Create an observer with init set to true
-const stopObserving = observe(
- myRef,
- (newValue) => {
- console.log('Value changed:', newValue)
- },
- true,
-)
-
-// Later, when the observer is no longer needed, stop it
-stopObserving()
-```
-
-## See Also
-
-- [`observeMany`](/api/observeMany)
-- [`observerCount`](/api/observerCount)
-- [`watchEffect`](/api/watchEffect)
-- [`computed`](/api/computed)
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/observeMany.md b/docs-site/src/content/docs/api/observeMany.md
deleted file mode 100644
index 908feca..0000000
--- a/docs-site/src/content/docs/api/observeMany.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: observeMany
----
-
-## Overview
-
-The `observeMany` function allows you to create observers that react to changes in multiple ref objects simultaneously. This is useful for handling side effects or updating UI elements based on changes in multiple reactive data sources.
-
-## Usage
-
-### Creating Observers for Multiple Refs
-
-To create an observer for multiple ref objects, you can use the `observeMany` function, passing in an array of ref objects and a callback function.
-
-```ts
-import { observeMany, ref } from 'regor'
-
-const ref1 = ref('Hello')
-const ref2 = ref('World')
-
-// Create an observer for multiple refs
-const stopObserving = observeMany([ref1, ref2], (newValues) => {
- console.log('Values changed:', newValues)
-})
-```
-
-## Parameters
-
-- `sources`: An array of ref objects you want to observe for changes.
-- `observer`: A callback function that will be triggered whenever any of the ref values change. The callback receives an array of the current values of all observed refs.
-- `init` (optional): If `true`, the observer will be immediately invoked with the current values of the refs when it's created.
-
-## Return Value
-
-- The `observeMany` function returns a `stopObserving` function that allows you to stop the observer when it's no longer needed. Calling `stopObserving` will unsubscribe the observer from all the observed ref objects.
-
-## Example
-
-```ts
-import { observeMany, ref } from 'regor'
-
-const ref1 = ref('Hello')
-const ref2 = ref('World')
-
-// Create an observer for multiple refs with init set to true
-const stopObserving = observeMany(
- [ref1, ref2],
- (newValues) => {
- console.log('Values changed:', newValues)
- },
- true,
-)
-
-// Later, when the observer is no longer needed, stop it
-stopObserving()
-```
-
-## See Also
-
-- [`observe`](/api/observe)
-- [`observerCount`](/api/observerCount)
-- [`watchEffect`](/api/watchEffect)
-- [`computed`](/api/computed)
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/observerCount.md b/docs-site/src/content/docs/api/observerCount.md
deleted file mode 100644
index 073ac90..0000000
--- a/docs-site/src/content/docs/api/observerCount.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: observerCount
----
-
-## Overview
-
-The `observerCount` function allows you to determine the number of observers (callbacks) currently registered on a ref object. This can be useful for debugging and understanding how many entities are actively reacting to changes in the ref object.
-
-## Usage
-
-### Getting the Observer Count
-
-To get the number of observers for a ref object, you can use the `observerCount` function.
-
-```ts
-import { observerCount, ref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Get the observer count
-const count = observerCount(myRef)
-console.log('Observer count:', count)
-```
-
-## Parameters
-
-- `source`: The ref object for which you want to retrieve the observer count.
-
-## Return Value
-
-- The `observerCount` function returns the number of observers (callbacks) currently registered on the provided ref object.
-
-## Example
-
-```ts
-import { observerCount, ref, observe } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Create an observer for the ref
-observe(myRef, () => {
- console.log('Ref value changed.')
-})
-
-// Get the observer count
-const count = observerCount(myRef)
-console.log('Observer count:', count) // Outputs 'Observer count: 1'
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/onMounted.md b/docs-site/src/content/docs/api/onMounted.md
deleted file mode 100644
index 013b772..0000000
--- a/docs-site/src/content/docs/api/onMounted.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: onMounted
----
-
-## Overview
-
-The `onMounted` function allows you to register a callback function that will be executed when an app or component is mounted or initialized. This is particularly useful for performing setup tasks or side effects when a component becomes active.
-
-## Usage
-
-### Registering the `onMounted` Callback
-
-To register an `onMounted` callback, simply call the `onMounted` function and pass the desired callback function as an argument. The callback will be executed when the app or component is mounted.
-
-```ts
-import { createApp, defineComponent, html, useScope, onMounted } from 'regor'
-
-const userRow = defineComponent(html`
`, {
- context: () => ({
- // Register an onMounted callback
- onMounted(() => {
- // Perform initialization tasks
- console.log('Component is mounted!')
- })
- })
-})
-
-createApp(
- useScope(() => {
- // Register an onMounted callback
- onMounted(() => {
- // Perform initialization tasks
- console.log('App is mounted!')
- })
- return {}
- }),
-)
-```
-
-## Parameters
-
-- `onMounted` (required): A callback function that will be executed when the component or scope is mounted.
-
-## Notes
-
-- `onMounted` callbacks can be useful for initializing state, fetching data, setting up event listeners, or any other task that should be performed when a component becomes active.
-
-- Multiple `onMounted` callbacks can be registered, and they will be executed in the order they were registered.
-
-- `onMounted` is often used in conjunction with `onUnmounted` to define cleanup tasks that should be performed when a component is unmounted.
-
-## See Also
-
-- [`useScope`](/api/useScope)
-- [`onUnmounted`](/api/onUnmounted)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/onUnmounted.md b/docs-site/src/content/docs/api/onUnmounted.md
deleted file mode 100644
index d83ae3b..0000000
--- a/docs-site/src/content/docs/api/onUnmounted.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: onUnmounted
----
-
-## Overview
-
-The `onUnmounted` function allows you to register a callback function that will be executed when a component or scope is unmounted or cleaned up. This is useful for performing cleanup tasks or removing event listeners when a component becomes inactive.
-
-## Usage
-
-### Registering the `onUnmounted` Callback
-
-To register an `onUnmounted` callback, simply call the `onUnmounted` function and pass the desired callback function as an argument. The callback will be executed when the component or scope is unmounted or cleaned up.
-
-```ts
-import { createApp, defineComponent, html, useScope, onUnmounted } from 'regor'
-
-const userRow = defineComponent(html`
`, {
- context: () => ({
- // Register an onUnmounted callback
- onUnmounted(() => {
- // Perform cleanup tasks
- console.log('Component is unmounted!')
- })
- })
-})
-
-createApp(
- useScope(() => {
- // Register an onUnmounted callback
- onUnmounted(() => {
- // Perform cleanup tasks
- console.log('App is unmounted!')
- })
- return {}
- }),
-)
-```
-
-## Parameters
-
-- `onUnmounted` (required): A callback function that will be executed when the app or component is unmounted or cleaned up.
-
-## Notes
-
-- `onUnmounted` callbacks can be useful for cleaning up resources, removing event listeners, or any other task that should be performed when a component becomes inactive.
-
-- Multiple `onUnmounted` callbacks can be registered, and they will be executed in the order they were registered.
-
-- `onUnmounted` is often used in conjunction with `onMounted` to define initialization and cleanup tasks for components or scopes.
-
-## See Also
-
-- [`useScope`](/api/useScope)
-- [`onMounted`](/api/onMounted)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/pause.md b/docs-site/src/content/docs/api/pause.md
deleted file mode 100644
index bab4139..0000000
--- a/docs-site/src/content/docs/api/pause.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: pause
----
-
-## Overview
-
-The `pause` function is used to pause the automatic triggering of observers for a specific ref. When a ref is paused, its observers are temporarily deactivated, and changes to the ref's value will not trigger observer callbacks until it is resumed using the `resume` function.
-
-## Usage
-
-### Pausing Observers
-
-To pause the observers of a specific ref, call the `pause` function with the ref as the `source` argument. This will temporarily deactivate the observers associated with the ref.
-
-```ts
-import { pause, ref, observe } from 'regor'
-
-const myRef = ref(5)
-
-observe(myRef, () => {
- console.log('Observer triggered:', myRef.value)
-})
-
-myRef.value = 10 // The observer is automatically triggered
-
-// Pause the observers of myRef
-pause(myRef)
-
-myRef.value = 15 // The observer is not triggered
-
-// Resume the observers of myRef
-resume(myRef)
-
-myRef.value = 20 // The observer is triggered again
-
-// Outputs:
-// Observer triggered: 10
-// Observer triggered: 20
-```
-
-## Parameters
-
-- `source`: The ref for which you want to pause the automatic triggering of observers.
-
-## Notes
-
-- The `pause` function is useful when you want to temporarily disable observer notifications for a ref, allowing you to make multiple changes to the ref's value without triggering observers in between.
-
-- Pausing a ref does not prevent manual triggering of observers using the `trigger` function.
-
-- To resume the observers of a paused ref, use the `resume` function.
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`observe`](/api/observe)
-- [`trigger`](/api/trigger)
-- [`resume`](/api/resume)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/removeNode.md b/docs-site/src/content/docs/api/removeNode.md
deleted file mode 100644
index 83aab36..0000000
--- a/docs-site/src/content/docs/api/removeNode.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: removeNode
----
-
-## Overview
-
-The `removeNode` function in Regor is responsible for removing a DOM node and initiating the unbinding process to clean up associated data bindings and event listeners. This function ensures that elements are safely removed from the DOM while also releasing any resources associated with them.
-
-## Usage
-
-### Removing a DOM Node and Unbinding
-
-The `removeNode` function takes a single parameter:
-
-- `node`: The DOM node you want to remove from the document. This function will also initiate the unbinding process to clean up associated data bindings and event listeners.
-
-### Example
-
-```javascript
-import { removeNode } from 'regor'
-
-// Remove a DOM node and clean up associated data bindings and event listeners
-const someElement = document.getElementById('example')
-removeNode(someElement)
-```
-
-## Parameters
-
-- `node`: The DOM node you want to remove from the document. This function will also initiate the unbinding process to clean up associated data bindings and event listeners.
-
-## Notes
-
-- The `removeNode` function is used to safely remove a DOM node from the document while ensuring that any bound data and associated logic are properly unbound and cleaned up.
-
-- When called on a specific DOM node, the function also initiates the unbinding process, which includes removing event listeners and cleaning up data bindings associated with the node and its descendants.
-
-- This function is typically used internally within Regor to facilitate the cleanup process when components are unmounted or when elements are removed from the DOM as part of Regor's rendering and lifecycle management.
-
-- It is essential to use the `removeNode` function or Regor's lifecycle management mechanisms when removing elements from the DOM to prevent memory leaks and ensure proper cleanup.
-
-## See Also
-
-- [addUnbinder](/api/addUnbinder)
-- [unbind](/api/unbind)
-- [drainUnbind](/api/drainUnbind)
-- [getBindData](/api/getBindData)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/resume.md b/docs-site/src/content/docs/api/resume.md
deleted file mode 100644
index 0776582..0000000
--- a/docs-site/src/content/docs/api/resume.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: resume
----
-
-## Overview
-
-The `resume` function is used to resume the automatic triggering of observers for a specific ref that has previously been paused using the `pause` function. When a ref is resumed, its observers are reactivated, and changes to the ref's value will once again trigger observer callbacks.
-
-## Usage
-
-### Resuming Observers
-
-To resume the observers of a specific ref, call the `resume` function with the ref as the `source` argument. This will reactivate the observers associated with the ref.
-
-```ts
-import { pause, resume, ref, observe } from 'regor'
-
-const myRef = ref(5)
-
-observe(myRef, () => {
- console.log('Observer triggered:', myRef.value)
-})
-
-myRef.value = 10 // The observer is automatically triggered
-
-// Pause the observers of myRef
-pause(myRef)
-
-myRef.value = 15 // The observer is not triggered
-
-// Resume the observers of myRef
-resume(myRef)
-
-myRef.value = 20 // The observer is triggered again
-
-// Outputs:
-// Observer triggered: 10
-// Observer triggered: 20
-```
-
-## Parameters
-
-- `source`: The ref for which you want to resume the automatic triggering of observers.
-
-## Notes
-
-- The `resume` function is used to reactivate observers for a ref that has previously been paused using the `pause` function. This allows you to continue receiving observer notifications when changes are made to the ref's value.
-
-- Resuming a ref's observers does not trigger observer callbacks for past changes made while the ref was paused. Only future changes to the ref's value will trigger observers.
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`observe`](/api/observe)
-- [`trigger`](/api/trigger)
-- [`pause`](/api/pause)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/silence.md b/docs-site/src/content/docs/api/silence.md
deleted file mode 100644
index 933380a..0000000
--- a/docs-site/src/content/docs/api/silence.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: silence
----
-
-## Overview
-
-The `silence` function is an internal utility provided by Regor. It is used to temporarily suspend the normal behavior of collecting refs within the callback of `watchEffect`, `computed` or `collectRefs`. This allows you to perform actions on refs excluded from normal behavior of `watchEffect`, `computed` or `collectRefs`. It is useful in specific scenarios when you want to prevent ref collection for some refs.
-
-## Usage
-
-### Silencing Ref Collection
-
-To temporarily suspend ref collection within the callback of `watchEffect`, `computed` or `collectRefs`, you can wrap your action function with `silence`.
-
-```ts
-import { silence, watchEffect, ref } from 'regor'
-
-const myRef = ref(5)
-const anotherRef = ref(7)
-
-watchEffect(() => {
- console.log(myRef.value) // myRef is collected and will be observed.
-
- silence(() => {
- anotherRef.value = 10 // anotherRef is excluded from the ref collection and will not be observed.
- console.log(anotherRef.value)
- })
-})
-
-myRef.value = 8 // watchEffect's callback will be invoked.
-anotherRef.value = 9 // watchEffect's callback will not be invoked
-```
-
-## Parameters
-
-- `action`: A function that performs some logic within the callback of `watchEffect`, `computed` or `collectRefs` but temporarily suspends ref collection. The function is executed within a scope where ref collection is silenced.
-
-## Return Value
-
-- The `silence` function returns the result of the action function, allowing you to access the outcome of the action.
-
-## Example
-
-```ts
-import { silence, watchEffect, ref } from 'regor'
-
-const myRef = ref(5)
-
-watchEffect(() => {
- console.log(myRef.value) // Outputs 5
-
- silence(() => {
- myRef.value = 10
- console.log(myRef.value) // Outputs 10
- })
-
- console.log(myRef.value) // Outputs 10
-})
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`computed`](/api/computed)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`computed`](/api/computed)
-- [`watchEffect`](/api/watchEffect)
-- [`collectRefs`](/api/collectRefs)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/sref.md b/docs-site/src/content/docs/api/sref.md
deleted file mode 100644
index 9827c44..0000000
--- a/docs-site/src/content/docs/api/sref.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: sref
----
-
-## Overview
-
-The `sref` function converts a given value into an sref (short for "simple ref") object and returns the sref. An sref allows you to both retrieve and update its value.
-
-The nested properties of an sref are not converted to refs.
-
-[**`Try It Online`**](https://stackblitz.com/edit/regor-sample-ref?file=index.ts)
-
-## Usage
-
-### Getting the SRef Value
-
-You can access the value of the sref object using two methods:
-
-1. `srefObj.value`: Accesses the value directly.
-2. `srefObj()`: Invokes the sref object to retrieve its value.
-
-### Setting the SRef Value
-
-To update the value of an sref object, you have two options:
-
-1. `srefObj.value = newValue`: Sets the value directly.
-2. `srefObj(newValue)`: Invokes the sref object with the new value to update it.
-
-## Parameters
-
-- `value` (optional): Any value that you want to convert into an sref object. The function supports several input types:
-
- - Basic types such as numbers, strings, booleans, Date etc.
- - sref objects.
- - objects
- - Array, Map, Set.
- - `null` or `undefined`.
-
-## Return Value
-
-The `sref` function returns an sref object representing the input value. The specific type of the returned sref object depends on the input value's type.
-
-## Notes
-
-- `sref` modifies prototype of arrays, maps, and sets to make them reactive.
-
-- Observers can be attached to the sref object to be notified of changes to its value.
-
-- The function also supports batch collecting changes and pausing/resuming auto-triggering of observers.
-- Every `ref` is an `sref`, but not every `sref` is a `ref`.
-
-## Example
-
-```ts
-import { sref } from 'regor'
-
-const initialValue = {
- name: 'John',
- age: 30,
- hobbies: ['reading', 'swimming'],
-}
-
-const mySRef = sref(initialValue)
-
-// Accessing the sref value using function call
-console.log(mySRef()) // Outputs the initial value
-
-// Accessing the sref value using value getter
-console.log(mySRef.value) // Outputs the initial value
-
-// Updating the sref value
-mySRef().name = 'Alice' // Directly modifying the sref value
-console.log(mySRef().name) // Outputs 'Alice'
-
-mySRef({
- name: 'Alice',
- age: 35,
- hobbies: ['reading', 'swimming'],
-}) // Invoking the sref with a new value
-console.log(mySRef().age) // Outputs 35
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`cref`](/api/cref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`observe`](/api/observe)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/startBatch.md b/docs-site/src/content/docs/api/startBatch.md
deleted file mode 100644
index fdf7fd0..0000000
--- a/docs-site/src/content/docs/api/startBatch.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: startBatch
----
-
-## Overview
-
-The `startBatch` function is used in conjunction with the `batch` function to batch multiple updates to refs, optimizing performance by reducing the number of observer notifications and triggers during a series of updates. The `startBatch` function initializes a batch operation, and any ref updates made after calling `startBatch` are batched together until the `endBatch` function is called.
-
-## Usage
-
-### Starting a Batch
-
-To start a batch of ref updates, call the `startBatch` function. Once a batch is started, any subsequent changes made to refs are considered part of that batch and are not immediately observed or triggered. Instead, observers are notified only once at the end of the batch.
-
-```javascript
-import { batch, startBatch, endBatch, ref } from 'regor'
-
-const myRef1 = ref(5)
-const myRef2 = ref(10)
-
-startBatch() // Start a batch
-
-myRef1.value = 15
-myRef2.value = 20
-
-endBatch() // End the batch
-
-// Observers are notified only once at the end of the batch
-// Outputs:
-// Observer triggered: 20
-```
-
-## Notes
-
-- The `startBatch` function is used in conjunction with the `endBatch` function to group ref updates together within a batch. After starting a batch with `startBatch`, any subsequent changes to refs are included in that batch until the `endBatch` function is called.
-
-- Batching updates with the `startBatch` and `endBatch` functions can help improve the performance of your application when multiple changes are made to refs in a short period. It reduces the number of observer notifications and triggers, which can be especially beneficial in situations with complex reactivity logic.
-
-- It's essential to call the `endBatch` function to finalize the batch and notify observers of the ref updates made during the batch.
-
-- Important: When using the batch functions, keep in mind that reads of refs within the batch can return potentially stale or outdated values due to pausing auto-updates. Ensure that your code logic accounts for this situation when reading refs within a batch.
-
-## See Also
-
-- [`endBatch`](/api/endBatch)
-- [`batch`](/api/batch)
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/svg.md b/docs-site/src/content/docs/api/svg.md
deleted file mode 100644
index 8ba963a..0000000
--- a/docs-site/src/content/docs/api/svg.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: svg
----
-
-## Overview
-
-The `svg` function is an alias-style template tag with the same interpolation behavior as `html`, tailored for authoring SVG markup in TypeScript templates.
-
-## Usage
-
-```ts
-import { svg } from 'regor'
-
-const radius = 16
-const icon = svg`
-
- `
-```
-
-## Parameters
-
-- `templates` (`TemplateStringsArray`): Static segments of the template literal.
-- `...args` (`unknown[]`): Interpolated values inserted between template segments.
-
-## Return Value
-
-- Returns a `string` containing the combined SVG markup.
-
-## Notes
-
-- `svg` behaves exactly like `html` at runtime (string assembly), so you can use it anywhere a template string is accepted.
-- Use `svg` when you want semantic clarity in code and editor hinting for SVG snippets.
-
-## See Also
-
-- [html](/api/html)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/trigger.md b/docs-site/src/content/docs/api/trigger.md
deleted file mode 100644
index 5ac1bd0..0000000
--- a/docs-site/src/content/docs/api/trigger.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: trigger
----
-
-## Overview
-
-The `trigger` function is used to manually trigger observers and update dependent refs. This function is particularly useful when you need to manually control when ref updates and observer notifications occur.
-
-## Usage
-
-### Manually Triggering Observers
-
-To manually trigger observers for a specific ref, call the `trigger` function with the ref as the `source` argument. This will notify all observers of the ref and update any dependent refs.
-
-```ts
-import { trigger, ref, observe } from 'regor'
-
-const myRef = ref(5)
-
-observe(myRef, () => {
- console.log('Observer triggered:', myRef.value)
-})
-
-myRef.value = 10 // The observer is automatically triggered
-
-// Manually trigger the observer
-trigger(myRef)
-
-// Outputs:
-// Observer triggered: 10
-```
-
-### Recursive Triggering
-
-By default, the `trigger` function only notifies observers of the specified ref. If you want to trigger observers recursively for nested refs within arrays, sets, maps, or objects, you can set the `isRecursive` argument to `true`. This will trigger observers for all nested refs.
-
-```ts
-import { trigger, ref, observe } from 'regor'
-
-const myRef = ref([1, 2, 3])
-
-observe(myRef, () => {
- console.log('Observer triggered:', myRef.value)
-})
-
-myRef.value.push(4) // The observer is automatically triggered
-
-// Manually trigger the observer recursively
-trigger(myRef, undefined, true)
-
-// Outputs:
-// Observer triggered: [1, 2, 3, 4]
-```
-
-## Parameters
-
-- `source`: The ref for which you want to manually trigger observers.
-- `eventSource` (optional): An optional event source that can be provided to identify the source of the trigger. This can be useful for debugging and tracking trigger events.
-- `isRecursive` (optional): A boolean flag that, when set to `true`, triggers observers recursively for nested refs within arrays, sets, maps, and objects. By default, this is set to `false`.
-
-## Notes
-
-- The `trigger` function is typically used for advanced scenarios where manual control over observer notifications is required. In most cases, observers are automatically notified when a ref's value changes.
-
-- Recursive triggering can be resource-intensive if there are deep and complex nested structures. Use it judiciously to avoid unnecessary performance overhead.
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`sref`](/api/sref)
-- [`observe`](/api/observe)
-- [`unref`](/api/unref)
-- [`isRef`](/api/isRef)
-- [`isDeepRef`](/api/isDeepRef)
-- [`computed`](/api/computeRef)
-- [`watchEffect`](/api/watchEffect)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/unbind.md b/docs-site/src/content/docs/api/unbind.md
deleted file mode 100644
index 00ca269..0000000
--- a/docs-site/src/content/docs/api/unbind.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: unbind
----
-
-## Overview
-
-The `unbind` function in Regor is responsible for removing bound data and associated logic from a DOM node and its descendants. This function is crucial for cleaning up data bindings and event listeners when elements are removed from the DOM or when they are no longer needed.
-
-## Usage
-
-### Removing Bound Data and Logic
-
-The `unbind` function takes a single parameter:
-
-- `node`: The DOM node from which you want to start the unbinding process. The function will recursively unbind data and logic from this node and its descendants.
-
-### Example
-
-```javascript
-import { unbind } from 'regor'
-
-// Remove bound data and associated logic from a DOM node and its descendants
-const someElement = document.getElementById('example')
-unbind(someElement)
-```
-
-## Parameters
-
-- `node`: The DOM node from which you want to start the unbinding process. The function will recursively unbind data and logic from this node and its descendants.
-
-## Notes
-
-- The `unbind` function is typically used internally within Regor to clean up data bindings and event listeners associated with DOM nodes that are being removed or are no longer needed.
-
-- When called on a specific DOM node, the function recursively traverses all child nodes, unbinding data and logic as it goes.
-
-- The primary purpose of this function is to ensure that there are no memory leaks or lingering event listeners when elements are removed from the DOM.
-
-- It is essential to call the `unbind` function when elements are removed from the DOM manually or as part of a Regor component's lifecycle management.
-
-- In most cases, you do not need to call this function explicitly, as Regor handles the unbinding process automatically when components are unmounted or when elements are removed from the DOM through Regor's rendering and cleanup mechanisms.
-
-## See Also
-
-- [addUnbinder](/api/addUnbinder)
-- [removeNode](/api/removeNode)
-- [drainUnbind](/api/drainUnbind)
-- [getBindData](/api/getBindData)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/unref.md b/docs-site/src/content/docs/api/unref.md
deleted file mode 100644
index 6530da4..0000000
--- a/docs-site/src/content/docs/api/unref.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: unref
----
-
-## Overview
-
-The `unref` function allows you to safely retrieve the original value from a ref object if the given value is a ref, or it simply returns the value itself if it's not a ref.
-
-## Usage
-
-### Unwrapping a Ref
-
-To safely retrieve the original value from a ref or non-ref value, you can use the `unref` function.
-
-```ts
-import { unref } from 'regor'
-
-const myValue = /* Your ref or non-ref value here */
-
-const unwrappedValue = unref(myValue)
-```
-
-## Parameters
-
-- `value`: The value you want to unwrap. It can be a ref object or a non-ref value.
-
-## Return Value
-
-- The `unref` function returns the original value if the provided `value` is a ref. If `value` is not a ref, it returns the same `value` itself.
-
-## Example
-
-```ts
-import { ref, unref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Unwrapping a ref value
-const unwrappedValue = unref(myRef)
-console.log(unwrappedValue) // Outputs 'Hello, Regor!'
-
-const nonRefValue = 'This is not a ref.'
-
-// Unwrapping a non-ref value (no change)
-const sameValue = unref(nonRefValue)
-console.log(sameValue) // Outputs 'This is not a ref.'
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`observe`](/api/observe)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/api/watchEffect.md b/docs-site/src/content/docs/api/watchEffect.md
deleted file mode 100644
index 7de29f2..0000000
--- a/docs-site/src/content/docs/api/watchEffect.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: watchEffect
----
-
-## Overview
-
-The `watchEffect` function allows you to create an "effect" that automatically reacts to changes in reactive data, such as ref objects or other observables. This effect is useful for handling side effects, such as updating the UI, in a reactive and efficient manner.
-
-## Usage
-
-### Creating Effects
-
-To create an effect using `watchEffect`, you provide a function that defines the effect. This function will be called immediately and then re-called whenever the reactive data it depends on changes.
-
-```ts
-import { watchEffect, ref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Create a watch effect
-const stopWatching = watchEffect(() => {
- console.log('Value:', myRef.value)
-})
-
-// Later, when the effect is no longer needed, stop it
-stopWatching()
-```
-
-## Parameters
-
-- `effect`: A function that defines the effect you want to create. This function may optionally receive a callback function (`onCleanup`) as an argument.
-
-## Return Value
-
-- The `watchEffect` function returns a `stopWatching` function that allows you to stop the effect when it's no longer needed. Calling `stopWatching` will unsubscribe the effect from the reactive data.
-
-## Example
-
-```ts
-import { watchEffect, ref } from 'regor'
-
-const myRef = ref('Hello, Regor!')
-
-// Create a watch effect that updates the UI
-const stopWatching = watchEffect(() => {
- console.log('Value:', myRef.value)
-})
-
-// Later, when the effect is no longer needed, stop it
-stopWatching()
-```
-
-## See Also
-
-- [`ref`](/api/ref)
-- [`useScope`](/api/useScope)
-- [`observe`](/api/observe)
-- [`observeMany`](/api/observeMany)
-- [`isDeepRef`](/api/isDeepRef)
-- [`isRef`](/api/isRef)
-- [`unref`](/api/unref)
-- [`sref`](/api/sref)
-- [`flatten`](/api/flatten)
-- [`isRaw`](/api/isRaw)
-- [`markRaw`](/api/markRaw)
-- [`pause`](/api/pause)
-- [`resume`](/api/resume)
-- [`trigger`](/api/trigger)
-
-[Back to the API list](/api/)
diff --git a/docs-site/src/content/docs/directives/context.md b/docs-site/src/content/docs/directives/context.md
deleted file mode 100644
index e45a73f..0000000
--- a/docs-site/src/content/docs/directives/context.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: :context Directive
----
-
-`:context` assigns an object into a component instance context, reactively.
-`r-context` is an alias with the same behavior.
-
-Use it when you want to pass multiple values to a component in one place, including fields that are not declared in `props`.
-
-## What it does
-
-```html
-
-
-```
-
-In the component, `title` and `theme` become available as component context fields (or update existing ref fields when applicable).
-When `pageTitle` or `activeTheme` changes, the component values are updated.
-
-## When to use `:context`
-
-Use `:context` for object-style component input.
-`r-context` is equivalent and can be used interchangeably.
-
-Use `:prop-name="value"` or `r-bind:prop-name="value"` (same single-prop binding behavior) when the prop is declared in the component `props` list.
-
-Use object-form attribute binding (`r-bind="{...}"` or `:="{...}"`) for normal host attribute fallthrough, not for component context assignment.
-
-## Example
-
-```html
-
-```
-
-```ts
-const UserCard = defineComponent('', {
- props: ['userId'],
- context: (head) => ({
- userId: head.props.userId,
- badge: head.props.badge,
- canEdit: head.props.canEdit,
- }),
-})
-```
-
-In this example:
-
-- `userId` comes from declared prop binding (`:user-id`)
-- `badge` and `canEdit` come from `:context`
-
-[Back to the directives](/directives/)
diff --git a/docs-site/src/content/docs/directives/index.md b/docs-site/src/content/docs/directives/index.md
deleted file mode 100644
index ad55fed..0000000
--- a/docs-site/src/content/docs/directives/index.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Directives
-sidebar:
- order: 5
----
-
-Directives are Regor’s runtime template control surface.
-
-By default, directive names start with `r-`. You can customize the prefix with `RegorConfig`.
-
-## Core Rules
-
-1. `r-` directives are explicit full-form syntax.
-2. `:` is shorthand for `r-bind`.
-3. `@` is shorthand for `r-on`.
-4. `.` shorthand binds DOM properties (equivalent to `r-bind.prop`).
-
-## Binding
-
-1. [`r-text`](/directives/r-text): text content binding.
-2. [`r-html`](/directives/r-html): HTML content binding.
-3. [`r-bind`](/directives/r-bind): attributes/properties/object binding.
-4. [`r-model`](/directives/r-model): form two-way binding.
-5. [`r-on`](/directives/r-on): event binding.
-6. [`r-show`](/directives/r-show): conditional visibility.
-7. [`:class`](/directives/class): dynamic class binding.
-8. [`:style`](/directives/style): dynamic style binding.
-
-## Control Flow
-
-1. [`r-if`](/directives/r-if), `r-else-if`, `r-else`: conditional branches.
-2. [`r-for`](/directives/r-for): list/object iteration with keying support.
-
-## Component and Utility
-
-1. [`:is`](/directives/is): dynamic component selection.
-2. [`:context`](/directives/context): component prop object binding.
-3. [`:ref`](/directives/ref): element/component references.
-4. [`r-pre`](/directives/r-pre): skip compilation for subtree.
-5. [`r-teleport`](/directives/r-teleport): move DOM subtree to another target.
-
-## Important Keying Note
-
-In `r-for`, both `key="row.id"` and `:key="row.id"` are expression bindings in Regor templates. Both are supported. Nested paths like `a.b.c.d` are supported.
-
-Use stable keys whenever list identity matters.
-
-## Recommendation
-
-Read in this order:
-
-1. [`r-bind`](/directives/r-bind)
-2. [`r-text`](/directives/r-text)
-3. [`r-if`](/directives/r-if)
-4. [`r-for`](/directives/r-for)
-5. [`r-model`](/directives/r-model)
diff --git a/docs-site/src/content/docs/directives/r-teleport.md b/docs-site/src/content/docs/directives/r-teleport.md
deleted file mode 100644
index b5f2be2..0000000
--- a/docs-site/src/content/docs/directives/r-teleport.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: r-teleport Directive
----
-
-The `r-teleport` directive in Regor is a straightforward directive that empowers you to move an element anywhere within your document's DOM structure. This can be especially useful when you need to dynamically relocate elements to different parts of your web page.
-
-## Usage
-
-To utilize the `r-teleport` directive, follow this basic syntax:
-
-```html
-
-```
-
-- `element`: The HTML element you wish to teleport/move.
-- `targetSelector`: A selector indicating the destination where you want to place the element.
-
-## Example
-
-Here's an example of how you can employ the `r-teleport` directive:
-
-```html
-
-
-
This element will be teleported.
-
-```
-
-In this example, the content inside the `` with the ID "my-element" is moved to the element with the ID "destination" using the `r-teleport` directive.
-
-## Notes
-
-- The `r-teleport` directive allows you to dynamically reposition elements within the DOM structure, enhancing flexibility and interactivity in your web applications.
-
-- It works by selecting a target element based on a CSS selector (`targetSelector`) and moving the element to that location in the document.
-
-- This directive can be particularly handy for creating dynamic UIs and interactive web pages.
-
-- You can use this directive in combination with other Regor directives and features to create rich and dynamic web applications.
-
-## See Also
-
-- [r-bind Directive](/directives/r-bind)
-- [r-model Directive](/directives/r-model)
-- [r-text Directive](/directives/r-text)
-- [r-html Directive](/directives/r-html)
-- [r-on Directive](/directives/r-on)
-- [r-show Directive](/directives/r-show)
-
-[Back to the directives](/directives/)
diff --git a/docs-site/src/content/docs/directives/r-text.md b/docs-site/src/content/docs/directives/r-text.md
deleted file mode 100644
index c53e414..0000000
--- a/docs-site/src/content/docs/directives/r-text.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: r-text Directive
----
-
-`r-text` binds an expression to an element’s `textContent`.
-
-It is the safest and most direct way to render text output.
-
-## Syntax
-
-```html
-
-```
-
-## Basic Example
-
-```html
-
-```
-
-When `message` changes, the element text updates reactively.
-
-## Expression Example
-
-```html
-
-```
-
-## `r-text` vs `{{ ... }}`
-
-Both are valid. Prefer `r-text` when:
-
-1. You want explicit binding at element level.
-2. You are optimizing repeated row templates and want predictable binding points.
-3. You want to avoid accidental surrounding whitespace behavior from text nodes.
-
-## Security and Behavior
-
-1. `r-text` writes plain text, not HTML.
-2. HTML tags in values are escaped as text.
-3. Use [`r-html`](/directives/r-html) only when you intentionally need HTML rendering.
-
-## Common Patterns
-
-```html
-
-
-
-
-```
-
-This is a clear and performant default for list text output.
-
-## See Also
-
-1. [r-bind](/directives/r-bind)
-2. [r-html](/directives/r-html)
-3. [r-for](/directives/r-for)
diff --git a/docs-site/src/content/docs/getting-started.md b/docs-site/src/content/docs/getting-started.md
deleted file mode 100644
index 9a42729..0000000
--- a/docs-site/src/content/docs/getting-started.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-title: Getting Started
-sidebar:
- order: 3
----
-
-Regor binds runtime behavior directly to DOM you already have, or to template
-content you provide at mount time.
-
-This means you can start from static HTML, mount only where needed, and scale
-to multiple independent runtime islands on the same page.
-
-## Install
-
-```sh
-yarn add regor
-```
-
-```sh
-npm install regor
-```
-
-## Quick Start (TypeScript)
-
-```ts
-import { createApp, html, ref } from 'regor'
-
-const app = createApp(
- {
- count: ref(0),
- inc() {
- this.count(this.count() + 1)
- },
- },
- {
- element: document.querySelector('#app')!,
- template: html`
-
- `,
- },
-)
-
-// optional teardown
-// app.unbind()
-// app.unmount()
-```
-
-## CDN ESM
-
-```html
-
-
-```
-
-## Core Mount Modes
-
-1. Bind existing markup in place:
-
-```ts
-createApp({ userName: ref('Ada') }, { selector: '#profile-island' })
-```
-
-2. Replace root content from template string:
-
-```ts
-createApp(
- { title: ref('Home') },
- {
- selector: '#app',
- template: '
',
- },
-)
-```
-
-3. Replace root content from JSON template:
-
-```ts
-createApp(
- { label: ref('Save') },
- {
- element: document.querySelector('#app')!,
- json: { t: 'button', a: { 'r-text': 'label' } },
- },
-)
-```
-
-## Reactivity Basics
-
-`ref` for values and deep object conversion:
-
-```ts
-import { ref } from 'regor'
-
-const count = ref(0)
-count(1)
-console.log(count())
-```
-
-`sref` for shallow object state:
-
-```ts
-import { sref } from 'regor'
-
-const user = sref({ name: 'Ada', age: 30 })
-user().name = 'Grace'
-user({ ...user(), age: 31 })
-```
-
-Inside templates, refs are auto-unwrapped, so use `count`, `user.name`, not
-`count()` or `.value`.
-
-## Component Quick Example
-
-```ts
-import { createApp, defineComponent, ref } from 'regor'
-
-const UserCard = defineComponent('
', {
- props: ['name'],
- context: (head) => ({
- name: head.props.name ?? 'Anonymous',
- }),
-})
-
-createApp({
- components: { UserCard },
- activeName: ref('Ada Lovelace'),
-})
-```
-
-```html
-
-```
-
-## Template Syntax You Will Use Daily
-
-1. `r-text="expr"` for text.
-2. `:attr="expr"` or `r-bind:attr="expr"` for attributes.
-3. `.prop="expr"` or `:prop.prop="expr"` for DOM properties.
-4. `@event="handler"` for events.
-5. `r-if` / `r-else-if` / `r-else` for conditional branches.
-6. `r-for="item, #i in items"` for loops.
-7. `:context="{ ... }"` / `r-context="{ ... }"` for object-style component input.
-8. `{{ expr }}` and `[[ expr ]]` interpolation (enabled by default).
-
-## Where To Go Next
-
-1. [Overview](/overview)
-2. [Guide](/guide)
-3. [Directives](/directives)
-4. [API Reference](/api)
-5. [Guide: Mounting](/guide/mounting)
diff --git a/docs-site/src/content/docs/guide/index.md b/docs-site/src/content/docs/guide/index.md
deleted file mode 100644
index 5472f35..0000000
--- a/docs-site/src/content/docs/guide/index.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Guide
-sidebar:
- order: 4
----
-
-The Guide explains how Regor behaves in real runtime usage, with patterns that map directly to production code.
-
-## Guide Map
-
-1. [Reactivity](/guide/reactivity)
- Core primitives (`ref`, `sref`, computed, observers), update semantics, and state design.
-
-2. [Templates and Expressions](/guide/templates)
- Interpolation behavior, parser/evaluator capabilities, and template authoring patterns.
-
-3. [Components](/guide/components)
- Component creation, input channels (`:x`, `r-bind:x`, `:context`, `r-context`), slots, and inherit behavior.
-
-4. [TypeScript](/guide/typescript)
- Strong typing patterns for app contexts, class-based contexts, and `ComponentHead
`.
-
-5. [Lifecycle and Cleanup](/guide/lifecycle-and-cleanup)
- Mounted/unmounted hooks, `unmount` vs `unbind`, and `drainUnbind` usage.
-
-6. [Mounting](/guide/mounting)
- Static-first + dynamic islands and existing-markup binding patterns.
-
-7. [Persisted State](/guide/persisted-state)
- `persist(...)` patterns for durable reactive state.
-
-8. [Performance](/guide/performance)
- Benchmark methodology, bottleneck analysis, and optimization workflow.
-
-9. [Troubleshooting](/guide/troubleshooting)
- Symptom -> cause -> fix guide for common runtime issues.
-
diff --git a/docs-site/src/content/docs/index.mdx b/docs-site/src/content/docs/index.mdx
deleted file mode 100644
index 51f8be1..0000000
--- a/docs-site/src/content/docs/index.mdx
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Regor
-template: splash
-sidebar:
- order: 1
-hero:
- title: "Reactive UI without framework lock-in"
- tagline: |
- Regor gives you direct DOM binding, precise reactivity primitives,
- and TypeScript-native workflows for real applications.
- image:
- file: ../../assets/regor-logo.svg
- actions:
- - text: "Start Building"
- icon: right-arrow
- link: ./getting-started
- - text: "Read the Guide"
- link: ./guide
- - text: "GitHub"
- icon: external
- variant: minimal
- link: https://github.com/koculu/regor
- attrs:
- target: _blank
----
-
-import { CardGrid, Card, LinkCard } from '@astrojs/starlight/components';
-
-
-Regor is a modern reactive UI library for teams that want **power and control** instead of rigid framework constraints.
-
-It supports:
-
-1. Direct DOM binding over existing markup (no Virtual DOM dependency).
-2. Fine-grained reactive primitives (`ref`, `sref`, `computed`, `observe`, `batch`, `pause`, `resume`, `entangle`).
-3. Component and context models that stay flexible in mixed rendering stacks.
-4. Build-less and CSP-friendly runtime workflows when deployment constraints require them.
-
-
-
- Bind dynamic behavior directly on existing DOM. Regor does not require full-template ownership.
-
-
-
- Use `ref`, `sref`, `computed`, `watchEffect`, observers, batch updates, and pause/resume controls to model state precisely.
-
-
-
- Rich directives for lists, conditionals, events, text/HTML binding, forms, dynamic components, and attribute orchestration.
-
-
-
- Build components in TypeScript with practical context behavior and dynamic composition.
-
-
-
- Use npm packages, CDN ESM, or global build. Choose the workflow that fits your deployment model.
-
-
-
- Stay close to the DOM and optimize hot paths with full visibility instead of opaque rendering internals.
-
-
-
- Adopt Regor incrementally in legacy or mixed-stack applications, including static-first pages with dynamic islands.
-
-
-
- Integrates cleanly with external DOM logic and micro-frontend environments.
-
-
-
-## Start Here
-
-
-
-
-
-
-
-
-## Community and Contribution
-
-
-
-
diff --git a/docs-site/src/content/docs/overview.md b/docs-site/src/content/docs/overview.md
deleted file mode 100644
index 2d51bc7..0000000
--- a/docs-site/src/content/docs/overview.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Overview
-sidebar:
- order: 2
----
-
-Regor is a reactive UI library designed for engineers who want:
-
-1. Direct control over runtime behavior.
-2. A powerful template/directive model.
-3. TypeScript-friendly reactivity primitives.
-4. Freedom to optimize with plain JavaScript and DOM when needed.
-
-Regor is intentionally practical. It does not force one rigid rendering architecture for every use case.
-
-## Architecture Positioning
-
-Regor is Vue-inspired in directive syntax, but different by architecture.
-
-1. Regor does not rely on a Virtual DOM layer.
-2. Regor can bind existing server-rendered/static markup in place.
-3. Regor supports runtime composition and reentrance across already-mounted regions.
-4. Regor keeps optimization escape hatches close to plain DOM and JavaScript.
-
-## Why Teams Choose Regor
-
-### 1. Runtime flexibility without lock-in
-
-Regor can bind existing markup and progressively enhance real pages. You can adopt it incrementally instead of rewriting everything.
-
-### 2. Reactivity that stays explicit
-
-You get `ref`, `sref`, `computed`, `watchEffect`, `observe`, and batching primitives. State flows are explicit and composable.
-
-Control APIs like `pause`, `resume`, and `entangle` help you shape update behavior intentionally in complex flows.
-
-### 3. Directive model with real depth
-
-Regor supports rich directive workflows:
-
-1. Conditional rendering (`r-if`, `r-else-if`, `r-else`, `r-show`).
-2. List rendering (`r-for` with keys, table use cases, nested structures).
-3. Attribute/property/class/style/event binding (`r-bind`, `.prop`, `.camel`, `:class`, `:style`, `@event`).
-4. Form binding (`r-model`) and dynamic components (`:is`, `:context`).
-
-### 4. Excellent fit for mixed environments
-
-Regor works well when part of your DOM is owned by other systems, or when performance-critical sections need custom handling.
-
-### 5. TypeScript without framework-only indirection
-
-Regor uses plain TypeScript code paths for app and component contexts (`createApp`, `ComponentHead`, interfaces/classes). You keep normal TS ergonomics without relying on custom file format compilers.
-
-## Core Philosophy
-
-Regor’s philosophy is:
-
-1. Keep defaults productive.
-2. Keep escape hatches available.
-3. Keep internals understandable.
-4. Keep control in developers’ hands.
-
-## What Regor Is Not Trying To Be
-
-Regor is not built around artificial constraints to optimize only one benchmark shape. It is built for real product constraints where integration flexibility matters.
-
-If your app needs:
-
-1. Existing-markup binding.
-2. Runtime composition.
-3. Context flexibility.
-4. Controlled optimization paths.
-
-Regor is a strong fit.
-
-## Regor vs Vue (Practical Lens)
-
-1. Vue is a strong default for framework-owned SPA architecture.
-2. Regor is a strong default for progressive enhancement and static-first plus dynamic-island architectures.
-3. Vue commonly centers build tooling for peak DX/perf in SPA workflows.
-4. Regor keeps build-less and CSP-constrained runtime options first-class.
-5. Both are capable; pick based on rendering ownership and deployment constraints.
-
-## Practical Tradeoffs
-
-Regor favors flexibility and control. In very binding-dense paths, runtime cost can grow with total DOM + binding volume. This is normal for highly dynamic runtime systems.
-
-The upside is that Regor keeps optimization options open:
-
-1. Reduce binding density where it matters.
-2. Use stable keying and list strategies.
-3. Drop to targeted custom logic in hot sections.
-4. Keep the rest of the app high-level and maintainable.
-
-## Recommended Reading Order
-
-1. [Getting Started](/getting-started)
-2. [Guide](/guide)
-3. [Directives](/directives)
-4. [API Reference](/api)
-5. [Performance Guide](/guide/performance)
-
diff --git a/docs-site/src/env.d.ts b/docs-site/src/env.d.ts
deleted file mode 100644
index f964fe0..0000000
--- a/docs-site/src/env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/docs-site/tsconfig.json b/docs-site/tsconfig.json
index df53d35..6d1bc5f 100644
--- a/docs-site/tsconfig.json
+++ b/docs-site/tsconfig.json
@@ -1,10 +1,13 @@
{
- "extends": "astro/tsconfigs/strict",
- "include": [
- ".astro/types.d.ts",
- "**/*"
- ],
- "exclude": [
- "dist"
- ]
-}
\ No newline at end of file
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "types": ["node"],
+ "strict": true,
+ "noEmit": true,
+ "skipLibCheck": true
+ },
+ "include": ["design/**/*.ts", "content/**/*.ts"]
+}
diff --git a/docs-site/yarn.lock b/docs-site/yarn.lock
index 2ee8033..7cc74d2 100644
--- a/docs-site/yarn.lock
+++ b/docs-site/yarn.lock
@@ -5,4824 +5,2112 @@ __metadata:
version: 8
cacheKey: 10c0
-"@astrojs/compiler@npm:^2.12.2":
- version: 2.12.2
- resolution: "@astrojs/compiler@npm:2.12.2"
- checksum: 10c0/3e63055117010247a9fa6d2c8de1263b3e6f3c089bb6b3cddea76bf3eea6b62b77359c89950e6d048d860874a79521ca2c0cc734af1ee59c7568e01e76a4df10
- languageName: node
- linkType: hard
-
-"@astrojs/internal-helpers@npm:0.6.1":
- version: 0.6.1
- resolution: "@astrojs/internal-helpers@npm:0.6.1"
- checksum: 10c0/2f03ea5d8a673f74f153ea4fb3ec3e50399093f4bea0e2aaebf6ef3ae336be3f7dfb13abfdffe1953814b5b870d59d641937d271822881778600fe47d99e7ef3
- languageName: node
- linkType: hard
-
-"@astrojs/markdown-remark@npm:6.3.2, @astrojs/markdown-remark@npm:^6.3.1":
- version: 6.3.2
- resolution: "@astrojs/markdown-remark@npm:6.3.2"
- dependencies:
- "@astrojs/internal-helpers": "npm:0.6.1"
- "@astrojs/prism": "npm:3.3.0"
- github-slugger: "npm:^2.0.0"
- hast-util-from-html: "npm:^2.0.3"
- hast-util-to-text: "npm:^4.0.2"
- import-meta-resolve: "npm:^4.1.0"
- js-yaml: "npm:^4.1.0"
- mdast-util-definitions: "npm:^6.0.0"
- rehype-raw: "npm:^7.0.0"
- rehype-stringify: "npm:^10.0.1"
- remark-gfm: "npm:^4.0.1"
- remark-parse: "npm:^11.0.0"
- remark-rehype: "npm:^11.1.2"
- remark-smartypants: "npm:^3.0.2"
- shiki: "npm:^3.2.1"
- smol-toml: "npm:^1.3.1"
- unified: "npm:^11.0.5"
- unist-util-remove-position: "npm:^5.0.0"
- unist-util-visit: "npm:^5.0.0"
- unist-util-visit-parents: "npm:^6.0.1"
- vfile: "npm:^6.0.3"
- checksum: 10c0/e4e9926286def70548505d49333c0b80624e36dad035d0b943ef4d56211530784a8317f92277c702b6a47b68dea0f9afd154aacf2c6b8361177a51ac3c8b20bc
- languageName: node
- linkType: hard
-
-"@astrojs/mdx@npm:^4.2.3":
- version: 4.3.0
- resolution: "@astrojs/mdx@npm:4.3.0"
- dependencies:
- "@astrojs/markdown-remark": "npm:6.3.2"
- "@mdx-js/mdx": "npm:^3.1.0"
- acorn: "npm:^8.14.1"
- es-module-lexer: "npm:^1.6.0"
- estree-util-visit: "npm:^2.0.0"
- hast-util-to-html: "npm:^9.0.5"
- kleur: "npm:^4.1.5"
- rehype-raw: "npm:^7.0.0"
- remark-gfm: "npm:^4.0.1"
- remark-smartypants: "npm:^3.0.2"
- source-map: "npm:^0.7.4"
- unist-util-visit: "npm:^5.0.0"
- vfile: "npm:^6.0.3"
- peerDependencies:
- astro: ^5.0.0
- checksum: 10c0/26af7eef30e7f89f30ab89971d8b320678788a4a56f9e8a22e5b5eb1885c105dd1c0e5fe94c564a44a87e293bdb1a1b666f1f04004afcbfb3b53b462a759a9ef
- languageName: node
- linkType: hard
-
-"@astrojs/prism@npm:3.3.0":
- version: 3.3.0
- resolution: "@astrojs/prism@npm:3.3.0"
- dependencies:
- prismjs: "npm:^1.30.0"
- checksum: 10c0/8a87f2589f4a3e9ea982e3dd0a3e4ebf565b2e5cf16aa70d979cbddab241a7a24d7be45176fa8c5f69f000cd9ab311ab4677d7a15e2ba0cbd610c80db8b9d7dd
- languageName: node
- linkType: hard
-
-"@astrojs/sitemap@npm:^3.3.0":
- version: 3.4.1
- resolution: "@astrojs/sitemap@npm:3.4.1"
- dependencies:
- sitemap: "npm:^8.0.0"
- stream-replace-string: "npm:^2.0.0"
- zod: "npm:^3.24.2"
- checksum: 10c0/d36ba848c753f1abcc9cc603d38be8cb355ed86c8481168b8405d822fbc07d2eb6b971fd25f2e8cb98b889e7d1c2bafb736808ab3f6ad25d6b2da46dd5173b7e
- languageName: node
- linkType: hard
-
-"@astrojs/starlight@npm:^0.34.3":
- version: 0.34.3
- resolution: "@astrojs/starlight@npm:0.34.3"
- dependencies:
- "@astrojs/markdown-remark": "npm:^6.3.1"
- "@astrojs/mdx": "npm:^4.2.3"
- "@astrojs/sitemap": "npm:^3.3.0"
- "@pagefind/default-ui": "npm:^1.3.0"
- "@types/hast": "npm:^3.0.4"
- "@types/js-yaml": "npm:^4.0.9"
- "@types/mdast": "npm:^4.0.4"
- astro-expressive-code: "npm:^0.41.1"
- bcp-47: "npm:^2.1.0"
- hast-util-from-html: "npm:^2.0.1"
- hast-util-select: "npm:^6.0.2"
- hast-util-to-string: "npm:^3.0.0"
- hastscript: "npm:^9.0.0"
- i18next: "npm:^23.11.5"
- js-yaml: "npm:^4.1.0"
- klona: "npm:^2.0.6"
- mdast-util-directive: "npm:^3.0.0"
- mdast-util-to-markdown: "npm:^2.1.0"
- mdast-util-to-string: "npm:^4.0.0"
- pagefind: "npm:^1.3.0"
- rehype: "npm:^13.0.1"
- rehype-format: "npm:^5.0.0"
- remark-directive: "npm:^3.0.0"
- ultrahtml: "npm:^1.6.0"
- unified: "npm:^11.0.5"
- unist-util-visit: "npm:^5.0.0"
- vfile: "npm:^6.0.2"
- peerDependencies:
- astro: ^5.5.0
- checksum: 10c0/c823177fb13423021154b5400b4b68dca2b32b04fae1425673cef223f72b6a7f6aa5b626b7bd11f6cfe5470fe718d7857b45e02f3c74b6400ecb9313c7ff9088
- languageName: node
- linkType: hard
-
-"@astrojs/telemetry@npm:3.3.0":
- version: 3.3.0
- resolution: "@astrojs/telemetry@npm:3.3.0"
- dependencies:
- ci-info: "npm:^4.2.0"
- debug: "npm:^4.4.0"
- dlv: "npm:^1.1.3"
- dset: "npm:^3.1.4"
- is-docker: "npm:^3.0.0"
- is-wsl: "npm:^3.1.0"
- which-pm-runs: "npm:^1.1.0"
- checksum: 10c0/7c575aad221d7335b6b1378ceac0e60a25c9540cdde8f5584b0ffe565d06b3ecfc2217738d1ce55ac13eb66e1a6251453bddf117d7f793e51b3fc7be5d001ea4
- languageName: node
- linkType: hard
-
-"@babel/helper-string-parser@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helper-string-parser@npm:7.27.1"
- checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602
- languageName: node
- linkType: hard
-
-"@babel/helper-validator-identifier@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helper-validator-identifier@npm:7.27.1"
- checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84
- languageName: node
- linkType: hard
-
-"@babel/parser@npm:^7.25.4":
- version: 7.27.5
- resolution: "@babel/parser@npm:7.27.5"
- dependencies:
- "@babel/types": "npm:^7.27.3"
- bin:
- parser: ./bin/babel-parser.js
- checksum: 10c0/f7faaebf21cc1f25d9ca8ac02c447ed38ef3460ea95be7ea760916dcf529476340d72a5a6010c6641d9ed9d12ad827c8424840277ec2295c5b082ba0f291220a
- languageName: node
- linkType: hard
-
-"@babel/runtime@npm:^7.23.2":
- version: 7.27.6
- resolution: "@babel/runtime@npm:7.27.6"
- checksum: 10c0/89726be83f356f511dcdb74d3ea4d873a5f0cf0017d4530cb53aa27380c01ca102d573eff8b8b77815e624b1f8c24e7f0311834ad4fb632c90a770fda00bd4c8
- languageName: node
- linkType: hard
-
-"@babel/types@npm:^7.25.4, @babel/types@npm:^7.27.3":
- version: 7.27.6
- resolution: "@babel/types@npm:7.27.6"
- dependencies:
- "@babel/helper-string-parser": "npm:^7.27.1"
- "@babel/helper-validator-identifier": "npm:^7.27.1"
- checksum: 10c0/39d556be114f2a6d874ea25ad39826a9e3a0e98de0233ae6d932f6d09a4b222923a90a7274c635ed61f1ba49bbd345329226678800900ad1c8d11afabd573aaf
- languageName: node
- linkType: hard
-
-"@capsizecss/unpack@npm:^2.4.0":
- version: 2.4.0
- resolution: "@capsizecss/unpack@npm:2.4.0"
- dependencies:
- blob-to-buffer: "npm:^1.2.8"
- cross-fetch: "npm:^3.0.4"
- fontkit: "npm:^2.0.2"
- checksum: 10c0/4f1598627872a0b69190b326136f896ff666323b86865c4973a5feb11f99fc057ebaca2d057048f87b93db2500662416ce37a170c034f56a4720f1363f91f828
- languageName: node
- linkType: hard
-
-"@ctrl/tinycolor@npm:^4.0.4":
- version: 4.1.0
- resolution: "@ctrl/tinycolor@npm:4.1.0"
- checksum: 10c0/813dd960366df057006a1b93d7403ec7a48db1e79bec846d38fab15a1e0f37efd3ab96b0c780a14867ddc1f4c5a473e403c5c88e96d212c544ad934411e5307f
- languageName: node
- linkType: hard
-
-"@emnapi/runtime@npm:^1.2.0":
- version: 1.4.3
- resolution: "@emnapi/runtime@npm:1.4.3"
+"@11ty/gray-matter@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "@11ty/gray-matter@npm:3.0.0"
dependencies:
- tslib: "npm:^2.4.0"
- checksum: 10c0/3b7ab72d21cb4e034f07df80165265f85f445ef3f581d1bc87b67e5239428baa00200b68a7d5e37a0425c3a78320b541b07f76c5530f6f6f95336a6294ebf30b
+ js-yaml: "npm:^5.2.2"
+ section-matter: "npm:^1.0.0"
+ checksum: 10c0/f9f03dd1e17450cea2dd6331be0eae13e897ea1c9b5fd7b3bc802aafaf861f76c8f526d394242bb3a35a3184396e2793475ebd0557e4b6bcc16d54c327c27235
languageName: node
linkType: hard
-"@esbuild/aix-ppc64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/aix-ppc64@npm:0.25.5"
+"@esbuild/aix-ppc64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/aix-ppc64@npm:0.28.2"
conditions: os=aix & cpu=ppc64
languageName: node
linkType: hard
-"@esbuild/android-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/android-arm64@npm:0.25.5"
+"@esbuild/android-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/android-arm64@npm:0.28.2"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/android-arm@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/android-arm@npm:0.25.5"
+"@esbuild/android-arm@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/android-arm@npm:0.28.2"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
-"@esbuild/android-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/android-x64@npm:0.25.5"
+"@esbuild/android-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/android-x64@npm:0.28.2"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
-"@esbuild/darwin-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/darwin-arm64@npm:0.25.5"
+"@esbuild/darwin-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/darwin-arm64@npm:0.28.2"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/darwin-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/darwin-x64@npm:0.25.5"
+"@esbuild/darwin-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/darwin-x64@npm:0.28.2"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@esbuild/freebsd-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/freebsd-arm64@npm:0.25.5"
+"@esbuild/freebsd-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/freebsd-arm64@npm:0.28.2"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/freebsd-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/freebsd-x64@npm:0.25.5"
+"@esbuild/freebsd-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/freebsd-x64@npm:0.28.2"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/linux-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-arm64@npm:0.25.5"
+"@esbuild/linux-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-arm64@npm:0.28.2"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/linux-arm@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-arm@npm:0.25.5"
+"@esbuild/linux-arm@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-arm@npm:0.28.2"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@esbuild/linux-ia32@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-ia32@npm:0.25.5"
+"@esbuild/linux-ia32@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-ia32@npm:0.28.2"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
-"@esbuild/linux-loong64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-loong64@npm:0.25.5"
+"@esbuild/linux-loong64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-loong64@npm:0.28.2"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
-"@esbuild/linux-mips64el@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-mips64el@npm:0.25.5"
+"@esbuild/linux-mips64el@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-mips64el@npm:0.28.2"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
-"@esbuild/linux-ppc64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-ppc64@npm:0.25.5"
+"@esbuild/linux-ppc64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-ppc64@npm:0.28.2"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
-"@esbuild/linux-riscv64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-riscv64@npm:0.25.5"
+"@esbuild/linux-riscv64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-riscv64@npm:0.28.2"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
-"@esbuild/linux-s390x@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-s390x@npm:0.25.5"
+"@esbuild/linux-s390x@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-s390x@npm:0.28.2"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
-"@esbuild/linux-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/linux-x64@npm:0.25.5"
+"@esbuild/linux-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/linux-x64@npm:0.28.2"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
-"@esbuild/netbsd-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/netbsd-arm64@npm:0.25.5"
+"@esbuild/netbsd-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/netbsd-arm64@npm:0.28.2"
conditions: os=netbsd & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/netbsd-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/netbsd-x64@npm:0.25.5"
+"@esbuild/netbsd-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/netbsd-x64@npm:0.28.2"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/openbsd-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/openbsd-arm64@npm:0.25.5"
+"@esbuild/openbsd-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/openbsd-arm64@npm:0.28.2"
conditions: os=openbsd & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/openbsd-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/openbsd-x64@npm:0.25.5"
+"@esbuild/openbsd-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/openbsd-x64@npm:0.28.2"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/sunos-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/sunos-x64@npm:0.25.5"
+"@esbuild/openharmony-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/openharmony-arm64@npm:0.28.2"
+ conditions: os=openharmony & cpu=arm64
+ languageName: node
+ linkType: hard
+
+"@esbuild/sunos-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/sunos-x64@npm:0.28.2"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
-"@esbuild/win32-arm64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/win32-arm64@npm:0.25.5"
+"@esbuild/win32-arm64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/win32-arm64@npm:0.28.2"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/win32-ia32@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/win32-ia32@npm:0.25.5"
+"@esbuild/win32-ia32@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/win32-ia32@npm:0.28.2"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@esbuild/win32-x64@npm:0.25.5":
- version: 0.25.5
- resolution: "@esbuild/win32-x64@npm:0.25.5"
+"@esbuild/win32-x64@npm:0.28.2":
+ version: 0.28.2
+ resolution: "@esbuild/win32-x64@npm:0.28.2"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@expressive-code/core@npm:^0.41.2":
- version: 0.41.2
- resolution: "@expressive-code/core@npm:0.41.2"
+"@jridgewell/gen-mapping@npm:^0.3.5":
+ version: 0.3.13
+ resolution: "@jridgewell/gen-mapping@npm:0.3.13"
dependencies:
- "@ctrl/tinycolor": "npm:^4.0.4"
- hast-util-select: "npm:^6.0.2"
- hast-util-to-html: "npm:^9.0.1"
- hast-util-to-text: "npm:^4.0.1"
- hastscript: "npm:^9.0.0"
- postcss: "npm:^8.4.38"
- postcss-nested: "npm:^6.0.1"
- unist-util-visit: "npm:^5.0.0"
- unist-util-visit-parents: "npm:^6.0.1"
- checksum: 10c0/7bf066c3ea1876014e4bc6392b476a44d294fdcc64169759c594976723702b2514a46d813bc121ba0617114a0822378a91fb33a7224214e23d069d043a4c7653
+ "@jridgewell/sourcemap-codec": "npm:^1.5.0"
+ "@jridgewell/trace-mapping": "npm:^0.3.24"
+ checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b
languageName: node
linkType: hard
-"@expressive-code/plugin-frames@npm:^0.41.2":
- version: 0.41.2
- resolution: "@expressive-code/plugin-frames@npm:0.41.2"
- dependencies:
- "@expressive-code/core": "npm:^0.41.2"
- checksum: 10c0/270bc3b087970879e52425ca90357541901bd38fe3c8043bc9ed21ccf1ad364f1667e9b5672e4cf9791dccade15aac6edd6665abacb33ce71dd8b81759a2b292
+"@jridgewell/resolve-uri@npm:^3.1.0":
+ version: 3.1.2
+ resolution: "@jridgewell/resolve-uri@npm:3.1.2"
+ checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e
languageName: node
linkType: hard
-"@expressive-code/plugin-shiki@npm:^0.41.2":
- version: 0.41.2
- resolution: "@expressive-code/plugin-shiki@npm:0.41.2"
+"@jridgewell/source-map@npm:^0.3.3":
+ version: 0.3.11
+ resolution: "@jridgewell/source-map@npm:0.3.11"
dependencies:
- "@expressive-code/core": "npm:^0.41.2"
- shiki: "npm:^3.2.2"
- checksum: 10c0/06061ea639fbf8f5fac37cc8cc930a19cb2f725bfe903e24f1029b2efad8750d3d1253cdc8c72b03069952464890b3081ed751969763df9a21a0a566b2a55a71
+ "@jridgewell/gen-mapping": "npm:^0.3.5"
+ "@jridgewell/trace-mapping": "npm:^0.3.25"
+ checksum: 10c0/50a4fdafe0b8f655cb2877e59fe81320272eaa4ccdbe6b9b87f10614b2220399ae3e05c16137a59db1f189523b42c7f88bd097ee991dbd7bc0e01113c583e844
languageName: node
linkType: hard
-"@expressive-code/plugin-text-markers@npm:^0.41.2":
- version: 0.41.2
- resolution: "@expressive-code/plugin-text-markers@npm:0.41.2"
- dependencies:
- "@expressive-code/core": "npm:^0.41.2"
- checksum: 10c0/0514bb0d4a1c0e34bd00fb671cb94c46227f5ec9b6d25ea7605757abe1d5ea63e3c9c45db4c6db5ef5d36bb37a4e4afaca53be8687543e451640fa6cfb28779a
+"@jridgewell/sourcemap-codec@npm:^1.4.14":
+ version: 1.6.0
+ resolution: "@jridgewell/sourcemap-codec@npm:1.6.0"
+ checksum: 10c0/b5be700e45a775f218589c3466c4ffea630582b4988657652da464e5ab8a7d18bf928ee4fd2363fb346ede4bea9c6ff0bae05a538358c4565ece6199531b5f72
+ languageName: node
+ linkType: hard
+
+"@jridgewell/sourcemap-codec@npm:^1.5.0":
+ version: 1.5.0
+ resolution: "@jridgewell/sourcemap-codec@npm:1.5.0"
+ checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18
languageName: node
linkType: hard
-"@img/sharp-darwin-arm64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-darwin-arm64@npm:0.33.5"
+"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
+ version: 0.3.31
+ resolution: "@jridgewell/trace-mapping@npm:0.3.31"
dependencies:
- "@img/sharp-libvips-darwin-arm64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-darwin-arm64":
- optional: true
- conditions: os=darwin & cpu=arm64
+ "@jridgewell/resolve-uri": "npm:^3.1.0"
+ "@jridgewell/sourcemap-codec": "npm:^1.4.14"
+ checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9
languageName: node
linkType: hard
-"@img/sharp-darwin-x64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-darwin-x64@npm:0.33.5"
+"@logpot/printer@npm:1.0.7":
+ version: 1.0.7
+ resolution: "@logpot/printer@npm:1.0.7"
dependencies:
- "@img/sharp-libvips-darwin-x64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-darwin-x64":
- optional: true
- conditions: os=darwin & cpu=x64
+ "@logpot/utils": "npm:1.0.7"
+ checksum: 10c0/b931c374f6150052b2701cdff4fae35240400bcd33a82963ea60e712decbf88a894ee84d3f68d2908eb56a7349409937059c6f9fe20c126fd14f837b5fe4057d
languageName: node
linkType: hard
-"@img/sharp-libvips-darwin-arm64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4"
+"@logpot/utils@npm:1.0.7":
+ version: 1.0.7
+ resolution: "@logpot/utils@npm:1.0.7"
+ checksum: 10c0/fdd1ac1c3d43c420538bd11475ab55e55fe791ba28d1b500408a0b4089e9fa72e051218f60c0d521765419cdef03d052c577dfdde69b057c5c222cfae8603b8a
+ languageName: node
+ linkType: hard
+
+"@pagefind/darwin-arm64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/darwin-arm64@npm:1.5.2"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@img/sharp-libvips-darwin-x64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4"
+"@pagefind/darwin-x64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/darwin-x64@npm:1.5.2"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@img/sharp-libvips-linux-arm64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4"
- conditions: os=linux & cpu=arm64 & libc=glibc
+"@pagefind/freebsd-x64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/freebsd-x64@npm:1.5.2"
+ conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@img/sharp-libvips-linux-arm@npm:1.0.5":
- version: 1.0.5
- resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5"
- conditions: os=linux & cpu=arm & libc=glibc
+"@pagefind/linux-arm64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/linux-arm64@npm:1.5.2"
+ conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
-"@img/sharp-libvips-linux-s390x@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4"
- conditions: os=linux & cpu=s390x & libc=glibc
+"@pagefind/linux-x64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/linux-x64@npm:1.5.2"
+ conditions: os=linux & cpu=x64
languageName: node
linkType: hard
-"@img/sharp-libvips-linux-x64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4"
- conditions: os=linux & cpu=x64 & libc=glibc
+"@pagefind/windows-arm64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/windows-arm64@npm:1.5.2"
+ conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4"
- conditions: os=linux & cpu=arm64 & libc=musl
+"@pagefind/windows-x64@npm:1.5.2":
+ version: 1.5.2
+ resolution: "@pagefind/windows-x64@npm:1.5.2"
+ conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4":
- version: 1.0.4
- resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4"
- conditions: os=linux & cpu=x64 & libc=musl
+"@purestack/ts-common@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-common@npm:1.1.7"
+ dependencies:
+ "@purestack/ts-html": "npm:^1.1.7"
+ "@purestack/ts-style": "npm:^1.1.7"
+ "@purestack/ts-util": "npm:^1.1.7"
+ checksum: 10c0/13cf2d5240e2f3b85c662fd126c4ba1b7172acb417ebd09f476f5cdee030f69c50500f14057e13f86aa76e386d5e88c017cb5056831a2d179a63908a314bef54
languageName: node
linkType: hard
-"@img/sharp-linux-arm64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linux-arm64@npm:0.33.5"
+"@purestack/ts-components@npm:1.1.7, @purestack/ts-components@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-components@npm:1.1.7"
dependencies:
- "@img/sharp-libvips-linux-arm64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-linux-arm64":
- optional: true
- conditions: os=linux & cpu=arm64 & libc=glibc
+ "@purestack/ts-common": "npm:^1.1.7"
+ "@purestack/ts-css": "npm:^1.1.7"
+ "@purestack/ts-page-scripts": "npm:^1.1.7"
+ "@purestack/ts-style": "npm:^1.1.7"
+ "@purestack/ts-util": "npm:^1.1.7"
+ regor: "npm:^1.7.3"
+ checksum: 10c0/8e0e215ef7d8bfdd025dad619a19b2299a4a99d69c06c61a9f4b2474b65fc6cb5eea17e94cbafacb692e733684fbba350f6314c112e2d90543b93a1b32571434
languageName: node
linkType: hard
-"@img/sharp-linux-arm@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linux-arm@npm:0.33.5"
+"@purestack/ts-css@npm:1.1.7, @purestack/ts-css@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-css@npm:1.1.7"
dependencies:
- "@img/sharp-libvips-linux-arm": "npm:1.0.5"
- dependenciesMeta:
- "@img/sharp-libvips-linux-arm":
- optional: true
- conditions: os=linux & cpu=arm & libc=glibc
+ "@purestack/ts-util": "npm:^1.1.7"
+ prettier: "npm:^3.8.1"
+ checksum: 10c0/34d70b79e6ae464836950692bd4cee5123a23f27ca076c1b2155983b5678a7901648ca141d162c171cb75d388331913b4491275646bc8e792afd527d527ee72e
languageName: node
linkType: hard
-"@img/sharp-linux-s390x@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linux-s390x@npm:0.33.5"
+"@purestack/ts-html@npm:1.1.7, @purestack/ts-html@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-html@npm:1.1.7"
dependencies:
- "@img/sharp-libvips-linux-s390x": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-linux-s390x":
- optional: true
- conditions: os=linux & cpu=s390x & libc=glibc
+ "@purestack/ts-util": "npm:^1.1.7"
+ prettier: "npm:^3.8.1"
+ checksum: 10c0/30db0bc677e85293eb2ed192fbd296d4c400b4e01b5458726f02473d2c3b9803657d335e1b06e5ae30966dfa28e36a6fa6cd8cadc26a16c44a1e32d271ca69cf
languageName: node
linkType: hard
-"@img/sharp-linux-x64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linux-x64@npm:0.33.5"
- dependencies:
- "@img/sharp-libvips-linux-x64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-linux-x64":
- optional: true
- conditions: os=linux & cpu=x64 & libc=glibc
+"@purestack/ts-minidom@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-minidom@npm:1.1.7"
+ checksum: 10c0/02c13d1d27ae8ad3eeab6fe230350cc5bf9cf84900715a4fc1479fd1120d1ba3f5b9a2db63dab2637a90e541e24d78ab27ee6e685fd70132f5b2f97ed4d090e4
languageName: node
linkType: hard
-"@img/sharp-linuxmusl-arm64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5"
+"@purestack/ts-page-scripts@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-page-scripts@npm:1.1.7"
dependencies:
- "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-linuxmusl-arm64":
- optional: true
- conditions: os=linux & cpu=arm64 & libc=musl
+ "@purestack/ts-common": "npm:^1.1.7"
+ checksum: 10c0/57556ad41998a1e53e689d11d16156d29ce491617beb52b0e2225df3317d2715718eb3f6932e33116109c3bf0f844a9365ad049a35a99e2527b84f27e3b83855
languageName: node
linkType: hard
-"@img/sharp-linuxmusl-x64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5"
+"@purestack/ts-render@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-render@npm:1.1.7"
dependencies:
- "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4"
- dependenciesMeta:
- "@img/sharp-libvips-linuxmusl-x64":
- optional: true
- conditions: os=linux & cpu=x64 & libc=musl
+ "@purestack/ts-common": "npm:^1.1.7"
+ "@purestack/ts-minidom": "npm:^1.1.7"
+ "@purestack/ts-page-scripts": "npm:^1.1.7"
+ "@purestack/ts-util": "npm:^1.1.7"
+ regor: "npm:^1.7.3"
+ checksum: 10c0/f880913263be54cd2283cc103804d9260de8a2e2ebd5ead4fec7c2414dd01a2a0c23214a1171b3ba940ad8fac2e1cc4124ee7eb287dc6ae75b55b153d3e5643b
languageName: node
linkType: hard
-"@img/sharp-wasm32@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-wasm32@npm:0.33.5"
+"@purestack/ts-ssg@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-ssg@npm:1.1.7"
dependencies:
- "@emnapi/runtime": "npm:^1.2.0"
- conditions: cpu=wasm32
+ "@11ty/gray-matter": "npm:^3.0.0"
+ "@purestack/ts-common": "npm:^1.1.7"
+ "@purestack/ts-components": "npm:^1.1.7"
+ "@purestack/ts-html": "npm:^1.1.7"
+ "@purestack/ts-minidom": "npm:^1.1.7"
+ "@purestack/ts-page-scripts": "npm:^1.1.7"
+ "@purestack/ts-render": "npm:^1.1.7"
+ "@purestack/ts-style": "npm:^1.1.7"
+ "@purestack/ts-svg-icons": "npm:^1.1.7"
+ "@purestack/ts-util": "npm:^1.1.7"
+ "@purestack/ts-util-node": "npm:^1.1.7"
+ esbuild: "npm:^0.28.0"
+ hast-util-from-html: "npm:^2.0.3"
+ hast-util-to-html: "npm:^9.0.5"
+ highlight.js: "npm:^11.11.1"
+ html-minifier-next: "npm:^4.19.1"
+ logpot: "npm:^1.0.7"
+ mdast-util-to-hast: "npm:^13.2.1"
+ pagefind: "npm:^1.4.0"
+ regor: "npm:^1.7.3"
+ rehype-raw: "npm:^7.0.0"
+ rehype-stringify: "npm:^10.0.1"
+ remark-gfm: "npm:^4.0.1"
+ remark-parse: "npm:^11.0.0"
+ remark-rehype: "npm:^11.1.2"
+ shiki: "npm:^3.22.0"
+ unified: "npm:^11.0.5"
+ bin:
+ ts-ssg: dist/cli.mjs
+ checksum: 10c0/d2e1f027628b3235dd523cd3093f82ebb94f2a2707d37b7196be2c41f4fae9edd2beb41393326257db32956dbedf52dfef2b9b07ef9e9a7ede2f28bfb664c0fb
languageName: node
linkType: hard
-"@img/sharp-win32-ia32@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-win32-ia32@npm:0.33.5"
- conditions: os=win32 & cpu=ia32
+"@purestack/ts-style@npm:1.1.7, @purestack/ts-style@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-style@npm:1.1.7"
+ dependencies:
+ "@purestack/ts-css": "npm:^1.1.7"
+ "@purestack/ts-util": "npm:^1.1.7"
+ checksum: 10c0/5b6beebaaa3cd571ac1f78d04cd90d1025d2bc8358fc9c0565de64dc440c90cfe93990e35647741d914b483680ac65fb0d7fb919fc7f8eec4bcca619b3212a9d
languageName: node
linkType: hard
-"@img/sharp-win32-x64@npm:0.33.5":
- version: 0.33.5
- resolution: "@img/sharp-win32-x64@npm:0.33.5"
- conditions: os=win32 & cpu=x64
+"@purestack/ts-svg-icons@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-svg-icons@npm:1.1.7"
+ checksum: 10c0/6c8c1acc4b7dd8ffc15fef81052f0ab595c364dc4506a4ca701e41254538c8f8e406664efef2dc8d92b7021bff5079526e27ad6a757f66d56b45c08f7ba46dde
languageName: node
linkType: hard
-"@isaacs/balanced-match@npm:^4.0.1":
- version: 4.0.1
- resolution: "@isaacs/balanced-match@npm:4.0.1"
- checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420
+"@purestack/ts-util-node@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-util-node@npm:1.1.7"
+ checksum: 10c0/04681cdb7f675a8de3d87f27dfc9f6ebee0c1a4d5a6edc53d0c25c802f5d83b3c0fc460d89e160f1ce3be3d19b683abfc28d7eaea40da9f95de9bb8bb187946a
languageName: node
linkType: hard
-"@isaacs/brace-expansion@npm:^5.0.0":
- version: 5.0.0
- resolution: "@isaacs/brace-expansion@npm:5.0.0"
- dependencies:
- "@isaacs/balanced-match": "npm:^4.0.1"
- checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977
+"@purestack/ts-util@npm:1.1.7, @purestack/ts-util@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "@purestack/ts-util@npm:1.1.7"
+ checksum: 10c0/2a24f9f359af259850519b63337fc332e89ac575b09f30ff6fa85e7375922928c9a02b8a38d811116088d9a7fddedcf72823910cc635fd5a69f4adff54595b45
languageName: node
linkType: hard
-"@isaacs/cliui@npm:^8.0.2":
- version: 8.0.2
- resolution: "@isaacs/cliui@npm:8.0.2"
+"@shikijs/core@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/core@npm:3.23.0"
dependencies:
- string-width: "npm:^5.1.2"
- string-width-cjs: "npm:string-width@^4.2.0"
- strip-ansi: "npm:^7.0.1"
- strip-ansi-cjs: "npm:strip-ansi@^6.0.1"
- wrap-ansi: "npm:^8.1.0"
- wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"
- checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e
+ "@shikijs/types": "npm:3.23.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ "@types/hast": "npm:^3.0.4"
+ hast-util-to-html: "npm:^9.0.5"
+ checksum: 10c0/c595f1f2ec09cab102d2b3e03a3c64bfaace5fe52760cfbcced961d3e16571aa646c7e6f85b3d2d0242efd2c832ce4d150b5f1b7332982c17cfbe72f32bd0850
languageName: node
linkType: hard
-"@isaacs/fs-minipass@npm:^4.0.0":
- version: 4.0.1
- resolution: "@isaacs/fs-minipass@npm:4.0.1"
+"@shikijs/engine-javascript@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/engine-javascript@npm:3.23.0"
dependencies:
- minipass: "npm:^7.0.4"
- checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2
+ "@shikijs/types": "npm:3.23.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ oniguruma-to-es: "npm:^4.3.4"
+ checksum: 10c0/884ebb7f66312c9f43e71fb33a3ac0e52f925fc6932de9f68f1bf171019c011c988a4bc0217212589985b1e1bc49452ed67eacbf3d74200b4a3725f11fd8ad98
languageName: node
linkType: hard
-"@jridgewell/sourcemap-codec@npm:^1.5.0":
- version: 1.5.0
- resolution: "@jridgewell/sourcemap-codec@npm:1.5.0"
- checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18
+"@shikijs/engine-oniguruma@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/engine-oniguruma@npm:3.23.0"
+ dependencies:
+ "@shikijs/types": "npm:3.23.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ checksum: 10c0/40dbda7aef55d5946c45b8cfe56f484eadb611f9f7c9eb77ff21f0dfce2bcc775686a61eda9e06401ddd71195945a522293f51d6522fce49244b1a6b9c0f61f7
languageName: node
linkType: hard
-"@mdx-js/mdx@npm:^3.1.0":
- version: 3.1.0
- resolution: "@mdx-js/mdx@npm:3.1.0"
+"@shikijs/langs@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/langs@npm:3.23.0"
dependencies:
- "@types/estree": "npm:^1.0.0"
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- "@types/mdx": "npm:^2.0.0"
- collapse-white-space: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- estree-util-is-identifier-name: "npm:^3.0.0"
- estree-util-scope: "npm:^1.0.0"
- estree-walker: "npm:^3.0.0"
- hast-util-to-jsx-runtime: "npm:^2.0.0"
- markdown-extensions: "npm:^2.0.0"
- recma-build-jsx: "npm:^1.0.0"
- recma-jsx: "npm:^1.0.0"
- recma-stringify: "npm:^1.0.0"
- rehype-recma: "npm:^1.0.0"
- remark-mdx: "npm:^3.0.0"
- remark-parse: "npm:^11.0.0"
- remark-rehype: "npm:^11.0.0"
- source-map: "npm:^0.7.0"
- unified: "npm:^11.0.0"
- unist-util-position-from-estree: "npm:^2.0.0"
- unist-util-stringify-position: "npm:^4.0.0"
- unist-util-visit: "npm:^5.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/e586ab772dcfee2bab334d5aac54c711e6d6d550085271c38a49c629b3e3954b5f41f488060761284a5e00649d0638d6aba6c0a7c66f91db80dee0ccc304ab32
+ "@shikijs/types": "npm:3.23.0"
+ checksum: 10c0/513b90cfee0fa167d2063b7fbc2318b303a604f2e1fa156aa8b4659b49792401531a74acf68de622ecfff15738e1947a46cfe92a32fcd6a4ee5e70bcf1d06c66
languageName: node
linkType: hard
-"@npmcli/agent@npm:^3.0.0":
- version: 3.0.0
- resolution: "@npmcli/agent@npm:3.0.0"
+"@shikijs/themes@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/themes@npm:3.23.0"
dependencies:
- agent-base: "npm:^7.1.0"
- http-proxy-agent: "npm:^7.0.0"
- https-proxy-agent: "npm:^7.0.1"
- lru-cache: "npm:^10.0.1"
- socks-proxy-agent: "npm:^8.0.3"
- checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271
+ "@shikijs/types": "npm:3.23.0"
+ checksum: 10c0/5c99036d4a765765018f9106a354ebe5ccac204c69f00e3cda265828d493f005412659213f6574fa0e187c7d4437b3327bd6dad2e2146b2c472d2bf493d790dd
languageName: node
linkType: hard
-"@npmcli/fs@npm:^4.0.0":
- version: 4.0.0
- resolution: "@npmcli/fs@npm:4.0.0"
+"@shikijs/types@npm:3.23.0":
+ version: 3.23.0
+ resolution: "@shikijs/types@npm:3.23.0"
dependencies:
- semver: "npm:^7.3.5"
- checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ "@types/hast": "npm:^3.0.4"
+ checksum: 10c0/bd0d1593f830a6b4e55c77871ec1b95cc44855d6e0e26282a948a3c58827237826e4110af27eb4d3231361f1e182c4410434a1dc15ec40aea988dc92dc97e9d6
languageName: node
linkType: hard
-"@oslojs/encoding@npm:^1.1.0":
- version: 1.1.0
- resolution: "@oslojs/encoding@npm:1.1.0"
- checksum: 10c0/5553a0974dca60e1a8b247b7b97abcb141cc7ee4e22444f424a07921d6a5f76a43c316f3ee669222787fdef6549f8749cc6d68ff5a631e2542521c56fe36417f
+"@shikijs/vscode-textmate@npm:^10.0.2":
+ version: 10.0.2
+ resolution: "@shikijs/vscode-textmate@npm:10.0.2"
+ checksum: 10c0/36b682d691088ec244de292dc8f91b808f95c89466af421cf84cbab92230f03c8348649c14b3251991b10ce632b0c715e416e992dd5f28ff3221dc2693fd9462
languageName: node
linkType: hard
-"@pagefind/darwin-arm64@npm:1.3.0":
- version: 1.3.0
- resolution: "@pagefind/darwin-arm64@npm:1.3.0"
- conditions: os=darwin & cpu=arm64
+"@types/debug@npm:^4.0.0":
+ version: 4.1.12
+ resolution: "@types/debug@npm:4.1.12"
+ dependencies:
+ "@types/ms": "npm:*"
+ checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f
languageName: node
linkType: hard
-"@pagefind/darwin-x64@npm:1.3.0":
- version: 1.3.0
- resolution: "@pagefind/darwin-x64@npm:1.3.0"
- conditions: os=darwin & cpu=x64
+"@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "@types/hast@npm:3.0.4"
+ dependencies:
+ "@types/unist": "npm:*"
+ checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7
languageName: node
linkType: hard
-"@pagefind/default-ui@npm:^1.3.0":
- version: 1.3.0
- resolution: "@pagefind/default-ui@npm:1.3.0"
- checksum: 10c0/ee8d534a2dd74386b10c94c75cd2f5aae1800fdfa2ced646d923e77d1ca717937f914611e17ff4590806dba88ff792ab9f658b889fb8aa08f3882dc4dd6608e1
+"@types/mdast@npm:^4.0.0":
+ version: 4.0.4
+ resolution: "@types/mdast@npm:4.0.4"
+ dependencies:
+ "@types/unist": "npm:*"
+ checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82
languageName: node
linkType: hard
-"@pagefind/linux-arm64@npm:1.3.0":
- version: 1.3.0
- resolution: "@pagefind/linux-arm64@npm:1.3.0"
- conditions: os=linux & cpu=arm64
+"@types/ms@npm:*":
+ version: 2.1.0
+ resolution: "@types/ms@npm:2.1.0"
+ checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225
languageName: node
linkType: hard
-"@pagefind/linux-x64@npm:1.3.0":
- version: 1.3.0
- resolution: "@pagefind/linux-x64@npm:1.3.0"
- conditions: os=linux & cpu=x64
+"@types/node@npm:^22.0.0":
+ version: 22.20.5
+ resolution: "@types/node@npm:22.20.5"
+ dependencies:
+ undici-types: "npm:~6.21.0"
+ checksum: 10c0/0cf61a89c6a69917ab49f976a6bb11a29e3b348a6ae19f5827ceb91d3ade781faab58dcf3b8fa625f975f5d7536b9166ff94e8250c29272c667164f77c28fa88
languageName: node
linkType: hard
-"@pagefind/windows-x64@npm:1.3.0":
- version: 1.3.0
- resolution: "@pagefind/windows-x64@npm:1.3.0"
- conditions: os=win32 & cpu=x64
+"@types/relateurl@npm:^0.2.33":
+ version: 0.2.33
+ resolution: "@types/relateurl@npm:0.2.33"
+ checksum: 10c0/6b6aafe9ed59bf674703555d9fbd3d54c4f27eab3b2abed8faa750ca8b93d883727e111948d3537e6429b43c0990a734525a1aed1baf4c51aebc4f69e3f3fb9f
languageName: node
linkType: hard
-"@pkgjs/parseargs@npm:^0.11.0":
- version: 0.11.0
- resolution: "@pkgjs/parseargs@npm:0.11.0"
- checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd
+"@types/unist@npm:*, @types/unist@npm:^3.0.0":
+ version: 3.0.3
+ resolution: "@types/unist@npm:3.0.3"
+ checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60
languageName: node
linkType: hard
-"@rollup/pluginutils@npm:^5.1.4":
- version: 5.1.4
- resolution: "@rollup/pluginutils@npm:5.1.4"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- estree-walker: "npm:^2.0.2"
- picomatch: "npm:^4.0.2"
- peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- checksum: 10c0/6d58fbc6f1024eb4b087bc9bf59a1d655a8056a60c0b4021d3beaeec3f0743503f52467fd89d2cf0e7eccf2831feb40a05ad541a17637ea21ba10b21c2004deb
+"@ungap/structured-clone@npm:^1.0.0":
+ version: 1.3.0
+ resolution: "@ungap/structured-clone@npm:1.3.0"
+ checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
languageName: node
linkType: hard
-"@rollup/rollup-android-arm-eabi@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-android-arm-eabi@npm:4.43.0"
- conditions: os=android & cpu=arm
+"acorn@npm:^8.15.0":
+ version: 8.19.0
+ resolution: "acorn@npm:8.19.0"
+ bin:
+ acorn: bin/acorn
+ checksum: 10c0/21007e0ca638dd13d44a0ad26856b7a885cc6c4319cd2bc71694bc8ec3f0606c23ecd12b157e167f909d9d2b2d68d5b50fe3f54211b1aab7c3451a7c801fe62e
languageName: node
linkType: hard
-"@rollup/rollup-android-arm64@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-android-arm64@npm:4.43.0"
- conditions: os=android & cpu=arm64
+"argparse@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "argparse@npm:2.0.1"
+ checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
languageName: node
linkType: hard
-"@rollup/rollup-darwin-arm64@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-darwin-arm64@npm:4.43.0"
- conditions: os=darwin & cpu=arm64
+"bail@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "bail@npm:2.0.2"
+ checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b
languageName: node
linkType: hard
-"@rollup/rollup-darwin-x64@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-darwin-x64@npm:4.43.0"
- conditions: os=darwin & cpu=x64
+"buffer-from@npm:^1.0.0":
+ version: 1.1.2
+ resolution: "buffer-from@npm:1.1.2"
+ checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34
languageName: node
linkType: hard
-"@rollup/rollup-freebsd-arm64@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-freebsd-arm64@npm:4.43.0"
- conditions: os=freebsd & cpu=arm64
+"camel-case@npm:^4.1.2":
+ version: 4.1.2
+ resolution: "camel-case@npm:4.1.2"
+ dependencies:
+ pascal-case: "npm:^3.1.2"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a
languageName: node
linkType: hard
-"@rollup/rollup-freebsd-x64@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-freebsd-x64@npm:4.43.0"
- conditions: os=freebsd & cpu=x64
+"capital-case@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "capital-case@npm:1.0.4"
+ dependencies:
+ no-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ upper-case-first: "npm:^2.0.2"
+ checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm-gnueabihf@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.43.0"
- conditions: os=linux & cpu=arm & libc=glibc
+"ccount@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "ccount@npm:2.0.1"
+ checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm-musleabihf@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.43.0"
- conditions: os=linux & cpu=arm & libc=musl
+"change-case@npm:^4.1.2":
+ version: 4.1.2
+ resolution: "change-case@npm:4.1.2"
+ dependencies:
+ camel-case: "npm:^4.1.2"
+ capital-case: "npm:^1.0.4"
+ constant-case: "npm:^3.0.4"
+ dot-case: "npm:^3.0.4"
+ header-case: "npm:^2.0.4"
+ no-case: "npm:^3.0.4"
+ param-case: "npm:^3.0.4"
+ pascal-case: "npm:^3.1.2"
+ path-case: "npm:^3.0.4"
+ sentence-case: "npm:^3.0.4"
+ snake-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm64-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.43.0"
- conditions: os=linux & cpu=arm64 & libc=glibc
- languageName: node
- linkType: hard
-
-"@rollup/rollup-linux-arm64-musl@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-arm64-musl@npm:4.43.0"
- conditions: os=linux & cpu=arm64 & libc=musl
+"character-entities-html4@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "character-entities-html4@npm:2.1.0"
+ checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40
languageName: node
linkType: hard
-"@rollup/rollup-linux-loongarch64-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.43.0"
- conditions: os=linux & cpu=loong64 & libc=glibc
+"character-entities-legacy@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "character-entities-legacy@npm:3.0.0"
+ checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1
languageName: node
linkType: hard
-"@rollup/rollup-linux-powerpc64le-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.43.0"
- conditions: os=linux & cpu=ppc64 & libc=glibc
+"character-entities@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "character-entities@npm:2.0.2"
+ checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308
languageName: node
linkType: hard
-"@rollup/rollup-linux-riscv64-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.43.0"
- conditions: os=linux & cpu=riscv64 & libc=glibc
+"comma-separated-tokens@npm:^2.0.0":
+ version: 2.0.3
+ resolution: "comma-separated-tokens@npm:2.0.3"
+ checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67
languageName: node
linkType: hard
-"@rollup/rollup-linux-riscv64-musl@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.43.0"
- conditions: os=linux & cpu=riscv64 & libc=musl
+"commander@npm:^14.0.2":
+ version: 14.0.3
+ resolution: "commander@npm:14.0.3"
+ checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24
languageName: node
linkType: hard
-"@rollup/rollup-linux-s390x-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.43.0"
- conditions: os=linux & cpu=s390x & libc=glibc
+"commander@npm:^2.20.0":
+ version: 2.20.3
+ resolution: "commander@npm:2.20.3"
+ checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288
languageName: node
linkType: hard
-"@rollup/rollup-linux-x64-gnu@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-x64-gnu@npm:4.43.0"
- conditions: os=linux & cpu=x64 & libc=glibc
+"constant-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "constant-case@npm:3.0.4"
+ dependencies:
+ no-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ upper-case: "npm:^2.0.2"
+ checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e
languageName: node
linkType: hard
-"@rollup/rollup-linux-x64-musl@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-linux-x64-musl@npm:4.43.0"
- conditions: os=linux & cpu=x64 & libc=musl
+"debug@npm:^4.0.0":
+ version: 4.4.1
+ resolution: "debug@npm:4.4.1"
+ dependencies:
+ ms: "npm:^2.1.3"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55
languageName: node
linkType: hard
-"@rollup/rollup-win32-arm64-msvc@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.43.0"
- conditions: os=win32 & cpu=arm64
+"decode-named-character-reference@npm:^1.0.0":
+ version: 1.1.0
+ resolution: "decode-named-character-reference@npm:1.1.0"
+ dependencies:
+ character-entities: "npm:^2.0.0"
+ checksum: 10c0/359c76305b47e67660ec096c5cd3f65972ed75b8a53a40435a7a967cfab3e9516e64b443cbe0c7edcf5ab77f65a6924f12fb1872b1e09e2f044f28f4fd10996a
languageName: node
linkType: hard
-"@rollup/rollup-win32-ia32-msvc@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.43.0"
- conditions: os=win32 & cpu=ia32
+"dequal@npm:^2.0.0":
+ version: 2.0.3
+ resolution: "dequal@npm:2.0.3"
+ checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888
languageName: node
linkType: hard
-"@rollup/rollup-win32-x64-msvc@npm:4.43.0":
- version: 4.43.0
- resolution: "@rollup/rollup-win32-x64-msvc@npm:4.43.0"
- conditions: os=win32 & cpu=x64
+"detect-libc@npm:^2.0.3":
+ version: 2.0.4
+ resolution: "detect-libc@npm:2.0.4"
+ checksum: 10c0/c15541f836eba4b1f521e4eecc28eefefdbc10a94d3b8cb4c507689f332cc111babb95deda66f2de050b22122113189986d5190be97d51b5a2b23b938415e67c
languageName: node
linkType: hard
-"@shikijs/core@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/core@npm:3.6.0"
+"devlop@npm:^1.0.0, devlop@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "devlop@npm:1.1.0"
dependencies:
- "@shikijs/types": "npm:3.6.0"
- "@shikijs/vscode-textmate": "npm:^10.0.2"
- "@types/hast": "npm:^3.0.4"
- hast-util-to-html: "npm:^9.0.5"
- checksum: 10c0/cd12f225df50d6773a3005a8a86fcd1d3c7dcb3b90a01f97f2269ecdc5600f8f3df28181ee5f5bb6ff623090bfe7b98ac9353ae24691a84b0a34e127db6a5f13
+ dequal: "npm:^2.0.0"
+ checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e
languageName: node
linkType: hard
-"@shikijs/engine-javascript@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/engine-javascript@npm:3.6.0"
+"dot-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "dot-case@npm:3.0.4"
dependencies:
- "@shikijs/types": "npm:3.6.0"
- "@shikijs/vscode-textmate": "npm:^10.0.2"
- oniguruma-to-es: "npm:^4.3.3"
- checksum: 10c0/30a455f58ded393c6a8de22d090b64aeab06c0a063e71fccedc05de91900fa4bb691ffcaaf5d3799cf8a040849fe71685d3f1f3b29764e34111fd425310b924a
+ no-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05
languageName: node
linkType: hard
-"@shikijs/engine-oniguruma@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/engine-oniguruma@npm:3.6.0"
- dependencies:
- "@shikijs/types": "npm:3.6.0"
- "@shikijs/vscode-textmate": "npm:^10.0.2"
- checksum: 10c0/2e3a1fb02d823be5d998a310fa2e5e34e92a7498996bed2ec52eb9368dbba99e10571619a364c406d79f3047b966fecc7afb29635a8fdfa6a25c9ee5cd8f2f34
+"entities@npm:^6.0.0":
+ version: 6.0.1
+ resolution: "entities@npm:6.0.1"
+ checksum: 10c0/ed836ddac5acb34341094eb495185d527bd70e8632b6c0d59548cbfa23defdbae70b96f9a405c82904efa421230b5b3fd2283752447d737beffd3f3e6ee74414
languageName: node
linkType: hard
-"@shikijs/langs@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/langs@npm:3.6.0"
- dependencies:
- "@shikijs/types": "npm:3.6.0"
- checksum: 10c0/b904e230c5b4e1cd0c1c09d36b3704ac961b8b27802581ee375c2c1f92f5df5e93dc88ddf882be094fe42c3bd374c67e10f2f14d4974d0cb8e04efc8ba3492f0
+"entities@npm:^7.0.0":
+ version: 7.0.1
+ resolution: "entities@npm:7.0.1"
+ checksum: 10c0/b4fb9937bb47ecb00aaaceb9db9cdd1cc0b0fb649c0e843d05cf5dbbd2e9d2df8f98721d8b1b286445689c72af7b54a7242fc2d63ef7c9739037a8c73363e7ca
+ languageName: node
+ linkType: hard
+
+"esbuild@npm:^0.28.0":
+ version: 0.28.2
+ resolution: "esbuild@npm:0.28.2"
+ dependencies:
+ "@esbuild/aix-ppc64": "npm:0.28.2"
+ "@esbuild/android-arm": "npm:0.28.2"
+ "@esbuild/android-arm64": "npm:0.28.2"
+ "@esbuild/android-x64": "npm:0.28.2"
+ "@esbuild/darwin-arm64": "npm:0.28.2"
+ "@esbuild/darwin-x64": "npm:0.28.2"
+ "@esbuild/freebsd-arm64": "npm:0.28.2"
+ "@esbuild/freebsd-x64": "npm:0.28.2"
+ "@esbuild/linux-arm": "npm:0.28.2"
+ "@esbuild/linux-arm64": "npm:0.28.2"
+ "@esbuild/linux-ia32": "npm:0.28.2"
+ "@esbuild/linux-loong64": "npm:0.28.2"
+ "@esbuild/linux-mips64el": "npm:0.28.2"
+ "@esbuild/linux-ppc64": "npm:0.28.2"
+ "@esbuild/linux-riscv64": "npm:0.28.2"
+ "@esbuild/linux-s390x": "npm:0.28.2"
+ "@esbuild/linux-x64": "npm:0.28.2"
+ "@esbuild/netbsd-arm64": "npm:0.28.2"
+ "@esbuild/netbsd-x64": "npm:0.28.2"
+ "@esbuild/openbsd-arm64": "npm:0.28.2"
+ "@esbuild/openbsd-x64": "npm:0.28.2"
+ "@esbuild/openharmony-arm64": "npm:0.28.2"
+ "@esbuild/sunos-x64": "npm:0.28.2"
+ "@esbuild/win32-arm64": "npm:0.28.2"
+ "@esbuild/win32-ia32": "npm:0.28.2"
+ "@esbuild/win32-x64": "npm:0.28.2"
+ dependenciesMeta:
+ "@esbuild/aix-ppc64":
+ optional: true
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-arm64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-arm64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/openharmony-arm64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 10c0/9b19edb63bd7780fd2e8e65a1394a0e8a05a17d697f73f0647ffe3c134709d8dbe744ab3fd57b35c9470db268cae7678fafd3dcd3ce1f34fc590568c2433f5d2
languageName: node
linkType: hard
-"@shikijs/themes@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/themes@npm:3.6.0"
- dependencies:
- "@shikijs/types": "npm:3.6.0"
- checksum: 10c0/33be969bc56ea86590d63042a24ab715527f30f9488cca6fe17dfff67894ca1e75e83ddca9c9b5d449a8e8586ad014ace8b92b389e73be2c35280d6f805b87a3
+"escape-string-regexp@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "escape-string-regexp@npm:5.0.0"
+ checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95
languageName: node
linkType: hard
-"@shikijs/types@npm:3.6.0":
- version: 3.6.0
- resolution: "@shikijs/types@npm:3.6.0"
+"extend-shallow@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "extend-shallow@npm:2.0.1"
dependencies:
- "@shikijs/vscode-textmate": "npm:^10.0.2"
- "@types/hast": "npm:^3.0.4"
- checksum: 10c0/5ea6246541b18e67bde854c4b72fb3aecde4a7da080be827645e4728945b782df9dc6498115085afbcf180e21e06e949bc3b8c3162233a2bdf4313979f49a6f7
+ is-extendable: "npm:^0.1.0"
+ checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9
languageName: node
linkType: hard
-"@shikijs/vscode-textmate@npm:^10.0.2":
- version: 10.0.2
- resolution: "@shikijs/vscode-textmate@npm:10.0.2"
- checksum: 10c0/36b682d691088ec244de292dc8f91b808f95c89466af421cf84cbab92230f03c8348649c14b3251991b10ce632b0c715e416e992dd5f28ff3221dc2693fd9462
+"extend@npm:^3.0.0":
+ version: 3.0.2
+ resolution: "extend@npm:3.0.2"
+ checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9
languageName: node
linkType: hard
-"@swc/helpers@npm:^0.5.12":
- version: 0.5.17
- resolution: "@swc/helpers@npm:0.5.17"
+"hast-util-from-html@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "hast-util-from-html@npm:2.0.3"
dependencies:
- tslib: "npm:^2.8.0"
- checksum: 10c0/fe1f33ebb968558c5a0c595e54f2e479e4609bff844f9ca9a2d1ffd8dd8504c26f862a11b031f48f75c95b0381c2966c3dd156e25942f90089badd24341e7dbb
+ "@types/hast": "npm:^3.0.0"
+ devlop: "npm:^1.1.0"
+ hast-util-from-parse5: "npm:^8.0.0"
+ parse5: "npm:^7.0.0"
+ vfile: "npm:^6.0.0"
+ vfile-message: "npm:^4.0.0"
+ checksum: 10c0/993ef707c1a12474c8d4094fc9706a72826c660a7e308ea54c50ad893353d32e139b7cbc67510c2e82feac572b320e3b05aeb13d0f9c6302d61261f337b46764
languageName: node
linkType: hard
-"@types/debug@npm:^4.0.0":
- version: 4.1.12
- resolution: "@types/debug@npm:4.1.12"
+"hast-util-from-parse5@npm:^8.0.0":
+ version: 8.0.3
+ resolution: "hast-util-from-parse5@npm:8.0.3"
dependencies:
- "@types/ms": "npm:*"
- checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f
+ "@types/hast": "npm:^3.0.0"
+ "@types/unist": "npm:^3.0.0"
+ devlop: "npm:^1.0.0"
+ hastscript: "npm:^9.0.0"
+ property-information: "npm:^7.0.0"
+ vfile: "npm:^6.0.0"
+ vfile-location: "npm:^5.0.0"
+ web-namespaces: "npm:^2.0.0"
+ checksum: 10c0/40ace6c0ad43c26f721c7499fe408e639cde917b2350c9299635e6326559855896dae3c3ebf7440df54766b96c4276a7823e8f376a2b6a28b37b591f03412545
languageName: node
linkType: hard
-"@types/estree-jsx@npm:^1.0.0":
- version: 1.0.5
- resolution: "@types/estree-jsx@npm:1.0.5"
+"hast-util-parse-selector@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "hast-util-parse-selector@npm:4.0.0"
dependencies:
- "@types/estree": "npm:*"
- checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d
- languageName: node
- linkType: hard
-
-"@types/estree@npm:*, @types/estree@npm:^1.0.0":
- version: 1.0.8
- resolution: "@types/estree@npm:1.0.8"
- checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
+ "@types/hast": "npm:^3.0.0"
+ checksum: 10c0/5e98168cb44470dc274aabf1a28317e4feb09b1eaf7a48bbaa8c1de1b43a89cd195cb1284e535698e658e3ec26ad91bc5e52c9563c36feb75abbc68aaf68fb9f
languageName: node
linkType: hard
-"@types/estree@npm:1.0.7":
- version: 1.0.7
- resolution: "@types/estree@npm:1.0.7"
- checksum: 10c0/be815254316882f7c40847336cd484c3bc1c3e34f710d197160d455dc9d6d050ffbf4c3bc76585dba86f737f020ab20bdb137ebe0e9116b0c86c7c0342221b8c
+"hast-util-raw@npm:^9.0.0":
+ version: 9.1.0
+ resolution: "hast-util-raw@npm:9.1.0"
+ dependencies:
+ "@types/hast": "npm:^3.0.0"
+ "@types/unist": "npm:^3.0.0"
+ "@ungap/structured-clone": "npm:^1.0.0"
+ hast-util-from-parse5: "npm:^8.0.0"
+ hast-util-to-parse5: "npm:^8.0.0"
+ html-void-elements: "npm:^3.0.0"
+ mdast-util-to-hast: "npm:^13.0.0"
+ parse5: "npm:^7.0.0"
+ unist-util-position: "npm:^5.0.0"
+ unist-util-visit: "npm:^5.0.0"
+ vfile: "npm:^6.0.0"
+ web-namespaces: "npm:^2.0.0"
+ zwitch: "npm:^2.0.0"
+ checksum: 10c0/d0d909d2aedecef6a06f0005cfae410d6475e6e182d768bde30c3af9fcbbe4f9beb0522bdc21d0679cb3c243c0df40385797ed255148d68b3d3f12e82d12aacc
languageName: node
linkType: hard
-"@types/fontkit@npm:^2.0.8":
- version: 2.0.8
- resolution: "@types/fontkit@npm:2.0.8"
+"hast-util-to-html@npm:^9.0.0, hast-util-to-html@npm:^9.0.5":
+ version: 9.0.5
+ resolution: "hast-util-to-html@npm:9.0.5"
dependencies:
- "@types/node": "npm:*"
- checksum: 10c0/e5a124d468f17d3b74a07d38257fc38b8d3d1e3e1e68b1c4a3314beb274223499009f4a6c1d2f15a9928ad6643fb8bfca4881d13447cfbf5de1733ad6fd5d4b1
+ "@types/hast": "npm:^3.0.0"
+ "@types/unist": "npm:^3.0.0"
+ ccount: "npm:^2.0.0"
+ comma-separated-tokens: "npm:^2.0.0"
+ hast-util-whitespace: "npm:^3.0.0"
+ html-void-elements: "npm:^3.0.0"
+ mdast-util-to-hast: "npm:^13.0.0"
+ property-information: "npm:^7.0.0"
+ space-separated-tokens: "npm:^2.0.0"
+ stringify-entities: "npm:^4.0.0"
+ zwitch: "npm:^2.0.4"
+ checksum: 10c0/b7a08c30bab4371fc9b4a620965c40b270e5ae7a8e94cf885f43b21705179e28c8e43b39c72885d1647965fb3738654e6962eb8b58b0c2a84271655b4d748836
languageName: node
linkType: hard
-"@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4":
- version: 3.0.4
- resolution: "@types/hast@npm:3.0.4"
+"hast-util-to-parse5@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "hast-util-to-parse5@npm:8.0.0"
dependencies:
- "@types/unist": "npm:*"
- checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7
+ "@types/hast": "npm:^3.0.0"
+ comma-separated-tokens: "npm:^2.0.0"
+ devlop: "npm:^1.0.0"
+ property-information: "npm:^6.0.0"
+ space-separated-tokens: "npm:^2.0.0"
+ web-namespaces: "npm:^2.0.0"
+ zwitch: "npm:^2.0.0"
+ checksum: 10c0/3c0c7fba026e0c4be4675daf7277f9ff22ae6da801435f1b7104f7740de5422576f1c025023c7b3df1d0a161e13a04c6ab8f98ada96eb50adb287b537849a2bd
languageName: node
linkType: hard
-"@types/js-yaml@npm:^4.0.9":
- version: 4.0.9
- resolution: "@types/js-yaml@npm:4.0.9"
- checksum: 10c0/24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211
+"hast-util-whitespace@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "hast-util-whitespace@npm:3.0.0"
+ dependencies:
+ "@types/hast": "npm:^3.0.0"
+ checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8
languageName: node
linkType: hard
-"@types/mdast@npm:^4.0.0, @types/mdast@npm:^4.0.4":
- version: 4.0.4
- resolution: "@types/mdast@npm:4.0.4"
+"hastscript@npm:^9.0.0":
+ version: 9.0.1
+ resolution: "hastscript@npm:9.0.1"
dependencies:
- "@types/unist": "npm:*"
- checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82
+ "@types/hast": "npm:^3.0.0"
+ comma-separated-tokens: "npm:^2.0.0"
+ hast-util-parse-selector: "npm:^4.0.0"
+ property-information: "npm:^7.0.0"
+ space-separated-tokens: "npm:^2.0.0"
+ checksum: 10c0/18dc8064e5c3a7a2ae862978e626b97a254e1c8a67ee9d0c9f06d373bba155ed805fc5b5ce21b990fb7bc174624889e5e1ce1cade264f1b1d58b48f994bc85ce
languageName: node
linkType: hard
-"@types/mdx@npm:^2.0.0":
- version: 2.0.13
- resolution: "@types/mdx@npm:2.0.13"
- checksum: 10c0/5edf1099505ac568da55f9ae8a93e7e314e8cbc13d3445d0be61b75941226b005e1390d9b95caecf5dcb00c9d1bab2f1f60f6ff9876dc091a48b547495007720
+"header-case@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "header-case@npm:2.0.4"
+ dependencies:
+ capital-case: "npm:^1.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb
languageName: node
linkType: hard
-"@types/ms@npm:*":
- version: 2.1.0
- resolution: "@types/ms@npm:2.1.0"
- checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225
+"highlight.js@npm:^11.11.1":
+ version: 11.12.0
+ resolution: "highlight.js@npm:11.12.0"
+ checksum: 10c0/c62ebfad125b541790412374a15ae1ca15a45fdfac0fae2b5c96b6a10dc8d5d15380adf748584fb08cfeb4db2b3a749a170e2afd0b640e9fad86445b1c435777
languageName: node
linkType: hard
-"@types/nlcst@npm:^2.0.0":
- version: 2.0.3
- resolution: "@types/nlcst@npm:2.0.3"
+"html-minifier-next@npm:^4.19.1":
+ version: 4.19.1
+ resolution: "html-minifier-next@npm:4.19.1"
dependencies:
- "@types/unist": "npm:*"
- checksum: 10c0/d83549aaee59681ae8fa2a78d8a1b968a41eb7c0422773dff12acbf3661e4b2b2859740c3effdad9d0cd12ea14a0ec33ca302da12106476b627e09d2a029d3c1
+ "@types/relateurl": "npm:^0.2.33"
+ change-case: "npm:^4.1.2"
+ commander: "npm:^14.0.2"
+ entities: "npm:^7.0.0"
+ lightningcss: "npm:^1.28.2"
+ relateurl: "npm:^0.2.7"
+ terser: "npm:^5.46.0"
+ peerDependencies:
+ "@swc/core": ^1.15.7
+ peerDependenciesMeta:
+ "@swc/core":
+ optional: true
+ bin:
+ html-minifier-next: cli.js
+ checksum: 10c0/387d62c64030388baf58bc3994dd7d3c46475e0a87a07da27b98fc83fdba3377856d97418195d9e7589dfef5d96975e2d7810554f033dc608953643b9bfe9610
languageName: node
linkType: hard
-"@types/node@npm:*":
- version: 24.0.1
- resolution: "@types/node@npm:24.0.1"
- dependencies:
- undici-types: "npm:~7.8.0"
- checksum: 10c0/91cd50d1ac32a2172cbc67b65c78391fbd469b24743e3665427aa60bebaf4620cb9ac2e91c09a8081a78d08855c00faca659c287c1725ce8ca5e80ece3a20520
+"html-void-elements@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "html-void-elements@npm:3.0.0"
+ checksum: 10c0/a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2
languageName: node
linkType: hard
-"@types/node@npm:^17.0.5":
- version: 17.0.45
- resolution: "@types/node@npm:17.0.45"
- checksum: 10c0/0db377133d709b33a47892581a21a41cd7958f22723a3cc6c71d55ac018121382de42fbfc7970d5ae3e7819dbe5f40e1c6a5174aedf7e7964e9cb8fa72b580b0
+"is-extendable@npm:^0.1.0":
+ version: 0.1.1
+ resolution: "is-extendable@npm:0.1.1"
+ checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879
languageName: node
linkType: hard
-"@types/sax@npm:^1.2.1":
- version: 1.2.7
- resolution: "@types/sax@npm:1.2.7"
- dependencies:
- "@types/node": "npm:*"
- checksum: 10c0/d077a761a0753b079bf8279b3993948030ca86ed9125437b9b29c1de40db9b2deb7fddc369f014b58861d450e8b8cc75f163aa29dc8cea81952efbfd859168cf
- languageName: node
- linkType: hard
-
-"@types/unist@npm:*, @types/unist@npm:^3.0.0":
- version: 3.0.3
- resolution: "@types/unist@npm:3.0.3"
- checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60
- languageName: node
- linkType: hard
-
-"@types/unist@npm:^2.0.0":
- version: 2.0.11
- resolution: "@types/unist@npm:2.0.11"
- checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d
+"is-plain-obj@npm:^4.0.0":
+ version: 4.1.0
+ resolution: "is-plain-obj@npm:4.1.0"
+ checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e
languageName: node
linkType: hard
-"@ungap/structured-clone@npm:^1.0.0":
- version: 1.3.0
- resolution: "@ungap/structured-clone@npm:1.3.0"
- checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
+"js-yaml@npm:^5.2.2":
+ version: 5.4.3
+ resolution: "js-yaml@npm:5.4.3"
+ dependencies:
+ argparse: "npm:^2.0.1"
+ bin:
+ js-yaml: bin/js-yaml.mjs
+ checksum: 10c0/7180bf35feef9815a06cb2f8845c1196f1e4264430a04623884d87c3d21475de7d46a86c9c5142dcc1646c788bc0e676eb09ba817810707e0b4e984f7cf93a5f
languageName: node
linkType: hard
-"abbrev@npm:^3.0.0":
- version: 3.0.1
- resolution: "abbrev@npm:3.0.1"
- checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf
+"kind-of@npm:^6.0.0":
+ version: 6.0.3
+ resolution: "kind-of@npm:6.0.3"
+ checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4
languageName: node
linkType: hard
-"acorn-jsx@npm:^5.0.0":
- version: 5.3.2
- resolution: "acorn-jsx@npm:5.3.2"
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
+"lightningcss-android-arm64@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-android-arm64@npm:1.33.0"
+ conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"acorn@npm:^8.0.0, acorn@npm:^8.14.1":
- version: 8.15.0
- resolution: "acorn@npm:8.15.0"
- bin:
- acorn: bin/acorn
- checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec
+"lightningcss-darwin-arm64@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-darwin-arm64@npm:1.33.0"
+ conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2":
- version: 7.1.3
- resolution: "agent-base@npm:7.1.3"
- checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11
+"lightningcss-darwin-x64@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-darwin-x64@npm:1.33.0"
+ conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"ansi-align@npm:^3.0.1":
- version: 3.0.1
- resolution: "ansi-align@npm:3.0.1"
- dependencies:
- string-width: "npm:^4.1.0"
- checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467
+"lightningcss-freebsd-x64@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-freebsd-x64@npm:1.33.0"
+ conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"ansi-regex@npm:^5.0.1":
- version: 5.0.1
- resolution: "ansi-regex@npm:5.0.1"
- checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
+"lightningcss-linux-arm-gnueabihf@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-linux-arm-gnueabihf@npm:1.33.0"
+ conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"ansi-regex@npm:^6.0.1":
- version: 6.1.0
- resolution: "ansi-regex@npm:6.1.0"
- checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc
+"lightningcss-linux-arm64-gnu@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-linux-arm64-gnu@npm:1.33.0"
+ conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"ansi-styles@npm:^4.0.0":
- version: 4.3.0
- resolution: "ansi-styles@npm:4.3.0"
- dependencies:
- color-convert: "npm:^2.0.1"
- checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
+"lightningcss-linux-arm64-musl@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-linux-arm64-musl@npm:1.33.0"
+ conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1":
- version: 6.2.1
- resolution: "ansi-styles@npm:6.2.1"
- checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c
+"lightningcss-linux-x64-gnu@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-linux-x64-gnu@npm:1.33.0"
+ conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"anymatch@npm:^3.1.3":
- version: 3.1.3
- resolution: "anymatch@npm:3.1.3"
- dependencies:
- normalize-path: "npm:^3.0.0"
- picomatch: "npm:^2.0.4"
- checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac
+"lightningcss-linux-x64-musl@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-linux-x64-musl@npm:1.33.0"
+ conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"arg@npm:^5.0.0":
- version: 5.0.2
- resolution: "arg@npm:5.0.2"
- checksum: 10c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e
+"lightningcss-win32-arm64-msvc@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-win32-arm64-msvc@npm:1.33.0"
+ conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"argparse@npm:^2.0.1":
- version: 2.0.1
- resolution: "argparse@npm:2.0.1"
- checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
+"lightningcss-win32-x64-msvc@npm:1.33.0":
+ version: 1.33.0
+ resolution: "lightningcss-win32-x64-msvc@npm:1.33.0"
+ conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"aria-query@npm:^5.3.2":
- version: 5.3.2
- resolution: "aria-query@npm:5.3.2"
- checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e
+"lightningcss@npm:^1.28.2":
+ version: 1.33.0
+ resolution: "lightningcss@npm:1.33.0"
+ dependencies:
+ detect-libc: "npm:^2.0.3"
+ lightningcss-android-arm64: "npm:1.33.0"
+ lightningcss-darwin-arm64: "npm:1.33.0"
+ lightningcss-darwin-x64: "npm:1.33.0"
+ lightningcss-freebsd-x64: "npm:1.33.0"
+ lightningcss-linux-arm-gnueabihf: "npm:1.33.0"
+ lightningcss-linux-arm64-gnu: "npm:1.33.0"
+ lightningcss-linux-arm64-musl: "npm:1.33.0"
+ lightningcss-linux-x64-gnu: "npm:1.33.0"
+ lightningcss-linux-x64-musl: "npm:1.33.0"
+ lightningcss-win32-arm64-msvc: "npm:1.33.0"
+ lightningcss-win32-x64-msvc: "npm:1.33.0"
+ dependenciesMeta:
+ lightningcss-android-arm64:
+ optional: true
+ lightningcss-darwin-arm64:
+ optional: true
+ lightningcss-darwin-x64:
+ optional: true
+ lightningcss-freebsd-x64:
+ optional: true
+ lightningcss-linux-arm-gnueabihf:
+ optional: true
+ lightningcss-linux-arm64-gnu:
+ optional: true
+ lightningcss-linux-arm64-musl:
+ optional: true
+ lightningcss-linux-x64-gnu:
+ optional: true
+ lightningcss-linux-x64-musl:
+ optional: true
+ lightningcss-win32-arm64-msvc:
+ optional: true
+ lightningcss-win32-x64-msvc:
+ optional: true
+ checksum: 10c0/ce1f8279fbae636dbf37fa6e7385d5f98ed881d72af3362f24afbd4685e19c1fcdfecf17e5dd77f2ebee3d0c23ade276230d85842d07292229a2cffba8ff20a3
languageName: node
linkType: hard
-"array-iterate@npm:^2.0.0":
- version: 2.0.1
- resolution: "array-iterate@npm:2.0.1"
- checksum: 10c0/756c08334f95e290f03ab2141b034514af1311ef7b62f15b0f5ea6f8f3033ee9cc6a8f1c3e9ff4803d4d723cf992aa61460acf5fce884936972db966b1da287d
+"logpot@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "logpot@npm:1.0.7"
+ dependencies:
+ "@logpot/printer": "npm:1.0.7"
+ "@logpot/utils": "npm:1.0.7"
+ checksum: 10c0/3e1b94ccabcfe3064f4b13b32542e4e40b4e19c5856a870151b9bacadfdf576782b2b58bed9bd37af5c65b632be0eefbad3ada9cdbd3c741ae8822cc6973508a
languageName: node
linkType: hard
-"astring@npm:^1.8.0":
- version: 1.9.0
- resolution: "astring@npm:1.9.0"
- bin:
- astring: bin/astring
- checksum: 10c0/e7519544d9824494e80ef0e722bb3a0c543a31440d59691c13aeaceb75b14502af536b23f08db50aa6c632dafaade54caa25f0788aa7550b6b2d6e2df89e0830
+"longest-streak@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "longest-streak@npm:3.1.0"
+ checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa
languageName: node
linkType: hard
-"astro-expressive-code@npm:^0.41.1":
- version: 0.41.2
- resolution: "astro-expressive-code@npm:0.41.2"
+"lower-case@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "lower-case@npm:2.0.2"
dependencies:
- rehype-expressive-code: "npm:^0.41.2"
- peerDependencies:
- astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0
- checksum: 10c0/a485e821ee3879bdfb367ea7c76e9fa7c88d0d5b9c5ad5739f0d291090f932cc15812a9de7115c5bcec3dea61a0036fe709526680450c76612a596212e3fb551
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b
languageName: node
linkType: hard
-"astro@npm:^5.9.2":
- version: 5.9.2
- resolution: "astro@npm:5.9.2"
- dependencies:
- "@astrojs/compiler": "npm:^2.12.2"
- "@astrojs/internal-helpers": "npm:0.6.1"
- "@astrojs/markdown-remark": "npm:6.3.2"
- "@astrojs/telemetry": "npm:3.3.0"
- "@capsizecss/unpack": "npm:^2.4.0"
- "@oslojs/encoding": "npm:^1.1.0"
- "@rollup/pluginutils": "npm:^5.1.4"
- acorn: "npm:^8.14.1"
- aria-query: "npm:^5.3.2"
- axobject-query: "npm:^4.1.0"
- boxen: "npm:8.0.1"
- ci-info: "npm:^4.2.0"
- clsx: "npm:^2.1.1"
- common-ancestor-path: "npm:^1.0.1"
- cookie: "npm:^1.0.2"
- cssesc: "npm:^3.0.0"
- debug: "npm:^4.4.0"
- deterministic-object-hash: "npm:^2.0.2"
- devalue: "npm:^5.1.1"
- diff: "npm:^5.2.0"
- dlv: "npm:^1.1.3"
- dset: "npm:^3.1.4"
- es-module-lexer: "npm:^1.6.0"
- esbuild: "npm:^0.25.0"
- estree-walker: "npm:^3.0.3"
- flattie: "npm:^1.1.1"
- fontace: "npm:~0.3.0"
- github-slugger: "npm:^2.0.0"
- html-escaper: "npm:3.0.3"
- http-cache-semantics: "npm:^4.1.1"
- import-meta-resolve: "npm:^4.1.0"
- js-yaml: "npm:^4.1.0"
- kleur: "npm:^4.1.5"
- magic-string: "npm:^0.30.17"
- magicast: "npm:^0.3.5"
- mrmime: "npm:^2.0.1"
- neotraverse: "npm:^0.6.18"
- p-limit: "npm:^6.2.0"
- p-queue: "npm:^8.1.0"
- package-manager-detector: "npm:^1.1.0"
- picomatch: "npm:^4.0.2"
- prompts: "npm:^2.4.2"
- rehype: "npm:^13.0.2"
- semver: "npm:^7.7.1"
- sharp: "npm:^0.33.3"
- shiki: "npm:^3.2.1"
- tinyexec: "npm:^0.3.2"
- tinyglobby: "npm:^0.2.12"
- tsconfck: "npm:^3.1.5"
- ultrahtml: "npm:^1.6.0"
- unifont: "npm:~0.5.0"
- unist-util-visit: "npm:^5.0.0"
- unstorage: "npm:^1.15.0"
- vfile: "npm:^6.0.3"
- vite: "npm:^6.3.4"
- vitefu: "npm:^1.0.6"
- xxhash-wasm: "npm:^1.1.0"
- yargs-parser: "npm:^21.1.1"
- yocto-spinner: "npm:^0.2.1"
- zod: "npm:^3.24.2"
- zod-to-json-schema: "npm:^3.24.5"
- zod-to-ts: "npm:^1.2.0"
- dependenciesMeta:
- sharp:
- optional: true
- bin:
- astro: astro.js
- checksum: 10c0/6da1590fb367f9332bd83580d81c1d56a25be2dbd27f34488691ada167384d9bdf3ab195a71d3f94bf4a0118e53476630b9f7fb0b3b8d2581923ff7658f27b11
+"markdown-table@npm:^3.0.0":
+ version: 3.0.4
+ resolution: "markdown-table@npm:3.0.4"
+ checksum: 10c0/1257b31827629a54c24a5030a3dac952256c559174c95ce3ef89bebd6bff0cb1444b1fd667b1a1bb53307f83278111505b3e26f0c4e7b731e0060d435d2d930b
languageName: node
linkType: hard
-"axobject-query@npm:^4.1.0":
- version: 4.1.0
- resolution: "axobject-query@npm:4.1.0"
- checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775
+"mdast-util-find-and-replace@npm:^3.0.0":
+ version: 3.0.2
+ resolution: "mdast-util-find-and-replace@npm:3.0.2"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ escape-string-regexp: "npm:^5.0.0"
+ unist-util-is: "npm:^6.0.0"
+ unist-util-visit-parents: "npm:^6.0.0"
+ checksum: 10c0/c8417a35605d567772ff5c1aa08363ff3010b0d60c8ea68c53cba09bf25492e3dd261560425c1756535f3b7107f62e7ff3857cdd8fb1e62d1b2cc2ea6e074ca2
languageName: node
linkType: hard
-"bail@npm:^2.0.0":
+"mdast-util-from-markdown@npm:^2.0.0":
version: 2.0.2
- resolution: "bail@npm:2.0.2"
- checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b
+ resolution: "mdast-util-from-markdown@npm:2.0.2"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ "@types/unist": "npm:^3.0.0"
+ decode-named-character-reference: "npm:^1.0.0"
+ devlop: "npm:^1.0.0"
+ mdast-util-to-string: "npm:^4.0.0"
+ micromark: "npm:^4.0.0"
+ micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
+ micromark-util-decode-string: "npm:^2.0.0"
+ micromark-util-normalize-identifier: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ unist-util-stringify-position: "npm:^4.0.0"
+ checksum: 10c0/76eb2bd2c6f7a0318087c73376b8af6d7561c1e16654e7667e640f391341096c56142618fd0ff62f6d39e5ab4895898b9789c84cd7cec2874359a437a0e1ff15
languageName: node
linkType: hard
-"balanced-match@npm:^1.0.0":
- version: 1.0.2
- resolution: "balanced-match@npm:1.0.2"
- checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
+"mdast-util-gfm-autolink-literal@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ ccount: "npm:^2.0.0"
+ devlop: "npm:^1.0.0"
+ mdast-util-find-and-replace: "npm:^3.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6
languageName: node
linkType: hard
-"base-64@npm:^1.0.0":
- version: 1.0.0
- resolution: "base-64@npm:1.0.0"
- checksum: 10c0/d886cb3236cee0bed9f7075675748b59b32fad623ddb8ce1793c790306aa0f76a03238cad4b3fb398abda6527ce08a5588388533a4ccade0b97e82b9da660e28
+"mdast-util-gfm-footnote@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "mdast-util-gfm-footnote@npm:2.1.0"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ devlop: "npm:^1.1.0"
+ mdast-util-from-markdown: "npm:^2.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ micromark-util-normalize-identifier: "npm:^2.0.0"
+ checksum: 10c0/8ab965ee6be3670d76ec0e95b2ba3101fc7444eec47564943ab483d96ac17d29da2a4e6146a2a288be30c21b48c4f3938a1e54b9a46fbdd321d49a5bc0077ed0
languageName: node
linkType: hard
-"base64-js@npm:^1.1.2, base64-js@npm:^1.3.0":
- version: 1.5.1
- resolution: "base64-js@npm:1.5.1"
- checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf
+"mdast-util-gfm-strikethrough@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdast-util-gfm-strikethrough@npm:2.0.0"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ mdast-util-from-markdown: "npm:^2.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056
languageName: node
linkType: hard
-"bcp-47-match@npm:^2.0.0":
- version: 2.0.3
- resolution: "bcp-47-match@npm:2.0.3"
- checksum: 10c0/ae5c202854df8a9ad4777dc3b49562578495a69164869f365a88c1a089837a9fbbce4c0c44f6f1a5e44c7841f47e91fe6fea00306ca49ce5ec95a7eb71f839c4
+"mdast-util-gfm-table@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdast-util-gfm-table@npm:2.0.0"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ devlop: "npm:^1.0.0"
+ markdown-table: "npm:^3.0.0"
+ mdast-util-from-markdown: "npm:^2.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e
languageName: node
linkType: hard
-"bcp-47@npm:^2.1.0":
- version: 2.1.0
- resolution: "bcp-47@npm:2.1.0"
+"mdast-util-gfm-task-list-item@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdast-util-gfm-task-list-item@npm:2.0.0"
dependencies:
- is-alphabetical: "npm:^2.0.0"
- is-alphanumerical: "npm:^2.0.0"
- is-decimal: "npm:^2.0.0"
- checksum: 10c0/0b461b6d5bad215665e59bc57c4e1489312da541612558629e4f3d3538b16ce6c2709a4b62ec9ed6fca7a339740c27df6a454d5821a849b3df5ff7e697372885
+ "@types/mdast": "npm:^4.0.0"
+ devlop: "npm:^1.0.0"
+ mdast-util-from-markdown: "npm:^2.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834
languageName: node
linkType: hard
-"blob-to-buffer@npm:^1.2.8":
- version: 1.2.9
- resolution: "blob-to-buffer@npm:1.2.9"
- checksum: 10c0/ff8d3327f030fcd98b28c7557158721bc36b2102452bb4d8808d7bf497a6feee34623a40f80ec8a097851c866369fc76ef948cee4e78373f34738b70ab3f8cf6
+"mdast-util-gfm@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "mdast-util-gfm@npm:3.1.0"
+ dependencies:
+ mdast-util-from-markdown: "npm:^2.0.0"
+ mdast-util-gfm-autolink-literal: "npm:^2.0.0"
+ mdast-util-gfm-footnote: "npm:^2.0.0"
+ mdast-util-gfm-strikethrough: "npm:^2.0.0"
+ mdast-util-gfm-table: "npm:^2.0.0"
+ mdast-util-gfm-task-list-item: "npm:^2.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ checksum: 10c0/4bedcfb6a20e39901c8772f0d2bb2d7a64ae87a54c13cbd92eec062cf470fbb68c2ad754e149af5b30794e2de61c978ab1de1ace03c0c40f443ca9b9b8044f81
languageName: node
linkType: hard
-"boolbase@npm:^1.0.0":
- version: 1.0.0
- resolution: "boolbase@npm:1.0.0"
- checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf
+"mdast-util-phrasing@npm:^4.0.0":
+ version: 4.1.0
+ resolution: "mdast-util-phrasing@npm:4.1.0"
+ dependencies:
+ "@types/mdast": "npm:^4.0.0"
+ unist-util-is: "npm:^6.0.0"
+ checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f
languageName: node
linkType: hard
-"boxen@npm:8.0.1":
- version: 8.0.1
- resolution: "boxen@npm:8.0.1"
+"mdast-util-to-hast@npm:^13.0.0":
+ version: 13.2.0
+ resolution: "mdast-util-to-hast@npm:13.2.0"
dependencies:
- ansi-align: "npm:^3.0.1"
- camelcase: "npm:^8.0.0"
- chalk: "npm:^5.3.0"
- cli-boxes: "npm:^3.0.0"
- string-width: "npm:^7.2.0"
- type-fest: "npm:^4.21.0"
- widest-line: "npm:^5.0.0"
- wrap-ansi: "npm:^9.0.0"
- checksum: 10c0/8c54f9797bf59eec0b44c9043d9cb5d5b2783dc673e4650235e43a5155c43334e78ec189fd410cf92056c1054aee3758279809deed115b49e68f1a1c6b3faa32
+ "@types/hast": "npm:^3.0.0"
+ "@types/mdast": "npm:^4.0.0"
+ "@ungap/structured-clone": "npm:^1.0.0"
+ devlop: "npm:^1.0.0"
+ micromark-util-sanitize-uri: "npm:^2.0.0"
+ trim-lines: "npm:^3.0.0"
+ unist-util-position: "npm:^5.0.0"
+ unist-util-visit: "npm:^5.0.0"
+ vfile: "npm:^6.0.0"
+ checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816
languageName: node
linkType: hard
-"brace-expansion@npm:^2.0.1":
- version: 2.0.2
- resolution: "brace-expansion@npm:2.0.2"
+"mdast-util-to-hast@npm:^13.2.1":
+ version: 13.2.1
+ resolution: "mdast-util-to-hast@npm:13.2.1"
dependencies:
- balanced-match: "npm:^1.0.0"
- checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf
+ "@types/hast": "npm:^3.0.0"
+ "@types/mdast": "npm:^4.0.0"
+ "@ungap/structured-clone": "npm:^1.0.0"
+ devlop: "npm:^1.0.0"
+ micromark-util-sanitize-uri: "npm:^2.0.0"
+ trim-lines: "npm:^3.0.0"
+ unist-util-position: "npm:^5.0.0"
+ unist-util-visit: "npm:^5.0.0"
+ vfile: "npm:^6.0.0"
+ checksum: 10c0/3eeaf28a5e84e1e08e6d54a1a8a06c0fca88cb5d36f4cf8086f0177248d1ce6e4e751f4ad0da19a3dea1c6ea61bd80784acc3ae021e44ceeb21aa5413a375e43
languageName: node
linkType: hard
-"brotli@npm:^1.3.2":
- version: 1.3.3
- resolution: "brotli@npm:1.3.3"
+"mdast-util-to-markdown@npm:^2.0.0":
+ version: 2.1.2
+ resolution: "mdast-util-to-markdown@npm:2.1.2"
dependencies:
- base64-js: "npm:^1.1.2"
- checksum: 10c0/9d24e24f8b7eabf44af034ed5f7d5530008b835f09a107a84ac060723e86dd43c6aa68958691fe5df524f59473b35f5ce2e0854aa1152c0a254d1010f51bcf22
+ "@types/mdast": "npm:^4.0.0"
+ "@types/unist": "npm:^3.0.0"
+ longest-streak: "npm:^3.0.0"
+ mdast-util-phrasing: "npm:^4.0.0"
+ mdast-util-to-string: "npm:^4.0.0"
+ micromark-util-classify-character: "npm:^2.0.0"
+ micromark-util-decode-string: "npm:^2.0.0"
+ unist-util-visit: "npm:^5.0.0"
+ zwitch: "npm:^2.0.0"
+ checksum: 10c0/4649722a6099f12e797bd8d6469b2b43b44e526b5182862d9c7766a3431caad2c0112929c538a972f214e63c015395e5d3f54bd81d9ac1b16e6d8baaf582f749
languageName: node
linkType: hard
-"cacache@npm:^19.0.1":
- version: 19.0.1
- resolution: "cacache@npm:19.0.1"
+"mdast-util-to-string@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "mdast-util-to-string@npm:4.0.0"
dependencies:
- "@npmcli/fs": "npm:^4.0.0"
- fs-minipass: "npm:^3.0.0"
- glob: "npm:^10.2.2"
- lru-cache: "npm:^10.0.1"
- minipass: "npm:^7.0.3"
- minipass-collect: "npm:^2.0.1"
- minipass-flush: "npm:^1.0.5"
- minipass-pipeline: "npm:^1.2.4"
- p-map: "npm:^7.0.2"
- ssri: "npm:^12.0.0"
- tar: "npm:^7.4.3"
- unique-filename: "npm:^4.0.0"
- checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c
- languageName: node
- linkType: hard
-
-"camelcase@npm:^8.0.0":
- version: 8.0.0
- resolution: "camelcase@npm:8.0.0"
- checksum: 10c0/56c5fe072f0523c9908cdaac21d4a3b3fb0f608fb2e9ba90a60e792b95dd3bb3d1f3523873ab17d86d146e94171305f73ef619e2f538bd759675bc4a14b4bff3
+ "@types/mdast": "npm:^4.0.0"
+ checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7
languageName: node
linkType: hard
-"ccount@npm:^2.0.0":
- version: 2.0.1
- resolution: "ccount@npm:2.0.1"
- checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350
+"micromark-core-commonmark@npm:^2.0.0":
+ version: 2.0.3
+ resolution: "micromark-core-commonmark@npm:2.0.3"
+ dependencies:
+ decode-named-character-reference: "npm:^1.0.0"
+ devlop: "npm:^1.0.0"
+ micromark-factory-destination: "npm:^2.0.0"
+ micromark-factory-label: "npm:^2.0.0"
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-factory-title: "npm:^2.0.0"
+ micromark-factory-whitespace: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-chunked: "npm:^2.0.0"
+ micromark-util-classify-character: "npm:^2.0.0"
+ micromark-util-html-tag-name: "npm:^2.0.0"
+ micromark-util-normalize-identifier: "npm:^2.0.0"
+ micromark-util-resolve-all: "npm:^2.0.0"
+ micromark-util-subtokenize: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/bd4a794fdc9e88dbdf59eaf1c507ddf26e5f7ddf4e52566c72239c0f1b66adbcd219ba2cd42350debbe24471434d5f5e50099d2b3f4e5762ca222ba8e5b549ee
languageName: node
linkType: hard
-"chalk@npm:^5.3.0":
- version: 5.4.1
- resolution: "chalk@npm:5.4.1"
- checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef
+"micromark-extension-gfm-autolink-literal@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0"
+ dependencies:
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-sanitize-uri: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe
languageName: node
linkType: hard
-"character-entities-html4@npm:^2.0.0":
+"micromark-extension-gfm-footnote@npm:^2.0.0":
version: 2.1.0
- resolution: "character-entities-html4@npm:2.1.0"
- checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40
- languageName: node
- linkType: hard
-
-"character-entities-legacy@npm:^3.0.0":
- version: 3.0.0
- resolution: "character-entities-legacy@npm:3.0.0"
- checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1
- languageName: node
- linkType: hard
-
-"character-entities@npm:^2.0.0":
- version: 2.0.2
- resolution: "character-entities@npm:2.0.2"
- checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308
- languageName: node
- linkType: hard
-
-"character-reference-invalid@npm:^2.0.0":
- version: 2.0.1
- resolution: "character-reference-invalid@npm:2.0.1"
- checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1
- languageName: node
- linkType: hard
-
-"chokidar@npm:^4.0.3":
- version: 4.0.3
- resolution: "chokidar@npm:4.0.3"
+ resolution: "micromark-extension-gfm-footnote@npm:2.1.0"
dependencies:
- readdirp: "npm:^4.0.1"
- checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad
- languageName: node
- linkType: hard
-
-"chownr@npm:^3.0.0":
- version: 3.0.0
- resolution: "chownr@npm:3.0.0"
- checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10
- languageName: node
- linkType: hard
-
-"ci-info@npm:^4.2.0":
- version: 4.2.0
- resolution: "ci-info@npm:4.2.0"
- checksum: 10c0/37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058
- languageName: node
- linkType: hard
-
-"cli-boxes@npm:^3.0.0":
- version: 3.0.0
- resolution: "cli-boxes@npm:3.0.0"
- checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9
- languageName: node
- linkType: hard
-
-"clone@npm:^2.1.2":
- version: 2.1.2
- resolution: "clone@npm:2.1.2"
- checksum: 10c0/ed0601cd0b1606bc7d82ee7175b97e68d1dd9b91fd1250a3617b38d34a095f8ee0431d40a1a611122dcccb4f93295b4fdb94942aa763392b5fe44effa50c2d5e
- languageName: node
- linkType: hard
-
-"clsx@npm:^2.1.1":
- version: 2.1.1
- resolution: "clsx@npm:2.1.1"
- checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839
+ devlop: "npm:^1.0.0"
+ micromark-core-commonmark: "npm:^2.0.0"
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-normalize-identifier: "npm:^2.0.0"
+ micromark-util-sanitize-uri: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc
languageName: node
linkType: hard
-"collapse-white-space@npm:^2.0.0":
+"micromark-extension-gfm-strikethrough@npm:^2.0.0":
version: 2.1.0
- resolution: "collapse-white-space@npm:2.1.0"
- checksum: 10c0/b2e2800f4ab261e62eb27a1fbe853378296e3a726d6695117ed033e82d61fb6abeae4ffc1465d5454499e237005de9cfc52c9562dc7ca4ac759b9a222ef14453
- languageName: node
- linkType: hard
-
-"color-convert@npm:^2.0.1":
- version: 2.0.1
- resolution: "color-convert@npm:2.0.1"
+ resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0"
dependencies:
- color-name: "npm:~1.1.4"
- checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
- languageName: node
- linkType: hard
-
-"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
- version: 1.1.4
- resolution: "color-name@npm:1.1.4"
- checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
+ devlop: "npm:^1.0.0"
+ micromark-util-chunked: "npm:^2.0.0"
+ micromark-util-classify-character: "npm:^2.0.0"
+ micromark-util-resolve-all: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb
languageName: node
linkType: hard
-"color-string@npm:^1.9.0":
- version: 1.9.1
- resolution: "color-string@npm:1.9.1"
+"micromark-extension-gfm-table@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "micromark-extension-gfm-table@npm:2.1.1"
dependencies:
- color-name: "npm:^1.0.0"
- simple-swizzle: "npm:^0.2.2"
- checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404
+ devlop: "npm:^1.0.0"
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/04bc00e19b435fa0add62cd029d8b7eb6137522f77832186b1d5ef34544a9bd030c9cf85e92ddfcc5c31f6f0a58a43d4b96dba4fc21316037c734630ee12c912
languageName: node
linkType: hard
-"color@npm:^4.2.3":
- version: 4.2.3
- resolution: "color@npm:4.2.3"
+"micromark-extension-gfm-tagfilter@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0"
dependencies:
- color-convert: "npm:^2.0.1"
- color-string: "npm:^1.9.0"
- checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118
- languageName: node
- linkType: hard
-
-"comma-separated-tokens@npm:^2.0.0":
- version: 2.0.3
- resolution: "comma-separated-tokens@npm:2.0.3"
- checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67
- languageName: node
- linkType: hard
-
-"common-ancestor-path@npm:^1.0.1":
- version: 1.0.1
- resolution: "common-ancestor-path@npm:1.0.1"
- checksum: 10c0/390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534
- languageName: node
- linkType: hard
-
-"cookie-es@npm:^1.2.2":
- version: 1.2.2
- resolution: "cookie-es@npm:1.2.2"
- checksum: 10c0/210eb67cd40a53986fda99d6f47118cfc45a69c4abc03490d15ab1b83ac978d5518356aecdd7a7a4969292445e3063c2302deda4c73706a67edc008127608638
- languageName: node
- linkType: hard
-
-"cookie@npm:^1.0.2":
- version: 1.0.2
- resolution: "cookie@npm:1.0.2"
- checksum: 10c0/fd25fe79e8fbcfcaf6aa61cd081c55d144eeeba755206c058682257cb38c4bd6795c6620de3f064c740695bb65b7949ebb1db7a95e4636efb8357a335ad3f54b
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d
languageName: node
linkType: hard
-"cross-fetch@npm:^3.0.4":
- version: 3.2.0
- resolution: "cross-fetch@npm:3.2.0"
+"micromark-extension-gfm-task-list-item@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0"
dependencies:
- node-fetch: "npm:^2.7.0"
- checksum: 10c0/d8596adf0269130098a676f6739a0922f3cc7b71cc89729925411ebe851a87026171c82ea89154c4811c9867c01c44793205a52e618ce2684650218c7fbeeb9f
+ devlop: "npm:^1.0.0"
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f
languageName: node
linkType: hard
-"cross-spawn@npm:^7.0.6":
- version: 7.0.6
- resolution: "cross-spawn@npm:7.0.6"
+"micromark-extension-gfm@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "micromark-extension-gfm@npm:3.0.0"
dependencies:
- path-key: "npm:^3.1.0"
- shebang-command: "npm:^2.0.0"
- which: "npm:^2.0.1"
- checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1
+ micromark-extension-gfm-autolink-literal: "npm:^2.0.0"
+ micromark-extension-gfm-footnote: "npm:^2.0.0"
+ micromark-extension-gfm-strikethrough: "npm:^2.0.0"
+ micromark-extension-gfm-table: "npm:^2.0.0"
+ micromark-extension-gfm-tagfilter: "npm:^2.0.0"
+ micromark-extension-gfm-task-list-item: "npm:^2.0.0"
+ micromark-util-combine-extensions: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9
languageName: node
linkType: hard
-"crossws@npm:^0.3.4":
- version: 0.3.5
- resolution: "crossws@npm:0.3.5"
+"micromark-factory-destination@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-factory-destination@npm:2.0.1"
dependencies:
- uncrypto: "npm:^0.1.3"
- checksum: 10c0/9e873546f0806606c4f775219f6811768fc3b3b0765ca8230722e849058ad098318af006e1faa39a8008c03009c37c519f6bccad41b0d78586237585c75fb38b
- languageName: node
- linkType: hard
-
-"css-selector-parser@npm:^3.0.0":
- version: 3.1.2
- resolution: "css-selector-parser@npm:3.1.2"
- checksum: 10c0/4164e68a3684a834feda10665bc85b107c7fd64625c055dca1eab403169bf531cde3425ac4b869633fe536677a90debb5bc85511ff8f464e3acb8f5cb57c3169
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/bbafcf869cee5bf511161354cb87d61c142592fbecea051000ff116068dc85216e6d48519d147890b9ea5d7e2864a6341c0c09d9948c203bff624a80a476023c
languageName: node
linkType: hard
-"css-tree@npm:^3.0.0":
- version: 3.1.0
- resolution: "css-tree@npm:3.1.0"
+"micromark-factory-label@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-factory-label@npm:2.0.1"
dependencies:
- mdn-data: "npm:2.12.2"
- source-map-js: "npm:^1.0.1"
- checksum: 10c0/b5715852c2f397c715ca00d56ec53fc83ea596295ae112eb1ba6a1bda3b31086380e596b1d8c4b980fe6da09e7d0fc99c64d5bb7313030dd0fba9c1415f30979
- languageName: node
- linkType: hard
-
-"cssesc@npm:^3.0.0":
- version: 3.0.0
- resolution: "cssesc@npm:3.0.0"
- bin:
- cssesc: bin/cssesc
- checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7
+ devlop: "npm:^1.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/0137716b4ecb428114165505e94a2f18855c8bbea21b07a8b5ce514b32a595ed789d2b967125718fc44c4197ceaa48f6609d58807a68e778138d2e6b91b824e8
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.3.4, debug@npm:^4.4.0":
- version: 4.4.1
- resolution: "debug@npm:4.4.1"
+"micromark-factory-space@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-factory-space@npm:2.0.1"
dependencies:
- ms: "npm:^2.1.3"
- peerDependenciesMeta:
- supports-color:
- optional: true
- checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/f9ed43f1c0652d8d898de0ac2be3f77f776fffe7dd96bdbba1e02d7ce33d3853c6ff5daa52568fc4fa32cdf3a62d86b85ead9b9189f7211e1d69ff2163c450fb
languageName: node
linkType: hard
-"decode-named-character-reference@npm:^1.0.0":
- version: 1.1.0
- resolution: "decode-named-character-reference@npm:1.1.0"
+"micromark-factory-title@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-factory-title@npm:2.0.1"
dependencies:
- character-entities: "npm:^2.0.0"
- checksum: 10c0/359c76305b47e67660ec096c5cd3f65972ed75b8a53a40435a7a967cfab3e9516e64b443cbe0c7edcf5ab77f65a6924f12fb1872b1e09e2f044f28f4fd10996a
- languageName: node
- linkType: hard
-
-"defu@npm:^6.1.4":
- version: 6.1.4
- resolution: "defu@npm:6.1.4"
- checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5
- languageName: node
- linkType: hard
-
-"dequal@npm:^2.0.0":
- version: 2.0.3
- resolution: "dequal@npm:2.0.3"
- checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888
- languageName: node
- linkType: hard
-
-"destr@npm:^2.0.3, destr@npm:^2.0.5":
- version: 2.0.5
- resolution: "destr@npm:2.0.5"
- checksum: 10c0/efabffe7312a45ad90d79975376be958c50069f1156b94c181199763a7f971e113bd92227c26b94a169c71ca7dbc13583b7e96e5164743969fc79e1ff153e646
- languageName: node
- linkType: hard
-
-"detect-libc@npm:^2.0.3":
- version: 2.0.4
- resolution: "detect-libc@npm:2.0.4"
- checksum: 10c0/c15541f836eba4b1f521e4eecc28eefefdbc10a94d3b8cb4c507689f332cc111babb95deda66f2de050b22122113189986d5190be97d51b5a2b23b938415e67c
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/e72fad8d6e88823514916890099a5af20b6a9178ccf78e7e5e05f4de99bb8797acb756257d7a3a57a53854cb0086bf8aab15b1a9e9db8982500dd2c9ff5948b6
languageName: node
linkType: hard
-"deterministic-object-hash@npm:^2.0.2":
- version: 2.0.2
- resolution: "deterministic-object-hash@npm:2.0.2"
+"micromark-factory-whitespace@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-factory-whitespace@npm:2.0.1"
dependencies:
- base-64: "npm:^1.0.0"
- checksum: 10c0/072010ec12981ba8d6018a6bc540aa66aceb35f922fd5c394d021b76f4489ffc447579dd29ce0f01186c3acb26d0655f3b8c81e302fccae8f2c47f393c7a4294
- languageName: node
- linkType: hard
-
-"devalue@npm:^5.1.1":
- version: 5.1.1
- resolution: "devalue@npm:5.1.1"
- checksum: 10c0/f6717a856fd54216959abd341cb189e47a9b37d72d8419e055ae77567ff4ed0fb683b1ffb6a71067f645adae5991bffabe6468a3e2385937bff49273e71c1f51
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/20a1ec58698f24b766510a309b23a10175034fcf1551eaa9da3adcbed3e00cd53d1ebe5f030cf873f76a1cec3c34eb8c50cc227be3344caa9ed25d56cf611224
languageName: node
linkType: hard
-"devlop@npm:^1.0.0, devlop@npm:^1.1.0":
- version: 1.1.0
- resolution: "devlop@npm:1.1.0"
+"micromark-util-character@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "micromark-util-character@npm:2.1.1"
dependencies:
- dequal: "npm:^2.0.0"
- checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e
- languageName: node
- linkType: hard
-
-"dfa@npm:^1.2.0":
- version: 1.2.0
- resolution: "dfa@npm:1.2.0"
- checksum: 10c0/ad12f0bc73b530876672e0a9dfbaa350eeff0c876580042734a004e462eca86d7749b9dedf6b067ba54f346137ab23d16615826bbfa424a3e01ab0e2786fad3c
- languageName: node
- linkType: hard
-
-"diff@npm:^5.2.0":
- version: 5.2.0
- resolution: "diff@npm:5.2.0"
- checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/d3fe7a5e2c4060fc2a076f9ce699c82a2e87190a3946e1e5eea77f563869b504961f5668d9c9c014724db28ac32fa909070ea8b30c3a39bd0483cc6c04cc76a1
languageName: node
linkType: hard
-"direction@npm:^2.0.0":
+"micromark-util-chunked@npm:^2.0.0":
version: 2.0.1
- resolution: "direction@npm:2.0.1"
- bin:
- direction: cli.js
- checksum: 10c0/dce809431cad978e0778769a3818ea797ebe0bd542c85032ad9ad98971e2021a146be62feb259d7ffe4b76739e07b23e861b29c3f184ac8d38cc6ba956d5c586
- languageName: node
- linkType: hard
-
-"dlv@npm:^1.1.3":
- version: 1.1.3
- resolution: "dlv@npm:1.1.3"
- checksum: 10c0/03eb4e769f19a027fd5b43b59e8a05e3fd2100ac239ebb0bf9a745de35d449e2f25cfaf3aa3934664551d72856f4ae8b7822016ce5c42c2d27c18ae79429ec42
- languageName: node
- linkType: hard
-
-"dset@npm:^3.1.4":
- version: 3.1.4
- resolution: "dset@npm:3.1.4"
- checksum: 10c0/b67bbd28dd8a539e90c15ffb61100eb64ef995c5270a124d4f99bbb53f4d82f55a051b731ba81f3215dd9dce2b4c8d69927dc20b3be1c5fc88bab159467aa438
- languageName: node
- linkType: hard
-
-"eastasianwidth@npm:^0.2.0":
- version: 0.2.0
- resolution: "eastasianwidth@npm:0.2.0"
- checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39
- languageName: node
- linkType: hard
-
-"emoji-regex@npm:^10.3.0":
- version: 10.4.0
- resolution: "emoji-regex@npm:10.4.0"
- checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d
- languageName: node
- linkType: hard
-
-"emoji-regex@npm:^8.0.0":
- version: 8.0.0
- resolution: "emoji-regex@npm:8.0.0"
- checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010
- languageName: node
- linkType: hard
-
-"emoji-regex@npm:^9.2.2":
- version: 9.2.2
- resolution: "emoji-regex@npm:9.2.2"
- checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639
- languageName: node
- linkType: hard
-
-"encoding@npm:^0.1.13":
- version: 0.1.13
- resolution: "encoding@npm:0.1.13"
+ resolution: "micromark-util-chunked@npm:2.0.1"
dependencies:
- iconv-lite: "npm:^0.6.2"
- checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039
- languageName: node
- linkType: hard
-
-"entities@npm:^6.0.0":
- version: 6.0.1
- resolution: "entities@npm:6.0.1"
- checksum: 10c0/ed836ddac5acb34341094eb495185d527bd70e8632b6c0d59548cbfa23defdbae70b96f9a405c82904efa421230b5b3fd2283752447d737beffd3f3e6ee74414
- languageName: node
- linkType: hard
-
-"env-paths@npm:^2.2.0":
- version: 2.2.1
- resolution: "env-paths@npm:2.2.1"
- checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
- languageName: node
- linkType: hard
-
-"err-code@npm:^2.0.2":
- version: 2.0.3
- resolution: "err-code@npm:2.0.3"
- checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66
- languageName: node
- linkType: hard
-
-"es-module-lexer@npm:^1.6.0":
- version: 1.7.0
- resolution: "es-module-lexer@npm:1.7.0"
- checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b
- languageName: node
- linkType: hard
-
-"esast-util-from-estree@npm:^2.0.0":
- version: 2.0.0
- resolution: "esast-util-from-estree@npm:2.0.0"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- estree-util-visit: "npm:^2.0.0"
- unist-util-position-from-estree: "npm:^2.0.0"
- checksum: 10c0/6c619bc6963314f8f64b32e3b101b321bf121f659e62b11e70f425619c2db6f1d25f4c594a57fd00908da96c67d9bfbf876eb5172abf9e13f47a71796f6630ff
- languageName: node
- linkType: hard
-
-"esast-util-from-js@npm:^2.0.0":
- version: 2.0.1
- resolution: "esast-util-from-js@npm:2.0.1"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- acorn: "npm:^8.0.0"
- esast-util-from-estree: "npm:^2.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/3a446fb0b0d7bcd7e0157aa44b3b692802a08c93edbea81cc0f7fe4437bfdfb4b72e4563fe63b4e36d390086b71185dba4ac921f4180cc6349985c263cc74421
- languageName: node
- linkType: hard
-
-"esbuild@npm:^0.25.0":
- version: 0.25.5
- resolution: "esbuild@npm:0.25.5"
- dependencies:
- "@esbuild/aix-ppc64": "npm:0.25.5"
- "@esbuild/android-arm": "npm:0.25.5"
- "@esbuild/android-arm64": "npm:0.25.5"
- "@esbuild/android-x64": "npm:0.25.5"
- "@esbuild/darwin-arm64": "npm:0.25.5"
- "@esbuild/darwin-x64": "npm:0.25.5"
- "@esbuild/freebsd-arm64": "npm:0.25.5"
- "@esbuild/freebsd-x64": "npm:0.25.5"
- "@esbuild/linux-arm": "npm:0.25.5"
- "@esbuild/linux-arm64": "npm:0.25.5"
- "@esbuild/linux-ia32": "npm:0.25.5"
- "@esbuild/linux-loong64": "npm:0.25.5"
- "@esbuild/linux-mips64el": "npm:0.25.5"
- "@esbuild/linux-ppc64": "npm:0.25.5"
- "@esbuild/linux-riscv64": "npm:0.25.5"
- "@esbuild/linux-s390x": "npm:0.25.5"
- "@esbuild/linux-x64": "npm:0.25.5"
- "@esbuild/netbsd-arm64": "npm:0.25.5"
- "@esbuild/netbsd-x64": "npm:0.25.5"
- "@esbuild/openbsd-arm64": "npm:0.25.5"
- "@esbuild/openbsd-x64": "npm:0.25.5"
- "@esbuild/sunos-x64": "npm:0.25.5"
- "@esbuild/win32-arm64": "npm:0.25.5"
- "@esbuild/win32-ia32": "npm:0.25.5"
- "@esbuild/win32-x64": "npm:0.25.5"
- dependenciesMeta:
- "@esbuild/aix-ppc64":
- optional: true
- "@esbuild/android-arm":
- optional: true
- "@esbuild/android-arm64":
- optional: true
- "@esbuild/android-x64":
- optional: true
- "@esbuild/darwin-arm64":
- optional: true
- "@esbuild/darwin-x64":
- optional: true
- "@esbuild/freebsd-arm64":
- optional: true
- "@esbuild/freebsd-x64":
- optional: true
- "@esbuild/linux-arm":
- optional: true
- "@esbuild/linux-arm64":
- optional: true
- "@esbuild/linux-ia32":
- optional: true
- "@esbuild/linux-loong64":
- optional: true
- "@esbuild/linux-mips64el":
- optional: true
- "@esbuild/linux-ppc64":
- optional: true
- "@esbuild/linux-riscv64":
- optional: true
- "@esbuild/linux-s390x":
- optional: true
- "@esbuild/linux-x64":
- optional: true
- "@esbuild/netbsd-arm64":
- optional: true
- "@esbuild/netbsd-x64":
- optional: true
- "@esbuild/openbsd-arm64":
- optional: true
- "@esbuild/openbsd-x64":
- optional: true
- "@esbuild/sunos-x64":
- optional: true
- "@esbuild/win32-arm64":
- optional: true
- "@esbuild/win32-ia32":
- optional: true
- "@esbuild/win32-x64":
- optional: true
- bin:
- esbuild: bin/esbuild
- checksum: 10c0/aba8cbc11927fa77562722ed5e95541ce2853f67ad7bdc40382b558abc2e0ec57d92ffb820f082ba2047b4ef9f3bc3da068cdebe30dfd3850cfa3827a78d604e
- languageName: node
- linkType: hard
-
-"escape-string-regexp@npm:^5.0.0":
- version: 5.0.0
- resolution: "escape-string-regexp@npm:5.0.0"
- checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95
- languageName: node
- linkType: hard
-
-"estree-util-attach-comments@npm:^3.0.0":
- version: 3.0.0
- resolution: "estree-util-attach-comments@npm:3.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- checksum: 10c0/ee69bb5c45e2ad074725b90ed181c1c934b29d81bce4b0c7761431e83c4c6ab1b223a6a3d6a4fbeb92128bc5d5ee201d5dd36cf1770aa5e16a40b0cf36e8a1f1
- languageName: node
- linkType: hard
-
-"estree-util-build-jsx@npm:^3.0.0":
- version: 3.0.1
- resolution: "estree-util-build-jsx@npm:3.0.1"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- estree-util-is-identifier-name: "npm:^3.0.0"
- estree-walker: "npm:^3.0.0"
- checksum: 10c0/274c119817b8e7caa14a9778f1e497fea56cdd2b01df1a1ed037f843178992d3afe85e0d364d485e1e2e239255763553d1b647b15e4a7ba50851bcb43dc6bf80
- languageName: node
- linkType: hard
-
-"estree-util-is-identifier-name@npm:^3.0.0":
- version: 3.0.0
- resolution: "estree-util-is-identifier-name@npm:3.0.0"
- checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b
- languageName: node
- linkType: hard
-
-"estree-util-scope@npm:^1.0.0":
- version: 1.0.0
- resolution: "estree-util-scope@npm:1.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- checksum: 10c0/ef8a573cc899277c613623a1722f630e2163abbc6e9e2f49e758c59b81b484e248b585df6df09a38c00fbfb6390117997cc80c1347b7a86bc1525d9e462b60d5
- languageName: node
- linkType: hard
-
-"estree-util-to-js@npm:^2.0.0":
- version: 2.0.0
- resolution: "estree-util-to-js@npm:2.0.0"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- astring: "npm:^1.8.0"
- source-map: "npm:^0.7.0"
- checksum: 10c0/ac88cb831401ef99e365f92f4af903755d56ae1ce0e0f0fb8ff66e678141f3d529194f0fb15f6c78cd7554c16fda36854df851d58f9e05cfab15bddf7a97cea0
- languageName: node
- linkType: hard
-
-"estree-util-visit@npm:^2.0.0":
- version: 2.0.0
- resolution: "estree-util-visit@npm:2.0.0"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/unist": "npm:^3.0.0"
- checksum: 10c0/acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39
- languageName: node
- linkType: hard
-
-"estree-walker@npm:^2.0.2":
- version: 2.0.2
- resolution: "estree-walker@npm:2.0.2"
- checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af
- languageName: node
- linkType: hard
-
-"estree-walker@npm:^3.0.0, estree-walker@npm:^3.0.3":
- version: 3.0.3
- resolution: "estree-walker@npm:3.0.3"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d
- languageName: node
- linkType: hard
-
-"eventemitter3@npm:^5.0.1":
- version: 5.0.1
- resolution: "eventemitter3@npm:5.0.1"
- checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814
- languageName: node
- linkType: hard
-
-"exponential-backoff@npm:^3.1.1":
- version: 3.1.2
- resolution: "exponential-backoff@npm:3.1.2"
- checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844
- languageName: node
- linkType: hard
-
-"expressive-code@npm:^0.41.2":
- version: 0.41.2
- resolution: "expressive-code@npm:0.41.2"
- dependencies:
- "@expressive-code/core": "npm:^0.41.2"
- "@expressive-code/plugin-frames": "npm:^0.41.2"
- "@expressive-code/plugin-shiki": "npm:^0.41.2"
- "@expressive-code/plugin-text-markers": "npm:^0.41.2"
- checksum: 10c0/15d8fd5291eb6c20ebcc6af8d2b570f9acfb4b176ddd9076679af2d74cbff4e9d6ee1a38956eedacc8c63692d615d8486160a42f57e609c6a40f80316efc5cc7
- languageName: node
- linkType: hard
-
-"extend@npm:^3.0.0":
- version: 3.0.2
- resolution: "extend@npm:3.0.2"
- checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9
- languageName: node
- linkType: hard
-
-"fast-deep-equal@npm:^3.1.3":
- version: 3.1.3
- resolution: "fast-deep-equal@npm:3.1.3"
- checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
- languageName: node
- linkType: hard
-
-"fdir@npm:^6.4.4":
- version: 6.4.6
- resolution: "fdir@npm:6.4.6"
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
- checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9
- languageName: node
- linkType: hard
-
-"flattie@npm:^1.1.1":
- version: 1.1.1
- resolution: "flattie@npm:1.1.1"
- checksum: 10c0/a8f8242c7af126cb2f1aa4a067af338fce609fc4c4df183c626fcc70a46c1878ce4aa88cd0dc8ef8f583ad4e7088a3b11ebeb6a62c9c97d75c0b1b0f08182ee3
- languageName: node
- linkType: hard
-
-"fontace@npm:~0.3.0":
- version: 0.3.0
- resolution: "fontace@npm:0.3.0"
- dependencies:
- "@types/fontkit": "npm:^2.0.8"
- fontkit: "npm:^2.0.4"
- checksum: 10c0/a81bef4f20c4bb6bb2cb7777d6fa267edb341b1b4c549b0918473d399c2314bf482f098d8ba0ae839bdfc8b63daa78815b647fd781157cb2d8bfc78c56a9745a
- languageName: node
- linkType: hard
-
-"fontkit@npm:^2.0.2, fontkit@npm:^2.0.4":
- version: 2.0.4
- resolution: "fontkit@npm:2.0.4"
- dependencies:
- "@swc/helpers": "npm:^0.5.12"
- brotli: "npm:^1.3.2"
- clone: "npm:^2.1.2"
- dfa: "npm:^1.2.0"
- fast-deep-equal: "npm:^3.1.3"
- restructure: "npm:^3.0.0"
- tiny-inflate: "npm:^1.0.3"
- unicode-properties: "npm:^1.4.0"
- unicode-trie: "npm:^2.0.0"
- checksum: 10c0/e68940a0801daa53a4bd160fc49814eeea5eab4dc67225b43064548d35939be9f14de17213bc1a88064adf81b6dfbdb53bda7189df1d07a3ad044482e7fd55e4
- languageName: node
- linkType: hard
-
-"foreground-child@npm:^3.1.0, foreground-child@npm:^3.3.1":
- version: 3.3.1
- resolution: "foreground-child@npm:3.3.1"
- dependencies:
- cross-spawn: "npm:^7.0.6"
- signal-exit: "npm:^4.0.1"
- checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3
- languageName: node
- linkType: hard
-
-"fs-minipass@npm:^3.0.0":
- version: 3.0.3
- resolution: "fs-minipass@npm:3.0.3"
- dependencies:
- minipass: "npm:^7.0.3"
- checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94
- languageName: node
- linkType: hard
-
-"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
- version: 2.3.3
- resolution: "fsevents@npm:2.3.3"
- dependencies:
- node-gyp: "npm:latest"
- checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60
- conditions: os=darwin
- languageName: node
- linkType: hard
-
-"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin":
- version: 2.3.3
- resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"
- dependencies:
- node-gyp: "npm:latest"
- conditions: os=darwin
- languageName: node
- linkType: hard
-
-"get-east-asian-width@npm:^1.0.0":
- version: 1.3.0
- resolution: "get-east-asian-width@npm:1.3.0"
- checksum: 10c0/1a049ba697e0f9a4d5514c4623781c5246982bdb61082da6b5ae6c33d838e52ce6726407df285cdbb27ec1908b333cf2820989bd3e986e37bb20979437fdf34b
- languageName: node
- linkType: hard
-
-"github-slugger@npm:^2.0.0":
- version: 2.0.0
- resolution: "github-slugger@npm:2.0.0"
- checksum: 10c0/21b912b6b1e48f1e5a50b2292b48df0ff6abeeb0691b161b3d93d84f4ae6b1acd6ae23702e914af7ea5d441c096453cf0f621b72d57893946618d21dd1a1c486
- languageName: node
- linkType: hard
-
-"glob@npm:^10.2.2":
- version: 10.4.5
- resolution: "glob@npm:10.4.5"
- dependencies:
- foreground-child: "npm:^3.1.0"
- jackspeak: "npm:^3.1.2"
- minimatch: "npm:^9.0.4"
- minipass: "npm:^7.1.2"
- package-json-from-dist: "npm:^1.0.0"
- path-scurry: "npm:^1.11.1"
- bin:
- glob: dist/esm/bin.mjs
- checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e
- languageName: node
- linkType: hard
-
-"glob@npm:^11.0.3":
- version: 11.0.3
- resolution: "glob@npm:11.0.3"
- dependencies:
- foreground-child: "npm:^3.3.1"
- jackspeak: "npm:^4.1.1"
- minimatch: "npm:^10.0.3"
- minipass: "npm:^7.1.2"
- package-json-from-dist: "npm:^1.0.0"
- path-scurry: "npm:^2.0.0"
- bin:
- glob: dist/esm/bin.mjs
- checksum: 10c0/7d24457549ec2903920dfa3d8e76850e7c02aa709122f0164b240c712f5455c0b457e6f2a1eee39344c6148e39895be8094ae8cfef7ccc3296ed30bce250c661
- languageName: node
- linkType: hard
-
-"graceful-fs@npm:^4.2.6":
- version: 4.2.11
- resolution: "graceful-fs@npm:4.2.11"
- checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
- languageName: node
- linkType: hard
-
-"h3@npm:^1.15.2":
- version: 1.15.3
- resolution: "h3@npm:1.15.3"
- dependencies:
- cookie-es: "npm:^1.2.2"
- crossws: "npm:^0.3.4"
- defu: "npm:^6.1.4"
- destr: "npm:^2.0.5"
- iron-webcrypto: "npm:^1.2.1"
- node-mock-http: "npm:^1.0.0"
- radix3: "npm:^1.1.2"
- ufo: "npm:^1.6.1"
- uncrypto: "npm:^0.1.3"
- checksum: 10c0/4b83daceda6f39cd508d56382dc3a83ef14453d0119ada290c7fda3c69d907ccaf2547fd233f3e001a9ffae2cde4e2543e4361d714c29fb6ec664f604d5b84a3
- languageName: node
- linkType: hard
-
-"hast-util-embedded@npm:^3.0.0":
- version: 3.0.0
- resolution: "hast-util-embedded@npm:3.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-is-element: "npm:^3.0.0"
- checksum: 10c0/054c3d3b96fcd5c1d1c6f8d38ce1f7f33022ba6362129a022673d0b539f876acdcababbb9df29812fb927294f98ef7a2f44519a80d637fe3eea1819c9e69eeac
- languageName: node
- linkType: hard
-
-"hast-util-format@npm:^1.0.0":
- version: 1.1.0
- resolution: "hast-util-format@npm:1.1.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-embedded: "npm:^3.0.0"
- hast-util-minify-whitespace: "npm:^1.0.0"
- hast-util-phrasing: "npm:^3.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- html-whitespace-sensitive-tag-names: "npm:^3.0.0"
- unist-util-visit-parents: "npm:^6.0.0"
- checksum: 10c0/6ab223cffe8a524ef4f2564d0385cab174a52551513b318496b3776e6882594eab4810b0f8d90f20e8291fa4e87fa068e03cba316d83c0836dab12dd140e98df
- languageName: node
- linkType: hard
-
-"hast-util-from-html@npm:^2.0.0, hast-util-from-html@npm:^2.0.1, hast-util-from-html@npm:^2.0.3":
- version: 2.0.3
- resolution: "hast-util-from-html@npm:2.0.3"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- devlop: "npm:^1.1.0"
- hast-util-from-parse5: "npm:^8.0.0"
- parse5: "npm:^7.0.0"
- vfile: "npm:^6.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/993ef707c1a12474c8d4094fc9706a72826c660a7e308ea54c50ad893353d32e139b7cbc67510c2e82feac572b320e3b05aeb13d0f9c6302d61261f337b46764
- languageName: node
- linkType: hard
-
-"hast-util-from-parse5@npm:^8.0.0":
- version: 8.0.3
- resolution: "hast-util-from-parse5@npm:8.0.3"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- devlop: "npm:^1.0.0"
- hastscript: "npm:^9.0.0"
- property-information: "npm:^7.0.0"
- vfile: "npm:^6.0.0"
- vfile-location: "npm:^5.0.0"
- web-namespaces: "npm:^2.0.0"
- checksum: 10c0/40ace6c0ad43c26f721c7499fe408e639cde917b2350c9299635e6326559855896dae3c3ebf7440df54766b96c4276a7823e8f376a2b6a28b37b591f03412545
- languageName: node
- linkType: hard
-
-"hast-util-has-property@npm:^3.0.0":
- version: 3.0.0
- resolution: "hast-util-has-property@npm:3.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/6e2c0e22ca893c6ebb60f8390e184c4deb041c36d09796756f02cd121c1789c0f5c862ed06caea8f1a80ea8c0ef6a7854dd57946c2eebb76488727bd4a1c952e
- languageName: node
- linkType: hard
-
-"hast-util-is-body-ok-link@npm:^3.0.0":
- version: 3.0.1
- resolution: "hast-util-is-body-ok-link@npm:3.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/c320cbd9a9a834b007a6f2f8c271e98b8331c0193adf06e0a7c5ea0acae664e97ce28eb4436e0658bc5cdb8f47390ec1c6cba7c4fe1ded10951fcdd1432f60bf
- languageName: node
- linkType: hard
-
-"hast-util-is-element@npm:^3.0.0":
- version: 3.0.0
- resolution: "hast-util-is-element@npm:3.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/f5361e4c9859c587ca8eb0d8343492f3077ccaa0f58a44cd09f35d5038f94d65152288dcd0c19336ef2c9491ec4d4e45fde2176b05293437021570aa0bc3613b
- languageName: node
- linkType: hard
-
-"hast-util-minify-whitespace@npm:^1.0.0":
- version: 1.0.1
- resolution: "hast-util-minify-whitespace@npm:1.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-embedded: "npm:^3.0.0"
- hast-util-is-element: "npm:^3.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- unist-util-is: "npm:^6.0.0"
- checksum: 10c0/20a7d64947e080463084f444ad09c7f28c40e7648ca2d9c6c036e42a67f8e945d352560ff599304c988257c1e477abcf6a1f508c0900211fa58ec1ba21b36533
- languageName: node
- linkType: hard
-
-"hast-util-parse-selector@npm:^4.0.0":
- version: 4.0.0
- resolution: "hast-util-parse-selector@npm:4.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/5e98168cb44470dc274aabf1a28317e4feb09b1eaf7a48bbaa8c1de1b43a89cd195cb1284e535698e658e3ec26ad91bc5e52c9563c36feb75abbc68aaf68fb9f
- languageName: node
- linkType: hard
-
-"hast-util-phrasing@npm:^3.0.0":
- version: 3.0.1
- resolution: "hast-util-phrasing@npm:3.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-embedded: "npm:^3.0.0"
- hast-util-has-property: "npm:^3.0.0"
- hast-util-is-body-ok-link: "npm:^3.0.0"
- hast-util-is-element: "npm:^3.0.0"
- checksum: 10c0/d77e186ea3d7d62f6db9c4a55c3e6d9f1f6affd5f40250e8de9d73f167ae19fcc02fafe1601dfbe36e90f76ed5013ac004f0b6b398aee3a04a7a81de12788600
- languageName: node
- linkType: hard
-
-"hast-util-raw@npm:^9.0.0":
- version: 9.1.0
- resolution: "hast-util-raw@npm:9.1.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- "@ungap/structured-clone": "npm:^1.0.0"
- hast-util-from-parse5: "npm:^8.0.0"
- hast-util-to-parse5: "npm:^8.0.0"
- html-void-elements: "npm:^3.0.0"
- mdast-util-to-hast: "npm:^13.0.0"
- parse5: "npm:^7.0.0"
- unist-util-position: "npm:^5.0.0"
- unist-util-visit: "npm:^5.0.0"
- vfile: "npm:^6.0.0"
- web-namespaces: "npm:^2.0.0"
- zwitch: "npm:^2.0.0"
- checksum: 10c0/d0d909d2aedecef6a06f0005cfae410d6475e6e182d768bde30c3af9fcbbe4f9beb0522bdc21d0679cb3c243c0df40385797ed255148d68b3d3f12e82d12aacc
- languageName: node
- linkType: hard
-
-"hast-util-select@npm:^6.0.2":
- version: 6.0.4
- resolution: "hast-util-select@npm:6.0.4"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- bcp-47-match: "npm:^2.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- css-selector-parser: "npm:^3.0.0"
- devlop: "npm:^1.0.0"
- direction: "npm:^2.0.0"
- hast-util-has-property: "npm:^3.0.0"
- hast-util-to-string: "npm:^3.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- nth-check: "npm:^2.0.0"
- property-information: "npm:^7.0.0"
- space-separated-tokens: "npm:^2.0.0"
- unist-util-visit: "npm:^5.0.0"
- zwitch: "npm:^2.0.0"
- checksum: 10c0/d6829953f829c24ffe465c2b156f6a7cd352f7d9b4d601e0e6ca38b85cc4a720bb9f027d34881c3b2a05f4b55c9375e256dbf43ca88604230da784e1c9c7d03f
- languageName: node
- linkType: hard
-
-"hast-util-to-estree@npm:^3.0.0":
- version: 3.1.3
- resolution: "hast-util-to-estree@npm:3.1.3"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- estree-util-attach-comments: "npm:^3.0.0"
- estree-util-is-identifier-name: "npm:^3.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- mdast-util-mdx-expression: "npm:^2.0.0"
- mdast-util-mdx-jsx: "npm:^3.0.0"
- mdast-util-mdxjs-esm: "npm:^2.0.0"
- property-information: "npm:^7.0.0"
- space-separated-tokens: "npm:^2.0.0"
- style-to-js: "npm:^1.0.0"
- unist-util-position: "npm:^5.0.0"
- zwitch: "npm:^2.0.0"
- checksum: 10c0/8e86c075319082c8a6304c5bcdf24ec02466074571e993f58bfa2cfd70850ef46d33b5c402208597a87fe0f02f1e620bda5958217efb1b7396c81c486373b75f
- languageName: node
- linkType: hard
-
-"hast-util-to-html@npm:^9.0.0, hast-util-to-html@npm:^9.0.1, hast-util-to-html@npm:^9.0.5":
- version: 9.0.5
- resolution: "hast-util-to-html@npm:9.0.5"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- ccount: "npm:^2.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- html-void-elements: "npm:^3.0.0"
- mdast-util-to-hast: "npm:^13.0.0"
- property-information: "npm:^7.0.0"
- space-separated-tokens: "npm:^2.0.0"
- stringify-entities: "npm:^4.0.0"
- zwitch: "npm:^2.0.4"
- checksum: 10c0/b7a08c30bab4371fc9b4a620965c40b270e5ae7a8e94cf885f43b21705179e28c8e43b39c72885d1647965fb3738654e6962eb8b58b0c2a84271655b4d748836
- languageName: node
- linkType: hard
-
-"hast-util-to-jsx-runtime@npm:^2.0.0":
- version: 2.3.6
- resolution: "hast-util-to-jsx-runtime@npm:2.3.6"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- estree-util-is-identifier-name: "npm:^3.0.0"
- hast-util-whitespace: "npm:^3.0.0"
- mdast-util-mdx-expression: "npm:^2.0.0"
- mdast-util-mdx-jsx: "npm:^3.0.0"
- mdast-util-mdxjs-esm: "npm:^2.0.0"
- property-information: "npm:^7.0.0"
- space-separated-tokens: "npm:^2.0.0"
- style-to-js: "npm:^1.0.0"
- unist-util-position: "npm:^5.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/27297e02848fe37ef219be04a26ce708d17278a175a807689e94a821dcffc88aa506d62c3a85beed1f9a8544f7211bdcbcde0528b7b456a57c2e342c3fd11056
- languageName: node
- linkType: hard
-
-"hast-util-to-parse5@npm:^8.0.0":
- version: 8.0.0
- resolution: "hast-util-to-parse5@npm:8.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- property-information: "npm:^6.0.0"
- space-separated-tokens: "npm:^2.0.0"
- web-namespaces: "npm:^2.0.0"
- zwitch: "npm:^2.0.0"
- checksum: 10c0/3c0c7fba026e0c4be4675daf7277f9ff22ae6da801435f1b7104f7740de5422576f1c025023c7b3df1d0a161e13a04c6ab8f98ada96eb50adb287b537849a2bd
- languageName: node
- linkType: hard
-
-"hast-util-to-string@npm:^3.0.0":
- version: 3.0.1
- resolution: "hast-util-to-string@npm:3.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/b5fa1912a6ba6131affae52a0f4394406c4c0d23c2b0307f1d69988f1030c7bb830289303e67c5ad8f674f5f23a454c1dcd492c39e45a22c1f46d3c9bce5bd0c
- languageName: node
- linkType: hard
-
-"hast-util-to-text@npm:^4.0.1, hast-util-to-text@npm:^4.0.2":
- version: 4.0.2
- resolution: "hast-util-to-text@npm:4.0.2"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/unist": "npm:^3.0.0"
- hast-util-is-element: "npm:^3.0.0"
- unist-util-find-after: "npm:^5.0.0"
- checksum: 10c0/93ecc10e68fe5391c6e634140eb330942e71dea2724c8e0c647c73ed74a8ec930a4b77043b5081284808c96f73f2bee64ee416038ece75a63a467e8d14f09946
- languageName: node
- linkType: hard
-
-"hast-util-whitespace@npm:^3.0.0":
- version: 3.0.0
- resolution: "hast-util-whitespace@npm:3.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8
- languageName: node
- linkType: hard
-
-"hastscript@npm:^9.0.0":
- version: 9.0.1
- resolution: "hastscript@npm:9.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- comma-separated-tokens: "npm:^2.0.0"
- hast-util-parse-selector: "npm:^4.0.0"
- property-information: "npm:^7.0.0"
- space-separated-tokens: "npm:^2.0.0"
- checksum: 10c0/18dc8064e5c3a7a2ae862978e626b97a254e1c8a67ee9d0c9f06d373bba155ed805fc5b5ce21b990fb7bc174624889e5e1ce1cade264f1b1d58b48f994bc85ce
- languageName: node
- linkType: hard
-
-"html-escaper@npm:3.0.3":
- version: 3.0.3
- resolution: "html-escaper@npm:3.0.3"
- checksum: 10c0/a042fa4139127ff7546513e90ea39cc9161a1938ce90122dbc4260d4b7252c9aa8452f4509c0c2889901b8ae9a8699179150f1f99d3f80bcf7317573c5f08f4e
- languageName: node
- linkType: hard
-
-"html-void-elements@npm:^3.0.0":
- version: 3.0.0
- resolution: "html-void-elements@npm:3.0.0"
- checksum: 10c0/a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2
- languageName: node
- linkType: hard
-
-"html-whitespace-sensitive-tag-names@npm:^3.0.0":
- version: 3.0.1
- resolution: "html-whitespace-sensitive-tag-names@npm:3.0.1"
- checksum: 10c0/da06cad111f6a432edd85c6cd09f6b5abbb385872fba79f23f939bdd4626920ac2e62507f604ef94eb8449902033bda292774624e3283b4dea4ed1620a2be3b2
- languageName: node
- linkType: hard
-
-"http-cache-semantics@npm:^4.1.1":
- version: 4.2.0
- resolution: "http-cache-semantics@npm:4.2.0"
- checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37
- languageName: node
- linkType: hard
-
-"http-proxy-agent@npm:^7.0.0":
- version: 7.0.2
- resolution: "http-proxy-agent@npm:7.0.2"
- dependencies:
- agent-base: "npm:^7.1.0"
- debug: "npm:^4.3.4"
- checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921
- languageName: node
- linkType: hard
-
-"https-proxy-agent@npm:^7.0.1":
- version: 7.0.6
- resolution: "https-proxy-agent@npm:7.0.6"
- dependencies:
- agent-base: "npm:^7.1.2"
- debug: "npm:4"
- checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac
- languageName: node
- linkType: hard
-
-"i18next@npm:^23.11.5":
- version: 23.16.8
- resolution: "i18next@npm:23.16.8"
- dependencies:
- "@babel/runtime": "npm:^7.23.2"
- checksum: 10c0/57d249191e8a39bbbbe190cfa2e2bb651d0198e14444fe80453d3df8d02927de3c147c77724e9ae6c72fa241898cd761e3fdcd55d053db373471f1ac084bf345
- languageName: node
- linkType: hard
-
-"iconv-lite@npm:^0.6.2":
- version: 0.6.3
- resolution: "iconv-lite@npm:0.6.3"
- dependencies:
- safer-buffer: "npm:>= 2.1.2 < 3.0.0"
- checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1
- languageName: node
- linkType: hard
-
-"import-meta-resolve@npm:^4.1.0":
- version: 4.1.0
- resolution: "import-meta-resolve@npm:4.1.0"
- checksum: 10c0/42f3284b0460635ddf105c4ad99c6716099c3ce76702602290ad5cbbcd295700cbc04e4bdf47bacf9e3f1a4cec2e1ff887dabc20458bef398f9de22ddff45ef5
- languageName: node
- linkType: hard
-
-"imurmurhash@npm:^0.1.4":
- version: 0.1.4
- resolution: "imurmurhash@npm:0.1.4"
- checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
- languageName: node
- linkType: hard
-
-"inline-style-parser@npm:0.2.4":
- version: 0.2.4
- resolution: "inline-style-parser@npm:0.2.4"
- checksum: 10c0/ddc0b210eaa03e0f98d677b9836242c583c7c6051e84ce0e704ae4626e7871c5b78f8e30853480218b446355745775df318d4f82d33087ff7e393245efa9a881
- languageName: node
- linkType: hard
-
-"ip-address@npm:^9.0.5":
- version: 9.0.5
- resolution: "ip-address@npm:9.0.5"
- dependencies:
- jsbn: "npm:1.1.0"
- sprintf-js: "npm:^1.1.3"
- checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc
- languageName: node
- linkType: hard
-
-"iron-webcrypto@npm:^1.2.1":
- version: 1.2.1
- resolution: "iron-webcrypto@npm:1.2.1"
- checksum: 10c0/5cf27c6e2bd3ef3b4970e486235fd82491ab8229e2ed0ac23307c28d6c80d721772a86ed4e9fe2a5cabadd710c2f024b706843b40561fb83f15afee58f809f66
- languageName: node
- linkType: hard
-
-"is-alphabetical@npm:^2.0.0":
- version: 2.0.1
- resolution: "is-alphabetical@npm:2.0.1"
- checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7
- languageName: node
- linkType: hard
-
-"is-alphanumerical@npm:^2.0.0":
- version: 2.0.1
- resolution: "is-alphanumerical@npm:2.0.1"
- dependencies:
- is-alphabetical: "npm:^2.0.0"
- is-decimal: "npm:^2.0.0"
- checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2
- languageName: node
- linkType: hard
-
-"is-arrayish@npm:^0.3.1":
- version: 0.3.2
- resolution: "is-arrayish@npm:0.3.2"
- checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54
- languageName: node
- linkType: hard
-
-"is-decimal@npm:^2.0.0":
- version: 2.0.1
- resolution: "is-decimal@npm:2.0.1"
- checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334
- languageName: node
- linkType: hard
-
-"is-docker@npm:^3.0.0":
- version: 3.0.0
- resolution: "is-docker@npm:3.0.0"
- bin:
- is-docker: cli.js
- checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856
- languageName: node
- linkType: hard
-
-"is-fullwidth-code-point@npm:^3.0.0":
- version: 3.0.0
- resolution: "is-fullwidth-code-point@npm:3.0.0"
- checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc
- languageName: node
- linkType: hard
-
-"is-hexadecimal@npm:^2.0.0":
- version: 2.0.1
- resolution: "is-hexadecimal@npm:2.0.1"
- checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626
- languageName: node
- linkType: hard
-
-"is-inside-container@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-inside-container@npm:1.0.0"
- dependencies:
- is-docker: "npm:^3.0.0"
- bin:
- is-inside-container: cli.js
- checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd
- languageName: node
- linkType: hard
-
-"is-plain-obj@npm:^4.0.0":
- version: 4.1.0
- resolution: "is-plain-obj@npm:4.1.0"
- checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e
- languageName: node
- linkType: hard
-
-"is-wsl@npm:^3.1.0":
- version: 3.1.0
- resolution: "is-wsl@npm:3.1.0"
- dependencies:
- is-inside-container: "npm:^1.0.0"
- checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947
- languageName: node
- linkType: hard
-
-"isexe@npm:^2.0.0":
- version: 2.0.0
- resolution: "isexe@npm:2.0.0"
- checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
- languageName: node
- linkType: hard
-
-"isexe@npm:^3.1.1":
- version: 3.1.1
- resolution: "isexe@npm:3.1.1"
- checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7
- languageName: node
- linkType: hard
-
-"jackspeak@npm:^3.1.2":
- version: 3.4.3
- resolution: "jackspeak@npm:3.4.3"
- dependencies:
- "@isaacs/cliui": "npm:^8.0.2"
- "@pkgjs/parseargs": "npm:^0.11.0"
- dependenciesMeta:
- "@pkgjs/parseargs":
- optional: true
- checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9
- languageName: node
- linkType: hard
-
-"jackspeak@npm:^4.1.1":
- version: 4.1.1
- resolution: "jackspeak@npm:4.1.1"
- dependencies:
- "@isaacs/cliui": "npm:^8.0.2"
- checksum: 10c0/84ec4f8e21d6514db24737d9caf65361511f75e5e424980eebca4199f400874f45e562ac20fa8aeb1dd20ca2f3f81f0788b6e9c3e64d216a5794fd6f30e0e042
- languageName: node
- linkType: hard
-
-"js-yaml@npm:^4.1.0":
- version: 4.1.0
- resolution: "js-yaml@npm:4.1.0"
- dependencies:
- argparse: "npm:^2.0.1"
- bin:
- js-yaml: bin/js-yaml.js
- checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
- languageName: node
- linkType: hard
-
-"jsbn@npm:1.1.0":
- version: 1.1.0
- resolution: "jsbn@npm:1.1.0"
- checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96
- languageName: node
- linkType: hard
-
-"kleur@npm:^3.0.3":
- version: 3.0.3
- resolution: "kleur@npm:3.0.3"
- checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b
- languageName: node
- linkType: hard
-
-"kleur@npm:^4.1.5":
- version: 4.1.5
- resolution: "kleur@npm:4.1.5"
- checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a
- languageName: node
- linkType: hard
-
-"klona@npm:^2.0.6":
- version: 2.0.6
- resolution: "klona@npm:2.0.6"
- checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01
- languageName: node
- linkType: hard
-
-"longest-streak@npm:^3.0.0":
- version: 3.1.0
- resolution: "longest-streak@npm:3.1.0"
- checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa
- languageName: node
- linkType: hard
-
-"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3":
- version: 10.4.3
- resolution: "lru-cache@npm:10.4.3"
- checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb
- languageName: node
- linkType: hard
-
-"lru-cache@npm:^11.0.0":
- version: 11.1.0
- resolution: "lru-cache@npm:11.1.0"
- checksum: 10c0/85c312f7113f65fae6a62de7985348649937eb34fb3d212811acbf6704dc322a421788aca253b62838f1f07049a84cc513d88f494e373d3756514ad263670a64
- languageName: node
- linkType: hard
-
-"magic-string@npm:^0.30.17":
- version: 0.30.17
- resolution: "magic-string@npm:0.30.17"
- dependencies:
- "@jridgewell/sourcemap-codec": "npm:^1.5.0"
- checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8
- languageName: node
- linkType: hard
-
-"magicast@npm:^0.3.5":
- version: 0.3.5
- resolution: "magicast@npm:0.3.5"
- dependencies:
- "@babel/parser": "npm:^7.25.4"
- "@babel/types": "npm:^7.25.4"
- source-map-js: "npm:^1.2.0"
- checksum: 10c0/a6cacc0a848af84f03e3f5bda7b0de75e4d0aa9ddce5517fd23ed0f31b5ddd51b2d0ff0b7e09b51f7de0f4053c7a1107117edda6b0732dca3e9e39e6c5a68c64
- languageName: node
- linkType: hard
-
-"make-fetch-happen@npm:^14.0.3":
- version: 14.0.3
- resolution: "make-fetch-happen@npm:14.0.3"
- dependencies:
- "@npmcli/agent": "npm:^3.0.0"
- cacache: "npm:^19.0.1"
- http-cache-semantics: "npm:^4.1.1"
- minipass: "npm:^7.0.2"
- minipass-fetch: "npm:^4.0.0"
- minipass-flush: "npm:^1.0.5"
- minipass-pipeline: "npm:^1.2.4"
- negotiator: "npm:^1.0.0"
- proc-log: "npm:^5.0.0"
- promise-retry: "npm:^2.0.1"
- ssri: "npm:^12.0.0"
- checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0
- languageName: node
- linkType: hard
-
-"markdown-extensions@npm:^2.0.0":
- version: 2.0.0
- resolution: "markdown-extensions@npm:2.0.0"
- checksum: 10c0/406139da2aa0d5ebad86195c8e8c02412f873c452b4c087ae7bc767af37956141be449998223bb379eea179b5fd38dfa610602b6f29c22ddab5d51e627a7e41d
- languageName: node
- linkType: hard
-
-"markdown-table@npm:^3.0.0":
- version: 3.0.4
- resolution: "markdown-table@npm:3.0.4"
- checksum: 10c0/1257b31827629a54c24a5030a3dac952256c559174c95ce3ef89bebd6bff0cb1444b1fd667b1a1bb53307f83278111505b3e26f0c4e7b731e0060d435d2d930b
- languageName: node
- linkType: hard
-
-"mdast-util-definitions@npm:^6.0.0":
- version: 6.0.0
- resolution: "mdast-util-definitions@npm:6.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- "@types/unist": "npm:^3.0.0"
- unist-util-visit: "npm:^5.0.0"
- checksum: 10c0/a2e0e51122a3eff4f35379de2c50ee3d8a89bea58488a390b1b40ada95727eb769f87d4bc885e5935d61820d19e0567bc047876db302a2139f3a29668b612b80
- languageName: node
- linkType: hard
-
-"mdast-util-directive@npm:^3.0.0":
- version: 3.1.0
- resolution: "mdast-util-directive@npm:3.1.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- "@types/unist": "npm:^3.0.0"
- ccount: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- parse-entities: "npm:^4.0.0"
- stringify-entities: "npm:^4.0.0"
- unist-util-visit-parents: "npm:^6.0.0"
- checksum: 10c0/596b093b940197cf43af4d0de12e82a1d2b1eb5add73dd16077aa80e0d0e1f208ea642c420726e59ccd352c193d6ecd5c106d6fab769f252617c75333f91a314
- languageName: node
- linkType: hard
-
-"mdast-util-find-and-replace@npm:^3.0.0":
- version: 3.0.2
- resolution: "mdast-util-find-and-replace@npm:3.0.2"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- escape-string-regexp: "npm:^5.0.0"
- unist-util-is: "npm:^6.0.0"
- unist-util-visit-parents: "npm:^6.0.0"
- checksum: 10c0/c8417a35605d567772ff5c1aa08363ff3010b0d60c8ea68c53cba09bf25492e3dd261560425c1756535f3b7107f62e7ff3857cdd8fb1e62d1b2cc2ea6e074ca2
- languageName: node
- linkType: hard
-
-"mdast-util-from-markdown@npm:^2.0.0":
- version: 2.0.2
- resolution: "mdast-util-from-markdown@npm:2.0.2"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- "@types/unist": "npm:^3.0.0"
- decode-named-character-reference: "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-to-string: "npm:^4.0.0"
- micromark: "npm:^4.0.0"
- micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
- micromark-util-decode-string: "npm:^2.0.0"
- micromark-util-normalize-identifier: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- unist-util-stringify-position: "npm:^4.0.0"
- checksum: 10c0/76eb2bd2c6f7a0318087c73376b8af6d7561c1e16654e7667e640f391341096c56142618fd0ff62f6d39e5ab4895898b9789c84cd7cec2874359a437a0e1ff15
- languageName: node
- linkType: hard
-
-"mdast-util-gfm-autolink-literal@npm:^2.0.0":
- version: 2.0.1
- resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- ccount: "npm:^2.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-find-and-replace: "npm:^3.0.0"
- micromark-util-character: "npm:^2.0.0"
- checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6
- languageName: node
- linkType: hard
-
-"mdast-util-gfm-footnote@npm:^2.0.0":
- version: 2.1.0
- resolution: "mdast-util-gfm-footnote@npm:2.1.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- devlop: "npm:^1.1.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- micromark-util-normalize-identifier: "npm:^2.0.0"
- checksum: 10c0/8ab965ee6be3670d76ec0e95b2ba3101fc7444eec47564943ab483d96ac17d29da2a4e6146a2a288be30c21b48c4f3938a1e54b9a46fbdd321d49a5bc0077ed0
- languageName: node
- linkType: hard
-
-"mdast-util-gfm-strikethrough@npm:^2.0.0":
- version: 2.0.0
- resolution: "mdast-util-gfm-strikethrough@npm:2.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056
- languageName: node
- linkType: hard
-
-"mdast-util-gfm-table@npm:^2.0.0":
- version: 2.0.0
- resolution: "mdast-util-gfm-table@npm:2.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- devlop: "npm:^1.0.0"
- markdown-table: "npm:^3.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e
- languageName: node
- linkType: hard
-
-"mdast-util-gfm-task-list-item@npm:^2.0.0":
- version: 2.0.0
- resolution: "mdast-util-gfm-task-list-item@npm:2.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834
- languageName: node
- linkType: hard
-
-"mdast-util-gfm@npm:^3.0.0":
- version: 3.1.0
- resolution: "mdast-util-gfm@npm:3.1.0"
- dependencies:
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-gfm-autolink-literal: "npm:^2.0.0"
- mdast-util-gfm-footnote: "npm:^2.0.0"
- mdast-util-gfm-strikethrough: "npm:^2.0.0"
- mdast-util-gfm-table: "npm:^2.0.0"
- mdast-util-gfm-task-list-item: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/4bedcfb6a20e39901c8772f0d2bb2d7a64ae87a54c13cbd92eec062cf470fbb68c2ad754e149af5b30794e2de61c978ab1de1ace03c0c40f443ca9b9b8044f81
- languageName: node
- linkType: hard
-
-"mdast-util-mdx-expression@npm:^2.0.0":
- version: 2.0.1
- resolution: "mdast-util-mdx-expression@npm:2.0.1"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- "@types/mdast": "npm:^4.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/9a1e57940f66431f10312fa239096efa7627f375e7933b5d3162c0b5c1712a72ac87447aff2b6838d2bbd5c1311b188718cc90b33b67dc67a88550e0a6ef6183
- languageName: node
- linkType: hard
-
-"mdast-util-mdx-jsx@npm:^3.0.0":
- version: 3.2.0
- resolution: "mdast-util-mdx-jsx@npm:3.2.0"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- "@types/mdast": "npm:^4.0.0"
- "@types/unist": "npm:^3.0.0"
- ccount: "npm:^2.0.0"
- devlop: "npm:^1.1.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- parse-entities: "npm:^4.0.0"
- stringify-entities: "npm:^4.0.0"
- unist-util-stringify-position: "npm:^4.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/3acadaf3b962254f7ad2990fed4729961dc0217ca31fde9917986e880843f3ecf3392b1f22d569235cacd180d50894ad266db7af598aedca69d330d33c7ac613
- languageName: node
- linkType: hard
-
-"mdast-util-mdx@npm:^3.0.0":
- version: 3.0.0
- resolution: "mdast-util-mdx@npm:3.0.0"
- dependencies:
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-mdx-expression: "npm:^2.0.0"
- mdast-util-mdx-jsx: "npm:^3.0.0"
- mdast-util-mdxjs-esm: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1
- languageName: node
- linkType: hard
-
-"mdast-util-mdxjs-esm@npm:^2.0.0":
- version: 2.0.1
- resolution: "mdast-util-mdxjs-esm@npm:2.0.1"
- dependencies:
- "@types/estree-jsx": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- "@types/mdast": "npm:^4.0.0"
- devlop: "npm:^1.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc
- languageName: node
- linkType: hard
-
-"mdast-util-phrasing@npm:^4.0.0":
- version: 4.1.0
- resolution: "mdast-util-phrasing@npm:4.1.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- unist-util-is: "npm:^6.0.0"
- checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f
- languageName: node
- linkType: hard
-
-"mdast-util-to-hast@npm:^13.0.0":
- version: 13.2.0
- resolution: "mdast-util-to-hast@npm:13.2.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/mdast": "npm:^4.0.0"
- "@ungap/structured-clone": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-util-sanitize-uri: "npm:^2.0.0"
- trim-lines: "npm:^3.0.0"
- unist-util-position: "npm:^5.0.0"
- unist-util-visit: "npm:^5.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816
- languageName: node
- linkType: hard
-
-"mdast-util-to-markdown@npm:^2.0.0, mdast-util-to-markdown@npm:^2.1.0":
- version: 2.1.2
- resolution: "mdast-util-to-markdown@npm:2.1.2"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- "@types/unist": "npm:^3.0.0"
- longest-streak: "npm:^3.0.0"
- mdast-util-phrasing: "npm:^4.0.0"
- mdast-util-to-string: "npm:^4.0.0"
- micromark-util-classify-character: "npm:^2.0.0"
- micromark-util-decode-string: "npm:^2.0.0"
- unist-util-visit: "npm:^5.0.0"
- zwitch: "npm:^2.0.0"
- checksum: 10c0/4649722a6099f12e797bd8d6469b2b43b44e526b5182862d9c7766a3431caad2c0112929c538a972f214e63c015395e5d3f54bd81d9ac1b16e6d8baaf582f749
- languageName: node
- linkType: hard
-
-"mdast-util-to-string@npm:^4.0.0":
- version: 4.0.0
- resolution: "mdast-util-to-string@npm:4.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7
- languageName: node
- linkType: hard
-
-"mdn-data@npm:2.12.2":
- version: 2.12.2
- resolution: "mdn-data@npm:2.12.2"
- checksum: 10c0/b22443b71d70f72ccc3c6ba1608035431a8fc18c3c8fc53523f06d20e05c2ac10f9b53092759a2ca85cf02f0d37036f310b581ce03e7b99ac74d388ef8152ade
- languageName: node
- linkType: hard
-
-"micromark-core-commonmark@npm:^2.0.0":
- version: 2.0.3
- resolution: "micromark-core-commonmark@npm:2.0.3"
- dependencies:
- decode-named-character-reference: "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-factory-destination: "npm:^2.0.0"
- micromark-factory-label: "npm:^2.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-factory-title: "npm:^2.0.0"
- micromark-factory-whitespace: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-chunked: "npm:^2.0.0"
- micromark-util-classify-character: "npm:^2.0.0"
- micromark-util-html-tag-name: "npm:^2.0.0"
- micromark-util-normalize-identifier: "npm:^2.0.0"
- micromark-util-resolve-all: "npm:^2.0.0"
- micromark-util-subtokenize: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/bd4a794fdc9e88dbdf59eaf1c507ddf26e5f7ddf4e52566c72239c0f1b66adbcd219ba2cd42350debbe24471434d5f5e50099d2b3f4e5762ca222ba8e5b549ee
- languageName: node
- linkType: hard
-
-"micromark-extension-directive@npm:^3.0.0":
- version: 3.0.2
- resolution: "micromark-extension-directive@npm:3.0.2"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-factory-whitespace: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- parse-entities: "npm:^4.0.0"
- checksum: 10c0/74137485375f02c1b640c2120dd6b9f6aa1e39ca5cd2463df7974ef1cc80203f5ef90448ce009973355a49ba169ef1441eabe57a36877c7b86373788612773da
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-autolink-literal@npm:^2.0.0":
- version: 2.1.0
- resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0"
- dependencies:
- micromark-util-character: "npm:^2.0.0"
- micromark-util-sanitize-uri: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-footnote@npm:^2.0.0":
- version: 2.1.0
- resolution: "micromark-extension-gfm-footnote@npm:2.1.0"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-core-commonmark: "npm:^2.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-normalize-identifier: "npm:^2.0.0"
- micromark-util-sanitize-uri: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-strikethrough@npm:^2.0.0":
- version: 2.1.0
- resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-util-chunked: "npm:^2.0.0"
- micromark-util-classify-character: "npm:^2.0.0"
- micromark-util-resolve-all: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-table@npm:^2.0.0":
- version: 2.1.1
- resolution: "micromark-extension-gfm-table@npm:2.1.1"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/04bc00e19b435fa0add62cd029d8b7eb6137522f77832186b1d5ef34544a9bd030c9cf85e92ddfcc5c31f6f0a58a43d4b96dba4fc21316037c734630ee12c912
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-tagfilter@npm:^2.0.0":
- version: 2.0.0
- resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0"
- dependencies:
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm-task-list-item@npm:^2.0.0":
- version: 2.1.0
- resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f
- languageName: node
- linkType: hard
-
-"micromark-extension-gfm@npm:^3.0.0":
- version: 3.0.0
- resolution: "micromark-extension-gfm@npm:3.0.0"
- dependencies:
- micromark-extension-gfm-autolink-literal: "npm:^2.0.0"
- micromark-extension-gfm-footnote: "npm:^2.0.0"
- micromark-extension-gfm-strikethrough: "npm:^2.0.0"
- micromark-extension-gfm-table: "npm:^2.0.0"
- micromark-extension-gfm-tagfilter: "npm:^2.0.0"
- micromark-extension-gfm-task-list-item: "npm:^2.0.0"
- micromark-util-combine-extensions: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9
- languageName: node
- linkType: hard
-
-"micromark-extension-mdx-expression@npm:^3.0.0":
- version: 3.0.1
- resolution: "micromark-extension-mdx-expression@npm:3.0.1"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-factory-mdx-expression: "npm:^2.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-events-to-acorn: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/4d8cc5353b083b06bd51c98389de9c198261a5b2b440b75e85000a18d10511f21ba77538d6dfde0e0589df9de3fba9a1d14c2448d30c92d6b461c26d86e397f4
- languageName: node
- linkType: hard
-
-"micromark-extension-mdx-jsx@npm:^3.0.0":
- version: 3.0.2
- resolution: "micromark-extension-mdx-jsx@npm:3.0.2"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- estree-util-is-identifier-name: "npm:^3.0.0"
- micromark-factory-mdx-expression: "npm:^2.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-events-to-acorn: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/5693b2e51934ac29a6aab521eaa2151f891d1fe092550bbd4ce24e4dd7567c1421a54f5e585a57dfa1769a79570f6df57ddd7a98bf0889dd11d495847a266dd7
- languageName: node
- linkType: hard
-
-"micromark-extension-mdx-md@npm:^2.0.0":
- version: 2.0.0
- resolution: "micromark-extension-mdx-md@npm:2.0.0"
- dependencies:
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df
- languageName: node
- linkType: hard
-
-"micromark-extension-mdxjs-esm@npm:^3.0.0":
- version: 3.0.0
- resolution: "micromark-extension-mdxjs-esm@npm:3.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-core-commonmark: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-events-to-acorn: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- unist-util-position-from-estree: "npm:^2.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d
- languageName: node
- linkType: hard
-
-"micromark-extension-mdxjs@npm:^3.0.0":
- version: 3.0.0
- resolution: "micromark-extension-mdxjs@npm:3.0.0"
- dependencies:
- acorn: "npm:^8.0.0"
- acorn-jsx: "npm:^5.0.0"
- micromark-extension-mdx-expression: "npm:^3.0.0"
- micromark-extension-mdx-jsx: "npm:^3.0.0"
- micromark-extension-mdx-md: "npm:^2.0.0"
- micromark-extension-mdxjs-esm: "npm:^3.0.0"
- micromark-util-combine-extensions: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea
- languageName: node
- linkType: hard
-
-"micromark-factory-destination@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-factory-destination@npm:2.0.1"
- dependencies:
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/bbafcf869cee5bf511161354cb87d61c142592fbecea051000ff116068dc85216e6d48519d147890b9ea5d7e2864a6341c0c09d9948c203bff624a80a476023c
- languageName: node
- linkType: hard
-
-"micromark-factory-label@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-factory-label@npm:2.0.1"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/0137716b4ecb428114165505e94a2f18855c8bbea21b07a8b5ce514b32a595ed789d2b967125718fc44c4197ceaa48f6609d58807a68e778138d2e6b91b824e8
- languageName: node
- linkType: hard
-
-"micromark-factory-mdx-expression@npm:^2.0.0":
- version: 2.0.3
- resolution: "micromark-factory-mdx-expression@npm:2.0.3"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-events-to-acorn: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- unist-util-position-from-estree: "npm:^2.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/a6004ef6272dd01a5d718f2affd7bfb5e08f0849340f5fd96ac823fbc5e9d3b3343acedda50805873ccda5e3b8af4d5fbb302abc874544044ac90c217345cf97
- languageName: node
- linkType: hard
-
-"micromark-factory-space@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-factory-space@npm:2.0.1"
- dependencies:
- micromark-util-character: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/f9ed43f1c0652d8d898de0ac2be3f77f776fffe7dd96bdbba1e02d7ce33d3853c6ff5daa52568fc4fa32cdf3a62d86b85ead9b9189f7211e1d69ff2163c450fb
- languageName: node
- linkType: hard
-
-"micromark-factory-title@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-factory-title@npm:2.0.1"
- dependencies:
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/e72fad8d6e88823514916890099a5af20b6a9178ccf78e7e5e05f4de99bb8797acb756257d7a3a57a53854cb0086bf8aab15b1a9e9db8982500dd2c9ff5948b6
- languageName: node
- linkType: hard
-
-"micromark-factory-whitespace@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-factory-whitespace@npm:2.0.1"
- dependencies:
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/20a1ec58698f24b766510a309b23a10175034fcf1551eaa9da3adcbed3e00cd53d1ebe5f030cf873f76a1cec3c34eb8c50cc227be3344caa9ed25d56cf611224
- languageName: node
- linkType: hard
-
-"micromark-util-character@npm:^2.0.0":
- version: 2.1.1
- resolution: "micromark-util-character@npm:2.1.1"
- dependencies:
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/d3fe7a5e2c4060fc2a076f9ce699c82a2e87190a3946e1e5eea77f563869b504961f5668d9c9c014724db28ac32fa909070ea8b30c3a39bd0483cc6c04cc76a1
- languageName: node
- linkType: hard
-
-"micromark-util-chunked@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-chunked@npm:2.0.1"
- dependencies:
- micromark-util-symbol: "npm:^2.0.0"
- checksum: 10c0/b68c0c16fe8106949537bdcfe1be9cf36c0ccd3bc54c4007003cb0984c3750b6cdd0fd77d03f269a3382b85b0de58bde4f6eedbe7ecdf7244759112289b1ab56
- languageName: node
- linkType: hard
-
-"micromark-util-classify-character@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-classify-character@npm:2.0.1"
- dependencies:
- micromark-util-character: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/8a02e59304005c475c332f581697e92e8c585bcd45d5d225a66c1c1b14ab5a8062705188c2ccec33cc998d33502514121478b2091feddbc751887fc9c290ed08
- languageName: node
- linkType: hard
-
-"micromark-util-combine-extensions@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-combine-extensions@npm:2.0.1"
- dependencies:
- micromark-util-chunked: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/f15e282af24c8372cbb10b9b0b3e2c0aa681fea0ca323a44d6bc537dc1d9382c819c3689f14eaa000118f5a163245358ce6276b2cda9a84439cdb221f5d86ae7
- languageName: node
- linkType: hard
-
-"micromark-util-decode-numeric-character-reference@npm:^2.0.0":
- version: 2.0.2
- resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2"
- dependencies:
- micromark-util-symbol: "npm:^2.0.0"
- checksum: 10c0/9c8a9f2c790e5593ffe513901c3a110e9ec8882a08f466da014112a25e5059b51551ca0aeb7ff494657d86eceb2f02ee556c6558b8d66aadc61eae4a240da0df
- languageName: node
- linkType: hard
-
-"micromark-util-decode-string@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-decode-string@npm:2.0.1"
- dependencies:
- decode-named-character-reference: "npm:^1.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- checksum: 10c0/f24d75b2e5310be6e7b6dee532e0d17d3bf46996841d6295f2a9c87a2046fff4ab603c52ab9d7a7a6430a8b787b1574ae895849c603d262d1b22eef71736b5cb
- languageName: node
- linkType: hard
-
-"micromark-util-encode@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-encode@npm:2.0.1"
- checksum: 10c0/b2b29f901093845da8a1bf997ea8b7f5e061ffdba85070dfe14b0197c48fda64ffcf82bfe53c90cf9dc185e69eef8c5d41cae3ba918b96bc279326921b59008a
- languageName: node
- linkType: hard
-
-"micromark-util-events-to-acorn@npm:^2.0.0":
- version: 2.0.3
- resolution: "micromark-util-events-to-acorn@npm:2.0.3"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- "@types/unist": "npm:^3.0.0"
- devlop: "npm:^1.0.0"
- estree-util-visit: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- vfile-message: "npm:^4.0.0"
- checksum: 10c0/a4e0716e943ffdd16a918edf51d4f8291ec2692f5c4d04693dbef3358716fba891f288197afd102c14f4d98dac09d52351046ab7aad1d50b74677bdd5fa683c0
- languageName: node
- linkType: hard
-
-"micromark-util-html-tag-name@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-html-tag-name@npm:2.0.1"
- checksum: 10c0/ae80444db786fde908e9295f19a27a4aa304171852c77414516418650097b8afb401961c9edb09d677b06e97e8370cfa65638dde8438ebd41d60c0a8678b85b9
- languageName: node
- linkType: hard
-
-"micromark-util-normalize-identifier@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-normalize-identifier@npm:2.0.1"
- dependencies:
- micromark-util-symbol: "npm:^2.0.0"
- checksum: 10c0/5299265fa360769fc499a89f40142f10a9d4a5c3dd8e6eac8a8ef3c2e4a6570e4c009cf75ea46dce5ee31c01f25587bde2f4a5cc0a935584ae86dd857f2babbd
- languageName: node
- linkType: hard
-
-"micromark-util-resolve-all@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-resolve-all@npm:2.0.1"
- dependencies:
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/bb6ca28764696bb479dc44a2d5b5fe003e7177aeae1d6b0d43f24cc223bab90234092d9c3ce4a4d2b8df095ccfd820537b10eb96bb7044d635f385d65a4c984a
- languageName: node
- linkType: hard
-
-"micromark-util-sanitize-uri@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-sanitize-uri@npm:2.0.1"
- dependencies:
- micromark-util-character: "npm:^2.0.0"
- micromark-util-encode: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- checksum: 10c0/60e92166e1870fd4f1961468c2651013ff760617342918e0e0c3c4e872433aa2e60c1e5a672bfe5d89dc98f742d6b33897585cf86ae002cda23e905a3c02527c
- languageName: node
- linkType: hard
-
-"micromark-util-subtokenize@npm:^2.0.0":
- version: 2.1.0
- resolution: "micromark-util-subtokenize@npm:2.1.0"
- dependencies:
- devlop: "npm:^1.0.0"
- micromark-util-chunked: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/bee69eece4393308e657c293ba80d92ebcb637e5f55e21dcf9c3fa732b91a8eda8ac248d76ff375e675175bfadeae4712e5158ef97eef1111789da1ce7ab5067
- languageName: node
- linkType: hard
-
-"micromark-util-symbol@npm:^2.0.0":
- version: 2.0.1
- resolution: "micromark-util-symbol@npm:2.0.1"
- checksum: 10c0/f2d1b207771e573232436618e78c5e46cd4b5c560dd4a6d63863d58018abbf49cb96ec69f7007471e51434c60de3c9268ef2bf46852f26ff4aacd10f9da16fe9
- languageName: node
- linkType: hard
-
-"micromark-util-types@npm:^2.0.0":
- version: 2.0.2
- resolution: "micromark-util-types@npm:2.0.2"
- checksum: 10c0/c8c15b96c858db781c4393f55feec10004bf7df95487636c9a9f7209e51002a5cca6a047c5d2a5dc669ff92da20e57aaa881e81a268d9ccadb647f9dce305298
- languageName: node
- linkType: hard
-
-"micromark@npm:^4.0.0":
- version: 4.0.2
- resolution: "micromark@npm:4.0.2"
- dependencies:
- "@types/debug": "npm:^4.0.0"
- debug: "npm:^4.0.0"
- decode-named-character-reference: "npm:^1.0.0"
- devlop: "npm:^1.0.0"
- micromark-core-commonmark: "npm:^2.0.0"
- micromark-factory-space: "npm:^2.0.0"
- micromark-util-character: "npm:^2.0.0"
- micromark-util-chunked: "npm:^2.0.0"
- micromark-util-combine-extensions: "npm:^2.0.0"
- micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
- micromark-util-encode: "npm:^2.0.0"
- micromark-util-normalize-identifier: "npm:^2.0.0"
- micromark-util-resolve-all: "npm:^2.0.0"
- micromark-util-sanitize-uri: "npm:^2.0.0"
- micromark-util-subtokenize: "npm:^2.0.0"
- micromark-util-symbol: "npm:^2.0.0"
- micromark-util-types: "npm:^2.0.0"
- checksum: 10c0/07462287254219d6eda6eac8a3cebaff2994e0575499e7088027b825105e096e4f51e466b14b2a81b71933a3b6c48ee069049d87bc2c2127eee50d9cc69e8af6
- languageName: node
- linkType: hard
-
-"minimatch@npm:^10.0.3":
- version: 10.0.3
- resolution: "minimatch@npm:10.0.3"
- dependencies:
- "@isaacs/brace-expansion": "npm:^5.0.0"
- checksum: 10c0/e43e4a905c5d70ac4cec8530ceaeccb9c544b1ba8ac45238e2a78121a01c17ff0c373346472d221872563204eabe929ad02669bb575cb1f0cc30facab369f70f
- languageName: node
- linkType: hard
-
-"minimatch@npm:^9.0.4":
- version: 9.0.5
- resolution: "minimatch@npm:9.0.5"
- dependencies:
- brace-expansion: "npm:^2.0.1"
- checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed
- languageName: node
- linkType: hard
-
-"minipass-collect@npm:^2.0.1":
- version: 2.0.1
- resolution: "minipass-collect@npm:2.0.1"
- dependencies:
- minipass: "npm:^7.0.3"
- checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e
- languageName: node
- linkType: hard
-
-"minipass-fetch@npm:^4.0.0":
- version: 4.0.1
- resolution: "minipass-fetch@npm:4.0.1"
- dependencies:
- encoding: "npm:^0.1.13"
- minipass: "npm:^7.0.3"
- minipass-sized: "npm:^1.0.3"
- minizlib: "npm:^3.0.1"
- dependenciesMeta:
- encoding:
- optional: true
- checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c
- languageName: node
- linkType: hard
-
-"minipass-flush@npm:^1.0.5":
- version: 1.0.5
- resolution: "minipass-flush@npm:1.0.5"
- dependencies:
- minipass: "npm:^3.0.0"
- checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd
- languageName: node
- linkType: hard
-
-"minipass-pipeline@npm:^1.2.4":
- version: 1.2.4
- resolution: "minipass-pipeline@npm:1.2.4"
- dependencies:
- minipass: "npm:^3.0.0"
- checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2
- languageName: node
- linkType: hard
-
-"minipass-sized@npm:^1.0.3":
- version: 1.0.3
- resolution: "minipass-sized@npm:1.0.3"
- dependencies:
- minipass: "npm:^3.0.0"
- checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb
- languageName: node
- linkType: hard
-
-"minipass@npm:^3.0.0":
- version: 3.3.6
- resolution: "minipass@npm:3.3.6"
- dependencies:
- yallist: "npm:^4.0.0"
- checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c
- languageName: node
- linkType: hard
-
-"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2":
- version: 7.1.2
- resolution: "minipass@npm:7.1.2"
- checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
- languageName: node
- linkType: hard
-
-"minizlib@npm:^3.0.1":
- version: 3.0.2
- resolution: "minizlib@npm:3.0.2"
- dependencies:
- minipass: "npm:^7.1.2"
- checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78
- languageName: node
- linkType: hard
-
-"mkdirp@npm:^3.0.1":
- version: 3.0.1
- resolution: "mkdirp@npm:3.0.1"
- bin:
- mkdirp: dist/cjs/src/bin.js
- checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d
- languageName: node
- linkType: hard
-
-"mrmime@npm:^2.0.1":
- version: 2.0.1
- resolution: "mrmime@npm:2.0.1"
- checksum: 10c0/af05afd95af202fdd620422f976ad67dc18e6ee29beb03dd1ce950ea6ef664de378e44197246df4c7cdd73d47f2e7143a6e26e473084b9e4aa2095c0ad1e1761
- languageName: node
- linkType: hard
-
-"ms@npm:^2.1.3":
- version: 2.1.3
- resolution: "ms@npm:2.1.3"
- checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
- languageName: node
- linkType: hard
-
-"nanoid@npm:^3.3.11":
- version: 3.3.11
- resolution: "nanoid@npm:3.3.11"
- bin:
- nanoid: bin/nanoid.cjs
- checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b
- languageName: node
- linkType: hard
-
-"negotiator@npm:^1.0.0":
- version: 1.0.0
- resolution: "negotiator@npm:1.0.0"
- checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b
- languageName: node
- linkType: hard
-
-"neotraverse@npm:^0.6.18":
- version: 0.6.18
- resolution: "neotraverse@npm:0.6.18"
- checksum: 10c0/46f4c53cbbdc53671150916b544a9f46e27781f8003985237507542190173bec131168d89b846535f9c34c0a2a7debb1ab3a4f7a93d08218e2c194a363708ffa
- languageName: node
- linkType: hard
-
-"nlcst-to-string@npm:^4.0.0":
- version: 4.0.0
- resolution: "nlcst-to-string@npm:4.0.0"
- dependencies:
- "@types/nlcst": "npm:^2.0.0"
- checksum: 10c0/a192c8b3365a7c076812004e72ae5b4a1734e582be2a6f3c062f3beecf18868a9fe2d1bad870bfead320fb39830f2c4f3752e5ae6574c4e59157126fd1ddba70
- languageName: node
- linkType: hard
-
-"node-fetch-native@npm:^1.6.4, node-fetch-native@npm:^1.6.6":
- version: 1.6.6
- resolution: "node-fetch-native@npm:1.6.6"
- checksum: 10c0/8c12dab0e640d8bc126a03d604af9cf3fc1b87f2cda5af0c71601079d5ed835c1dc149c7042b61c83f252a382e1cf1e541788f4c9e8e6c089af77497190f5dc3
- languageName: node
- linkType: hard
-
-"node-fetch@npm:^2.7.0":
- version: 2.7.0
- resolution: "node-fetch@npm:2.7.0"
- dependencies:
- whatwg-url: "npm:^5.0.0"
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
- checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8
- languageName: node
- linkType: hard
-
-"node-gyp@npm:latest":
- version: 11.2.0
- resolution: "node-gyp@npm:11.2.0"
- dependencies:
- env-paths: "npm:^2.2.0"
- exponential-backoff: "npm:^3.1.1"
- graceful-fs: "npm:^4.2.6"
- make-fetch-happen: "npm:^14.0.3"
- nopt: "npm:^8.0.0"
- proc-log: "npm:^5.0.0"
- semver: "npm:^7.3.5"
- tar: "npm:^7.4.3"
- tinyglobby: "npm:^0.2.12"
- which: "npm:^5.0.0"
- bin:
- node-gyp: bin/node-gyp.js
- checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9
- languageName: node
- linkType: hard
-
-"node-mock-http@npm:^1.0.0":
- version: 1.0.0
- resolution: "node-mock-http@npm:1.0.0"
- checksum: 10c0/cb3fd7c17e7043b87a8d7a9ef1dcd4e2cde312cd224716c5fb3a4b56b48607c257a2e7356e73262db60ebf9e17e23b7a9c5230785f630c6a437090bfd26dd242
- languageName: node
- linkType: hard
-
-"nopt@npm:^8.0.0":
- version: 8.1.0
- resolution: "nopt@npm:8.1.0"
- dependencies:
- abbrev: "npm:^3.0.0"
- bin:
- nopt: bin/nopt.js
- checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef
- languageName: node
- linkType: hard
-
-"normalize-path@npm:^3.0.0":
- version: 3.0.0
- resolution: "normalize-path@npm:3.0.0"
- checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046
- languageName: node
- linkType: hard
-
-"nth-check@npm:^2.0.0":
- version: 2.1.1
- resolution: "nth-check@npm:2.1.1"
- dependencies:
- boolbase: "npm:^1.0.0"
- checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479
- languageName: node
- linkType: hard
-
-"ofetch@npm:^1.4.1":
- version: 1.4.1
- resolution: "ofetch@npm:1.4.1"
- dependencies:
- destr: "npm:^2.0.3"
- node-fetch-native: "npm:^1.6.4"
- ufo: "npm:^1.5.4"
- checksum: 10c0/fd712e84058ad5058a5880fe805e9bb1c2084fb7f9c54afa99a2c7e84065589b4312fa6e2dcca4432865e44ad1ec13fcd055c1bf7977ced838577a45689a04fa
- languageName: node
- linkType: hard
-
-"ohash@npm:^2.0.0":
- version: 2.0.11
- resolution: "ohash@npm:2.0.11"
- checksum: 10c0/d07c8d79cc26da082c1a7c8d5b56c399dd4ed3b2bd069fcae6bae78c99a9bcc3ad813b1e1f49ca2f335292846d689c6141a762cf078727d2302a33d414e69c79
- languageName: node
- linkType: hard
-
-"oniguruma-parser@npm:^0.12.1":
- version: 0.12.1
- resolution: "oniguruma-parser@npm:0.12.1"
- checksum: 10c0/b843ea54cda833efb19f856314afcbd43e903ece3de489ab78c527ddec84859208052557daa9fad4bdba89ebdd15b0cc250de86b3daf8c7cbe37bac5a6a185d3
- languageName: node
- linkType: hard
-
-"oniguruma-to-es@npm:^4.3.3":
- version: 4.3.3
- resolution: "oniguruma-to-es@npm:4.3.3"
- dependencies:
- oniguruma-parser: "npm:^0.12.1"
- regex: "npm:^6.0.1"
- regex-recursion: "npm:^6.0.2"
- checksum: 10c0/bc034e84dfee4dbc061cf6364023e66e1667fb8dc3afcad3b7d6a2c77e2d4a4809396ee2fb8c1fd3d6f00f76f7ca14b773586bf862c5f0c0074c059e2a219252
- languageName: node
- linkType: hard
-
-"p-limit@npm:^6.2.0":
- version: 6.2.0
- resolution: "p-limit@npm:6.2.0"
- dependencies:
- yocto-queue: "npm:^1.1.1"
- checksum: 10c0/448bf55a1776ca1444594d53b3c731e68cdca00d44a6c8df06a2f6e506d5bbd540ebb57b05280f8c8bff992a630ed782a69612473f769a7473495d19e2270166
- languageName: node
- linkType: hard
-
-"p-map@npm:^7.0.2":
- version: 7.0.3
- resolution: "p-map@npm:7.0.3"
- checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c
- languageName: node
- linkType: hard
-
-"p-queue@npm:^8.1.0":
- version: 8.1.0
- resolution: "p-queue@npm:8.1.0"
- dependencies:
- eventemitter3: "npm:^5.0.1"
- p-timeout: "npm:^6.1.2"
- checksum: 10c0/6bdea170840546769c29682fed212745c951933476761ed3a981967fab624c7c0120dff79bd99a1ac8b650b420719a245813e944af4b8ee77d4dd78adbf5fe75
- languageName: node
- linkType: hard
-
-"p-timeout@npm:^6.1.2":
- version: 6.1.4
- resolution: "p-timeout@npm:6.1.4"
- checksum: 10c0/019edad1c649ab07552aa456e40ce7575c4b8ae863191477f02ac8d283ac8c66cedef0ca93422735130477a051dfe952ba717641673fd3599befdd13f63bcc33
- languageName: node
- linkType: hard
-
-"package-json-from-dist@npm:^1.0.0":
- version: 1.0.1
- resolution: "package-json-from-dist@npm:1.0.1"
- checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b
- languageName: node
- linkType: hard
-
-"package-manager-detector@npm:^1.1.0":
- version: 1.3.0
- resolution: "package-manager-detector@npm:1.3.0"
- checksum: 10c0/b4b54a81a3230edd66564a59ff6a2233086961e36ba91a28a0f6d6932a8dec36618ace50e8efec9c4d8c6aa9828e98814557a39fb6b106c161434ccb44a80e1c
- languageName: node
- linkType: hard
-
-"pagefind@npm:^1.3.0":
- version: 1.3.0
- resolution: "pagefind@npm:1.3.0"
- dependencies:
- "@pagefind/darwin-arm64": "npm:1.3.0"
- "@pagefind/darwin-x64": "npm:1.3.0"
- "@pagefind/linux-arm64": "npm:1.3.0"
- "@pagefind/linux-x64": "npm:1.3.0"
- "@pagefind/windows-x64": "npm:1.3.0"
- dependenciesMeta:
- "@pagefind/darwin-arm64":
- optional: true
- "@pagefind/darwin-x64":
- optional: true
- "@pagefind/linux-arm64":
- optional: true
- "@pagefind/linux-x64":
- optional: true
- "@pagefind/windows-x64":
- optional: true
- bin:
- pagefind: lib/runner/bin.cjs
- checksum: 10c0/cf8ab69284946842d9aac1cd9ea6625e727b2f4d9b845818ea2b446c48db8bec4469f4a620f9a3be391c1e63d8fc2a9c08e3f1446a7697a5bdaace6e315b7932
- languageName: node
- linkType: hard
-
-"pako@npm:^0.2.5":
- version: 0.2.9
- resolution: "pako@npm:0.2.9"
- checksum: 10c0/79c1806ebcf325b60ae599e4d7227c2e346d7b829dc20f5cf24cef07c934079dc3a61c5b3c8278a2f7a190c4a613e343ea11e5302dbe252efd11712df4b6b041
- languageName: node
- linkType: hard
-
-"parse-entities@npm:^4.0.0":
- version: 4.0.2
- resolution: "parse-entities@npm:4.0.2"
- dependencies:
- "@types/unist": "npm:^2.0.0"
- character-entities-legacy: "npm:^3.0.0"
- character-reference-invalid: "npm:^2.0.0"
- decode-named-character-reference: "npm:^1.0.0"
- is-alphanumerical: "npm:^2.0.0"
- is-decimal: "npm:^2.0.0"
- is-hexadecimal: "npm:^2.0.0"
- checksum: 10c0/a13906b1151750b78ed83d386294066daf5fb559e08c5af9591b2d98cc209123103016a01df776f65f8219ad26652d6d6b210d0974d452049cddfc53a8916c34
- languageName: node
- linkType: hard
-
-"parse-latin@npm:^7.0.0":
- version: 7.0.0
- resolution: "parse-latin@npm:7.0.0"
- dependencies:
- "@types/nlcst": "npm:^2.0.0"
- "@types/unist": "npm:^3.0.0"
- nlcst-to-string: "npm:^4.0.0"
- unist-util-modify-children: "npm:^4.0.0"
- unist-util-visit-children: "npm:^3.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/4232a464f98c41c6680575c54bc2c9b21ac4b82a1f796a871bfef5efa6eddaab9bccf734b08cde6b0a5504ef46a0a14041ddd0bc5d9cc70f73a507f93f610596
- languageName: node
- linkType: hard
-
-"parse5@npm:^7.0.0":
- version: 7.3.0
- resolution: "parse5@npm:7.3.0"
- dependencies:
- entities: "npm:^6.0.0"
- checksum: 10c0/7fd2e4e247e85241d6f2a464d0085eed599a26d7b0a5233790c49f53473232eb85350e8133344d9b3fd58b89339e7ad7270fe1f89d28abe50674ec97b87f80b5
- languageName: node
- linkType: hard
-
-"path-key@npm:^3.1.0":
- version: 3.1.1
- resolution: "path-key@npm:3.1.1"
- checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
- languageName: node
- linkType: hard
-
-"path-scurry@npm:^1.11.1":
- version: 1.11.1
- resolution: "path-scurry@npm:1.11.1"
- dependencies:
- lru-cache: "npm:^10.2.0"
- minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0"
- checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d
- languageName: node
- linkType: hard
-
-"path-scurry@npm:^2.0.0":
- version: 2.0.0
- resolution: "path-scurry@npm:2.0.0"
- dependencies:
- lru-cache: "npm:^11.0.0"
- minipass: "npm:^7.1.2"
- checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c
- languageName: node
- linkType: hard
-
-"picocolors@npm:^1.1.1":
- version: 1.1.1
- resolution: "picocolors@npm:1.1.1"
- checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
- languageName: node
- linkType: hard
-
-"picomatch@npm:^2.0.4":
- version: 2.3.1
- resolution: "picomatch@npm:2.3.1"
- checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be
- languageName: node
- linkType: hard
-
-"picomatch@npm:^4.0.2":
- version: 4.0.2
- resolution: "picomatch@npm:4.0.2"
- checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc
- languageName: node
- linkType: hard
-
-"postcss-nested@npm:^6.0.1":
- version: 6.2.0
- resolution: "postcss-nested@npm:6.2.0"
- dependencies:
- postcss-selector-parser: "npm:^6.1.1"
- peerDependencies:
- postcss: ^8.2.14
- checksum: 10c0/7f9c3f2d764191a39364cbdcec350f26a312431a569c9ef17408021424726b0d67995ff5288405e3724bb7152a4c92f73c027e580ec91e798800ed3c52e2bc6e
- languageName: node
- linkType: hard
-
-"postcss-selector-parser@npm:^6.1.1":
- version: 6.1.2
- resolution: "postcss-selector-parser@npm:6.1.2"
- dependencies:
- cssesc: "npm:^3.0.0"
- util-deprecate: "npm:^1.0.2"
- checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e
- languageName: node
- linkType: hard
-
-"postcss@npm:^8.4.38, postcss@npm:^8.5.3":
- version: 8.5.5
- resolution: "postcss@npm:8.5.5"
- dependencies:
- nanoid: "npm:^3.3.11"
- picocolors: "npm:^1.1.1"
- source-map-js: "npm:^1.2.1"
- checksum: 10c0/6415873fab84de05c2d8fd18f72ea6654bca437bb4b9f02ca819c438501e4b3a450023e575e17587c6eaa5bedddaaa4dad3af210f5cf166e30cec09cac58baf8
- languageName: node
- linkType: hard
-
-"prismjs@npm:^1.30.0":
- version: 1.30.0
- resolution: "prismjs@npm:1.30.0"
- checksum: 10c0/f56205bfd58ef71ccfcbcb691fd0eb84adc96c6ff21b0b69fc6fdcf02be42d6ef972ba4aed60466310de3d67733f6a746f89f2fb79c00bf217406d465b3e8f23
- languageName: node
- linkType: hard
-
-"proc-log@npm:^5.0.0":
- version: 5.0.0
- resolution: "proc-log@npm:5.0.0"
- checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3
- languageName: node
- linkType: hard
-
-"promise-retry@npm:^2.0.1":
- version: 2.0.1
- resolution: "promise-retry@npm:2.0.1"
- dependencies:
- err-code: "npm:^2.0.2"
- retry: "npm:^0.12.0"
- checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96
- languageName: node
- linkType: hard
-
-"prompts@npm:^2.4.2":
- version: 2.4.2
- resolution: "prompts@npm:2.4.2"
- dependencies:
- kleur: "npm:^3.0.3"
- sisteransi: "npm:^1.0.5"
- checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4
- languageName: node
- linkType: hard
-
-"property-information@npm:^6.0.0":
- version: 6.5.0
- resolution: "property-information@npm:6.5.0"
- checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef
- languageName: node
- linkType: hard
-
-"property-information@npm:^7.0.0":
- version: 7.1.0
- resolution: "property-information@npm:7.1.0"
- checksum: 10c0/e0fe22cff26103260ad0e82959229106563fa115a54c4d6c183f49d88054e489cc9f23452d3ad584179dc13a8b7b37411a5df873746b5e4086c865874bfa968e
- languageName: node
- linkType: hard
-
-"radix3@npm:^1.1.2":
- version: 1.1.2
- resolution: "radix3@npm:1.1.2"
- checksum: 10c0/d4a295547f71af079868d2c2ed3814a9296ee026c5488212d58c106e6b4797c6eaec1259b46c9728913622f2240c9a944bfc8e2b3b5f6e4a5045338b1609f1e4
- languageName: node
- linkType: hard
-
-"readdirp@npm:^4.0.1":
- version: 4.1.2
- resolution: "readdirp@npm:4.1.2"
- checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62
- languageName: node
- linkType: hard
-
-"recma-build-jsx@npm:^1.0.0":
- version: 1.0.0
- resolution: "recma-build-jsx@npm:1.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- estree-util-build-jsx: "npm:^3.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/ca30f5163887b44c74682355da2625f7b49f33267699d22247913e513e043650cbdd6a7497cf13c60f09ad9e7bc2bd35bd20853672773c19188569814b56bb04
- languageName: node
- linkType: hard
-
-"recma-jsx@npm:^1.0.0":
- version: 1.0.0
- resolution: "recma-jsx@npm:1.0.0"
- dependencies:
- acorn-jsx: "npm:^5.0.0"
- estree-util-to-js: "npm:^2.0.0"
- recma-parse: "npm:^1.0.0"
- recma-stringify: "npm:^1.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/26c2af6dd69336c810468b778be1e4cbac5702cf9382454f17c29cf9b03a4fde47d10385bb26a7ccb34f36fe01af34c24cab9fb0deeed066ea53294be0081f07
- languageName: node
- linkType: hard
-
-"recma-parse@npm:^1.0.0":
- version: 1.0.0
- resolution: "recma-parse@npm:1.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- esast-util-from-js: "npm:^2.0.0"
- unified: "npm:^11.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/37c0990859a562d082e02d475ca5f4c8ef0840d285270f6699fe888cbb06260f97eb098585eda4aae416182c207fd19cf05e4f0b2dcf55cbf81dde4406d95545
- languageName: node
- linkType: hard
-
-"recma-stringify@npm:^1.0.0":
- version: 1.0.0
- resolution: "recma-stringify@npm:1.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- estree-util-to-js: "npm:^2.0.0"
- unified: "npm:^11.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/c2ed4c0e8cf8a09aedcd47c5d016d47f6e1ff6c2d4b220e2abaf1b77713bf404756af2ea3ea7999aec5862e8825aff035edceb370c7fd8603a7e9da03bd6987e
- languageName: node
- linkType: hard
-
-"regex-recursion@npm:^6.0.2":
- version: 6.0.2
- resolution: "regex-recursion@npm:6.0.2"
- dependencies:
- regex-utilities: "npm:^2.3.0"
- checksum: 10c0/68e8b6889680e904b75d7f26edaf70a1a4dc1087406bff53face4c2929d918fd77c72223843fe816ac8ed9964f96b4160650e8d5909e26a998c6e9de324dadb1
- languageName: node
- linkType: hard
-
-"regex-utilities@npm:^2.3.0":
- version: 2.3.0
- resolution: "regex-utilities@npm:2.3.0"
- checksum: 10c0/78c550a80a0af75223244fff006743922591bd8f61d91fef7c86b9b56cf9bbf8ee5d7adb6d8991b5e304c57c90103fc4818cf1e357b11c6c669b782839bd7893
- languageName: node
- linkType: hard
-
-"regex@npm:^6.0.1":
- version: 6.0.1
- resolution: "regex@npm:6.0.1"
- dependencies:
- regex-utilities: "npm:^2.3.0"
- checksum: 10c0/687b3e063d4ca19b0de7c55c24353f868a0fb9ba21512692470d2fb412e3a410894dd5924c91ea49d8cb8fa865e36ec956e52436ae0a256bdc095ff136c30aba
- languageName: node
- linkType: hard
-
-"regor-doc-site@workspace:.":
- version: 0.0.0-use.local
- resolution: "regor-doc-site@workspace:."
- dependencies:
- "@astrojs/starlight": "npm:^0.34.3"
- astro: "npm:^5.9.2"
- glob: "npm:^11.0.3"
- languageName: unknown
- linkType: soft
-
-"rehype-expressive-code@npm:^0.41.2":
- version: 0.41.2
- resolution: "rehype-expressive-code@npm:0.41.2"
- dependencies:
- expressive-code: "npm:^0.41.2"
- checksum: 10c0/041fbe9edfc5fcc3656190bc999f9e33f9b082852f023f9adee4c3d78caf5d37e95fc7687fba19d8772774d7af8ac14d6f029b25de801873c5fd9f1c553f64a6
- languageName: node
- linkType: hard
-
-"rehype-format@npm:^5.0.0":
- version: 5.0.1
- resolution: "rehype-format@npm:5.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-format: "npm:^1.0.0"
- checksum: 10c0/e87aac3e318ef96688785e108315b23762681f1a834ae52ac449b9787ff63e8435aceb70354fb629d2d733daca4f65889ddcdf0cd44b684ea4f481e8fac750e3
- languageName: node
- linkType: hard
-
-"rehype-parse@npm:^9.0.0":
- version: 9.0.1
- resolution: "rehype-parse@npm:9.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-from-html: "npm:^2.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/efa9ca17673fe70e2d322a1d262796bbed5f6a89382f8f8393352bbd6f6bbf1d4d1d050984b86ff9cb6c0fa2535175ab0829e53c94b1e38fc3c158e6c0ad90bc
- languageName: node
- linkType: hard
-
-"rehype-raw@npm:^7.0.0":
- version: 7.0.0
- resolution: "rehype-raw@npm:7.0.0"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-raw: "npm:^9.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52
- languageName: node
- linkType: hard
-
-"rehype-recma@npm:^1.0.0":
- version: 1.0.0
- resolution: "rehype-recma@npm:1.0.0"
- dependencies:
- "@types/estree": "npm:^1.0.0"
- "@types/hast": "npm:^3.0.0"
- hast-util-to-estree: "npm:^3.0.0"
- checksum: 10c0/be60d7433a7f788a14f41da3e93ba9d9272c908ddef47757026cc4bbcc912f6301d56810349adf876d294a8d048626a0dbf6988aaa574afbfc29eac1ddc1eb74
- languageName: node
- linkType: hard
-
-"rehype-stringify@npm:^10.0.0, rehype-stringify@npm:^10.0.1":
- version: 10.0.1
- resolution: "rehype-stringify@npm:10.0.1"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- hast-util-to-html: "npm:^9.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/c643ae3a4862465033e0f1e9f664433767279b4ee9296570746970a79940417ec1fb1997a513659aab97063cf971c5d97e0af8129f590719f01628c8aa480765
- languageName: node
- linkType: hard
-
-"rehype@npm:^13.0.1, rehype@npm:^13.0.2":
- version: 13.0.2
- resolution: "rehype@npm:13.0.2"
- dependencies:
- "@types/hast": "npm:^3.0.0"
- rehype-parse: "npm:^9.0.0"
- rehype-stringify: "npm:^10.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/13d82086b673b3ce1fddb54cc8d30be16bde83fb62f1507f0af06070c94b85d07c3780fa994357bad2c9d51b84e4108ff661677b71d187e4f2167cab22d84363
- languageName: node
- linkType: hard
-
-"remark-directive@npm:^3.0.0":
- version: 3.0.1
- resolution: "remark-directive@npm:3.0.1"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- mdast-util-directive: "npm:^3.0.0"
- micromark-extension-directive: "npm:^3.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/ac0e60bdfd97063e2b4e18a96842567ae2ffea75f2545fcd7e4fe54806fb31629d60cef55b565333bda172eddee36766fe2535ca0b59208394bde676cd98094c
- languageName: node
- linkType: hard
-
-"remark-gfm@npm:^4.0.1":
- version: 4.0.1
- resolution: "remark-gfm@npm:4.0.1"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- mdast-util-gfm: "npm:^3.0.0"
- micromark-extension-gfm: "npm:^3.0.0"
- remark-parse: "npm:^11.0.0"
- remark-stringify: "npm:^11.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/427ecc6af3e76222662061a5f670a3e4e33ec5fffe2cabf04034da6a3f9a1bda1fc023e838a636385ba314e66e2bebbf017ca61ebea357eb0f5200fe0625a4b7
+ micromark-util-symbol: "npm:^2.0.0"
+ checksum: 10c0/b68c0c16fe8106949537bdcfe1be9cf36c0ccd3bc54c4007003cb0984c3750b6cdd0fd77d03f269a3382b85b0de58bde4f6eedbe7ecdf7244759112289b1ab56
languageName: node
linkType: hard
-"remark-mdx@npm:^3.0.0":
- version: 3.1.0
- resolution: "remark-mdx@npm:3.1.0"
+"micromark-util-classify-character@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-classify-character@npm:2.0.1"
dependencies:
- mdast-util-mdx: "npm:^3.0.0"
- micromark-extension-mdxjs: "npm:^3.0.0"
- checksum: 10c0/247800fa8561624bdca5776457c5965d99e5e60080e80262c600fe12ddd573862e029e39349e1e36e4c3bf79c8e571ecf4d3d2d8c13485b758391fb500e24a1a
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/8a02e59304005c475c332f581697e92e8c585bcd45d5d225a66c1c1b14ab5a8062705188c2ccec33cc998d33502514121478b2091feddbc751887fc9c290ed08
languageName: node
linkType: hard
-"remark-parse@npm:^11.0.0":
- version: 11.0.0
- resolution: "remark-parse@npm:11.0.0"
+"micromark-util-combine-extensions@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-combine-extensions@npm:2.0.1"
dependencies:
- "@types/mdast": "npm:^4.0.0"
- mdast-util-from-markdown: "npm:^2.0.0"
+ micromark-util-chunked: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38
+ checksum: 10c0/f15e282af24c8372cbb10b9b0b3e2c0aa681fea0ca323a44d6bc537dc1d9382c819c3689f14eaa000118f5a163245358ce6276b2cda9a84439cdb221f5d86ae7
languageName: node
linkType: hard
-"remark-rehype@npm:^11.0.0, remark-rehype@npm:^11.1.2":
- version: 11.1.2
- resolution: "remark-rehype@npm:11.1.2"
+"micromark-util-decode-numeric-character-reference@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2"
dependencies:
- "@types/hast": "npm:^3.0.0"
- "@types/mdast": "npm:^4.0.0"
- mdast-util-to-hast: "npm:^13.0.0"
- unified: "npm:^11.0.0"
- vfile: "npm:^6.0.0"
- checksum: 10c0/f9eccacfb596d9605581dc05bfad28635d6ded5dd0a18e88af5fd4df0d3fcf9612e1501d4513bc2164d833cfe9636dab20400080b09e53f155c6e1442a1231fb
+ micromark-util-symbol: "npm:^2.0.0"
+ checksum: 10c0/9c8a9f2c790e5593ffe513901c3a110e9ec8882a08f466da014112a25e5059b51551ca0aeb7ff494657d86eceb2f02ee556c6558b8d66aadc61eae4a240da0df
languageName: node
linkType: hard
-"remark-smartypants@npm:^3.0.2":
- version: 3.0.2
- resolution: "remark-smartypants@npm:3.0.2"
+"micromark-util-decode-string@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-decode-string@npm:2.0.1"
dependencies:
- retext: "npm:^9.0.0"
- retext-smartypants: "npm:^6.0.0"
- unified: "npm:^11.0.4"
- unist-util-visit: "npm:^5.0.0"
- checksum: 10c0/661129f6258feb4531c896d0d7013d0cd7835599f7d9c46947ff0cda19c717e2d5a7da28fc72a9d454dd5a5b6308403f0d7a7ec58338865a28c9242a77739b40
+ decode-named-character-reference: "npm:^1.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ checksum: 10c0/f24d75b2e5310be6e7b6dee532e0d17d3bf46996841d6295f2a9c87a2046fff4ab603c52ab9d7a7a6430a8b787b1574ae895849c603d262d1b22eef71736b5cb
languageName: node
linkType: hard
-"remark-stringify@npm:^11.0.0":
- version: 11.0.0
- resolution: "remark-stringify@npm:11.0.0"
- dependencies:
- "@types/mdast": "npm:^4.0.0"
- mdast-util-to-markdown: "npm:^2.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f
+"micromark-util-encode@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-encode@npm:2.0.1"
+ checksum: 10c0/b2b29f901093845da8a1bf997ea8b7f5e061ffdba85070dfe14b0197c48fda64ffcf82bfe53c90cf9dc185e69eef8c5d41cae3ba918b96bc279326921b59008a
languageName: node
linkType: hard
-"restructure@npm:^3.0.0":
- version: 3.0.2
- resolution: "restructure@npm:3.0.2"
- checksum: 10c0/f13536c094ba40a9af704e6a9fc030afd48d6112e9a3bec5f9cf5bad50416a22a7cf9aaece542bbac8c82204ad4901bf455e6204613abedbc075bc221ea6bdef
+"micromark-util-html-tag-name@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-html-tag-name@npm:2.0.1"
+ checksum: 10c0/ae80444db786fde908e9295f19a27a4aa304171852c77414516418650097b8afb401961c9edb09d677b06e97e8370cfa65638dde8438ebd41d60c0a8678b85b9
languageName: node
linkType: hard
-"retext-latin@npm:^4.0.0":
- version: 4.0.0
- resolution: "retext-latin@npm:4.0.0"
+"micromark-util-normalize-identifier@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-normalize-identifier@npm:2.0.1"
dependencies:
- "@types/nlcst": "npm:^2.0.0"
- parse-latin: "npm:^7.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/51530be66db9ef6ab8e9cda5dd0598377ff4321481d6a941bf70dac16fa6e9123ff7d8ff093a05c30a3e00e282e37094b845b6130a8005a3cb7186a961ab99cb
+ micromark-util-symbol: "npm:^2.0.0"
+ checksum: 10c0/5299265fa360769fc499a89f40142f10a9d4a5c3dd8e6eac8a8ef3c2e4a6570e4c009cf75ea46dce5ee31c01f25587bde2f4a5cc0a935584ae86dd857f2babbd
languageName: node
linkType: hard
-"retext-smartypants@npm:^6.0.0":
- version: 6.2.0
- resolution: "retext-smartypants@npm:6.2.0"
+"micromark-util-resolve-all@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-resolve-all@npm:2.0.1"
dependencies:
- "@types/nlcst": "npm:^2.0.0"
- nlcst-to-string: "npm:^4.0.0"
- unist-util-visit: "npm:^5.0.0"
- checksum: 10c0/36f925353dd7f31df642bca2493524a8daee15f9b0e0dfe7fb8982462d23ccb12a99864989db22f0bacb6d7fea1f696ba96e031d3fbac4f013e1c95ef3fed881
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/bb6ca28764696bb479dc44a2d5b5fe003e7177aeae1d6b0d43f24cc223bab90234092d9c3ce4a4d2b8df095ccfd820537b10eb96bb7044d635f385d65a4c984a
languageName: node
linkType: hard
-"retext-stringify@npm:^4.0.0":
- version: 4.0.0
- resolution: "retext-stringify@npm:4.0.0"
+"micromark-util-sanitize-uri@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-sanitize-uri@npm:2.0.1"
dependencies:
- "@types/nlcst": "npm:^2.0.0"
- nlcst-to-string: "npm:^4.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/eb2930356c85999a8978092a5d6ba3695fea859c71f221dcdc485704552922641bc17e50fea2ae0599d665192eaad002e98bb4236ecac94a570b73581b99004d
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-encode: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ checksum: 10c0/60e92166e1870fd4f1961468c2651013ff760617342918e0e0c3c4e872433aa2e60c1e5a672bfe5d89dc98f742d6b33897585cf86ae002cda23e905a3c02527c
languageName: node
linkType: hard
-"retext@npm:^9.0.0":
- version: 9.0.0
- resolution: "retext@npm:9.0.0"
+"micromark-util-subtokenize@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "micromark-util-subtokenize@npm:2.1.0"
dependencies:
- "@types/nlcst": "npm:^2.0.0"
- retext-latin: "npm:^4.0.0"
- retext-stringify: "npm:^4.0.0"
- unified: "npm:^11.0.0"
- checksum: 10c0/eee9f66ff6fae5670a5eeccc0b5e2639112f868475273ce307d3079cfe7deb9d1b0f2b8fa28b4ab30abaf8538345185a44908f461a27bbf43c4f94feda90ecac
+ devlop: "npm:^1.0.0"
+ micromark-util-chunked: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/bee69eece4393308e657c293ba80d92ebcb637e5f55e21dcf9c3fa732b91a8eda8ac248d76ff375e675175bfadeae4712e5158ef97eef1111789da1ce7ab5067
+ languageName: node
+ linkType: hard
+
+"micromark-util-symbol@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "micromark-util-symbol@npm:2.0.1"
+ checksum: 10c0/f2d1b207771e573232436618e78c5e46cd4b5c560dd4a6d63863d58018abbf49cb96ec69f7007471e51434c60de3c9268ef2bf46852f26ff4aacd10f9da16fe9
languageName: node
linkType: hard
-"retry@npm:^0.12.0":
- version: 0.12.0
- resolution: "retry@npm:0.12.0"
- checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe
+"micromark-util-types@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "micromark-util-types@npm:2.0.2"
+ checksum: 10c0/c8c15b96c858db781c4393f55feec10004bf7df95487636c9a9f7209e51002a5cca6a047c5d2a5dc669ff92da20e57aaa881e81a268d9ccadb647f9dce305298
languageName: node
linkType: hard
-"rollup@npm:^4.34.9":
- version: 4.43.0
- resolution: "rollup@npm:4.43.0"
+"micromark@npm:^4.0.0":
+ version: 4.0.2
+ resolution: "micromark@npm:4.0.2"
dependencies:
- "@rollup/rollup-android-arm-eabi": "npm:4.43.0"
- "@rollup/rollup-android-arm64": "npm:4.43.0"
- "@rollup/rollup-darwin-arm64": "npm:4.43.0"
- "@rollup/rollup-darwin-x64": "npm:4.43.0"
- "@rollup/rollup-freebsd-arm64": "npm:4.43.0"
- "@rollup/rollup-freebsd-x64": "npm:4.43.0"
- "@rollup/rollup-linux-arm-gnueabihf": "npm:4.43.0"
- "@rollup/rollup-linux-arm-musleabihf": "npm:4.43.0"
- "@rollup/rollup-linux-arm64-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-arm64-musl": "npm:4.43.0"
- "@rollup/rollup-linux-loongarch64-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-riscv64-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-riscv64-musl": "npm:4.43.0"
- "@rollup/rollup-linux-s390x-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-x64-gnu": "npm:4.43.0"
- "@rollup/rollup-linux-x64-musl": "npm:4.43.0"
- "@rollup/rollup-win32-arm64-msvc": "npm:4.43.0"
- "@rollup/rollup-win32-ia32-msvc": "npm:4.43.0"
- "@rollup/rollup-win32-x64-msvc": "npm:4.43.0"
- "@types/estree": "npm:1.0.7"
- fsevents: "npm:~2.3.2"
- dependenciesMeta:
- "@rollup/rollup-android-arm-eabi":
- optional: true
- "@rollup/rollup-android-arm64":
- optional: true
- "@rollup/rollup-darwin-arm64":
- optional: true
- "@rollup/rollup-darwin-x64":
- optional: true
- "@rollup/rollup-freebsd-arm64":
- optional: true
- "@rollup/rollup-freebsd-x64":
- optional: true
- "@rollup/rollup-linux-arm-gnueabihf":
- optional: true
- "@rollup/rollup-linux-arm-musleabihf":
- optional: true
- "@rollup/rollup-linux-arm64-gnu":
- optional: true
- "@rollup/rollup-linux-arm64-musl":
- optional: true
- "@rollup/rollup-linux-loongarch64-gnu":
- optional: true
- "@rollup/rollup-linux-powerpc64le-gnu":
- optional: true
- "@rollup/rollup-linux-riscv64-gnu":
- optional: true
- "@rollup/rollup-linux-riscv64-musl":
- optional: true
- "@rollup/rollup-linux-s390x-gnu":
- optional: true
- "@rollup/rollup-linux-x64-gnu":
- optional: true
- "@rollup/rollup-linux-x64-musl":
- optional: true
- "@rollup/rollup-win32-arm64-msvc":
- optional: true
- "@rollup/rollup-win32-ia32-msvc":
- optional: true
- "@rollup/rollup-win32-x64-msvc":
- optional: true
- fsevents:
- optional: true
- bin:
- rollup: dist/bin/rollup
- checksum: 10c0/a14a16ee5433f9eddfe803ed1a3f4528e3e96f746e55bf88c5482f9a60a4ad61f507b59f46d5d9c8dc98bb7983483e0c94b760ae37c02157eba9da5665c1641b
+ "@types/debug": "npm:^4.0.0"
+ debug: "npm:^4.0.0"
+ decode-named-character-reference: "npm:^1.0.0"
+ devlop: "npm:^1.0.0"
+ micromark-core-commonmark: "npm:^2.0.0"
+ micromark-factory-space: "npm:^2.0.0"
+ micromark-util-character: "npm:^2.0.0"
+ micromark-util-chunked: "npm:^2.0.0"
+ micromark-util-combine-extensions: "npm:^2.0.0"
+ micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
+ micromark-util-encode: "npm:^2.0.0"
+ micromark-util-normalize-identifier: "npm:^2.0.0"
+ micromark-util-resolve-all: "npm:^2.0.0"
+ micromark-util-sanitize-uri: "npm:^2.0.0"
+ micromark-util-subtokenize: "npm:^2.0.0"
+ micromark-util-symbol: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ checksum: 10c0/07462287254219d6eda6eac8a3cebaff2994e0575499e7088027b825105e096e4f51e466b14b2a81b71933a3b6c48ee069049d87bc2c2127eee50d9cc69e8af6
languageName: node
linkType: hard
-"safer-buffer@npm:>= 2.1.2 < 3.0.0":
- version: 2.1.2
- resolution: "safer-buffer@npm:2.1.2"
- checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
+"ms@npm:^2.1.3":
+ version: 2.1.3
+ resolution: "ms@npm:2.1.3"
+ checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
languageName: node
linkType: hard
-"sax@npm:^1.2.4":
- version: 1.4.1
- resolution: "sax@npm:1.4.1"
- checksum: 10c0/6bf86318a254c5d898ede6bd3ded15daf68ae08a5495a2739564eb265cd13bcc64a07ab466fb204f67ce472bb534eb8612dac587435515169593f4fffa11de7c
+"no-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "no-case@npm:3.0.4"
+ dependencies:
+ lower-case: "npm:^2.0.2"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703
languageName: node
linkType: hard
-"semver@npm:^7.3.5, semver@npm:^7.6.3, semver@npm:^7.7.1":
- version: 7.7.2
- resolution: "semver@npm:7.7.2"
- bin:
- semver: bin/semver.js
- checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea
+"oniguruma-parser@npm:^0.12.2":
+ version: 0.12.2
+ resolution: "oniguruma-parser@npm:0.12.2"
+ checksum: 10c0/fe5255d2cd5a6b845d5a0abe1725898ef40cea5522290dba6ccc08cc388891e9e8007af4baa5059942b786ad44b2b677ef25948039c9ba3f057bd35d2c52076a
languageName: node
linkType: hard
-"sharp@npm:^0.33.3":
- version: 0.33.5
- resolution: "sharp@npm:0.33.5"
+"oniguruma-to-es@npm:^4.3.4":
+ version: 4.3.6
+ resolution: "oniguruma-to-es@npm:4.3.6"
dependencies:
- "@img/sharp-darwin-arm64": "npm:0.33.5"
- "@img/sharp-darwin-x64": "npm:0.33.5"
- "@img/sharp-libvips-darwin-arm64": "npm:1.0.4"
- "@img/sharp-libvips-darwin-x64": "npm:1.0.4"
- "@img/sharp-libvips-linux-arm": "npm:1.0.5"
- "@img/sharp-libvips-linux-arm64": "npm:1.0.4"
- "@img/sharp-libvips-linux-s390x": "npm:1.0.4"
- "@img/sharp-libvips-linux-x64": "npm:1.0.4"
- "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4"
- "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4"
- "@img/sharp-linux-arm": "npm:0.33.5"
- "@img/sharp-linux-arm64": "npm:0.33.5"
- "@img/sharp-linux-s390x": "npm:0.33.5"
- "@img/sharp-linux-x64": "npm:0.33.5"
- "@img/sharp-linuxmusl-arm64": "npm:0.33.5"
- "@img/sharp-linuxmusl-x64": "npm:0.33.5"
- "@img/sharp-wasm32": "npm:0.33.5"
- "@img/sharp-win32-ia32": "npm:0.33.5"
- "@img/sharp-win32-x64": "npm:0.33.5"
- color: "npm:^4.2.3"
- detect-libc: "npm:^2.0.3"
- semver: "npm:^7.6.3"
+ oniguruma-parser: "npm:^0.12.2"
+ regex: "npm:^6.1.0"
+ regex-recursion: "npm:^6.0.2"
+ checksum: 10c0/044e08b98e706987c2882ccf228de2a671de4aff33e3bd370da137ba599c0d520549625ad26ecc8898502445c991e19f106f584e94382262ba2af02c908ca3cf
+ languageName: node
+ linkType: hard
+
+"pagefind@npm:^1.4.0":
+ version: 1.5.2
+ resolution: "pagefind@npm:1.5.2"
+ dependencies:
+ "@pagefind/darwin-arm64": "npm:1.5.2"
+ "@pagefind/darwin-x64": "npm:1.5.2"
+ "@pagefind/freebsd-x64": "npm:1.5.2"
+ "@pagefind/linux-arm64": "npm:1.5.2"
+ "@pagefind/linux-x64": "npm:1.5.2"
+ "@pagefind/windows-arm64": "npm:1.5.2"
+ "@pagefind/windows-x64": "npm:1.5.2"
dependenciesMeta:
- "@img/sharp-darwin-arm64":
- optional: true
- "@img/sharp-darwin-x64":
- optional: true
- "@img/sharp-libvips-darwin-arm64":
- optional: true
- "@img/sharp-libvips-darwin-x64":
- optional: true
- "@img/sharp-libvips-linux-arm":
- optional: true
- "@img/sharp-libvips-linux-arm64":
- optional: true
- "@img/sharp-libvips-linux-s390x":
- optional: true
- "@img/sharp-libvips-linux-x64":
- optional: true
- "@img/sharp-libvips-linuxmusl-arm64":
- optional: true
- "@img/sharp-libvips-linuxmusl-x64":
- optional: true
- "@img/sharp-linux-arm":
- optional: true
- "@img/sharp-linux-arm64":
- optional: true
- "@img/sharp-linux-s390x":
+ "@pagefind/darwin-arm64":
optional: true
- "@img/sharp-linux-x64":
+ "@pagefind/darwin-x64":
optional: true
- "@img/sharp-linuxmusl-arm64":
+ "@pagefind/freebsd-x64":
optional: true
- "@img/sharp-linuxmusl-x64":
+ "@pagefind/linux-arm64":
optional: true
- "@img/sharp-wasm32":
+ "@pagefind/linux-x64":
optional: true
- "@img/sharp-win32-ia32":
+ "@pagefind/windows-arm64":
optional: true
- "@img/sharp-win32-x64":
+ "@pagefind/windows-x64":
optional: true
- checksum: 10c0/6b81421ddfe6ee524d8d77e325c5e147fef22884e1c7b1656dfd89a88d7025894115da02d5f984261bf2e6daa16f98cadd1721c4ba408b4212b1d2a60f233484
+ bin:
+ pagefind: lib/runner/bin.cjs
+ checksum: 10c0/bcc4f34f473bfeb09dc4cb464a3547bf958e11ee4dee4144ec7a364bd74b9f7c21f85be71e388b66d30923a9a453dcaed2f6b425f3e67631cadc9650ba741aab
languageName: node
linkType: hard
-"shebang-command@npm:^2.0.0":
- version: 2.0.0
- resolution: "shebang-command@npm:2.0.0"
+"param-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "param-case@npm:3.0.4"
dependencies:
- shebang-regex: "npm:^3.0.0"
- checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
- languageName: node
- linkType: hard
-
-"shebang-regex@npm:^3.0.0":
- version: 3.0.0
- resolution: "shebang-regex@npm:3.0.0"
- checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
+ dot-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76
languageName: node
linkType: hard
-"shiki@npm:^3.2.1, shiki@npm:^3.2.2":
- version: 3.6.0
- resolution: "shiki@npm:3.6.0"
+"parse5@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "parse5@npm:7.3.0"
dependencies:
- "@shikijs/core": "npm:3.6.0"
- "@shikijs/engine-javascript": "npm:3.6.0"
- "@shikijs/engine-oniguruma": "npm:3.6.0"
- "@shikijs/langs": "npm:3.6.0"
- "@shikijs/themes": "npm:3.6.0"
- "@shikijs/types": "npm:3.6.0"
- "@shikijs/vscode-textmate": "npm:^10.0.2"
- "@types/hast": "npm:^3.0.4"
- checksum: 10c0/a643ce72a2b9dacb7f7238999d4d062d2ea81c39da96b182d7ffe69f0c5a902e00095dfec526a831e67897d709853d95c5d76d3502c3b4a11b8644e8013b67be
- languageName: node
- linkType: hard
-
-"signal-exit@npm:^4.0.1":
- version: 4.1.0
- resolution: "signal-exit@npm:4.1.0"
- checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
+ entities: "npm:^6.0.0"
+ checksum: 10c0/7fd2e4e247e85241d6f2a464d0085eed599a26d7b0a5233790c49f53473232eb85350e8133344d9b3fd58b89339e7ad7270fe1f89d28abe50674ec97b87f80b5
languageName: node
linkType: hard
-"simple-swizzle@npm:^0.2.2":
- version: 0.2.2
- resolution: "simple-swizzle@npm:0.2.2"
+"pascal-case@npm:^3.1.2":
+ version: 3.1.2
+ resolution: "pascal-case@npm:3.1.2"
dependencies:
- is-arrayish: "npm:^0.3.1"
- checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308
+ no-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8
languageName: node
linkType: hard
-"sisteransi@npm:^1.0.5":
- version: 1.0.5
- resolution: "sisteransi@npm:1.0.5"
- checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46
+"path-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "path-case@npm:3.0.4"
+ dependencies:
+ dot-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7
languageName: node
linkType: hard
-"sitemap@npm:^8.0.0":
- version: 8.0.0
- resolution: "sitemap@npm:8.0.0"
- dependencies:
- "@types/node": "npm:^17.0.5"
- "@types/sax": "npm:^1.2.1"
- arg: "npm:^5.0.0"
- sax: "npm:^1.2.4"
+"prettier@npm:^3.8.1":
+ version: 3.9.9
+ resolution: "prettier@npm:3.9.9"
bin:
- sitemap: dist/cli.js
- checksum: 10c0/adaabfb1f27e3c76ba25f9a16dcb02ff17dd2ecbd1b2dbe2608a6770eff37bd71f7d21c10df6824917453bc4da2c2790fd85ee6424d75699bd053e3422d2ef5c
+ prettier: bin/prettier.cjs
+ checksum: 10c0/d50ea2537b2ff7dbd5088a214f4d936484e55c665cea2185b477a55b0770be55f3b156a71f63a9a639def6b334667bb327139dc85f2a1041c0a34752cdc74647
languageName: node
linkType: hard
-"smart-buffer@npm:^4.2.0":
- version: 4.2.0
- resolution: "smart-buffer@npm:4.2.0"
- checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539
+"property-information@npm:^6.0.0":
+ version: 6.5.0
+ resolution: "property-information@npm:6.5.0"
+ checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef
languageName: node
linkType: hard
-"smol-toml@npm:^1.3.1":
- version: 1.3.4
- resolution: "smol-toml@npm:1.3.4"
- checksum: 10c0/801435476f52d6b05dfcb2bd2ed1956c6fc2b4c20e84b5e609eb27fa0c27b51a47528d91cabd1a93e8659bd2b8edb685e73ce2b686678739e67d7939fa25a92b
+"property-information@npm:^7.0.0":
+ version: 7.1.0
+ resolution: "property-information@npm:7.1.0"
+ checksum: 10c0/e0fe22cff26103260ad0e82959229106563fa115a54c4d6c183f49d88054e489cc9f23452d3ad584179dc13a8b7b37411a5df873746b5e4086c865874bfa968e
languageName: node
linkType: hard
-"socks-proxy-agent@npm:^8.0.3":
- version: 8.0.5
- resolution: "socks-proxy-agent@npm:8.0.5"
+"purestack@npm:1.1.7":
+ version: 1.1.7
+ resolution: "purestack@npm:1.1.7"
dependencies:
- agent-base: "npm:^7.1.2"
- debug: "npm:^4.3.4"
- socks: "npm:^2.8.3"
- checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6
+ "@purestack/ts-ssg": "npm:^1.1.7"
+ bin:
+ purestack: dist/cli.mjs
+ checksum: 10c0/b87e75e6917bcedeea91745b2fd59d0dab0d62fbc2a8386d281c9266942f5a76f94276292455c06d45da84a021a1981e2316844727891484c8c2fc20bac3b521
languageName: node
linkType: hard
-"socks@npm:^2.8.3":
- version: 2.8.5
- resolution: "socks@npm:2.8.5"
+"regex-recursion@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "regex-recursion@npm:6.0.2"
dependencies:
- ip-address: "npm:^9.0.5"
- smart-buffer: "npm:^4.2.0"
- checksum: 10c0/e427d0eb0451cfd04e20b9156ea8c0e9b5e38a8d70f21e55c30fbe4214eda37cfc25d782c63f9adc5fbdad6d062a0f127ef2cefc9a44b6fee2b9ea5d1ed10827
+ regex-utilities: "npm:^2.3.0"
+ checksum: 10c0/68e8b6889680e904b75d7f26edaf70a1a4dc1087406bff53face4c2929d918fd77c72223843fe816ac8ed9964f96b4160650e8d5909e26a998c6e9de324dadb1
languageName: node
linkType: hard
-"source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1":
- version: 1.2.1
- resolution: "source-map-js@npm:1.2.1"
- checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf
+"regex-utilities@npm:^2.3.0":
+ version: 2.3.0
+ resolution: "regex-utilities@npm:2.3.0"
+ checksum: 10c0/78c550a80a0af75223244fff006743922591bd8f61d91fef7c86b9b56cf9bbf8ee5d7adb6d8991b5e304c57c90103fc4818cf1e357b11c6c669b782839bd7893
languageName: node
linkType: hard
-"source-map@npm:^0.7.0, source-map@npm:^0.7.4":
- version: 0.7.4
- resolution: "source-map@npm:0.7.4"
- checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc
+"regex@npm:^6.1.0":
+ version: 6.1.0
+ resolution: "regex@npm:6.1.0"
+ dependencies:
+ regex-utilities: "npm:^2.3.0"
+ checksum: 10c0/6e0ee2a1c17d5a66dc1120dfc51899dedf6677857e83a0df4d5a822ebb8645a54a079772efc1ade382b67aad35e4e22b5bd2d33c05ed28b0e000f8f57eb0aec1
languageName: node
linkType: hard
-"space-separated-tokens@npm:^2.0.0":
- version: 2.0.2
- resolution: "space-separated-tokens@npm:2.0.2"
- checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8
+"regor-doc-site@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "regor-doc-site@workspace:."
+ dependencies:
+ "@purestack/ts-components": "npm:1.1.7"
+ "@purestack/ts-css": "npm:1.1.7"
+ "@purestack/ts-html": "npm:1.1.7"
+ "@purestack/ts-style": "npm:1.1.7"
+ "@purestack/ts-util": "npm:1.1.7"
+ "@types/node": "npm:^22.0.0"
+ purestack: "npm:1.1.7"
+ regor: "npm:1.7.3"
+ languageName: unknown
+ linkType: soft
+
+"regor@npm:1.7.3, regor@npm:^1.7.3":
+ version: 1.7.3
+ resolution: "regor@npm:1.7.3"
+ checksum: 10c0/c6079f93905f042df5682b42a293ea1c6442c59e0b50819b0f6bb9727c40cb9411b3d755809a06ac5592cf37c1b3049d4fb883a73de3acf23d9cd848d645cc76
languageName: node
linkType: hard
-"sprintf-js@npm:^1.1.3":
- version: 1.1.3
- resolution: "sprintf-js@npm:1.1.3"
- checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec
+"rehype-raw@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "rehype-raw@npm:7.0.0"
+ dependencies:
+ "@types/hast": "npm:^3.0.0"
+ hast-util-raw: "npm:^9.0.0"
+ vfile: "npm:^6.0.0"
+ checksum: 10c0/1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52
languageName: node
linkType: hard
-"ssri@npm:^12.0.0":
- version: 12.0.0
- resolution: "ssri@npm:12.0.0"
+"rehype-stringify@npm:^10.0.1":
+ version: 10.0.1
+ resolution: "rehype-stringify@npm:10.0.1"
dependencies:
- minipass: "npm:^7.0.3"
- checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d
+ "@types/hast": "npm:^3.0.0"
+ hast-util-to-html: "npm:^9.0.0"
+ unified: "npm:^11.0.0"
+ checksum: 10c0/c643ae3a4862465033e0f1e9f664433767279b4ee9296570746970a79940417ec1fb1997a513659aab97063cf971c5d97e0af8129f590719f01628c8aa480765
languageName: node
linkType: hard
-"stream-replace-string@npm:^2.0.0":
- version: 2.0.0
- resolution: "stream-replace-string@npm:2.0.0"
- checksum: 10c0/6cdf6108c57a869c1282dece0728bd7a8e314855bee71992436460192cdf46b3c976451e1e114716af209b2bfefa0e7e4581ca0eebc330d9dfcde341a72d50af
+"relateurl@npm:^0.2.7":
+ version: 0.2.7
+ resolution: "relateurl@npm:0.2.7"
+ checksum: 10c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a
languageName: node
linkType: hard
-"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
- version: 4.2.3
- resolution: "string-width@npm:4.2.3"
+"remark-gfm@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "remark-gfm@npm:4.0.1"
dependencies:
- emoji-regex: "npm:^8.0.0"
- is-fullwidth-code-point: "npm:^3.0.0"
- strip-ansi: "npm:^6.0.1"
- checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b
+ "@types/mdast": "npm:^4.0.0"
+ mdast-util-gfm: "npm:^3.0.0"
+ micromark-extension-gfm: "npm:^3.0.0"
+ remark-parse: "npm:^11.0.0"
+ remark-stringify: "npm:^11.0.0"
+ unified: "npm:^11.0.0"
+ checksum: 10c0/427ecc6af3e76222662061a5f670a3e4e33ec5fffe2cabf04034da6a3f9a1bda1fc023e838a636385ba314e66e2bebbf017ca61ebea357eb0f5200fe0625a4b7
languageName: node
linkType: hard
-"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
- version: 5.1.2
- resolution: "string-width@npm:5.1.2"
+"remark-parse@npm:^11.0.0":
+ version: 11.0.0
+ resolution: "remark-parse@npm:11.0.0"
dependencies:
- eastasianwidth: "npm:^0.2.0"
- emoji-regex: "npm:^9.2.2"
- strip-ansi: "npm:^7.0.1"
- checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca
+ "@types/mdast": "npm:^4.0.0"
+ mdast-util-from-markdown: "npm:^2.0.0"
+ micromark-util-types: "npm:^2.0.0"
+ unified: "npm:^11.0.0"
+ checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38
languageName: node
linkType: hard
-"string-width@npm:^7.0.0, string-width@npm:^7.2.0":
- version: 7.2.0
- resolution: "string-width@npm:7.2.0"
+"remark-rehype@npm:^11.1.2":
+ version: 11.1.2
+ resolution: "remark-rehype@npm:11.1.2"
dependencies:
- emoji-regex: "npm:^10.3.0"
- get-east-asian-width: "npm:^1.0.0"
- strip-ansi: "npm:^7.1.0"
- checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9
+ "@types/hast": "npm:^3.0.0"
+ "@types/mdast": "npm:^4.0.0"
+ mdast-util-to-hast: "npm:^13.0.0"
+ unified: "npm:^11.0.0"
+ vfile: "npm:^6.0.0"
+ checksum: 10c0/f9eccacfb596d9605581dc05bfad28635d6ded5dd0a18e88af5fd4df0d3fcf9612e1501d4513bc2164d833cfe9636dab20400080b09e53f155c6e1442a1231fb
languageName: node
linkType: hard
-"stringify-entities@npm:^4.0.0":
- version: 4.0.4
- resolution: "stringify-entities@npm:4.0.4"
+"remark-stringify@npm:^11.0.0":
+ version: 11.0.0
+ resolution: "remark-stringify@npm:11.0.0"
dependencies:
- character-entities-html4: "npm:^2.0.0"
- character-entities-legacy: "npm:^3.0.0"
- checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448
+ "@types/mdast": "npm:^4.0.0"
+ mdast-util-to-markdown: "npm:^2.0.0"
+ unified: "npm:^11.0.0"
+ checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f
languageName: node
linkType: hard
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
- version: 6.0.1
- resolution: "strip-ansi@npm:6.0.1"
+"section-matter@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "section-matter@npm:1.0.0"
dependencies:
- ansi-regex: "npm:^5.0.1"
- checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
+ extend-shallow: "npm:^2.0.1"
+ kind-of: "npm:^6.0.0"
+ checksum: 10c0/8007f91780adc5aaa781a848eaae50b0f680bbf4043b90cf8a96778195b8fab690c87fe7a989e02394ce69890e330811ec8dab22397d384673ce59f7d750641d
languageName: node
linkType: hard
-"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0":
- version: 7.1.0
- resolution: "strip-ansi@npm:7.1.0"
+"sentence-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "sentence-case@npm:3.0.4"
dependencies:
- ansi-regex: "npm:^6.0.1"
- checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4
+ no-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ upper-case-first: "npm:^2.0.2"
+ checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467
languageName: node
linkType: hard
-"style-to-js@npm:^1.0.0":
- version: 1.1.16
- resolution: "style-to-js@npm:1.1.16"
+"shiki@npm:^3.22.0":
+ version: 3.23.0
+ resolution: "shiki@npm:3.23.0"
dependencies:
- style-to-object: "npm:1.0.8"
- checksum: 10c0/578a4dff804539ec7e64d3cc8d327540befb9ad30e3cd0b6b0392f93f793f3a028f90084a9aaff088bffb87818fa2c6c153f0df576f61f9ab0b0938b582bcac7
+ "@shikijs/core": "npm:3.23.0"
+ "@shikijs/engine-javascript": "npm:3.23.0"
+ "@shikijs/engine-oniguruma": "npm:3.23.0"
+ "@shikijs/langs": "npm:3.23.0"
+ "@shikijs/themes": "npm:3.23.0"
+ "@shikijs/types": "npm:3.23.0"
+ "@shikijs/vscode-textmate": "npm:^10.0.2"
+ "@types/hast": "npm:^3.0.4"
+ checksum: 10c0/b06a3eddac4bd0a838f9bd79bea70b0a01195570cb11d70fd2ff7ab0a42c33a8c4980ee52174173aae0476cc152b4c1a68c081a82d94ee340cb3ef9d772ae4ba
languageName: node
linkType: hard
-"style-to-object@npm:1.0.8":
- version: 1.0.8
- resolution: "style-to-object@npm:1.0.8"
+"snake-case@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "snake-case@npm:3.0.4"
dependencies:
- inline-style-parser: "npm:0.2.4"
- checksum: 10c0/daa6646b1ff18258c0ca33ed281fbe73485c8391192db1b56ce89d40c93ea64507a41e8701d0dadfe771bc2f540c46c9b295135f71584c8e5cb23d6a19be9430
+ dot-case: "npm:^3.0.4"
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd
languageName: node
linkType: hard
-"tar@npm:^7.4.3":
- version: 7.4.3
- resolution: "tar@npm:7.4.3"
+"source-map-support@npm:~0.5.20":
+ version: 0.5.21
+ resolution: "source-map-support@npm:0.5.21"
dependencies:
- "@isaacs/fs-minipass": "npm:^4.0.0"
- chownr: "npm:^3.0.0"
- minipass: "npm:^7.1.2"
- minizlib: "npm:^3.0.1"
- mkdirp: "npm:^3.0.1"
- yallist: "npm:^5.0.0"
- checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d
+ buffer-from: "npm:^1.0.0"
+ source-map: "npm:^0.6.0"
+ checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d
languageName: node
linkType: hard
-"tiny-inflate@npm:^1.0.0, tiny-inflate@npm:^1.0.3":
- version: 1.0.3
- resolution: "tiny-inflate@npm:1.0.3"
- checksum: 10c0/fab687537254f6ec44c9a2e880048fe70da3542aba28f73cda3e74c95cabf342a339372f2a6c032e322324f01accc03ca26c04ba2bad9b3eb8cf3ee99bba7f9b
+"source-map@npm:^0.6.0":
+ version: 0.6.1
+ resolution: "source-map@npm:0.6.1"
+ checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011
languageName: node
linkType: hard
-"tinyexec@npm:^0.3.2":
- version: 0.3.2
- resolution: "tinyexec@npm:0.3.2"
- checksum: 10c0/3efbf791a911be0bf0821eab37a3445c2ba07acc1522b1fa84ae1e55f10425076f1290f680286345ed919549ad67527d07281f1c19d584df3b74326909eb1f90
+"space-separated-tokens@npm:^2.0.0":
+ version: 2.0.2
+ resolution: "space-separated-tokens@npm:2.0.2"
+ checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8
languageName: node
linkType: hard
-"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13":
- version: 0.2.14
- resolution: "tinyglobby@npm:0.2.14"
+"stringify-entities@npm:^4.0.0":
+ version: 4.0.4
+ resolution: "stringify-entities@npm:4.0.4"
dependencies:
- fdir: "npm:^6.4.4"
- picomatch: "npm:^4.0.2"
- checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6
+ character-entities-html4: "npm:^2.0.0"
+ character-entities-legacy: "npm:^3.0.0"
+ checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448
languageName: node
linkType: hard
-"tr46@npm:~0.0.3":
- version: 0.0.3
- resolution: "tr46@npm:0.0.3"
- checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11
+"terser@npm:^5.46.0":
+ version: 5.51.2
+ resolution: "terser@npm:5.51.2"
+ dependencies:
+ "@jridgewell/source-map": "npm:^0.3.3"
+ acorn: "npm:^8.15.0"
+ commander: "npm:^2.20.0"
+ source-map-support: "npm:~0.5.20"
+ bin:
+ terser: bin/terser
+ checksum: 10c0/e6dd3d9152ad51b5a990e55bf0647701278970193d2ce2359a401623e65827a27a1803f5d58593a1f0b5e10ff3fa316a8d014d4f88a28d98ea94fb69359aeae5
languageName: node
linkType: hard
@@ -4840,83 +2128,21 @@ __metadata:
languageName: node
linkType: hard
-"tsconfck@npm:^3.1.5":
- version: 3.1.6
- resolution: "tsconfck@npm:3.1.6"
- peerDependencies:
- typescript: ^5.0.0
- peerDependenciesMeta:
- typescript:
- optional: true
- bin:
- tsconfck: bin/tsconfck.js
- checksum: 10c0/269c3c513540be44844117bb9b9258fe6f8aeab026d32aeebf458d5299125f330711429dbb556dbf125a0bc25f4a81e6c24ac96de2740badd295c3fb400f66c4
- languageName: node
- linkType: hard
-
-"tslib@npm:^2.4.0, tslib@npm:^2.8.0":
+"tslib@npm:^2.0.3":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
languageName: node
linkType: hard
-"type-fest@npm:^4.21.0":
- version: 4.41.0
- resolution: "type-fest@npm:4.41.0"
- checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4
- languageName: node
- linkType: hard
-
-"ufo@npm:^1.5.4, ufo@npm:^1.6.1":
- version: 1.6.1
- resolution: "ufo@npm:1.6.1"
- checksum: 10c0/5a9f041e5945fba7c189d5410508cbcbefef80b253ed29aa2e1f8a2b86f4bd51af44ee18d4485e6d3468c92be9bf4a42e3a2b72dcaf27ce39ce947ec994f1e6b
- languageName: node
- linkType: hard
-
-"ultrahtml@npm:^1.6.0":
- version: 1.6.0
- resolution: "ultrahtml@npm:1.6.0"
- checksum: 10c0/1140be819fdde198d83ad61b0186cb1fdb9d3a5d77ff416a752ae735089851a182d2100a1654f6b70dbb4f67881fcac1afba9323e261c8a95846a63f668b4c2a
- languageName: node
- linkType: hard
-
-"uncrypto@npm:^0.1.3":
- version: 0.1.3
- resolution: "uncrypto@npm:0.1.3"
- checksum: 10c0/74a29afefd76d5b77bedc983559ceb33f5bbc8dada84ff33755d1e3355da55a4e03a10e7ce717918c436b4dfafde1782e799ebaf2aadd775612b49f7b5b2998e
- languageName: node
- linkType: hard
-
-"undici-types@npm:~7.8.0":
- version: 7.8.0
- resolution: "undici-types@npm:7.8.0"
- checksum: 10c0/9d9d246d1dc32f318d46116efe3cfca5a72d4f16828febc1918d94e58f6ffcf39c158aa28bf5b4fc52f410446bc7858f35151367bd7a49f21746cab6497b709b
- languageName: node
- linkType: hard
-
-"unicode-properties@npm:^1.4.0":
- version: 1.4.1
- resolution: "unicode-properties@npm:1.4.1"
- dependencies:
- base64-js: "npm:^1.3.0"
- unicode-trie: "npm:^2.0.0"
- checksum: 10c0/1d140b7945664fb0ef53de955170821e077b949eef377c6e4905902f07e339039271bfa2a005e4f4c6074b080d3420b486c52dc905e11f924949a04d1fb47ffd
- languageName: node
- linkType: hard
-
-"unicode-trie@npm:^2.0.0":
- version: 2.0.0
- resolution: "unicode-trie@npm:2.0.0"
- dependencies:
- pako: "npm:^0.2.5"
- tiny-inflate: "npm:^1.0.0"
- checksum: 10c0/2422368645249f315640a1c9e9506046aa7738fc9c5d59e15c207cdd6ec66101c35b0b9f75dc3ac28fe7be19aaf1efc898bbea074fa1e8e295ef736aeb7904bb
+"undici-types@npm:~6.21.0":
+ version: 6.21.0
+ resolution: "undici-types@npm:6.21.0"
+ checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04
languageName: node
linkType: hard
-"unified@npm:^11.0.0, unified@npm:^11.0.4, unified@npm:^11.0.5":
+"unified@npm:^11.0.0, unified@npm:^11.0.5":
version: 11.0.5
resolution: "unified@npm:11.0.5"
dependencies:
@@ -4931,44 +2157,6 @@ __metadata:
languageName: node
linkType: hard
-"unifont@npm:~0.5.0":
- version: 0.5.0
- resolution: "unifont@npm:0.5.0"
- dependencies:
- css-tree: "npm:^3.0.0"
- ohash: "npm:^2.0.0"
- checksum: 10c0/4395af8a95722d88389ae100686577a80d9ff7a3e129dadf836e7beb1dbbd448d7bb12b9d8988084c186748fbb4763ce19457c7a119b8343a0fb5c81767896a2
- languageName: node
- linkType: hard
-
-"unique-filename@npm:^4.0.0":
- version: 4.0.0
- resolution: "unique-filename@npm:4.0.0"
- dependencies:
- unique-slug: "npm:^5.0.0"
- checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc
- languageName: node
- linkType: hard
-
-"unique-slug@npm:^5.0.0":
- version: 5.0.0
- resolution: "unique-slug@npm:5.0.0"
- dependencies:
- imurmurhash: "npm:^0.1.4"
- checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293
- languageName: node
- linkType: hard
-
-"unist-util-find-after@npm:^5.0.0":
- version: 5.0.0
- resolution: "unist-util-find-after@npm:5.0.0"
- dependencies:
- "@types/unist": "npm:^3.0.0"
- unist-util-is: "npm:^6.0.0"
- checksum: 10c0/a7cea473c4384df8de867c456b797ff1221b20f822e1af673ff5812ed505358b36f47f3b084ac14c3622cb879ed833b71b288e8aa71025352a2aab4c2925a6eb
- languageName: node
- linkType: hard
-
"unist-util-is@npm:^6.0.0":
version: 6.0.0
resolution: "unist-util-is@npm:6.0.0"
@@ -4978,25 +2166,6 @@ __metadata:
languageName: node
linkType: hard
-"unist-util-modify-children@npm:^4.0.0":
- version: 4.0.0
- resolution: "unist-util-modify-children@npm:4.0.0"
- dependencies:
- "@types/unist": "npm:^3.0.0"
- array-iterate: "npm:^2.0.0"
- checksum: 10c0/63d44b09a2e4c674c72816d4328d668972e68cc965ea719fef1c642b66a3ebe3b102e284a3213b4920ebccff05e0f689b4eaae8a0e5c3dafcad117d1577496da
- languageName: node
- linkType: hard
-
-"unist-util-position-from-estree@npm:^2.0.0":
- version: 2.0.0
- resolution: "unist-util-position-from-estree@npm:2.0.0"
- dependencies:
- "@types/unist": "npm:^3.0.0"
- checksum: 10c0/39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3
- languageName: node
- linkType: hard
-
"unist-util-position@npm:^5.0.0":
version: 5.0.0
resolution: "unist-util-position@npm:5.0.0"
@@ -5006,16 +2175,6 @@ __metadata:
languageName: node
linkType: hard
-"unist-util-remove-position@npm:^5.0.0":
- version: 5.0.0
- resolution: "unist-util-remove-position@npm:5.0.0"
- dependencies:
- "@types/unist": "npm:^3.0.0"
- unist-util-visit: "npm:^5.0.0"
- checksum: 10c0/e8c76da4399446b3da2d1c84a97c607b37d03d1d92561e14838cbe4fdcb485bfc06c06cfadbb808ccb72105a80643976d0660d1fe222ca372203075be9d71105
- languageName: node
- linkType: hard
-
"unist-util-stringify-position@npm:^4.0.0":
version: 4.0.0
resolution: "unist-util-stringify-position@npm:4.0.0"
@@ -5025,16 +2184,7 @@ __metadata:
languageName: node
linkType: hard
-"unist-util-visit-children@npm:^3.0.0":
- version: 3.0.0
- resolution: "unist-util-visit-children@npm:3.0.0"
- dependencies:
- "@types/unist": "npm:^3.0.0"
- checksum: 10c0/51e95f54fbf11d414952c011c761c3960864948ad3fd2abe3989eb18b18d96b8f48e7ea5ab6f23264d1a3f4f5a1ff76312dd8f2196c78b762098403505c3abb9
- languageName: node
- linkType: hard
-
-"unist-util-visit-parents@npm:^6.0.0, unist-util-visit-parents@npm:^6.0.1":
+"unist-util-visit-parents@npm:^6.0.0":
version: 6.0.1
resolution: "unist-util-visit-parents@npm:6.0.1"
dependencies:
@@ -5055,82 +2205,21 @@ __metadata:
languageName: node
linkType: hard
-"unstorage@npm:^1.15.0":
- version: 1.16.0
- resolution: "unstorage@npm:1.16.0"
+"upper-case-first@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "upper-case-first@npm:2.0.2"
dependencies:
- anymatch: "npm:^3.1.3"
- chokidar: "npm:^4.0.3"
- destr: "npm:^2.0.5"
- h3: "npm:^1.15.2"
- lru-cache: "npm:^10.4.3"
- node-fetch-native: "npm:^1.6.6"
- ofetch: "npm:^1.4.1"
- ufo: "npm:^1.6.1"
- peerDependencies:
- "@azure/app-configuration": ^1.8.0
- "@azure/cosmos": ^4.2.0
- "@azure/data-tables": ^13.3.0
- "@azure/identity": ^4.6.0
- "@azure/keyvault-secrets": ^4.9.0
- "@azure/storage-blob": ^12.26.0
- "@capacitor/preferences": ^6.0.3 || ^7.0.0
- "@deno/kv": ">=0.9.0"
- "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0
- "@planetscale/database": ^1.19.0
- "@upstash/redis": ^1.34.3
- "@vercel/blob": ">=0.27.1"
- "@vercel/kv": ^1.0.1
- aws4fetch: ^1.0.20
- db0: ">=0.2.1"
- idb-keyval: ^6.2.1
- ioredis: ^5.4.2
- uploadthing: ^7.4.4
- peerDependenciesMeta:
- "@azure/app-configuration":
- optional: true
- "@azure/cosmos":
- optional: true
- "@azure/data-tables":
- optional: true
- "@azure/identity":
- optional: true
- "@azure/keyvault-secrets":
- optional: true
- "@azure/storage-blob":
- optional: true
- "@capacitor/preferences":
- optional: true
- "@deno/kv":
- optional: true
- "@netlify/blobs":
- optional: true
- "@planetscale/database":
- optional: true
- "@upstash/redis":
- optional: true
- "@vercel/blob":
- optional: true
- "@vercel/kv":
- optional: true
- aws4fetch:
- optional: true
- db0:
- optional: true
- idb-keyval:
- optional: true
- ioredis:
- optional: true
- uploadthing:
- optional: true
- checksum: 10c0/f719a6483fd71d0a6d4f2e98ec29721c352618c4f3641f96d0c703866dc13cda071e8afda5a68bac4e7d3880c8eece0edb2057e96ce0ac4fb649998611430a09
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9
languageName: node
linkType: hard
-"util-deprecate@npm:^1.0.2":
- version: 1.0.2
- resolution: "util-deprecate@npm:1.0.2"
- checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942
+"upper-case@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "upper-case@npm:2.0.2"
+ dependencies:
+ tslib: "npm:^2.0.3"
+ checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069
languageName: node
linkType: hard
@@ -5154,7 +2243,7 @@ __metadata:
languageName: node
linkType: hard
-"vfile@npm:^6.0.0, vfile@npm:^6.0.2, vfile@npm:^6.0.3":
+"vfile@npm:^6.0.0":
version: 6.0.3
resolution: "vfile@npm:6.0.3"
dependencies:
@@ -5164,73 +2253,6 @@ __metadata:
languageName: node
linkType: hard
-"vite@npm:^6.3.4":
- version: 6.3.5
- resolution: "vite@npm:6.3.5"
- dependencies:
- esbuild: "npm:^0.25.0"
- fdir: "npm:^6.4.4"
- fsevents: "npm:~2.3.3"
- picomatch: "npm:^4.0.2"
- postcss: "npm:^8.5.3"
- rollup: "npm:^4.34.9"
- tinyglobby: "npm:^0.2.13"
- peerDependencies:
- "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
- jiti: ">=1.21.0"
- less: "*"
- lightningcss: ^1.21.0
- sass: "*"
- sass-embedded: "*"
- stylus: "*"
- sugarss: "*"
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- dependenciesMeta:
- fsevents:
- optional: true
- peerDependenciesMeta:
- "@types/node":
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
- bin:
- vite: bin/vite.js
- checksum: 10c0/df70201659085133abffc6b88dcdb8a57ef35f742a01311fc56a4cfcda6a404202860729cc65a2c401a724f6e25f9ab40ce4339ed4946f550541531ced6fe41c
- languageName: node
- linkType: hard
-
-"vitefu@npm:^1.0.6":
- version: 1.0.6
- resolution: "vitefu@npm:1.0.6"
- peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
- peerDependenciesMeta:
- vite:
- optional: true
- checksum: 10c0/d153966fbcc9375bb858a5f5a096466900b42b25d2a3b255e10d050672300a978cccbe249c1f2beb2e09caaa0c800261e9305c62df4f2b75aa32b32bb936799c
- languageName: node
- linkType: hard
-
"web-namespaces@npm:^2.0.0":
version: 2.0.1
resolution: "web-namespaces@npm:2.0.1"
@@ -5238,171 +2260,6 @@ __metadata:
languageName: node
linkType: hard
-"webidl-conversions@npm:^3.0.0":
- version: 3.0.1
- resolution: "webidl-conversions@npm:3.0.1"
- checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db
- languageName: node
- linkType: hard
-
-"whatwg-url@npm:^5.0.0":
- version: 5.0.0
- resolution: "whatwg-url@npm:5.0.0"
- dependencies:
- tr46: "npm:~0.0.3"
- webidl-conversions: "npm:^3.0.0"
- checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5
- languageName: node
- linkType: hard
-
-"which-pm-runs@npm:^1.1.0":
- version: 1.1.0
- resolution: "which-pm-runs@npm:1.1.0"
- checksum: 10c0/b8f2f230aa49babe21cb93f169f5da13937f940b8cc7a47d2078d9d200950c0dba5ac5659bc01bdbe401e6db3adec6a97b6115215a4ca8e87fd714aebd0cabc6
- languageName: node
- linkType: hard
-
-"which@npm:^2.0.1":
- version: 2.0.2
- resolution: "which@npm:2.0.2"
- dependencies:
- isexe: "npm:^2.0.0"
- bin:
- node-which: ./bin/node-which
- checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
- languageName: node
- linkType: hard
-
-"which@npm:^5.0.0":
- version: 5.0.0
- resolution: "which@npm:5.0.0"
- dependencies:
- isexe: "npm:^3.1.1"
- bin:
- node-which: bin/which.js
- checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b
- languageName: node
- linkType: hard
-
-"widest-line@npm:^5.0.0":
- version: 5.0.0
- resolution: "widest-line@npm:5.0.0"
- dependencies:
- string-width: "npm:^7.0.0"
- checksum: 10c0/6bd6cca8cda502ef50e05353fd25de0df8c704ffc43ada7e0a9cf9a5d4f4e12520485d80e0b77cec8a21f6c3909042fcf732aa9281e5dbb98cc9384a138b2578
- languageName: node
- linkType: hard
-
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
- version: 7.0.0
- resolution: "wrap-ansi@npm:7.0.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- string-width: "npm:^4.1.0"
- strip-ansi: "npm:^6.0.0"
- checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da
- languageName: node
- linkType: hard
-
-"wrap-ansi@npm:^8.1.0":
- version: 8.1.0
- resolution: "wrap-ansi@npm:8.1.0"
- dependencies:
- ansi-styles: "npm:^6.1.0"
- string-width: "npm:^5.0.1"
- strip-ansi: "npm:^7.0.1"
- checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60
- languageName: node
- linkType: hard
-
-"wrap-ansi@npm:^9.0.0":
- version: 9.0.0
- resolution: "wrap-ansi@npm:9.0.0"
- dependencies:
- ansi-styles: "npm:^6.2.1"
- string-width: "npm:^7.0.0"
- strip-ansi: "npm:^7.1.0"
- checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066
- languageName: node
- linkType: hard
-
-"xxhash-wasm@npm:^1.1.0":
- version: 1.1.0
- resolution: "xxhash-wasm@npm:1.1.0"
- checksum: 10c0/35aa152fc7d775ae13364fe4fb20ebd89c6ac1f56cdb6060a6d2f1ed68d15180694467e63a4adb3d11936a4798ccd75a540979070e70d9b911e9981bbdd9cea6
- languageName: node
- linkType: hard
-
-"yallist@npm:^4.0.0":
- version: 4.0.0
- resolution: "yallist@npm:4.0.0"
- checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
- languageName: node
- linkType: hard
-
-"yallist@npm:^5.0.0":
- version: 5.0.0
- resolution: "yallist@npm:5.0.0"
- checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416
- languageName: node
- linkType: hard
-
-"yargs-parser@npm:^21.1.1":
- version: 21.1.1
- resolution: "yargs-parser@npm:21.1.1"
- checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2
- languageName: node
- linkType: hard
-
-"yocto-queue@npm:^1.1.1":
- version: 1.2.1
- resolution: "yocto-queue@npm:1.2.1"
- checksum: 10c0/5762caa3d0b421f4bdb7a1926b2ae2189fc6e4a14469258f183600028eb16db3e9e0306f46e8ebf5a52ff4b81a881f22637afefbef5399d6ad440824e9b27f9f
- languageName: node
- linkType: hard
-
-"yocto-spinner@npm:^0.2.1":
- version: 0.2.3
- resolution: "yocto-spinner@npm:0.2.3"
- dependencies:
- yoctocolors: "npm:^2.1.1"
- checksum: 10c0/4c4527f68161334291355eae0ab9a8e1b988bd854eebd93697d9a88b008362d71ad9f24334a79e48aca6ba1c085e365cd2981ba5ddc0ea54cc3efd96f2d08714
- languageName: node
- linkType: hard
-
-"yoctocolors@npm:^2.1.1":
- version: 2.1.1
- resolution: "yoctocolors@npm:2.1.1"
- checksum: 10c0/85903f7fa96f1c70badee94789fade709f9d83dab2ec92753d612d84fcea6d34c772337a9f8914c6bed2f5fc03a428ac5d893e76fab636da5f1236ab725486d0
- languageName: node
- linkType: hard
-
-"zod-to-json-schema@npm:^3.24.5":
- version: 3.24.5
- resolution: "zod-to-json-schema@npm:3.24.5"
- peerDependencies:
- zod: ^3.24.1
- checksum: 10c0/0745b94ba53e652d39f262641cdeb2f75d24339fb6076a38ce55bcf53d82dfaea63adf524ebc5f658681005401687f8e9551c4feca7c4c882e123e66091dfb90
- languageName: node
- linkType: hard
-
-"zod-to-ts@npm:^1.2.0":
- version: 1.2.0
- resolution: "zod-to-ts@npm:1.2.0"
- peerDependencies:
- typescript: ^4.9.4 || ^5.0.2
- zod: ^3
- checksum: 10c0/69375a29b04ac93fcfb7df286984a287c06219b51a0a70f15088baa662378d2078f4f96730f0090713df9172f02fe84ba9767cd2e1fbbc55f7d48b2190d9b0d9
- languageName: node
- linkType: hard
-
-"zod@npm:^3.24.2":
- version: 3.25.62
- resolution: "zod@npm:3.25.62"
- checksum: 10c0/a98e53eddd689913a1d476ccfd3fd3ffbdf56c8e8606449445e4a36f31064551760c930c62381420605394e71b00d3397ea456637bacc7d2afe7c4946bf9c6b0
- languageName: node
- linkType: hard
-
"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4":
version: 2.0.4
resolution: "zwitch@npm:2.0.4"
diff --git a/docs/index.md b/docs/index.md
index a27e87d..28de238 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -2,9 +2,7 @@
title: Regor Documentation
---
-The documentation has moved to [docs-site/src/content/docs/index.md](../docs-site/src/content/docs/index.md).
+The documentation lives at [regor.purestack.studio](https://regor.purestack.studio/). Its PureStack source is in [docs-site/content/index.mdx](../docs-site/content/index.mdx).
Please update your bookmarks.
-You can also read it online at [https://tenray.io//regor](https://tenray.io//regor).
-
[Back to GitHub Repository](https://github.com/koculu/Regor)