docs: 仓库链接指向本镜像仓库
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run

This commit is contained in:
TanTan committed 2026-11-13 09:27:07 +08:00
1 parent fa9c73363d
commit 2a69b23b47
18210 files changed
+5101211 -16

No files matched your search

@@ -0,0 +1,24 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const Turtle = createLucideIcon("Turtle", [
[
"path",
{
d: "m12 10 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a8 8 0 1 0-16 0v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3l2-4h4Z",
key: "1lbbv7"
}
],
["path", { d: "M4.82 7.9 8 10", key: "m9wose" }],
["path", { d: "M15.18 7.9 12 10", key: "p8dp2u" }],
["path", { d: "M16.93 10H20a2 2 0 0 1 0 4H2", key: "12nsm7" }]
]);
export { Turtle as default };
//# sourceMappingURL=turtle.js.map
@@ -0,0 +1,6 @@
{
"sideEffects": false,
"main": "floating-ui.utils.dom.umd.js",
"module": "floating-ui.utils.dom.esm.js",
"types": "floating-ui.utils.dom.d.ts"
}
@@ -0,0 +1,154 @@
// Generated by LiveScript 1.6.0
var values, keys, pairsToObj, objToPairs, listsToObj, objToLists, empty, each, map, compact, filter, reject, partition, find;
values = function(object){
var i$, x, results$ = [];
for (i$ in object) {
x = object[i$];
results$.push(x);
}
return results$;
};
keys = function(object){
var x, results$ = [];
for (x in object) {
results$.push(x);
}
return results$;
};
pairsToObj = function(object){
var i$, len$, x, resultObj$ = {};
for (i$ = 0, len$ = object.length; i$ < len$; ++i$) {
x = object[i$];
resultObj$[x[0]] = x[1];
}
return resultObj$;
};
objToPairs = function(object){
var key, value, results$ = [];
for (key in object) {
value = object[key];
results$.push([key, value]);
}
return results$;
};
listsToObj = curry$(function(keys, values){
var i$, len$, i, key, resultObj$ = {};
for (i$ = 0, len$ = keys.length; i$ < len$; ++i$) {
i = i$;
key = keys[i$];
resultObj$[key] = values[i];
}
return resultObj$;
});
objToLists = function(object){
var keys, values, key, value;
keys = [];
values = [];
for (key in object) {
value = object[key];
keys.push(key);
values.push(value);
}
return [keys, values];
};
empty = function(object){
var x;
for (x in object) {
return false;
}
return true;
};
each = curry$(function(f, object){
var i$, x;
for (i$ in object) {
x = object[i$];
f(x);
}
return object;
});
map = curry$(function(f, object){
var k, x, resultObj$ = {};
for (k in object) {
x = object[k];
resultObj$[k] = f(x);
}
return resultObj$;
});
compact = function(object){
var k, x, resultObj$ = {};
for (k in object) {
x = object[k];
if (x) {
resultObj$[k] = x;
}
}
return resultObj$;
};
filter = curry$(function(f, object){
var k, x, resultObj$ = {};
for (k in object) {
x = object[k];
if (f(x)) {
resultObj$[k] = x;
}
}
return resultObj$;
});
reject = curry$(function(f, object){
var k, x, resultObj$ = {};
for (k in object) {
x = object[k];
if (!f(x)) {
resultObj$[k] = x;
}
}
return resultObj$;
});
partition = curry$(function(f, object){
var passed, failed, k, x;
passed = {};
failed = {};
for (k in object) {
x = object[k];
(f(x) ? passed : failed)[k] = x;
}
return [passed, failed];
});
find = curry$(function(f, object){
var i$, x;
for (i$ in object) {
x = object[i$];
if (f(x)) {
return x;
}
}
});
module.exports = {
values: values,
keys: keys,
pairsToObj: pairsToObj,
objToPairs: objToPairs,
listsToObj: listsToObj,
objToLists: objToLists,
empty: empty,
each: each,
map: map,
filter: filter,
compact: compact,
reject: reject,
partition: partition,
find: find
};
function curry$(f, bound){
var context,
_curry = function(args) {
return f.length > 1 ? function(){
var params = args ? args.concat() : [];
context = bound ? context || this : this;
return params.push.apply(params, arguments) <
f.length && arguments.length ?
_curry.call(context, params) : f.apply(context, params);
} : f;
};
return _curry();
}
@@ -0,0 +1,2 @@
'use strict';
require('../register')('promise', {Promise: require('promise')})
@@ -0,0 +1 @@
{"version":3,"file":"defer.js","names":[],"sources":["../../src/defer.ts"],"sourcesContent":["import { defaultSerializeError } from './router'\n\n/**\n * Well-known symbol used by {@link defer} to tag a promise with\n * its deferred state. Consumers can read `promise[TSR_DEFERRED_PROMISE]`\n * to access `status`, `data`, or `error`.\n */\nexport const TSR_DEFERRED_PROMISE = Symbol.for('TSR_DEFERRED_PROMISE')\n\nexport type DeferredPromiseState<T> =\n | {\n status: 'pending'\n data?: T\n error?: unknown\n }\n | {\n status: 'success'\n data: T\n }\n | {\n status: 'error'\n data?: T\n error: unknown\n }\n\nexport type DeferredPromise<T> = Promise<T> & {\n [TSR_DEFERRED_PROMISE]: DeferredPromiseState<T>\n}\n\n/**\n * Wrap a promise with a deferred state for use with `<Await>` and `useAwaited`.\n *\n * The returned promise is augmented with internal state (status/data/error)\n * so UI can read progress or suspend until it settles.\n *\n * @param _promise The promise to wrap.\n * @param options Optional config. Provide `serializeError` to customize how\n * errors are serialized for transfer.\n * @returns The same promise with attached deferred metadata.\n * @link https://tanstack.com/router/latest/docs/framework/react/api/router/deferFunction\n */\nexport function defer<T>(\n _promise: Promise<T>,\n options?: {\n serializeError?: typeof defaultSerializeError\n },\n) {\n const promise = _promise as DeferredPromise<T>\n // this is already deferred promise\n if ((promise as any)[TSR_DEFERRED_PROMISE]) {\n return promise\n }\n promise[TSR_DEFERRED_PROMISE] = { status: 'pending' }\n\n promise\n .then((data) => {\n promise[TSR_DEFERRED_PROMISE].status = 'success'\n promise[TSR_DEFERRED_PROMISE].data = data\n })\n .catch((error) => {\n promise[TSR_DEFERRED_PROMISE].status = 'error'\n ;(promise[TSR_DEFERRED_PROMISE] as any).error = {\n data: (options?.serializeError ?? defaultSerializeError)(error),\n __isServerError: true,\n }\n })\n\n return promise\n}\n"],"mappings":";;;;;;;AAOA,MAAa,uBAAuB,OAAO,IAAI,uBAAuB;;;;;;;;;;;;;AAkCtE,SAAgB,MACd,UACA,SAGA;CACA,MAAM,UAAU;AAEhB,KAAK,QAAgB,sBACnB,QAAO;AAET,SAAQ,wBAAwB,EAAE,QAAQ,WAAW;AAErD,SACG,MAAM,SAAS;AACd,UAAQ,sBAAsB,SAAS;AACvC,UAAQ,sBAAsB,OAAO;GACrC,CACD,OAAO,UAAU;AAChB,UAAQ,sBAAsB,SAAS;AACrC,UAAQ,sBAA8B,QAAQ;GAC9C,OAAO,SAAS,kBAAkB,uBAAuB,MAAM;GAC/D,iBAAiB;GAClB;GACD;AAEJ,QAAO"}
@@ -0,0 +1,545 @@
# [`baseline-browser-mapping`](https://github.com/web-platform-dx/web-features/packages/baseline-browser-mapping)
By the [W3C WebDX Community Group](https://www.w3.org/community/webdx/) and contributors.
`baseline-browser-mapping` provides:
- An `Array` of browsers compatible with Baseline Widely available and Baseline year feature sets via the [`getCompatibleVersions()` function](#get-baseline-widely-available-browser-versions-or-baseline-year-browser-versions).
- An `Array`, `Object` or `CSV` as a string describing the Baseline feature set support of all browser versions included in the module's data set via the [`getAllVersions()` function](#get-data-for-all-browser-versions).
You can use `baseline-browser-mapping` to help you determine minimum browser version support for your chosen Baseline feature set; or to analyse the level of support for different Baseline feature sets in your site's traffic by joining the data with your analytics data.
## Install for local development
To install the package, run:
`npm install --save-dev baseline-browser-mapping`
The minimum supported NodeJS version for `baseline-browser-mapping` is v8 in alignment with `browserslist`. For NodeJS versions earlier than v13.2, the [`require('baseline-browser-mapping')`](https://nodejs.org/api/modules.html#requireid) syntax should be used to import the module.
## Keeping `baseline-browser-mapping` up to date
`baseline-browser-mapping` depends on `web-features` and `@mdn/browser-compat-data` for core browser version selection, but the data is pre-packaged and minified. This package checks for updates to those modules and the supported [downstream browsers](#downstream-browsers) on a daily basis and is updated frequently.
If you are only using this module to generate minimum browser versions for Baseline Widely available or Baseline year feature sets, you don't need to update this module frequently, as the backward looking data is reasonably stable.
However, if you are targeting Newly available, using the [`getAllVersions()`](#get-data-for-all-browser-versions) function or heavily relying on the data for downstream browsers, you should update this module more frequently. If you target a feature cut off date within the last two months and your installed version of `baseline-browser-mapping` has data that is more than 2 months old, you will receive a console warning advising you to update to the latest version when you call `getCompatibleVersions()` or `getAllVersions()`.
If you want to suppress the console warnings mentioned above you can use the `suppressWarnings: true` option in the configuration object passed to `getCompatibleVersions()` or `getAllVersions()`. Alternatively, you can use the `BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA=true` environment variable when running your build process. This module also respects the `BROWSERSLIST_IGNORE_OLD_DATA=true` environment variable. Environment variables can also be provided in a `.env` file from Node 20 onwards; however, this module does not load .env files automatically to avoid conflicts with other libraries with different requirements. You will need to use `process.loadEnvFile()` or a library like `dotenv` to load .env files before `baseline-browser-mapping` is called.
If you're building a tool that uses this module, consider suppressing the warnings but building a process into your tool that automatically updates this module. See, for example, [`browserslist`](https://github.com/browserslist/browserslist/blob/main/node.js#L471) and its [`update-browserslist-db`](https://github.com/browserslist/update-db) package.
If you're implementing `baseline-browser-mapping` directly, you should add a script to your `package.json` to update `baseline-browser-mapping` and use it as part of your build process to ensure your data is as up to date as possible. For example, if you are using NPM for package management:
```javascript
"scripts": [
"refresh-baseline-browser-mapping": "npm i baseline-browser-mapping@latest -D"
]
```
If you want to ensure [reproducible builds](https://www.wikiwand.com/en/articles/Reproducible_builds), we strongly recommend using the `widelyAvailableOnDate` option to fix the Widely available date on a per build basis to ensure dependent tools provide the same output and you do not produce data staleness warnings. If you are using [`browserslist`](https://github.com/browserslist/browserslist) to target Baseline Widely available, consider automatically updating your `browserslist` configuration in `package.json` or `.browserslistrc` to `baseline widely available on {YYYY-MM-DD}` as part of your build process to ensure the same or sufficiently similar list of minimum browsers is reproduced for historical builds.
## Importing `baseline-browser-mapping`
This module exposes three functions: `getCompatibleVersions()`, `getAllVersions()`, and `getTimeline()`, all of which can be imported directly from `baseline-browser-mapping`:
```javascript
import {
getCompatibleVersions,
getAllVersions,
getTimeline,
} from "baseline-browser-mapping";
```
If you want to load the script and data directly in a web page without hosting it yourself, consider using a CDN:
```html
<script type="module">
import {
getCompatibleVersions,
getAllVersions,
getTimeline,
} from "https://cdn.jsdelivr.net/npm/baseline-browser-mapping";
</script>
```
## Get Baseline Widely available browser versions or Baseline year browser versions
To get the current list of minimum browser versions compatible with Baseline Widely available features from the core browser set, call the `getCompatibleVersions()` function:
```javascript
getCompatibleVersions();
```
Executed on 7th March 2025, the above code returns the following browser versions:
```javascript
[
{ browser: "chrome", version: "105", release_date: "2022-09-02" },
{
browser: "chrome_android",
version: "105",
release_date: "2022-09-02",
},
{ browser: "edge", version: "105", release_date: "2022-09-02" },
{ browser: "firefox", version: "104", release_date: "2022-08-23" },
{
browser: "firefox_android",
version: "104",
release_date: "2022-08-23",
},
{ browser: "safari", version: "15.6", release_date: "2022-09-02" },
{
browser: "safari_ios",
version: "15.6",
release_date: "2022-09-02",
},
];
```
> [!NOTE]
> The minimum versions of each browser are not necessarily the final release before the Widely available cutoff date of `TODAY - 30 MONTHS`. Some earlier versions will have supported the full Widely available feature set.
### `getCompatibleVersions()` configuration options
`getCompatibleVersions()` accepts an `Object` as an argument with configuration options. The defaults are as follows:
```javascript
{
targetYear: undefined,
widelyAvailableOnDate: undefined,
includeDownstreamBrowsers: false,
listAllCompatibleVersions: false,
suppressWarnings: false
}
```
#### `targetYear`
The `targetYear` option returns the minimum browser versions compatible with all **Baseline Newly available** features at the end of the specified calendar year. For example, calling:
```javascript
getCompatibleVersions({
targetYear: 2020,
});
```
Returns the following versions:
```javascript
[
{ browser: "chrome", version: "87", release_date: "2020-11-19" },
{
browser: "chrome_android",
version: "87",
release_date: "2020-11-19",
},
{ browser: "edge", version: "87", release_date: "2020-11-19" },
{ browser: "firefox", version: "83", release_date: "2020-11-17" },
{
browser: "firefox_android",
version: "83",
release_date: "2020-11-17",
},
{ browser: "safari", version: "14", release_date: "2020-09-16" },
{ browser: "safari_ios", version: "14", release_date: "2020-09-16" },
];
```
> [!NOTE]
> The minimum version of each browser is not necessarily the final version released in that calendar year. In the above example, Firefox 84 was the final version released in 2020; however Firefox 83 supported all of the features that were interoperable at the end of 2020.
> [!WARNING]
> You cannot use `targetYear` and `widelyAavailableDate` together. Please only use one of these options at a time.
#### `widelyAvailableOnDate`
The `widelyAvailableOnDate` option returns the minimum versions compatible with Baseline Widely available on a specified date in the format `YYYY-MM-DD`:
```javascript
getCompatibleVersions({
widelyAvailableOnDate: `2023-04-05`,
});
```
> [!TIP]
> This option is useful if you provide a versioned library that targets Baseline Widely available on each version's release date and you need to provide a statement on minimum supported browser versions in your documentation.
#### `includeDownstreamBrowsers`
Setting `includeDownstreamBrowsers` to `true` will include browsers outside of the Baseline core browser set where it is possible to map those browsers to an upstream Chromium or Gecko version:
```javascript
getCompatibleVersions({
includeDownstreamBrowsers: true,
});
```
For more information on downstream browsers, see [the section on downstream browsers](#downstream-browsers) below.
#### `includeKaiOS`
KaiOS is an operating system and app framework based on the Gecko engine from Firefox. KaiOS is based on the Gecko engine and feature support can be derived from the upstream Gecko version that each KaiOS version implements. However KaiOS requires other considerations beyond feature compatibility to ensure a good user experience as it runs on device types that do not have either mouse and keyboard or touch screen input in the way that all the other browsers supported by this module do.
```javascript
getCompatibleVersions({
includeDownstreamBrowsers: true,
includeKaiOS: true,
});
```
> [!NOTE]
> Including KaiOS requires you to include all downstream browsers using the `includeDownstreamBrowsers` option.
#### `listAllCompatibleVersions`
Setting `listAllCompatibleVersions` to true will include the minimum versions of each compatible browser, and all the subsequent versions:
```javascript
getCompatibleVersions({
listAllCompatibleVersions: true,
});
```
#### `suppressWarnings`
Setting `suppressWarnings` to `true` will suppress the console warning about old data:
```javascript
getCompatibleVersions({
suppressWarnings: true,
});
```
## Get data for all browser versions
You may want to obtain data on all the browser versions available in this module for use in an analytics solution or dashboard. To get details of each browser version's level of Baseline support, call the `getAllVersions()` function:
```javascript
import { getAllVersions } from "baseline-browser-mapping";
getAllVersions();
```
By default, this function returns an `Array` of `Objects` and excludes downstream browsers:
```javascript
[
...
{
browser: "firefox_android", // Browser name
version: "125", // Browser version
release_date: "2024-04-16", // Release date
year: 2023, // Baseline year feature set the version supports
wa_compatible: true // Whether the browser version supports Widely available
},
...
]
```
For browser versions in `@mdn/browser-compat-data` that were released before Baseline can be defined, i.e. Baseline 2015, the `year` property is always the string: `"pre_baseline"`.
### Understanding which browsers support Newly available features
You may want to understand which recent browser versions support all Newly available features. You can replace the `wa_compatible` property with a `supports` property using the `useSupport` option:
```javascript
getAllVersions({
useSupports: true,
});
```
The `supports` property is optional and has two possible values:
- `widely` for browser versions that support all Widely available features.
- `newly` for browser versions that support all Newly available features.
Browser versions that do not support Widely or Newly available will not include the `support` property in the `array` or `object` outputs, and in the CSV output, the `support` column will contain an empty string. Browser versions that support all Newly available features also support all Widely available features.
### `getAllVersions()` Configuration options
`getAllVersions()` accepts an `Object` as an argument with configuration options. The defaults are as follows:
```javascript
{
includeDownstreamBrowsers: false,
outputFormat: "array",
suppressWarnings: false
}
```
#### `includeDownstreamBrowsers` (in `getAllVersions()` output)
As with `getCompatibleVersions()`, you can set `includeDownstreamBrowsers` to `true` to include the Chromium and Gecko downstream browsers [listed below](#list-of-downstream-browsers).
```javascript
getAllVersions({
includeDownstreamBrowsers: true,
});
```
Downstream browsers include the same properties as core browsers, as well as the `engine`they use and `engine_version`, for example:
```javascript
[
...
{
browser: "samsunginternet_android",
version: "27.0",
release_date: "2024-11-06",
engine: "Blink",
engine_version: "125",
year: 2023,
supports: "widely"
},
...
]
```
#### `includeKaiOS` (in `getAllVersions()` output)
As with `getCompatibleVersions()` you can include KaiOS in your output. The same requirement to have `includeDownstreamBrowsers: true` applies.
```javascript
getAllVersions({
includeDownstreamBrowsers: true,
includeKaiOS: true,
});
```
#### `suppressWarnings` (in `getAllVersions()` output)
As with `getCompatibleVersions()`, you can set `suppressWarnings` to `true` to suppress the console warning about old data:
```javascript
getAllVersions({
suppressWarnings: true,
});
```
#### `outputFormat`
By default, this function returns an `Array` of `Objects` which can be manipulated in Javascript or output to JSON.
To return an `Object` that nests keys , set `outputFormat` to `object`:
```javascript
getAllVersions({
outputFormat: "object",
});
```
In thise case, `getAllVersions()` returns a nested object with the browser [IDs listed below](#list-of-downstream-browsers) as keys, and versions as keys within them:
```javascript
{
"chrome": {
"53": {
"year": 2016,
"release_date": "2016-09-07"
},
...
}
```
Downstream browsers will include extra fields for `engine` and `engine_versions`
```javascript
{
...
"webview_android": {
"53": {
"year": 2016,
"release_date": "2016-09-07",
"engine": "Blink",
"engine_version": "53"
},
...
}
```
To return a `String` in CSV format, set `outputFormat` to `csv`:
```javascript
getAllVersions({
outputFormat: "csv",
});
```
`getAllVersions` returns a `String` with a header row and comma-separated values for each browser version that you can write to a file or pass to another service. Core browsers will have "NULL" as the value for their `engine` and `engine_version`:
```csv
"browser","version","year","supports","release_date","engine","engine_version"
...
"chrome","24","pre_baseline","","2013-01-10","NULL","NULL"
...
"chrome","53","2016","","2016-09-07","NULL","NULL"
...
"firefox","135","2024","widely","2025-02-04","NULL","NULL"
"firefox","136","2024","newly","2025-03-04","NULL","NULL"
...
"ya_android","20.12","2020","year_only","2020-12-20","Blink","87"
...
```
> [!NOTE]
> The above example uses `"includeDownstreamBrowsers": true`
### Static resources
The outputs of `getAllVersions()` are available as JSON or CSV files generated on a daily basis and hosted on GitHub pages:
- Core browsers only
- [Array](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_array.json)
- [Object](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_object.json)
- [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions.csv)
- Core browsers only, with `supports` property
- [Array](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_array_with_supports.json)
- [Object](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_object_with_supports.json)
- [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_with_supports.csv)
- Including downstream browsers
- [Array](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_array.json)
- [Object](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_object.json)
- [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions.csv)
- Including downstream browsers with `supports` property
- [Array](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_array_with_supports.json)
- [Object](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_object_with_supports.json)
- [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_with_supports.csv)
These files are updated on a daily basis.
## Get timeline of browser version compatibility bumps
To calculate compatible browser versions on custom/arbitrary dates completely client-side without loading the full `@mdn/browser-compat-data` database, you can call the `getTimeline()` function. It returns the timeline of minimum version requirements as a chronologically sorted array of change events:
```javascript
import { getTimeline } from "baseline-browser-mapping";
const timeline = getTimeline();
```
It returns an `Array` of events, where each event has a `date` and an array of `browsers` representing the compatibility changes on that date:
```javascript
[
{
date: "2015-07-29",
browsers: [
{ browser: "chrome", version: "38", release_date: "2014-10-07" },
{ browser: "chrome_android", version: "38", release_date: "2014-10-08" },
{ browser: "edge", version: "12", release_date: "2015-07-29" },
{ browser: "firefox", version: "38", release_date: "2015-05-12" },
{ browser: "firefox_android", version: "38", release_date: "2015-05-12" },
{ browser: "safari", version: "11", release_date: "2017-09-19" },
{ browser: "safari_ios", version: "11", release_date: "2017-09-19" }
]
},
{
date: "2015-09-22",
browsers: [
{ browser: "firefox", version: "41", release_date: "2015-09-22" },
{ browser: "firefox_android", version: "41", release_date: "2015-09-22" }
]
},
...
]
```
### Options
`getTimeline()` accepts an optional configuration `Object` with the following properties:
- `groupBy` (`"date"` by default):
- If `"date"` (default), it returns a chronologically sorted `Array` of events, where each event represents a date on which a browser's Baseline requirements changed.
- If `"browser"`, it returns an `Object` where keys are browser names and values are arrays of version change events for that specific browser:
```javascript
{
chrome: [
{ date: "2015-07-29", version: "38", release_date: "2014-10-07" },
{ date: "2016-03-02", version: "49", release_date: "2016-03-02" },
...
],
safari: [
{ date: "2015-09-30", version: "9", release_date: "2015-09-30" },
...
],
...
}
```
- `listAllBrowsers` (`false` by default):
- If `false`, the `browsers` array for each event (when `groupBy` is `"date"`) contains _only_ the browsers that changed on that specific date.
- If `true`, the `browsers` array for each event will contain the state of _all_ active compatible browsers at that point in time (showing the versions they had on that date).
- _Note: Only applicable when `groupBy` is `"date"` (or when `groupBy` is `"browser"`, this lists every date in the timeline for each browser)._
- `includeDownstreamBrowsers` (`false` by default): Whether to include downstream browsers that share the same engine as a core browser.
- `includeKaiOS` (`false` by default): Whether to include KaiOS (requires `includeDownstreamBrowsers: true`).
```javascript
// Get a complete view of all core browsers at every timeline event
const fullTimeline = getTimeline({ listAllBrowsers: true });
// Get the timeline grouped by browser instead of by date
const browserTimeline = getTimeline({ groupBy: "browser" });
// Include downstream browsers in the timeline of changes
const downstreamTimeline = getTimeline({ includeDownstreamBrowsers: true });
```
## CLI
`baseline-browser-mapping` includes a command line interface that exposes the same data and options as the `getCompatibleVersions()` function. To learn more about using the CLI, run:
```sh
npx baseline-browser-mapping --help
```
## Downstream browsers
### Limitations
The browser versions in this module come from two different sources:
- MDN's `browser-compat-data` module.
- Parsed user agent strings provided by [useragents.io](https://useragents.io/)
MDN `browser-compat-data` is an authoritative source of information for the browsers it contains. The release dates for the Baseline core browser set and the mapping of downstream browsers to Chromium versions should be considered accurate.
Browser mappings from useragents.io are provided on a best effort basis. They assume that browser vendors are accurately stating the Chromium version they have implemented. The initial set of version mappings was derived from a bulk export in November 2024. This version was iterated over with a Regex match looking for a major Chrome version and a corresponding version of the browser in question, e.g.:
`Mozilla/5.0 (Linux; U; Android 10; en-US; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/13.8.2.1324 Mobile Safari/537.36`
Shows UC Browser Mobile 13.8 implementing Chromium 100, and:
`Mozilla/5.0 (Linux; arm_64; Android 11; Redmi Note 8 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.123 YaBrowser/24.10.2.123.00 SA/3 Mobile Safari/537.36`
Shows Yandex Browser Mobile 24.10 implementing Chromium 128. The Chromium version from this string is mapped to the corresponding Chrome version from MDN `browser-compat-data`.
> [!NOTE]
> Where possible, approximate release dates have been included based on useragents.io "first seen" data. useragents.io does not have "first seen" dates prior to June 2020. However, these browsers' Baseline compatibility is determined by their Chromium or Gecko version, so their release dates are more informative than critical.
This data is updated on a daily basis using a [script](https://github.com/web-platform-dx/web-features/tree/main/scripts/refresh-downstream.ts) triggered by a GitHub [action](https://github.com/web-platform-dx/web-features/tree/main/.github/workflows/refresh_downstream.yml). Useragents.io provides a private API for this module which exposes the last 7 days of newly seen user agents for the currently tracked browsers. If a new major version of one of the tracked browsers is encountered with a Chromium version that meets or exceeds the previous latest version of that browser, it is added to the [src/data/downstream-browsers.json](src/data/downstream-browsers.json) file with the date it was first seen by useragents.io as its release date.
KaiOS is an exception - its upstream version mappings are handled separately from the other browsers because they happen very infrequently.
### List of downstream browsers
| Browser | ID | Core | Source |
| --------------------- | ------------------------- | ------- | ------------------------- |
| Chrome | `chrome` | `true` | MDN `browser-compat-data` |
| Chrome for Android | `chrome_android` | `true` | MDN `browser-compat-data` |
| Edge | `edge` | `true` | MDN `browser-compat-data` |
| Firefox | `firefox` | `true` | MDN `browser-compat-data` |
| Firefox for Android | `firefox_android` | `true` | MDN `browser-compat-data` |
| Safari | `safari` | `true` | MDN `browser-compat-data` |
| Safari on iOS | `safari_ios` | `true` | MDN `browser-compat-data` |
| Opera | `opera` | `false` | MDN `browser-compat-data` |
| Opera Android | `opera_android` | `false` | MDN `browser-compat-data` |
| Samsung Internet | `samsunginternet_android` | `false` | MDN `browser-compat-data` |
| WebView Android | `webview_android` | `false` | MDN `browser-compat-data` |
| QQ Browser Mobile | `qq_android` | `false` | useragents.io |
| UC Browser Mobile | `uc_android` | `false` | useragents.io |
| Yandex Browser Mobile | `ya_android` | `false` | useragents.io |
| KaiOS | `kai_os` | `false` | Manual |
| Facebook for Android | `facebook_android` | `false` | useragents.io |
| Instagram for Android | `instagram_android` | `false` | useragents.io |
> [!NOTE]
> All the non-core browsers currently included implement Chromium or Gecko. Their inclusion in any of the above methods is based on the Baseline feature set supported by the Chromium or Gecko version they implement, not their release date.
@@ -0,0 +1,21 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const RefreshCwOff = createLucideIcon("RefreshCwOff", [
["path", { d: "M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47", key: "1krf6h" }],
["path", { d: "M8 16H3v5", key: "1cv678" }],
["path", { d: "M3 12C3 9.51 4 7.26 5.64 5.64", key: "ruvoct" }],
["path", { d: "m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64", key: "19q130" }],
["path", { d: "M21 12c0 1-.16 1.97-.47 2.87", key: "4w8emr" }],
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
["path", { d: "M22 22 2 2", key: "1r8tn9" }]
]);
export { RefreshCwOff as default };
//# sourceMappingURL=refresh-cw-off.js.map
@@ -0,0 +1,4 @@
const isBrowser = typeof window !== "undefined";
export { isBrowser };
//# sourceMappingURL=is-browser.mjs.map
@@ -0,0 +1,23 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const UserPen = createLucideIcon("UserPen", [
["path", { d: "M11.5 15H7a4 4 0 0 0-4 4v2", key: "15lzij" }],
[
"path",
{
d: "M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",
key: "1817ys"
}
],
["circle", { cx: "10", cy: "7", r: "4", key: "e45bow" }]
]);
export { UserPen as default };
//# sourceMappingURL=user-pen.js.map
@@ -0,0 +1,825 @@
export default `flf2a$ 8 7 20 -1 7
TILES by Ron Fritz 8/94
Figlet Release 2.0
---
Font modified June 17, 2007 by patorjk
This was to widen the space character.
$ $@
$ $@
$ $@
$ $@
$ $@
$ $@
$ $@
$ $@@
[..@
[..@
[..@
[. @
[. @
@
[..@
@@
[. [.@
[. [.@
@
@
@
@
@
@@
@
[.. [.. @
[...... [....@
[.. [.. @
[.. [.. @
[...... [....@
[.. [.. @
@@
[.. @
[. [.. @
[.. @
[.. @
[..@
[.. [.. @
[.. @
@@
@
[.. [.. @
[.. @
[.. @
[.. @
[.. @
[.. [.. @
@@
[. @
[.. [..@
[.. @
[... @
[.. @
[.. [..@
[. @
@@
[..@
[.@
@
@
@
@
@
@@
[..@
[.. @
[.. @
[.. @
[.. @
[.. @
[..@
@@
[.. @
[.. @
[..@
[..@
[..@
[.. @
[.. @
@@
[.. @
[.. [.. [..@
[. [. [.. @
[.... [.......@
[. [. [.. @
[.. [.. [..@
[.. @
@@
@
[.. @
[.. @
[... [.....@
[.. @
[.. @
@
@@
@
@
@
@
@
@
[..@
[.@@
@
@
@
[.....@
@
@
@
@@
@
@
@
@
@
@
[..@
@@
[..@
[.. @
[.. @
[.. @
[.. @
[.. @
[.. @
@@
@
[.. @
[.. [.. @
[.. [.. @
[.. [..@
[.. [.. @
[... @
@@
@
[.. @
[.. @
[.. @
[.. @
[.. @
[....@
@@
@
[. [.. @
[. [..@
[.. @
[.. @
[.. @
[........ @
@@
@
[.. [.. @
[.. @
[.. @
[.. @
[..@
[..... @
@@
@
[.. @
[ [.. @
[. [.. @
[.. [.. @
[.... [. [..@
[.. @
@@
@
[.. [... @
[.. @
[... @
[.. @
[..@
[... [.. @
@@
@
[.. @
[.. @
[.. @
[. [.. @
[.. [..@
[.. [.. @
@@
@
[..... [..@
[.. @
[.. @
[.. @
[.. @
[.. @
@@
@
[. @
[.. [.. @
[.. [. @
[.. [. @
[.. [..@
[.... @
@@
@
[. [.. @
[.. [..@
[. [.. @
[. [.. @
[.. @
[.. @
@@
@
@
@
@
[..@
@
[..@
@@
@
@
@
@
[..@
@
[..@
[.@@
[..@
[.. @
[.. @
[.. @
[.. @
[.. @
[..@
@@
@
@
[......@
@
[......@
@
@
@@
[.. @
[.. @
[.. @
[..@
[.. @
[.. @
[.. @
@@
[... @
[.. @
[..@
[.. @
[.. @
@
[.. @
@@
@
[... @
[. [.. @
[. [.. [..@
[.. [..[ [..@
[.. \`\`\` @
[.. @
@@
[. @
[. .. @
[. [.. @
[.. [.. @
[...... [.. @
[.. [.. @
[.. [..@
@@
[.. [.. @
[. [.. @
[. [..@
[... [. @
[. [..@
[. [.@
[.... [.. @
@@
[.. @
[.. [..@
[.. @
[.. @
[.. @
[.. [..@
[.... @
@@
[..... @
[.. [.. @
[.. [..@
[.. [..@
[.. [..@
[.. [.. @
[..... @
@@
[........@
[.. @
[.. @
[...... @
[.. @
[.. @
[........@
@@
[........@
[.. @
[.. @
[...... @
[.. @
[.. @
[.. @
@@
[.... @
[. [.. @
[.. @
[.. @
[.. [....@
[.. [. @
[..... @
@@
[.. [..@
[.. [..@
[.. [..@
[...... [..@
[.. [..@
[.. [..@
[.. [..@
@@
[..@
[..@
[..@
[..@
[..@
[..@
[..@
@@
[..@
[..@
[..@
[..@
[..@
[. [..@
[.... @
@@
[.. [.. @
[.. [.. @
[.. [.. @
[. [. @
[.. [.. @
[.. [.. @
[.. [..@
@@
[.. @
[.. @
[.. @
[.. @
[.. @
[.. @
[........@
@@
[.. [..@
[. [.. [...@
[.. [.. [ [..@
[.. [.. [..@
[.. [. [..@
[.. [..@
[.. [..@
@@
[... [..@
[. [.. [..@
[.. [.. [..@
[.. [.. [..@
[.. [. [..@
[.. [. ..@
[.. [..@
@@
[.... @
[.. [.. @
[.. [..@
[.. [..@
[.. [..@
[.. [.. @
[.... @
@@
[....... @
[.. [..@
[.. [..@
[....... @
[.. @
[.. @
[.. @
@@
[.... @
[.. [.. @
[.. [..@
[.. [..@
[.. [..@
[.. [. [.. @
[.. .. @
[. @@
[....... @
[.. [.. @
[.. [.. @
[. [.. @
[.. [.. @
[.. [.. @
[.. [..@
@@
[.. .. @
[.. [..@
[.. @
[.. @
[.. @
[.. [..@
[.. .. @
@@
[... [......@
[.. @
[.. @
[.. @
[.. @
[.. @
[.. @
@@
[.. [..@
[.. [..@
[.. [..@
[.. [..@
[.. [..@
[.. [..@
[..... @
@@
[.. [..@
[.. [.. @
[.. [.. @
[.. [.. @
[.. [.. @
[.... @
[.. @
@@
[.. [..@
[.. [..@
[.. [. [..@
[.. [.. [..@
[.. [. [.. [..@
[. [. [....@
[.. [..@
@@
[.. [..@
[.. [.. @
[.. [.. @
[.. @
[.. [.. @
[.. [.. @
[.. [..@
@@
[.. [..@
[.. [.. @
[.. [.. @
[.. @
[.. @
[.. @
[.. @
@@
[....... [..@
[.. @
[.. @
[.. @
[.. @
[.. @
[...........@
@@
[....@
[.. @
[.. @
[.. @
[.. @
[.. @
[....@
@@
[.. @
[.. @
[.. @
[.. @
[.. @
[.. @
[..@
@@
[....@
[..@
[..@
[..@
[..@
[..@
[....@
@@
[.. @
[.. [.. @
[.. [..@
@
@
@
@
@@
@
@
@
@
@
@
@
[.....@@
[..@
[. @
@
@
@
@
@
@@
@
@
[.. @
[.. [.. @
[.. [.. @
[.. [.. @
[.. [...@
@@
[.. @
[.. @
[.. @
[.. [.. @
[.. [..@
[.. [..@
[.. [.. @
@@
@
@
[...@
[.. @
[.. @
[.. @
[...@
@@
[..@
[..@
[..@
[.. [..@
[. [..@
[. [..@
[.. [..@
@@
@
@
[.. @
[. [.. @
[..... [..@
[. @
[.... @
@@
[..@
[. @
[.[. [.@
[.. @
[.. @
[.. @
[.. @
@@
@
@
[.. @
[.. [..@
[.. [..@
[.. [..@
[.. @
[.. @@
@
[.. @
[.. @
[. [. @
[.. [..@
[. [..@
[.. [..@
@@
@
[.@
@
[..@
[..@
[..@
[..@
@@
@
[..@
@
[..@
[..@
[..@
[..@
[... @@
[.. @
[.. @
[.. [..@
[.. [.. @
[.[.. @
[.. [.. @
[.. [..@
@@
[..@
[..@
[..@
[..@
[..@
[..@
[...@
@@
@
@
[... [.. [.. @
[.. [. [..@
[.. [. [..@
[.. [. [..@
[... [. [..@
@@
@
@
[.. [.. @
[.. [..@
[.. [..@
[.. [..@
[... [..@
@@
@
@
[.. @
[.. [.. @
[.. [..@
[.. [.. @
[.. @
@@
@
@
[. [.. @
[. [.. @
[. [..@
[.. [.. @
[.. @
[.. @@
@
@
[.. @
[. [.. @
[. [.. @
[..[.. @
[.. @
[...@@
@
@
[. [...@
[.. @
[.. @
[.. @
[... @
@@
@
@
[.... @
[.. @
[... @
[..@
[.. [..@
@@
[.. @
[.. @
[.[. [.@
[.. @
[.. @
[.. @
[.. @
@@
@
@
[.. [..@
[.. [..@
[.. [..@
[.. [..@
[..[..@
@@
@
@
[.. [..@
[.. [.. @
[.. [.. @
[.[.. @
[.. @
@@
@
@
[.. [...@
[.. . [..@
[.. [. [..@
[. [. [.[..@
[... [...@
@@
@
@
[.. [..@
[. [.. @
[. @
[. [.. @
[.. [..@
@@
@
@
[.. [..@
[.. [.. @
[... @
[.. @
[.. @
[.. @@
@
@
[.... [..@
[.. @
[.. @
[.. @
[........@
@@
[..@
[.. @
[.. @
[.. @
[.. @
[.. @
[..@
@@
[.@
[.@
[.@
@
[.@
[.@
[.@
@@
[.. @
[.. @
[.. @
[..@
[.. @
[.. @
[.. @
@@
[.. [. @
[. [..@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
`
@@ -0,0 +1 @@
{"version":3,"file":"award.js","sources":["../../../src/icons/award.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Award\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUuNDc3IDEyLjg5IDEuNTE1IDguNTI2YS41LjUgMCAwIDEtLjgxLjQ3bC0zLjU4LTIuNjg3YTEgMSAwIDAgMC0xLjE5NyAwbC0zLjU4NiAyLjY4NmEuNS41IDAgMCAxLS44MS0uNDY5bDEuNTE0LTguNTI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iOCIgcj0iNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/award\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Award = createLucideIcon('Award', [\n [\n 'path',\n {\n d: 'm15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526',\n key: '1yiouv',\n },\n ],\n ['circle', { cx: '12', cy: '8', r: '6', key: '1vp47v' }],\n]);\n\nexport default Award;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,iBAAiB,OAAS,CAAA,CAAA,CAAA;AAAA,CACtC,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACA,CAAA,CAAA,CAAA,CAAA;AAAA,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACP,CAAA,CAAA,CAAA,CAAA;AAAA,CACF,CAAA,CAAA,CAAA;AAAA,CACA,CAAA,CAAC,QAAU,CAAA,CAAA,CAAA,CAAE,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAM,CAAI,CAAA,CAAA,CAAA,GAAA,CAAK,CAAA,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAK,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA;AACzD,CAAC,CAAA,CAAA;;"}
@@ -0,0 +1,158 @@
import Options from './Options'
import {
CrackTimes,
CrackTimesSeconds,
Score,
TimeEstimationValues,
} from './types'
const SECOND = 1
const MINUTE = SECOND * 60
const HOUR = MINUTE * 60
const DAY = HOUR * 24
const MONTH = DAY * 31
const YEAR = MONTH * 12
const CENTURY = YEAR * 100
const times = {
second: SECOND,
minute: MINUTE,
hour: HOUR,
day: DAY,
month: MONTH,
year: YEAR,
century: CENTURY,
}
export const timeEstimationValuesDefaults: TimeEstimationValues = {
scoring: {
0: 1e3,
1: 1e6,
2: 1e8,
3: 1e10,
},
attackTime: {
onlineThrottlingXPerHour: 100,
onlineNoThrottlingXPerSecond: 10,
offlineSlowHashingXPerSecond: 1e4,
offlineFastHashingXPerSecond: 1e10,
},
}
export const checkTimeEstimationValues = (
timeEstimationValues: TimeEstimationValues,
) => {
Object.entries(timeEstimationValues).forEach(([key, data]) => {
Object.entries(data).forEach(([subKey, value]) => {
// @ts-expect-error for testing purposes
if (value < timeEstimationValuesDefaults[key][subKey]) {
throw new Error(
'Time estimation values are not to be allowed to be less than default',
)
}
})
})
}
/*
* -------------------------------------------------------------------------------
* Estimates time for an attacker ---------------------------------------------------------------
* -------------------------------------------------------------------------------
*/
export class TimeEstimates {
constructor(private options: Options) {}
public estimateAttackTimes(guesses: number) {
const crackTimesSeconds = this.calculateCrackTimesSeconds(guesses)
const crackTimes = {} as CrackTimes
Object.keys(crackTimesSeconds).forEach((crackTime) => {
const usedScenario = crackTime as keyof CrackTimesSeconds
const seconds = crackTimesSeconds[usedScenario]
const { base, displayStr } = this.displayTime(seconds)
crackTimes[usedScenario] = {
base,
seconds,
display: this.translate(displayStr, base),
}
})
return {
crackTimes,
score: this.guessesToScore(guesses),
}
}
private calculateCrackTimesSeconds(guesses: number): CrackTimesSeconds {
const attackTimesOptions = this.options.timeEstimationValues.attackTime
return {
onlineThrottlingXPerHour:
guesses / (attackTimesOptions.onlineThrottlingXPerHour / 3600),
onlineNoThrottlingXPerSecond:
guesses / attackTimesOptions.onlineNoThrottlingXPerSecond,
offlineSlowHashingXPerSecond:
guesses / attackTimesOptions.offlineSlowHashingXPerSecond,
offlineFastHashingXPerSecond:
guesses / attackTimesOptions.offlineFastHashingXPerSecond,
}
}
private guessesToScore(guesses: number): Score {
const scoringOptions = this.options.timeEstimationValues.scoring
const DELTA = 5
if (guesses < scoringOptions[0] + DELTA) {
// risky password: "too guessable"
return 0
}
if (guesses < scoringOptions[1] + DELTA) {
// modest protection from throttled online attacks: "very guessable"
return 1
}
if (guesses < scoringOptions[2] + DELTA) {
// modest protection from unthrottled online attacks: "somewhat guessable"
return 2
}
if (guesses < scoringOptions[3] + DELTA) {
// modest protection from offline attacks: "safely unguessable"
// assuming a salted, slow hash function like bcrypt, scrypt, PBKDF2, argon, etc
return 3
}
// strong protection from offline attacks under same scenario: "very unguessable"
return 4
}
private displayTime(seconds: number) {
let displayStr = 'centuries'
let base = null
const timeKeys = Object.keys(times)
const foundIndex = timeKeys.findIndex(
(time) => seconds < times[time as keyof typeof times],
)
if (foundIndex > -1) {
displayStr = timeKeys[foundIndex - 1]
if (foundIndex !== 0) {
base = Math.round(seconds / times[displayStr as keyof typeof times])
} else {
displayStr = 'ltSecond'
}
}
return {
base,
displayStr,
}
}
private translate(displayStr: string, value: number | null) {
let key = displayStr
if (value !== null && value !== 1) {
key += 's'
}
const { timeEstimation } = this.options.translations
const translation = timeEstimation[key as keyof typeof timeEstimation]
if (typeof translation === 'function') {
return translation(value!)
}
return translation.replace('{base}', `${value}`)
}
}
@@ -0,0 +1,16 @@
import { isZeroValueString } from 'motion-utils';
function isNone(value) {
if (typeof value === "number") {
return value === 0;
}
else if (value !== null) {
return value === "none" || value === "0" || isZeroValueString(value);
}
else {
return true;
}
}
export { isNone };
//# sourceMappingURL=is-none.mjs.map
@@ -0,0 +1,34 @@
'use strict'
const test = require('tape')
const fastURI = require('..')
test('IPv6 hosts normalize to the RFC 5952 canonical form', (t) => {
const cases = [
['http://[0:0:0:0:0:0:0:1]/', 'http://[::1]/'],
['http://[0:0:0:0:0:0:0:0]/', 'http://[::]/'],
['http://[2001:0db8:0000:0000:0000:0000:0000:0001]/', 'http://[2001:db8::1]/'],
['http://[2001:0:0:0:0:0:0:1]/', 'http://[2001::1]/'],
['http://[fe80:0:0:0:0:0:0:1]/', 'http://[fe80::1]/'],
['http://[1:0:0:0:2:0:0:3]/', 'http://[1::2:0:0:3]/']
]
for (const [uri, normalized] of cases) {
t.equal(fastURI.normalize(uri), normalized, `${uri} normalizes to ${normalized}`)
}
t.end()
})
test('IPv6 equal() matches the same address across compressed and expanded forms', (t) => {
const pairs = [
['http://[::1]/', 'http://[0:0:0:0:0:0:0:1]/'],
['http://[::]/', 'http://[0:0:0:0:0:0:0:0]/'],
['http://[2001:db8::1]/', 'http://[2001:0db8:0000:0000:0000:0000:0000:0001]/'],
['http://[1::2:0:0:3]/', 'http://[1:0:0:0:2:0:0:3]/']
]
for (const [a, b] of pairs) {
t.equal(fastURI.equal(a, b), true, `${a} equals ${b}`)
}
t.end()
})
@@ -0,0 +1,29 @@
import {TokenType as tt} from "../parser/tokenizer/types";
export default function elideImportEquals(tokens) {
// import
tokens.removeInitialToken();
// name
tokens.removeToken();
// =
tokens.removeToken();
// name or require
tokens.removeToken();
// Handle either `import A = require('A')` or `import A = B.C.D`.
if (tokens.matches1(tt.parenL)) {
// (
tokens.removeToken();
// path string
tokens.removeToken();
// )
tokens.removeToken();
} else {
while (tokens.matches1(tt.dot)) {
// .
tokens.removeToken();
// name
tokens.removeToken();
}
}
}
@@ -0,0 +1,28 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inherits;
var _index = require("../constants/index.js");
var _inheritsComments = require("../comments/inheritsComments.js");
function inherits(child, parent) {
if (!child || !parent) return child;
for (const key of _index.INHERIT_KEYS.optional) {
if (child[key] == null) {
child[key] = parent[key];
}
}
for (const key of Object.keys(parent)) {
if (key.startsWith("_") && key !== "__clone") {
child[key] = parent[key];
}
}
for (const key of _index.INHERIT_KEYS.force) {
child[key] = parent[key];
}
(0, _inheritsComments.default)(child, parent);
return child;
}
//# sourceMappingURL=inherits.js.map
@@ -0,0 +1,44 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = matchesPattern;
var _index = require("./generated/index.js");
function isMemberExpressionLike(node) {
return (0, _index.isMemberExpression)(node) || (0, _index.isMetaProperty)(node);
}
function matchesPattern(member, match, allowPartial) {
if (!isMemberExpressionLike(member)) return false;
const parts = Array.isArray(match) ? match : match.split(".");
const nodes = [];
let node;
for (node = member; isMemberExpressionLike(node); node = (_object = node.object) != null ? _object : node.meta) {
var _object;
nodes.push(node.property);
}
nodes.push(node);
if (nodes.length < parts.length) return false;
if (!allowPartial && nodes.length > parts.length) return false;
for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
const node = nodes[j];
let value;
if ((0, _index.isIdentifier)(node)) {
value = node.name;
} else if ((0, _index.isStringLiteral)(node)) {
value = node.value;
} else if ((0, _index.isThisExpression)(node)) {
value = "this";
} else if ((0, _index.isSuper)(node)) {
value = "super";
} else if ((0, _index.isPrivateName)(node)) {
value = "#" + node.id.name;
} else {
return false;
}
if (parts[i] !== value) return false;
}
return true;
}
//# sourceMappingURL=matchesPattern.js.map
@@ -0,0 +1 @@
module.exports={A:{A:{"2":"_b","2561":"_A","2692":"F"},B:{"1":"_K","2561":"_I"},C:{"1":"_1D","16":"GD","1537":"_rG LD","1796":"fC KD"},D:{"1":"_sO","16":"_Y","1025":"_bQ _DD","1537":"_dF"},E:{"1":"_bE","16":"_wB _e","1025":"_iC _FE _zB _ID","1537":"ND","4097":"M aC"},F:{"1":"_RI aC","16":"_j _SH _tB","260":"cD","1025":"_1B _UO","1537":"_cH"},G:{"1":"_iP _TD","16":"_d","1025":"_vJ","1537":"_jL","4097":"pD qD"},H:{"2":"1D"},I:{"16":"_m","1025":"_YD","1537":"_hL 6D"},J:{"1025":"A","1537":"D"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"YC"},N:{"2561":"_A"},O:{"1":"bC"},P:{"1025":"_F"},Q:{"1":"JE"},R:{"1":"KE"},S:{"1":"ME","1537":"LE"}},B:1,C:"input event",D:true};
@@ -0,0 +1,13 @@
const variantPriorityOrder = [
"animate",
"whileInView",
"whileFocus",
"whileHover",
"whileTap",
"whileDrag",
"exit",
];
const variantProps = ["initial", ...variantPriorityOrder];
export { variantPriorityOrder, variantProps };
//# sourceMappingURL=variant-props.mjs.map
@@ -0,0 +1,23 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const FolderCode = createLucideIcon("FolderCode", [
["path", { d: "M10 10.5 8 13l2 2.5", key: "m4t9c1" }],
["path", { d: "m14 10.5 2 2.5-2 2.5", key: "14w2eb" }],
[
"path",
{
d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z",
key: "1u1bxd"
}
]
]);
export { FolderCode as default };
//# sourceMappingURL=folder-code.js.map
@@ -0,0 +1 @@
{"version":3,"file":"use-cycle.mjs","sources":["../../../src/utils/use-cycle.ts"],"sourcesContent":["\"use client\"\n\nimport { wrap } from \"motion-utils\"\nimport { useCallback, useRef, useState } from \"react\"\n\nexport type Cycle = (i?: number) => void\n\nexport type CycleState<T> = [T, Cycle]\n\n/**\n * Cycles through a series of visual properties. Can be used to toggle between or cycle through animations. It works similar to `useState` in React. It is provided an initial array of possible states, and returns an array of two arguments.\n *\n * An index value can be passed to the returned `cycle` function to cycle to a specific index.\n *\n * ```jsx\n * import * as React from \"react\"\n * import { motion, useCycle } from \"framer-motion\"\n *\n * export const MyComponent = () => {\n * const [x, cycleX] = useCycle(0, 50, 100)\n *\n * return (\n * <motion.div\n * animate={{ x: x }}\n * onTap={() => cycleX()}\n * />\n * )\n * }\n * ```\n *\n * @param items - items to cycle through\n * @returns [currentState, cycleState]\n *\n * @public\n */\nexport function useCycle<T>(...items: T[]): CycleState<T> {\n const index = useRef(0)\n const [item, setItem] = useState(items[index.current])\n\n const runCycle = useCallback(\n (next?: number) => {\n index.current =\n typeof next !== \"number\"\n ? wrap(0, items.length, index.current + 1)\n : next\n\n setItem(items[index.current])\n },\n // The array will change on each call, but by putting items.length at\n // the front of this array, we guarantee the dependency comparison will match up\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [items.length, ...items]\n )\n return [item, runCycle]\n}\n"],"names":[],"mappings":";;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACG;AACF;AACA;AAEA;AAEQ;;AAEQ;;;;;;;;AAUhB;AACJ;;"}
@@ -0,0 +1,35 @@
"use strict";
const basicLogPrefix = require("./basicLogPrefix.js");
class ConsoleAppender {
/**
* Constructor (构造函数)
* @param layout Layout (布局)
*/
constructor(layout) {
this.layout = layout;
this.name = "console";
this.dateFormat = "HH:mm:ss.SSS";
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
setup(logger) {
}
/**
* Write log (写入日志)
* @param event Log event (日志事件)
*/
write(event) {
const { layout } = this;
if (layout) {
console.log(layout.format(event));
} else {
console.log(basicLogPrefix(event, this.dateFormat), ...event.message);
}
}
/**
* Close appender (关闭输出)
*/
close() {
return Promise.resolve();
}
}
module.exports = ConsoleAppender;
@@ -0,0 +1 @@
{"version":3,"file":"Options.mjs","sources":["../src/Options.ts"],"sourcesContent":[null],"names":["Options","constructor","options","customMatchers","matchers","l33tTable","trieNodeRoot","l33tTableToTrieNode","TrieNode","dictionary","userInputs","rankedDictionaries","rankedDictionariesMaxWordSize","translations","translationKeys","graphs","useLevenshteinDistance","levenshteinThreshold","l33tMaxSubstitutions","maxLength","wordSequenceNames","timeEstimationValues","scoring","timeEstimationValuesDefaults","attackTime","setOptions","Object","entries","forEach","name","matcher","addMatcher","isWordSequence","key","some","startsWith","setRankedDictionaries","setTranslations","undefined","checkTimeEstimationValues","checkCustomTranslations","Error","valid","keys","type","translationType","translation","rankedDictionariesMaxWorkSize","buildRankedDictionary","getRankedDictionariesMaxWordSize","list","data","map","el","toString","length","reduce","a","b","Math","max","Infinity","buildSanitizedRankedDictionary","sanitizedInputs","input","inputType","push","toLowerCase","getUserInputsOptions","rankedDictionary","rankedDictionaryMaxWordSize","console","info"],"mappings":";;;;;;;AAuBc,MAAOA,OAAO,CAAA;EAoD1BC,WAAAA,CACEC,OAAA,GAAuB,EAAE,EACzBC,cAAA,GAA0C,EAAE,EAAA;AArDvC,IAAA,IAAA,CAAAC,QAAQ,GAAa,EAAE;IAEvB,IAAA,CAAAC,SAAS,GAAqBA,SAAS;IAEvC,IAAA,CAAAC,YAAY,GAAaC,mBAAmB,CAACF,SAAS,EAAE,IAAIG,QAAQ,EAAE,CAAC;IAEvE,IAAA,CAAAC,UAAU,GAAsB;AACrCC,MAAAA,UAAU,EAAE;KACb;AAEM,IAAA,IAAA,CAAAC,kBAAkB,GAAuB,EAAE;AAE3C,IAAA,IAAA,CAAAC,6BAA6B,GAA2B,EAAE;IAE1D,IAAA,CAAAC,YAAY,GAAoBC,eAAe;AAE/C,IAAA,IAAA,CAAAC,MAAM,GAAiB,EAAE;IAEzB,IAAA,CAAAC,sBAAsB,GAAG,KAAK;IAE9B,IAAA,CAAAC,oBAAoB,GAAG,CAAC;IAExB,IAAA,CAAAC,oBAAoB,GAAG,GAAG;IAE1B,IAAA,CAAAC,SAAS,GAAG,GAAG;AAEf,IAAA,IAAA,CAAAC,iBAAiB,GAAG,CACzB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,eAAe,EACf,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,eAAe,CAChB;IAED,IAAA,CAAAC,oBAAoB,GAAyB;AAC3CC,MAAAA,OAAO,EAAE;AACP,QAAA,GAAGC,4BAA4B,CAACD;OACjC;AACDE,MAAAA,UAAU,EAAE;AACV,QAAA,GAAGD,4BAA4B,CAACC;AACjC;KACF;AAKC,IAAA,IAAI,CAACC,UAAU,CAACvB,OAAO,CAAC;AACxBwB,IAAAA,MAAM,CAACC,OAAO,CAACxB,cAAc,CAAC,CAACyB,OAAO,CAAC,CAAC,CAACC,IAAI,EAAEC,OAAO,CAAC,KAAI;AACzD,MAAA,IAAI,CAACC,UAAU,CAACF,IAAI,EAAEC,OAAO,CAAC;AAChC,IAAA,CAAC,CAAC;AACJ,EAAA;EACOE,cAAcA,CAACC,GAAW,EAAA;IAC/B,OAAO,IAAI,CAACb,iBAAiB,CAACc,IAAI,CAC/BL,IAAI,IAAKI,GAAG,KAAKJ,IAAI,IAAII,GAAG,CAACE,UAAU,CAAC,GAAGN,IAAI,CAAA,CAAA,CAAG,CAAC,CACrD;AACH,EAAA;AAEA;AACQJ,EAAAA,UAAUA,CAACvB,UAAuB,EAAE,EAAA;IAC1C,IAAIA,OAAO,CAACG,SAAS,EAAE;AACrB,MAAA,IAAI,CAACA,SAAS,GAAGH,OAAO,CAACG,SAAS;AAClC,MAAA,IAAI,CAACC,YAAY,GAAGC,mBAAmB,CAACL,OAAO,CAACG,SAAS,EAAE,IAAIG,QAAQ,EAAE,CAAC;AAC5E,IAAA;IAEA,IAAIN,OAAO,CAACO,UAAU,EAAE;AACtB,MAAA,IAAI,CAACA,UAAU,GAAGP,OAAO,CAACO,UAAU;MAEpC,IAAI,CAAC2B,qBAAqB,EAAE;AAC9B,IAAA;IAEA,IAAIlC,OAAO,CAACW,YAAY,EAAE;AACxB,MAAA,IAAI,CAACwB,eAAe,CAACnC,OAAO,CAACW,YAAY,CAAC;AAC5C,IAAA;IAEA,IAAIX,OAAO,CAACa,MAAM,EAAE;AAClB,MAAA,IAAI,CAACA,MAAM,GAAGb,OAAO,CAACa,MAAM;AAC9B,IAAA;AAEA,IAAA,IAAIb,OAAO,CAACc,sBAAsB,KAAKsB,SAAS,EAAE;AAChD,MAAA,IAAI,CAACtB,sBAAsB,GAAGd,OAAO,CAACc,sBAAsB;AAC9D,IAAA;AAEA,IAAA,IAAId,OAAO,CAACe,oBAAoB,KAAKqB,SAAS,EAAE;AAC9C,MAAA,IAAI,CAACrB,oBAAoB,GAAGf,OAAO,CAACe,oBAAoB;AAC1D,IAAA;AAEA,IAAA,IAAIf,OAAO,CAACgB,oBAAoB,KAAKoB,SAAS,EAAE;AAC9C,MAAA,IAAI,CAACpB,oBAAoB,GAAGhB,OAAO,CAACgB,oBAAoB;AAC1D,IAAA;AAEA,IAAA,IAAIhB,OAAO,CAACiB,SAAS,KAAKmB,SAAS,EAAE;AACnC,MAAA,IAAI,CAACnB,SAAS,GAAGjB,OAAO,CAACiB,SAAS;AACpC,IAAA;AAEA,IAAA,IAAIjB,OAAO,CAACmB,oBAAoB,KAAKiB,SAAS,EAAE;AAC9CC,MAAAA,yBAAyB,CAACrC,OAAO,CAACmB,oBAAoB,CAAC;MACvD,IAAI,CAACA,oBAAoB,GAAG;AAC1BC,QAAAA,OAAO,EAAE;UACP,GAAGpB,OAAO,CAACmB,oBAAoB,CAACC;SACjC;AACDE,QAAAA,UAAU,EAAE;UACV,GAAGtB,OAAO,CAACmB,oBAAoB,CAACG;AACjC;OACF;AACH,IAAA;AACF,EAAA;EAEQa,eAAeA,CAACxB,YAA6B,EAAA;AACnD,IAAA,IAAI,IAAI,CAAC2B,uBAAuB,CAAC3B,YAAY,CAAC,EAAE;MAC9C,IAAI,CAACA,YAAY,GAAGA,YAAY;AAClC,IAAA,CAAC,MAAM;AACL,MAAA,MAAM,IAAI4B,KAAK,CAAC,8CAA8C,CAAC;AACjE,IAAA;AACF,EAAA;EAEQD,uBAAuBA,CAAC3B,YAA6B,EAAA;IAC3D,IAAI6B,KAAK,GAAG,IAAI;IAChBhB,MAAM,CAACiB,IAAI,CAAC7B,eAAe,CAAC,CAACc,OAAO,CAAEgB,IAAI,IAAI;MAC5C,IAAIA,IAAI,IAAI/B,YAAY,EAAE;QACxB,MAAMgC,eAAe,GAAGD,IAAoC;AAC5DlB,QAAAA,MAAM,CAACiB,IAAI,CAAC7B,eAAe,CAAC+B,eAAe,CAAC,CAAC,CAACjB,OAAO,CAAEK,GAAG,IAAI;UAC5D,IAAI,EAAEA,GAAG,IAAIpB,YAAY,CAACgC,eAAe,CAAC,CAAC,EAAE;AAC3CH,YAAAA,KAAK,GAAG,KAAK;AACf,UAAA;UACA,MAAMI,WAAW,GAAIjC,YAAY,CAACgC,eAAe,CAAS,CAACZ,GAAG,CAAC;UAC/D,IACE,OAAOa,WAAW,KAAK,QAAQ,IAC/B,OAAOA,WAAW,KAAK,UAAU,EACjC;AACAJ,YAAAA,KAAK,GAAG,KAAK;AACf,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,MAAM;AACLA,QAAAA,KAAK,GAAG,KAAK;AACf,MAAA;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAOA,KAAK;AACd,EAAA;AAEQN,EAAAA,qBAAqBA,GAAA;IAC3B,MAAMzB,kBAAkB,GAAuB,EAAE;IACjD,MAAMoC,6BAA6B,GAA2B,EAAE;IAChErB,MAAM,CAACiB,IAAI,CAAC,IAAI,CAAClC,UAAU,CAAC,CAACmB,OAAO,CAAEC,IAAI,IAAI;AAC5ClB,MAAAA,kBAAkB,CAACkB,IAAI,CAAC,GAAGmB,qBAAqB,CAAC,IAAI,CAACvC,UAAU,CAACoB,IAAI,CAAC,CAAC;AACvEkB,MAAAA,6BAA6B,CAAClB,IAAI,CAAC,GACjC,IAAI,CAACLine truncated
@@ -0,0 +1,48 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReferenceTracker = void 0;
/* eslint-disable @typescript-eslint/no-namespace */
const eslintUtils = __importStar(require("@eslint-community/eslint-utils"));
const ReferenceTrackerREAD = eslintUtils.ReferenceTracker.READ;
const ReferenceTrackerCALL = eslintUtils.ReferenceTracker.CALL;
const ReferenceTrackerCONSTRUCT = eslintUtils.ReferenceTracker.CONSTRUCT;
const ReferenceTrackerESM = eslintUtils.ReferenceTracker.ESM;
/**
* The tracker for references. This provides reference tracking for global variables, CommonJS modules, and ES modules.
*
* @see {@link https://eslint-community.github.io/eslint-utils/api/scope-utils.html#referencetracker-class}
*/
exports.ReferenceTracker = eslintUtils.ReferenceTracker;
@@ -0,0 +1,270 @@
'use strict'
const assert = require('node:assert')
const { AsyncResource } = require('node:async_hooks')
const { InvalidArgumentError, InvalidReturnValueError } = require('../core/errors')
const util = require('../core/util')
const { addSignal, removeSignal } = require('./abort-signal')
function noop () {}
function getWritableError (stream) {
return stream.errored ?? stream.writableErrored ?? stream._writableState?.errored
}
function createPrematureCloseError () {
const err = new Error('Premature close')
err.code = 'ERR_STREAM_PREMATURE_CLOSE'
return err
}
function trackWritableLifecycle (stream, callback) {
let done = false
const cleanup = () => {
stream.removeListener('close', onClose)
stream.removeListener('error', onError)
stream.removeListener('finish', onFinish)
}
const finish = (err, fromErrorEvent = false) => {
if (done) {
return
}
done = true
cleanup()
callback(err, fromErrorEvent)
}
const onClose = () => {
const err = getWritableError(stream)
finish(err ?? (!stream.writableFinished ? createPrematureCloseError() : undefined))
}
const onError = (err) => finish(err, true)
const onFinish = () => finish()
stream.on('close', onClose)
stream.on('error', onError)
stream.on('finish', onFinish)
if (stream.closed) {
process.nextTick(onClose)
} else if (stream.writableFinished) {
process.nextTick(onFinish)
}
}
class StreamHandler extends AsyncResource {
constructor (opts, factory, callback) {
if (!opts || typeof opts !== 'object') {
throw new InvalidArgumentError('invalid opts')
}
const { signal, method, opaque, body, onInfo, responseHeaders } = opts
try {
if (typeof callback !== 'function') {
throw new InvalidArgumentError('invalid callback')
}
if (typeof factory !== 'function') {
throw new InvalidArgumentError('invalid factory')
}
if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
}
if (method === 'CONNECT') {
throw new InvalidArgumentError('invalid method')
}
if (onInfo && typeof onInfo !== 'function') {
throw new InvalidArgumentError('invalid onInfo callback')
}
super('UNDICI_STREAM')
} catch (err) {
if (util.isStream(body)) {
util.destroy(body.on('error', noop), err)
}
throw err
}
this.responseHeaders = responseHeaders || null
this.opaque = opaque || null
this.factory = factory
this.callback = callback
this.res = null
this.abort = null
this.context = null
this.controller = null
this.trailers = null
this.body = body
this.onInfo = onInfo || null
if (util.isStream(body)) {
body.on('error', (err) => {
this.onResponseError(this.controller, err)
})
}
addSignal(this, signal)
}
onRequestStart (controller, context) {
if (this.reason) {
controller.abort(this.reason)
return
}
assert(this.callback)
this.controller = controller
this.abort = (reason) => controller.abort(reason)
this.context = context
}
onResponseStart (controller, statusCode, headers, _statusMessage) {
const { factory, opaque, context, responseHeaders } = this
const rawHeaders = controller?.rawHeaders
const responseHeaderData = responseHeaders === 'raw'
? util.parseRawHeaders(rawHeaders)
: headers
if (statusCode < 200) {
if (this.onInfo) {
this.onInfo({ statusCode, headers: responseHeaderData })
}
return
}
this.factory = null
if (factory === null) {
return
}
const res = this.runInAsyncScope(factory, null, {
statusCode,
headers: responseHeaderData,
opaque,
context
})
if (
!res ||
typeof res.write !== 'function' ||
typeof res.end !== 'function' ||
typeof res.on !== 'function'
) {
throw new InvalidReturnValueError('expected Writable')
}
trackWritableLifecycle(res, (err, fromErrorEvent) => {
const { callback, res, opaque, trailers, abort } = this
this.res = null
if (err || !res?.readable) {
util.destroy(res, fromErrorEvent ? undefined : err)
}
this.callback = null
this.runInAsyncScope(callback, null, err || null, { opaque, trailers })
if (err) {
abort(err)
}
})
res.on('drain', () => controller.resume())
this.res = res
const needDrain = res.writableNeedDrain !== undefined
? res.writableNeedDrain
: res._writableState?.needDrain
if (needDrain === true) {
controller.pause()
}
}
onResponseData (controller, chunk) {
const { res } = this
if (!res) {
return
}
if (res.write(chunk) === false) {
controller.pause()
}
}
onResponseEnd (_controller, trailers) {
const { res } = this
removeSignal(this)
if (!res) {
return
}
if (trailers && typeof trailers === 'object') {
this.trailers = trailers
}
res.end()
}
onResponseError (_controller, err) {
const { res, callback, opaque, body } = this
removeSignal(this)
this.factory = null
if (res) {
this.res = null
util.destroy(res, err)
} else if (callback) {
this.callback = null
queueMicrotask(() => {
this.runInAsyncScope(callback, null, err, { opaque })
})
}
if (body) {
this.body = null
util.destroy(body, err)
}
}
}
function stream (opts, factory, callback) {
if (callback === undefined) {
return new Promise((resolve, reject) => {
stream.call(this, opts, factory, (err, data) => {
return err ? reject(err) : resolve(data)
})
})
}
try {
const handler = new StreamHandler(opts, factory, callback)
this.dispatch(opts, handler)
} catch (err) {
if (typeof callback !== 'function') {
throw err
}
const opaque = opts?.opaque
queueMicrotask(() => callback(err, { opaque }))
}
}
module.exports = stream
@@ -0,0 +1,25 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
//#region src/middleware/powered-by/index.ts
/**
* Powered By Middleware for Hono.
*
* @param options - The options for the Powered By Middleware.
* @returns {MiddlewareHandler} The middleware handler function.
*
* @example
* ```ts
* import { poweredBy } from 'hono/powered-by'
*
* const app = new Hono()
*
* app.use(poweredBy()) // With options: poweredBy({ serverName: "My Server" })
* ```
*/
const poweredBy = (options) => {
return async function poweredBy(c, next) {
await next();
c.res.headers.set("X-Powered-By", options?.serverName ?? "Hono");
};
};
//#endregion
exports.poweredBy = poweredBy;
@@ -0,0 +1,2 @@
import { requestId } from "./request-id.js";
export { requestId };
@@ -0,0 +1,17 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const CircleArrowDown = createLucideIcon("CircleArrowDown", [
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
["path", { d: "M12 8v8", key: "napkw2" }],
["path", { d: "m8 12 4 4 4-4", key: "k98ssh" }]
]);
export { CircleArrowDown as default };
//# sourceMappingURL=circle-arrow-down.js.map
@@ -0,0 +1,270 @@
'use strict';
module.exports = function generate_required(it, $keyword, $ruleType) {
var out = ' ';
var $lvl = it.level;
var $dataLvl = it.dataLevel;
var $schema = it.schema[$keyword];
var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
var $breakOnError = !it.opts.allErrors;
var $data = 'data' + ($dataLvl || '');
var $valid = 'valid' + $lvl;
var $isData = it.opts.$data && $schema && $schema.$data,
$schemaValue;
if ($isData) {
out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
$schemaValue = 'schema' + $lvl;
} else {
$schemaValue = $schema;
}
var $vSchema = 'schema' + $lvl;
if (!$isData) {
if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {
var $required = [];
var arr1 = $schema;
if (arr1) {
var $property, i1 = -1,
l1 = arr1.length - 1;
while (i1 < l1) {
$property = arr1[i1 += 1];
var $propertySch = it.schema.properties[$property];
if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {
$required[$required.length] = $property;
}
}
}
} else {
var $required = $schema;
}
}
if ($isData || $required.length) {
var $currentErrorPath = it.errorPath,
$loopRequired = $isData || $required.length >= it.opts.loopRequired,
$ownProperties = it.opts.ownProperties;
if ($breakOnError) {
out += ' var missing' + ($lvl) + '; ';
if ($loopRequired) {
if (!$isData) {
out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
}
var $i = 'i' + $lvl,
$propertyPath = 'schema' + $lvl + '[' + $i + ']',
$missingProperty = '\' + ' + $propertyPath + ' + \'';
if (it.opts._errorDataPathProperty) {
it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
}
out += ' var ' + ($valid) + ' = true; ';
if ($isData) {
out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';
}
out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';
if ($ownProperties) {
out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
}
out += '; if (!' + ($valid) + ') break; } ';
if ($isData) {
out += ' } ';
}
out += ' if (!' + ($valid) + ') { ';
var $$outStack = $$outStack || [];
$$outStack.push(out);
out = ''; /* istanbul ignore else */
if (it.createErrors !== false) {
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'';
if (it.opts._errorDataPathProperty) {
out += 'is a required property';
} else {
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
}
out += '\' ';
}
if (it.opts.verbose) {
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
}
out += ' } ';
} else {
out += ' {} ';
}
var __err = out;
out = $$outStack.pop();
if (!it.compositeRule && $breakOnError) {
/* istanbul ignore if */
if (it.async) {
out += ' throw new ValidationError([' + (__err) + ']); ';
} else {
out += ' validate.errors = [' + (__err) + ']; return false; ';
}
} else {
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
}
out += ' } else { ';
} else {
out += ' if ( ';
var arr2 = $required;
if (arr2) {
var $propertyKey, $i = -1,
l2 = arr2.length - 1;
while ($i < l2) {
$propertyKey = arr2[$i += 1];
if ($i) {
out += ' || ';
}
var $prop = it.util.getProperty($propertyKey),
$useData = $data + $prop;
out += ' ( ( ' + ($useData) + ' === undefined ';
if ($ownProperties) {
out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
}
out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';
}
}
out += ') { ';
var $propertyPath = 'missing' + $lvl,
$missingProperty = '\' + ' + $propertyPath + ' + \'';
if (it.opts._errorDataPathProperty) {
it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;
}
var $$outStack = $$outStack || [];
$$outStack.push(out);
out = ''; /* istanbul ignore else */
if (it.createErrors !== false) {
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'';
if (it.opts._errorDataPathProperty) {
out += 'is a required property';
} else {
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
}
out += '\' ';
}
if (it.opts.verbose) {
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
}
out += ' } ';
} else {
out += ' {} ';
}
var __err = out;
out = $$outStack.pop();
if (!it.compositeRule && $breakOnError) {
/* istanbul ignore if */
if (it.async) {
out += ' throw new ValidationError([' + (__err) + ']); ';
} else {
out += ' validate.errors = [' + (__err) + ']; return false; ';
}
} else {
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
}
out += ' } else { ';
}
} else {
if ($loopRequired) {
if (!$isData) {
out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';
}
var $i = 'i' + $lvl,
$propertyPath = 'schema' + $lvl + '[' + $i + ']',
$missingProperty = '\' + ' + $propertyPath + ' + \'';
if (it.opts._errorDataPathProperty) {
it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
}
if ($isData) {
out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */
if (it.createErrors !== false) {
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'';
if (it.opts._errorDataPathProperty) {
out += 'is a required property';
} else {
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
}
out += '\' ';
}
if (it.opts.verbose) {
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
}
out += ' } ';
} else {
out += ' {} ';
}
out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';
}
out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';
if ($ownProperties) {
out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';
}
out += ') { var err = '; /* istanbul ignore else */
if (it.createErrors !== false) {
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'';
if (it.opts._errorDataPathProperty) {
out += 'is a required property';
} else {
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
}
out += '\' ';
}
if (it.opts.verbose) {
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
}
out += ' } ';
} else {
out += ' {} ';
}
out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';
if ($isData) {
out += ' } ';
}
} else {
var arr3 = $required;
if (arr3) {
var $propertyKey, i3 = -1,
l3 = arr3.length - 1;
while (i3 < l3) {
$propertyKey = arr3[i3 += 1];
var $prop = it.util.getProperty($propertyKey),
$missingProperty = it.util.escapeQuotes($propertyKey),
$useData = $data + $prop;
if (it.opts._errorDataPathProperty) {
it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
}
out += ' if ( ' + ($useData) + ' === undefined ';
if ($ownProperties) {
out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
}
out += ') { var err = '; /* istanbul ignore else */
if (it.createErrors !== false) {
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
if (it.opts.messages !== false) {
out += ' , message: \'';
if (it.opts._errorDataPathProperty) {
out += 'is a required property';
} else {
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
}
out += '\' ';
}
if (it.opts.verbose) {
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
}
out += ' } ';
} else {
out += ' {} ';
}
out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';
}
}
}
}
it.errorPath = $currentErrorPath;
} else if ($breakOnError) {
out += ' if (true) {';
}
return out;
}
@@ -0,0 +1,4 @@
// This is a generated file. Do not edit.
module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/
module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60Line truncated
module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE7Line truncated
@@ -0,0 +1,9 @@
import { ErrorInfo } from 'react';
import { NotFoundError } from '@tanstack/router-core';
import * as React from 'react';
export declare function CatchNotFound(props: {
fallback?: (error: NotFoundError) => React.ReactElement;
onCatch?: (error: Error, errorInfo: ErrorInfo) => void;
children: React.ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function DefaultGlobalNotFound(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
{"version":3,"file":"vibrate-off.js","sources":["../../../src/icons/vibrate-off.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name VibrateOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMiA4IDIgMi0yIDIgMiAyLTIgMiIgLz4KICA8cGF0aCBkPSJtMjIgOC0yIDIgMiAyLTIgMiAyIDIiIC8+CiAgPHBhdGggZD0iTTggOHYxMGMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMXYtMiIgLz4KICA8cGF0aCBkPSJNMTYgMTAuMzRWNmMwLS41NS0uNDUtMS0xLTFoLTQuMzQiIC8+CiAgPGxpbmUgeDE9IjIiIHgyPSIyMiIgeTE9IjIiIHkyPSIyMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/vibrate-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst VibrateOff = createLucideIcon('VibrateOff', [\n ['path', { d: 'm2 8 2 2-2 2 2 2-2 2', key: 'sv1b1' }],\n ['path', { d: 'm22 8-2 2 2 2-2 2 2 2', key: '101i4y' }],\n ['path', { d: 'M8 8v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2', key: '1hbad5' }],\n ['path', { d: 'M16 10.34V6c0-.55-.45-1-1-1h-4.34', key: '1x5tf0' }],\n ['line', { x1: '2', x2: '22', y1: '2', y2: '22', key: 'a6p6uj' }],\n]);\n\nexport default VibrateOff;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,iBAAiB,YAAc,CAAA,CAAA,CAAA;AAAA,CAAA,CAChD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,SAAS,CAAA,CAAA;AAAA,CAAA,CACpD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAyB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CACtD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAA+C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC5E,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAqC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAClE,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE,CAAA,CAAA,CAAA,EAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAI,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAM,EAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA;AAClE,CAAC,CAAA,CAAA;;"}
@@ -0,0 +1,24 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const HandMetal = createLucideIcon("HandMetal", [
["path", { d: "M18 12.5V10a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4", key: "wc6myp" }],
["path", { d: "M14 11V9a2 2 0 1 0-4 0v2", key: "94qvcw" }],
["path", { d: "M10 10.5V5a2 2 0 1 0-4 0v9", key: "m1ah89" }],
[
"path",
{
d: "m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5",
key: "t1skq1"
}
]
]);
export { HandMetal as default };
//# sourceMappingURL=hand-metal.js.map
@@ -0,0 +1 @@
{"version":3,"file":"message-square-quote.js","sources":["../../../src/icons/message-square-quote.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name MessageSquareQuote\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTVhMiAyIDAgMCAxLTIgMkg3bC00IDRWNWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDJ6IiAvPgogIDxwYXRoIGQ9Ik04IDEyYTIgMiAwIDAgMCAyLTJWOEg4IiAvPgogIDxwYXRoIGQ9Ik0xNCAxMmEyIDIgMCAwIDAgMi0yVjhoLTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/message-square-quote\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquareQuote = createLucideIcon('MessageSquareQuote', [\n ['path', { d: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z', key: '1lielz' }],\n ['path', { d: 'M8 12a2 2 0 0 0 2-2V8H8', key: '1jfesj' }],\n ['path', { d: 'M14 12a2 2 0 0 0 2-2V8h-2', key: '1dq9mh' }],\n]);\n\nexport default MessageSquareQuote;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,iBAAiB,oBAAsB,CAAA,CAAA,CAAA;AAAA,CAAA,CAChE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAiE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC9F,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CACxD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAA6B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA;AAC5D,CAAC,CAAA,CAAA;;"}
@@ -0,0 +1,22 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const Slack = createLucideIcon("Slack", [
["rect", { width: "3", height: "8", x: "13", y: "2", rx: "1.5", key: "diqz80" }],
["path", { d: "M19 8.5V10h1.5A1.5 1.5 0 1 0 19 8.5", key: "183iwg" }],
["rect", { width: "3", height: "8", x: "8", y: "14", rx: "1.5", key: "hqg7r1" }],
["path", { d: "M5 15.5V14H3.5A1.5 1.5 0 1 0 5 15.5", key: "76g71w" }],
["rect", { width: "8", height: "3", x: "14", y: "13", rx: "1.5", key: "1kmz0a" }],
["path", { d: "M15.5 19H14v1.5a1.5 1.5 0 1 0 1.5-1.5", key: "jc4sz0" }],
["rect", { width: "8", height: "3", x: "2", y: "8", rx: "1.5", key: "1omvl4" }],
["path", { d: "M8.5 5H10V3.5A1.5 1.5 0 1 0 8.5 5", key: "16f3cl" }]
]);
export { Slack as default };
//# sourceMappingURL=slack.js.map
@@ -0,0 +1,20 @@
{
"versions": [
{
"version": "*",
"target": {
"node": "all"
},
"response": {
"type": "time-permitting"
},
"backing": {
"npm-funding": true,
"donations": [
"https://github.com/ljharb",
"https://tidelift.com/funding/github/npm/object-inspect"
]
}
}
]
}
@@ -0,0 +1 @@
module.exports={C:{"47":0.00433,"48":0.00433,"50":0.00433,"51":0.00433,"52":0.00433,"57":0.00433,"66":0.00433,"72":0.00433,"112":0.00433,"115":0.03463,"120":0.88745,"121":1.79221,"122":0.00433,"123":0.00433,"124":0.01299,"125":0.03896,"127":0.00433,"129":0.00433,"132":0.00433,"135":0.00433,"136":0.00433,"137":0.00433,"140":0.05195,"143":0.00433,"145":0.00866,"146":0.01299,"147":0.00866,"148":0.00866,"149":0.01299,"150":0.01299,"151":0.01732,"152":0.02597,"153":0.04329,"154":0.14719,"155":0.51515,"156":0.49784,"157":0.00866,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 53 54 55 56 58 59 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 113 114 116 117 118 119 126 128 130 131 133 134 138 139 141 142 144 158 159 160 3.5 3.6"},D:{"49":0.01732,"51":0.00433,"53":0.00433,"56":0.00433,"60":0.00433,"61":0.00433,"62":0.00433,"63":0.00433,"64":0.00866,"65":0.00433,"66":0.00866,"68":0.00433,"69":0.00866,"70":0.00866,"73":0.00866,"74":0.00433,"75":0.03463,"77":0.00433,"79":0.00866,"81":0.00866,"86":0.00433,"88":0.0303,"89":0.00433,"91":0.00433,"93":0.00433,"95":0.00433,"98":0.04329,"100":0.00866,"101":0.00433,"102":0.00433,"103":0.19048,"104":0.22511,"105":0.20346,"106":0.19913,"107":0.19913,"108":0.20779,"109":0.98701,"110":0.20346,"111":0.22078,"112":0.17316,"113":0.00433,"114":0.00866,"116":0.40693,"117":0.19913,"118":1.1342,"119":1.79221,"120":1.96104,"121":0.00433,"122":0.02165,"123":0.01299,"124":0.30736,"125":0.00433,"126":0.01299,"127":0.02165,"128":0.01732,"129":0.00433,"130":0.06494,"131":0.41558,"132":0.00866,"133":0.50649,"134":0.12987,"135":0.12121,"136":0.14286,"137":0.12554,"138":0.1645,"139":0.16883,"140":0.14286,"141":0.12554,"142":0.4329,"143":0.06494,"144":0.03896,"145":0.04762,"146":0.16883,"147":0.03463,"148":0.1039,"149":0.33333,"150":0.4026,"151":1.34632,"152":6.77056,"153":4.45454,"154":0.98701,"155":0.01299,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 54 55 57 58 59 67 71 72 76 78 80 83 84 85 87 90 92 94 96 97 99 115 156 157"},F:{"46":0.02597,"50":0.00433,"51":0.00433,"53":0.00433,"54":0.00433,"55":0.00433,"56":0.00866,"57":0.00433,"63":0.00433,"65":0.00433,"72":0.00433,"73":0.00433,"74":0.00433,"76":0.01732,"89":0.00433,"90":0.00433,"95":0.00866,"100":0.00433,"101":0.01299,"105":0.00433,"106":0.01299,"107":0.00433,"111":0.00433,"112":0.00433,"118":0.00433,"120":0.00433,"132":0.01299,"133":0.00433,"134":0.06061,"135":0.41558,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 52 58 60 62 64 66 67 68 69 70 71 75 77 78 79 80 81 82 83 84 85 86 87 88 91 92 93 94 96 97 98 99 102 103 104 108 109 110 113 114 115 116 117 119 121 122 123 124 125 126 127 131 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"14":0.00866,"15":0.00433,"16":0.00433,"17":0.00433,"18":0.01299,"83":0.01299,"84":0.00433,"90":0.00433,"92":0.04762,"100":0.00433,"107":0.00433,"109":0.01732,"114":0.01732,"119":0.84416,"120":0.93939,"122":0.00866,"123":0.00433,"124":0.01299,"128":0.00433,"133":0.00866,"134":0.00866,"138":0.00433,"140":0.00866,"141":0.00433,"142":0.00433,"143":0.00866,"144":0.00866,"145":0.00433,"146":0.00866,"147":0.02597,"148":0.02597,"149":0.02165,"150":0.08225,"151":0.25541,"152":1.76623,"153":1.94805,"154":0.33333,_:"12 13 79 80 81 85 86 87 88 89 91 93 94 95 96 97 98 99 101 102 103 104 105 106 108 110 111 112 113 115 116 117 118 121 125 126 127 129 130 131 132 135 136 137 139"},E:{"27":0.10823,_:"4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 15.2-15.3 15.5 16.0 16.1 16.2 16.3 16.5 17.0 17.4 18.1 18.2 26.0 27.1 27.2 TP","13.1":0.00866,"14.1":0.00433,"15.4":0.00866,"15.6":0.09091,"16.4":0.00433,"16.6":0.0303,"17.1":0.01299,"17.2":0.00866,"17.3":0.00433,"17.5":0.00866,"17.6":0.02165,"18.0":0.00433,"18.3":0.02165,"18.4":0.00433,"18.5-18.7":0.00433,"26.1":0.00433,"26.2":0.01299,"26.3":0.02597,"26.4":0.00866,"26.5":0.06061,"26.6":0.27273},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00042,"5.0-5.1":0.00042,"6.0-6.1":0,"7.0-7.1":0.00083,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.00416,"11.0-11.2":0.00042,"11.3-11.4":0.00083,"12.0-12.1":0,"12.2-12.5":0.01081,"13.0-13.1":0,"13.2":0.00208,"13.3":0,"13.4-13.7":0.00042,"14.0-14.4":0.00166,"14.5-14.8":0.00249,"15.0-15.1":0.00249,"15.2-15.3":0.00166,"15.4":0.00208,"15.5":0.00249,"15.6-15.8":0.05404,"16.0":0.00416,"16.1":0.00748,"16.2":0.00416,"16.3":0.00915,"16.4":0.00208,"16.5":0.00333,"16.6-16.7":0.07524,"17.0":0.00291,"17.1":0.00416,"17.2":0.00416,"17.3":0.00624,"17.4":0.00873,"17.5":0.01704,"17.6-17.7":0.04406,"18.0":0.00915,"18.1":0.01829,"18.2":0.02494,"18.3":0.04323,"18.4":0.02702,"18.5-18.7":0.55826,"26.0":0.02702,"26.1":0.02744,"26.2":0.0715,"26.3":0.07732,"26.4":0.05653,"26.5":0.37Line truncated
@@ -0,0 +1,13 @@
import { Parser, Printer } from "../index.js";
export declare const parsers: {
angular: Parser;
html: Parser;
lwc: Parser;
mjml: Parser;
vue: Parser;
};
export declare const printers: {
html: Printer;
};
@@ -0,0 +1 @@
{"version":3,"file":"router.js","sources":["../../../src/icons/router.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Router\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMjAiIGhlaWdodD0iOCIgeD0iMiIgeT0iMTQiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik02LjAxIDE4SDYiIC8+CiAgPHBhdGggZD0iTTEwLjAxIDE4SDEwIiAvPgogIDxwYXRoIGQ9Ik0xNSAxMHY0IiAvPgogIDxwYXRoIGQ9Ik0xNy44NCA3LjE3YTQgNCAwIDAgMC01LjY2IDAiIC8+CiAgPHBhdGggZD0iTTIwLjY2IDQuMzRhOCA4IDAgMCAwLTExLjMxIDAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/router\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Router = createLucideIcon('Router', [\n ['rect', { width: '20', height: '8', x: '2', y: '14', rx: '2', key: 'w68u3i' }],\n ['path', { d: 'M6.01 18H6', key: '19vcac' }],\n ['path', { d: 'M10.01 18H10', key: 'uamcmx' }],\n ['path', { d: 'M15 10v4', key: 'qjz1xs' }],\n ['path', { d: 'M17.84 7.17a4 4 0 0 0-5.66 0', key: '1rif40' }],\n ['path', { d: 'M20.66 4.34a8 8 0 0 0-11.31 0', key: '6a5xfq' }],\n]);\n\nexport default Router;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,iBAAiB,QAAU,CAAA,CAAA,CAAA;AAAA,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,MAAM,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,GAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC9E,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC3C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC7C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAgC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC7D,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAiC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA;AAChE,CAAC,CAAA,CAAA;;"}
@@ -0,0 +1,239 @@
{
"name": "vitest",
"type": "module",
"version": "4.1.12",
"description": "Next generation testing framework powered by Vite",
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
"license": "MIT",
"funding": "https://opencollective.com/vitest",
"homepage": "https://vitest.dev",
"repository": {
"type": "git",
"url": "git+https://github.com/vitest-dev/vitest.git",
"directory": "packages/vitest"
},
"bugs": {
"url": "https://github.com/vitest-dev/vitest/issues"
},
"keywords": [
"vite",
"vitest",
"test",
"jest"
],
"sideEffects": false,
"imports": {
"#module-evaluator": {
"types": "./dist/module-evaluator.d.ts",
"default": "./dist/module-evaluator.js"
},
"#nodejs-worker-loader": "./dist/nodejs-worker-loader.js"
},
"exports": {
".": {
"import": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"require": {
"types": "./index.d.cts",
"default": "./index.cjs"
}
},
"./browser": {
"types": "./browser/context.d.ts",
"default": "./browser/context.js"
},
"./package.json": "./package.json",
"./optional-types.js": {
"types": "./optional-types.d.ts"
},
"./optional-runtime-types.js": {
"types": "./optional-runtime-types.d.ts"
},
"./src/*": "./src/*",
"./globals": {
"types": "./globals.d.ts"
},
"./jsdom": {
"types": "./jsdom.d.ts"
},
"./importMeta": {
"types": "./importMeta.d.ts"
},
"./import-meta": {
"types": "./import-meta.d.ts"
},
"./node": {
"types": "./dist/node.d.ts",
"default": "./dist/node.js"
},
"./internal/browser": {
"types": "./dist/browser.d.ts",
"default": "./dist/browser.js"
},
"./runners": {
"types": "./dist/runners.d.ts",
"default": "./dist/runners.js"
},
"./suite": {
"types": "./dist/suite.d.ts",
"default": "./dist/suite.js"
},
"./environments": {
"types": "./dist/environments.d.ts",
"default": "./dist/environments.js"
},
"./config": {
"types": "./config.d.ts",
"require": "./dist/config.cjs",
"default": "./dist/config.js"
},
"./coverage": {
"types": "./coverage.d.ts",
"default": "./dist/coverage.js"
},
"./reporters": {
"types": "./dist/reporters.d.ts",
"default": "./dist/reporters.js"
},
"./snapshot": {
"types": "./dist/snapshot.d.ts",
"default": "./dist/snapshot.js"
},
"./runtime": {
"types": "./dist/runtime.d.ts",
"default": "./dist/runtime.js"
},
"./worker": {
"types": "./worker.d.ts",
"default": "./dist/worker.js"
}
},
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"bin": {
"vitest": "./vitest.mjs"
},
"files": [
"*.cjs",
"*.d.cts",
"*.d.ts",
"*.mjs",
"bin",
"browser",
"dist"
],
"engines": {
"node": "^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
"@vitest/browser-webdriverio": "^4.1.11",
"happy-dom": "*",
"jsdom": "*",
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
"@vitest/browser-playwright": "4.1.12",
"@vitest/coverage-istanbul": "4.1.12",
"@vitest/browser-preview": "4.1.12",
"@vitest/coverage-v8": "4.1.12",
"@vitest/ui": "4.1.12"
},
"peerDependenciesMeta": {
"@edge-runtime/vm": {
"optional": true
},
"@opentelemetry/api": {
"optional": true
},
"@types/node": {
"optional": true
},
"@vitest/browser-playwright": {
"optional": true
},
"@vitest/browser-preview": {
"optional": true
},
"@vitest/browser-webdriverio": {
"optional": true
},
"@vitest/coverage-istanbul": {
"optional": true
},
"@vitest/coverage-v8": {
"optional": true
},
"@vitest/ui": {
"optional": true
},
"happy-dom": {
"optional": true
},
"jsdom": {
"optional": true
},
"vite": {
"optional": false
}
},
"dependencies": {
"es-module-lexer": "^2.0.0",
"expect-type": "^1.3.0",
"magic-string": "^0.30.21",
"obug": "^2.1.1",
"pathe": "^2.0.3",
"picomatch": "^4.0.3",
"std-env": "^4.0.0-rc.1",
"tinybench": "^2.9.0",
"tinyexec": "^1.0.2",
"tinyglobby": "^0.2.15",
"tinyrainbow": "^3.1.0",
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
"why-is-node-running": "^2.3.0",
"@vitest/expect": "4.1.12",
"@vitest/pretty-format": "4.1.12",
"@vitest/mocker": "4.1.12",
"@vitest/snapshot": "4.1.12",
"@vitest/utils": "4.1.12",
"@vitest/runner": "4.1.12",
"@vitest/spy": "4.1.12"
},
"devDependencies": {
"@antfu/install-pkg": "^1.1.0",
"@bomb.sh/tab": "^0.0.14",
"@edge-runtime/vm": "^5.0.0",
"@jridgewell/trace-mapping": "0.3.31",
"@opentelemetry/api": "^1.9.0",
"@sinonjs/fake-timers": "15.0.0",
"@types/estree": "^1.0.8",
"@types/istanbul-lib-coverage": "^2.0.6",
"@types/istanbul-reports": "^3.0.4",
"@types/jsdom": "^27.0.0",
"@types/node": "^24.12.0",
"@types/picomatch": "^4.0.2",
"@types/prompts": "^2.4.9",
"@types/sinonjs__fake-timers": "^15.0.1",
"acorn": "8.11.3",
"acorn-walk": "^8.3.5",
"birpc": "^4.0.0",
"cac": "^6.7.14",
"empathic": "^2.0.0",
"flatted": "^3.4.2",
"happy-dom": "^20.8.3",
"jsdom": "^27.4.0",
"local-pkg": "^1.1.2",
"mime": "^4.1.0",
"prompts": "^2.4.2",
"strip-literal": "^3.1.0",
"tinyhighlight": "^0.3.2",
"ws": "^8.19.0"
},
"scripts": {
"build": "premove dist && rollup -c",
"dev": "NODE_OPTIONS=\"--max-old-space-size=8192\" rollup -c --watch -m inline"
}
}
@@ -0,0 +1,14 @@
export class CwdError extends Error {
path;
code;
syscall = 'chdir';
constructor(path, code) {
super(`${code}: Cannot cd into '${path}'`);
this.path = path;
this.code = code;
}
get name() {
return 'CwdError';
}
}
//# sourceMappingURL=cwd-error.js.map
@@ -0,0 +1,44 @@
{
"name": "mz",
"description": "modernize node.js to current ECMAScript standards",
"version": "2.7.0",
"author": {
"name": "Jonathan Ong",
"email": "me@jongleberry.com",
"url": "http://jongleberry.com",
"twitter": "https://twitter.com/jongleberry"
},
"license": "MIT",
"repository": "normalize/mz",
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
"thenify-all": "^1.0.0"
},
"devDependencies": {
"istanbul": "^0.4.0",
"bluebird": "^3.0.0",
"mocha": "^3.0.0"
},
"scripts": {
"test": "mocha --reporter spec",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
},
"keywords": [
"promisify",
"promise",
"thenify",
"then",
"es6"
],
"files": [
"index.js",
"child_process.js",
"crypto.js",
"dns.js",
"fs.js",
"readline.js",
"zlib.js"
]
}
@@ -0,0 +1,23 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const Feather = createLucideIcon("Feather", [
[
"path",
{
d: "M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",
key: "18jl4k"
}
],
["path", { d: "M16 8 2 22", key: "vp34q" }],
["path", { d: "M17.5 15H9", key: "1oz8nu" }]
]);
export { Feather as default };
//# sourceMappingURL=feather.js.map
@@ -0,0 +1,42 @@
{
'targets': [
{
'target_name': 'node_addon_api',
'type': 'none',
'sources': [ 'napi.h', 'napi-inl.h' ],
'direct_dependent_settings': {
'include_dirs': [ '.' ],
'includes': ['noexcept.gypi'],
}
},
{
'target_name': 'node_addon_api_except',
'type': 'none',
'sources': [ 'napi.h', 'napi-inl.h' ],
'direct_dependent_settings': {
'include_dirs': [ '.' ],
'includes': ['except.gypi'],
}
},
{
'target_name': 'node_addon_api_except_all',
'type': 'none',
'sources': [ 'napi.h', 'napi-inl.h' ],
'direct_dependent_settings': {
'include_dirs': [ '.' ],
'includes': ['except.gypi'],
'defines': [ 'NODE_ADDON_API_CPP_EXCEPTIONS_ALL' ]
}
},
{
'target_name': 'node_addon_api_maybe',
'type': 'none',
'sources': [ 'napi.h', 'napi-inl.h' ],
'direct_dependent_settings': {
'include_dirs': [ '.' ],
'includes': ['noexcept.gypi'],
'defines': ['NODE_ADDON_API_ENABLE_MAYBE']
}
},
]
}
@@ -0,0 +1,118 @@
'use strict'
const diagnosticsChannel = require('node:diagnostics_channel')
const util = require('../core/util')
const DeduplicationHandler = require('../handler/deduplication-handler')
const { getInterceptorOrigin, normalizeHeaders, makeCacheKey, makeDeduplicationKey } = require('../util/cache.js')
const pendingRequestsChannel = diagnosticsChannel.channel('undici:request:pending-requests')
/**
* @param {import('../../types/interceptors.d.ts').default.DeduplicateInterceptorOpts} [opts]
* @returns {import('../../types/dispatcher.d.ts').default.DispatcherComposeInterceptor}
*/
module.exports = (opts = {}) => {
const {
methods = ['GET'],
skipHeaderNames = [],
excludeHeaderNames = [],
maxBufferSize = 5 * 1024 * 1024
} = opts
if (typeof opts !== 'object' || opts === null) {
throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? 'null' : typeof opts}`)
}
if (!Array.isArray(methods)) {
throw new TypeError(`expected opts.methods to be an array, got ${typeof methods}`)
}
for (const method of methods) {
if (!util.safeHTTPMethods.includes(method)) {
throw new TypeError(`expected opts.methods to only contain safe HTTP methods, got ${method}`)
}
}
if (!Array.isArray(skipHeaderNames)) {
throw new TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof skipHeaderNames}`)
}
if (!Array.isArray(excludeHeaderNames)) {
throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`)
}
if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) {
throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`)
}
// Convert to lowercase Set for case-insensitive header matching
const skipHeaderNamesSet = new Set(skipHeaderNames.map(name => name.toLowerCase()))
// Convert to lowercase Set for case-insensitive header exclusion from deduplication key
const excludeHeaderNamesSet = new Set(excludeHeaderNames.map(name => name.toLowerCase()))
/**
* Map of pending requests for deduplication
* @type {Map<string, DeduplicationHandler>}
*/
const pendingRequests = new Map()
return (dispatch, interceptorOrigin) => {
return (opts, handler) => {
const requestOrigin = getInterceptorOrigin(opts, interceptorOrigin)
if (!requestOrigin || opts.upgrade || methods.includes(opts.method) === false) {
return dispatch(opts, handler)
}
opts = {
...opts,
headers: normalizeHeaders(opts)
}
// Skip deduplication if request contains any of the specified headers
if (skipHeaderNamesSet.size > 0) {
for (const headerName of Object.keys(opts.headers)) {
if (skipHeaderNamesSet.has(headerName.toLowerCase())) {
return dispatch(opts, handler)
}
}
}
const cacheKey = makeCacheKey(opts, requestOrigin)
const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet)
// Check if there's already a pending request for this key
const pendingHandler = pendingRequests.get(dedupeKey)
if (pendingHandler) {
// Add this handler to the waiting list when safe.
// If body streaming has already started, this request must be sent independently.
if (pendingHandler.addWaitingHandler(handler)) {
return true
}
return dispatch(opts, handler)
}
// Create a new deduplication handler
const deduplicationHandler = new DeduplicationHandler(
handler,
() => {
// Clean up when request completes
pendingRequests.delete(dedupeKey)
if (pendingRequestsChannel.hasSubscribers) {
pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'removed' })
}
},
maxBufferSize
)
// Register the pending request
pendingRequests.set(dedupeKey, deduplicationHandler)
if (pendingRequestsChannel.hasSubscribers) {
pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'added' })
}
return dispatch(opts, deduplicationHandler)
}
}
}
@@ -0,0 +1,635 @@
flf2a$ 6 6 30 0 22
Explanation of first line: *** GoofY 0.1 ***
flf2a - necessary stuff to identify the kind of file
$ - the "hardblank" -- prints as a blank, but can't be smushed
6 - height of a character
6 - height of a character, not including descenders
30 - max line length (excluding comment lines) + a fudge factor
0 - put characters together, no smushing or whatever, please!
22 - number of comment lines (starting with the 'Explanation' line)
Written by Steven <GoofY> de Brouwer (Goofsel@dds.nl)
Based on the stupid reaction from people to watch the 'foreground-objects'
first (it's a kind of goofy, isn't it? :)
This font is NOT designed to be used for clear, long text!
Therefore lower-case is equal to UPPER-case!
____ _____ _____ ___ ___ __ _____
/ ) ____) ) ( ) ( \ ___) ( ( ) ) )
( / / __ / (_\ / \ | (__ \ \/ / /
) ( ( ( \ ( ) ( _ ) | __) \ / (
/ \ \__) ) \ / \ ) / | ( ) / )
(______) (____) (_____) (___/ \______/ (______/
*** Use the % for a double-o (oo), and the {} as begin- and end-markers! ***
___@
$$$@
$$$@
$$$@
$$$@
___@@
_$$$$__@
($$$$)$@
$\$$/$$@
$$\/$$$@
$$__$$$@
_($$)__@@
_$$$_$$$__@
($$$)$$$)$@
$)_/$)_/$$@
$$$$$$$$$$@
$$$$$$$$$$@
__________@@
__$$$_$$$___@
$_)$(_)$(_$$@
(_$$$_$$$_)$@
$_)$(_)$(_$$@
(_$$$_$$$_)$@
__)$(_)$(___@@
_$$$$$$$__@
$)$$_$$_)$@
($$(_||$$$@
$\$$_$$\$$@
$_||_)$$)$@
($$$$$$(__@@
__$$$$$_____$$$$$___@
$$)$$$($$$$$)$$$($$$@
$/$$$(_\$$$/$$$$$\$$@
($$$$$$$)$($_$$$$$)$@
$\$$$$$/$$$\$)$$$/$$@
__)$$$(_____)$$$(___@@
__$$$$_____@
$($()$)$$$$@
$$>$$<$$_$$@
$/$/\$\/$)$@
($(__)$$<$$@
_\$$$$<>$)_@@
_$$$__@
($$$)$@
$)_/$$@
$$$$$$@
$$$$$$@
______@@
___$$$_@
$$/$$/$@
$/$$/$$@
($$($$$@
$\$$\$$@
__\$$\_@@
$$$____@
\$$\$$$@
$\$$\$$@
$$)$$)$@
$/$$/$$@
/$$/___@@
___________@
$$$_$$_$$$$@
$_($\/$)_$$@
(__$$$$__)$@
$$(_/\_)$$$@
___________@@
________@
$$$_$$$$@
$_($)_$$@
(__$__)$@
$$(_)$$$@
________@@
_____@
$$$$$@
$$$$$@
$__$$@
($$)$@
($/__@@
______@
$$$$$$@
$___$$@
(___)$@
$$$$$$@
______@@
_____@
$$$$$@
$$$$$@
$$$$$@
$__$$@
($$)_@@
____$$$$_@
$$$$)$$/$@
$$$/$$/$$@
$$/$$/$$$@
$/$$/$$$$@
/$$(_____@@
__$$$___@
$/$$$\$$@
|$$$$$|$@
|$$$$$|$@
|$$$$$|$@
_\$$$/__@@
_$$$$$___@
/_$$$|$$$@
$$|$$|$$$@
$$|$$|$$$@
$_|$$|_$$@
($$$$$$)_@@
__$$$$____@
$/$_$$\$$$@
(_/$)$$)$$@
$$$/$$/$$$@
$$/$$/__$$@
_($$$$$$)_@@
_$$$$___@
(__$$\$$@
$__)$$|$@
(__$$$|$@
$__)$$|$@
($$$$/__@@
___$$$$___@
$$/$$$|$$$@
$/$$$$|_$$@
(__$$$$_)$@
$$_|$$|_$$@
_($$$$$$)_@@
$$$$$$$__@
|$$____)$@
|$|___$$$@
|___$$\$$@
$___)$$)$@
($$$$$/__@@
__$$$$___@
$/$$__)$$@
|$$(__$$$@
|$$$$$\$$@
|$$$$$$)$@
_\$$$$/__@@
$$$$$$$__@
(___$$$)$@
$$$/$$/$$@
$$/$$/$$$@
$/$$/$$$$@
($$/_____@@
__$$$___@
$/$$$\$$@
($$$$$)$@
$>$$$<$$@
($$$$$)$@
_\$$$/__@@
__$$$$___@
$/$$$$\$$@
($$$$$$|$@
$\__$$$|$@
$$__)$$|$@
_($$$$/__@@
____@
$_$$@
(_)$@
$_$$@
(_)$@
____@@
____@
$_$$@
(_)$@
$_$$@
($)$@
|/__@@
___$$$_@
$$/$$/$@
$/$$/$$@
<$$<$$$@
$\$$\$$@
__\$$\_@@
______@
$___$$@
(___)$@
$___$$@
(___)$@
______@@
$$$____@
\$$\$$$@
$\$$\$$@
$$>$$>$@
$/$$/$$@
/$$/___@@
_$$$__@
(_$$)$@
$/$/$$@
(_($$$@
$_$$$$@
($)___@@
__$$$$$$$___@
$/$$___$$\$$@
|$$/$/\)$$)$@
|$|$(____/$$@
|$$\______$$@
_\$$$$$$$$)_@@
____$$_____@
$$$/$$\$$$$@
$$/$$$$\$$$@
$/$$()$$\$$@
|$$$__$$$|$@
|$$(__)$$|_@@
$$$$$$___@
\$$$$$\$$@
$|$$$$$)$@
$|$$$$<$$@
$|$$$$$)$@
/$$$$$/__@@
__$$$$__@
$/$$__)$@
|$$/$$$$@
|$|$$$$$@
|$$\__$$@
_\$$$$)_@@
$$$$$___@
|$$$$\$$@
|$$$$$|$@
|$$$$$|$@
|$$$$$|$@
|$$$$/__@@
$$$$$$$$__@
\$$$$___)$@
$|$$(__$$$@
$|$$$__)$$@
$|$$(___$$@
/$$$$$$$)_@@
$$$$$$$$__@
\$$$$___)$@
$|$$(__$$$@
$|$$$__)$$@
$|$$($$$$$@
/$$$$\____@@
__$$$$$$$___@
$$)$$____)$$@
$/$$/$$__$$$@
($$($$($$\$$@
$\$$\__)$$)$@
__)$$$$$$(__@@
$$$$___$$$$_@
\$$|$$$|$$/$@
$|$$\_/$$|$$@
$|$$$_$$$|$$@
$|$$/$\$$|$$@
/$$|___|$$\_@@
_$$$$$$__@
(_$$$$_)$@
$$|$$|$$$@
$$|$$|$$$@
$_|$$|_$$@
($$$$$$)_@@
___$$$$$_@
$$(_$$$|$@
$$$$|$$|$@
$_$$|$$|$@
($|_|$$|$@
_\$$$$/__@@
$$$$$_$$$$_@
\$$$|$)$$/$@
$|$$|/$$/$$@
$|$$$$$($$$@
$|$$|\$$\$$@
/$$$|_)$$\_@@
$$$$$____@
\$$$|$$$$@
$|$$|$$$$@
$|$$|$$$$@
$|$$|__$$@
/$$$$$$)_@@
$$$$$$$$$$_@
|$$$$$$$$|$@
|$$|\/|$$|$@
|$$|$$|$$|$@
|$$|$$|$$|$@
|$$|__|$$|_@@
$$$$$___$$$$_@
|$$$$\$$|$$|$@
|$$|\$\$|$$|$@
|$$|$\$\|$$|$@
|$$|$$\$$$$|$@
|$$|___\$$$|_@@
__$$$$$___@
$$)$$$($$$@
$/$$$$$\$$@
($$$$$$$)$@
$\$$$$$/$$@
__)$$$(___@@
$$$$$___@
|$$$$\$$@
|$$$$$)$@
|$$__/$$@
|$|$$$$$@
|$|_____@@
__$$$$$_@
$/$$$$|$@
($$$$$|$@
$\__$$|$@
$$$$|$|$@
____|$|_@@
$$$$$___@
|$$$$\$$@
|$$$$$)$@
|$$$$/$$@
|$|\$\$$@
|$|_\$\_@@
_$$$$$$$__@
$)$$____)$@
($$(___$$$@
$\___$$\$$@
$____)$$)$@
($$$$$$(__@@
_$$$$$$$$__@
(__$$$$__)$@
$$$|$$|$$$$@
$$$|$$|$$$$@
$$$|$$|$$$$@
___|$$|____@@
$$$$___$$$$_@
|$$|$$$|$$|$@
|$$|$$$|$$|$@
|$$|$$$|$$|$@
|$$$\_/$$$|$@
_\$$$$$$$/__@@
$$$$__$$$$_@
|$$|$$|$$|$@
|$$|$$|$$|$@
|$$|$$|$$|$@
$\$$\/$$/$$@
__\$$$$/___@@
$$$$____$$$$_@
|$$|$$$$|$$|$@
|$$|$$$$|$$|$@
|$$|$$$$|$$|$@
$\$$\/\/$$/$$@
__\$$$$$$/___@@
$$$____$$$_@
\$$\$$/$$/$@
$\$$\/$$/$$@
$$>$$$$<$$$@
$/$$/\$$\$$@
/$$/__\$$\_@@
_$$$__$$$__@
($$($$)$$)$@
$\$$\/$$/$$@
$$\$$$$/$$$@
$$$)$$/$$$$@
__/$$(_____@@
_$$$$$$__@
(___$$$)$@
$$$/$$/$$@
$$/$$/$$$@
$/$$/__$$@
($$$$$$)_@@
$$$$$$$_@
|$$$__|$@
|$$|$$$$@
|$$|$$$$@
|$$|__$$@
|$$$$$|_@@
$$$$_____@
\$$($$$$$@
$\$$\$$$$@
$$\$$\$$$@
$$$\$$\$$@
____)$$\_@@
$$$$$$$_@
|__$$$|$@
$$$|$$|$@
$$$|$$|$@
$__|$$|$@
|$$$$$|_@@
__$$$$___@
$/$/\$\$$@
(_/$$\_)$@
$$$$$$$$$@
$$$$$$$$$@
_________@@
______@
$$$$$$@
$$$$$$@
$$$$$$@
____$$@
)$$$)_@@
_$$$__@
($$$)$@
$\_($$@
$$$$$$@
$$$$$$@
______@@
____$$_____@
$$$/$$\$$$$@
$$/$$$$\$$$@
$/$$()$$\$$@
|$$$__$$$|$@
|$$(__)$$|_@@
$$$$$$___@
\$$$$$\$$@
$|$$$$$)$@
$|$$$$<$$@
$|$$$$$)$@
/$$$$$/__@@
__$$$$__@
$/$$__)$@
|$$/$$$$@
|$|$$$$$@
|$$\__$$@
_\$$$$)_@@
$$$$$___@
|$$$$\$$@
|$$$$$|$@
|$$$$$|$@
|$$$$$|$@
|$$$$/__@@
$$$$$$$$__@
\$$$$___)$@
$|$$(__$$$@
$|$$$__)$$@
$|$$(___$$@
/$$$$$$$)_@@
$$$$$$$$__@
\$$$$___)$@
$|$$(__$$$@
$|$$$__)$$@
$|$$($$$$$@
/$$$$\____@@
__$$$$$$$___@
$$)$$____)$$@
$/$$/$$__$$$@
($$($$($$\$$@
$\$$\__)$$)$@
__)$$$$$$(__@@
$$$$___$$$$_@
\$$|$$$|$$/$@
$|$$\_/$$|$$@
$|$$$_$$$|$$@
$|$$/$\$$|$$@
/$$|___|$$\_@@
_$$$$$$__@
(_$$$$_)$@
$$|$$|$$$@
$$|$$|$$$@
$_|$$|_$$@
($$$$$$)_@@
___$$$$$_@
$$(_$$$|$@
$$$$|$$|$@
$_$$|$$|$@
($|_|$$|$@
_\$$$$/__@@
$$$$$_$$$$_@
\$$$|$)$$/$@
$|$$|/$$/$$@
$|$$$$$($$$@
$|$$|\$$\$$@
/$$$|_)$$\_@@
$$$$$____@
\$$$|$$$$@
$|$$|$$$$@
$|$$|$$$$@
$|$$|__$$@
/$$$$$$)_@@
$$$$$$$$$$_@
|$$$$$$$$|$@
|$$|\/|$$|$@
|$$|$$|$$|$@
|$$|$$|$$|$@
|$$|__|$$|_@@
$$$$$___$$$$_@
|$$$$\$$|$$|$@
|$$|\$\$|$$|$@
|$$|$\$\|$$|$@
|$$|$$\$$$$|$@
|$$|___\$$$|_@@
__$$$$$___@
$$)$$$($$$@
$/$$$$$\$$@
($$$$$$$)$@
$\$$$$$/$$@
__)$$$(___@@
$$$$$___@
|$$$$\$$@
|$$$$$)$@
|$$__/$$@
|$|$$$$$@
|$|_____@@
__$$$$$_@
$/$$$$|$@
($$$$$|$@
$\__$$|$@
$$$$|$|$@
____|$|_@@
$$$$$___@
|$$$$\$$@
|$$$$$)$@
|$$$$/$$@
|$|\$\$$@
|$|_\$\_@@
_$$$$$$$__@
$)$$____)$@
($$(___$$$@
$\___$$\$$@
$____)$$)$@
($$$$$$(__@@
_$$$$$$$$__@
(__$$$$__)$@
$$$|$$|$$$$@
$$$|$$|$$$$@
$$$|$$|$$$$@
___|$$|____@@
$$$$___$$$$_@
|$$|$$$|$$|$@
|$$|$$$|$$|$@
|$$|$$$|$$|$@
|$$$\_/$$$|$@
_\$$$$$$$/__@@
$$$$__$$$$_@
|$$|$$|$$|$@
|$$|$$|$$|$@
|$$|$$|$$|$@
$\$$\/$$/$$@
__\$$$$/___@@
$$$$____$$$$_@
|$$|$$$$|$$|$@
|$$|$$$$|$$|$@
|$$|$$$$|$$|$@
$\$$\/\/$$/$$@
__\$$$$$$/___@@
$$$____$$$_@
\$$\$$/$$/$@
$\$$\/$$/$$@
$$>$$$$<$$$@
$/$$/\$$\$$@
/$$/__\$$\_@@
_$$$__$$$__@
($$($$)$$)$@
$\$$\/$$/$$@
$$\$$$$/$$$@
$$$)$$/$$$$@
__/$$(_____@@
_$$$$$$__@
(___$$$)$@
$$$/$$/$$@
$$/$$/$$$@
$/$$/__$$@
($$$$$$)_@@
$$$__@
$$/$$@
$($$$@
$$)$$@
$/$$$@
(____@@
$$$_@
|$|$@
|$|$@
|$|$@
|$|$@
|$|_@@
___$@
$$$)@
$$/$@
$($$@
$$)$@
_/$$@@
__$$__$$_@
$/$$\/$/$@
(_/\__/$$@
$$$$$$$$$@
$$$$$$$$$@
_________@@
_$___$__@
(_)$(_)$@
$$___$$$@
$/$$$\$$@
|$$_$$|$@
|$(_)$|_@@
_$___$__@
(_)$(_)$@
$$___$$$@
$/$$$\$$@
($$$$$)$@
_\$$$/__@@
_$___$__@
(_)$(_)$@
$_$$$_$$@
|$|$|$|$@
|$|_|$|$@
_\$$$/__@@
_$___$__@
(_)$(_)$@
$$___$$$@
$/$$$\$$@
|$$_$$|$@
|$(_)$|_@@
_$___$__@
(_)$(_)$@
$$___$$$@
$/$$$\$$@
($$$$$)$@
_\$$$/__@@
_$___$__@
(_)$(_)$@
$_$$$_$$@
|$|$|$|$@
|$|_|$|$@
_\$$$/__@@
__$$$$$___@
$/$$__$\$$@
|$$/$_)$)$@
|$|$(_$($$@
|$|$__)$)$@
|$|($$$/__@@
@@ -0,0 +1,26 @@
import { clamp } from 'motion-utils';
import { number, alpha } from '../numbers/index.mjs';
import { sanitize } from '../utils/sanitize.mjs';
import { splitColor, isColorString } from './utils.mjs';
const clampRgbUnit = (v) => clamp(0, 255, v);
const rgbUnit = {
...number,
transform: (v) => Math.round(clampRgbUnit(v)),
};
const rgba = {
test: /*@__PURE__*/ isColorString("rgb", "red"),
parse: /*@__PURE__*/ splitColor("red", "green", "blue"),
transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" +
rgbUnit.transform(red) +
", " +
rgbUnit.transform(green) +
", " +
rgbUnit.transform(blue) +
", " +
sanitize(alpha.transform(alpha$1)) +
")",
};
export { rgbUnit, rgba };
//# sourceMappingURL=rgba.mjs.map
@@ -0,0 +1,2 @@
import { IRemoveScrollEffectProps } from './types';
export declare const effectCar: Readonly<import("use-sidecar/dist/es5/types").SideCarMedium<IRemoveScrollEffectProps>>;
@@ -0,0 +1 @@
{"version":3,"file":"text-selection.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,70 @@
{
"name": "iconv-lite",
"description": "Convert character encodings in pure javascript.",
"version": "0.7.3",
"license": "MIT",
"keywords": [
"iconv",
"convert",
"charset",
"icu"
],
"author": "Alexander Shtuchkin <ashtuchkin@gmail.com>",
"main": "./lib/index.js",
"typings": "./lib/index.d.ts",
"homepage": "https://github.com/pillarjs/iconv-lite",
"bugs": "https://github.com/pillarjs/iconv-lite/issues",
"files": [
"lib/",
"encodings/",
"types/"
],
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
},
"repository": {
"type": "git",
"url": "https://github.com/pillarjs/iconv-lite.git"
},
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"lint": "eslint",
"lint:fix": "eslint --fix",
"test": "mocha --reporter spec --check-leaks --grep .",
"test:ci": "nyc --exclude test --reporter=lcovonly --reporter=text npm test",
"test:cov": "nyc --exclude test --reporter=html --reporter=text npm test",
"test:performance": "node --allow-natives-syntax performance/index.js",
"test:tap": "mocha --reporter tap --check-leaks --grep .",
"test:typescript": "tsc && attw --pack",
"test:webpack": "npm pack && mv iconv-lite-*.tgz test/webpack/iconv-lite.tgz && cd test/webpack && npm install && npm run test && rm iconv-lite.tgz",
"typegen": "node generation/gen-typings.js"
},
"browser": {
"stream": false
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.18.4",
"@stylistic/eslint-plugin": "^5.1.0",
"@stylistic/eslint-plugin-js": "^4.1.0",
"@types/node": "^24.0.12",
"async": "^3.2.0",
"bench-node": "^0.10.0",
"eslint": "^9.0.0",
"errto": "^0.2.1",
"expect-type": "^1.2.0",
"iconv": "^2.3.5",
"mocha": "^6.2.2",
"neostandard": "^0.12.0",
"nyc": "^14.1.1",
"request": "^2.88.2",
"semver": "^6.3.0",
"typescript": "~5.9.2",
"unorm": "^1.6.0"
},
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
@@ -0,0 +1,157 @@
import React from 'react';
type ToastTypes = 'normal' | 'action' | 'success' | 'info' | 'warning' | 'error' | 'loading' | 'default';
type PromiseT<Data = any> = Promise<Data> | (() => Promise<Data>);
interface PromiseIExtendedResult extends ExternalToast {
message: React.ReactNode;
}
type PromiseTExtendedResult<Data = any> = PromiseIExtendedResult | ((data: Data) => PromiseIExtendedResult | Promise<PromiseIExtendedResult>);
type PromiseTResult<Data = any> = string | React.ReactNode | ((data: Data) => React.ReactNode | string | Promise<React.ReactNode | string>);
type PromiseExternalToast = Omit<ExternalToast, 'description'>;
type PromiseData<ToastData = any> = PromiseExternalToast & {
loading?: string | React.ReactNode;
success?: PromiseTResult<ToastData> | PromiseTExtendedResult<ToastData>;
error?: PromiseTResult | PromiseTExtendedResult;
description?: PromiseTResult;
finally?: () => void | Promise<void>;
};
interface ToastClassnames {
toast?: string;
title?: string;
description?: string;
loader?: string;
closeButton?: string;
cancelButton?: string;
actionButton?: string;
success?: string;
error?: string;
info?: string;
warning?: string;
loading?: string;
default?: string;
content?: string;
icon?: string;
}
interface ToastIcons {
success?: React.ReactNode;
info?: React.ReactNode;
warning?: React.ReactNode;
error?: React.ReactNode;
loading?: React.ReactNode;
close?: React.ReactNode;
}
interface Action {
label: React.ReactNode;
onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
actionButtonStyle?: React.CSSProperties;
}
interface ToastT {
id: number | string;
toasterId?: string;
title?: (() => React.ReactNode) | React.ReactNode;
type?: ToastTypes;
icon?: React.ReactNode;
jsx?: React.ReactNode;
richColors?: boolean;
invert?: boolean;
closeButton?: boolean;
dismissible?: boolean;
description?: (() => React.ReactNode) | React.ReactNode;
duration?: number;
delete?: boolean;
action?: Action | React.ReactNode;
cancel?: Action | React.ReactNode;
onDismiss?: (toast: ToastT) => void;
onAutoClose?: (toast: ToastT) => void;
promise?: PromiseT;
cancelButtonStyle?: React.CSSProperties;
actionButtonStyle?: React.CSSProperties;
style?: React.CSSProperties;
unstyled?: boolean;
className?: string;
classNames?: ToastClassnames;
descriptionClassName?: string;
position?: Position;
testId?: string;
}
type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';
interface ToastOptions {
className?: string;
closeButton?: boolean;
descriptionClassName?: string;
style?: React.CSSProperties;
cancelButtonStyle?: React.CSSProperties;
actionButtonStyle?: React.CSSProperties;
duration?: number;
unstyled?: boolean;
classNames?: ToastClassnames;
closeButtonAriaLabel?: string;
toasterId?: string;
}
type Offset = {
top?: string | number;
right?: string | number;
bottom?: string | number;
left?: string | number;
} | string | number;
interface ToasterProps {
id?: string;
invert?: boolean;
theme?: 'light' | 'dark' | 'system';
position?: Position;
hotkey?: string[];
richColors?: boolean;
expand?: boolean;
duration?: number;
gap?: number;
visibleToasts?: number;
closeButton?: boolean;
toastOptions?: ToastOptions;
className?: string;
style?: React.CSSProperties;
offset?: Offset;
mobileOffset?: Offset;
dir?: 'rtl' | 'ltr' | 'auto';
swipeDirections?: SwipeDirection[];
icons?: ToastIcons;
containerAriaLabel?: string;
}
type SwipeDirection = 'top' | 'right' | 'bottom' | 'left';
interface ToastToDismiss {
id: number | string;
dismiss: boolean;
}
type ExternalToast = Omit<ToastT, 'id' | 'type' | 'title' | 'jsx' | 'delete' | 'promise'> & {
id?: number | string;
toasterId?: string;
};
type titleT = (() => React.ReactNode) | React.ReactNode;
declare const toast: ((message: titleT, data?: ExternalToast) => string | number) & {
success: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
info: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
warning: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
error: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
custom: (jsx: (id: number | string) => React.ReactElement, data?: ExternalToast) => string | number;
message: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
promise: <ToastData>(promise: PromiseT<ToastData>, data?: PromiseData<ToastData>) => (string & {
unwrap: () => Promise<ToastData>;
}) | (number & {
unwrap: () => Promise<ToastData>;
}) | {
unwrap: () => Promise<ToastData>;
};
dismiss: (id?: number | string) => string | number;
loading: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
} & {
getHistory: () => (ToastT | ToastToDismiss)[];
getToasts: () => (ToastT | ToastToDismiss)[];
};
declare function useSonner(): {
toasts: ToastT[];
};
declare const Toaster: React.ForwardRefExoticComponent<ToasterProps & React.RefAttributes<HTMLElement>>;
export { Toaster, toast, useSonner };
export type { Action, ExternalToast, ToastClassnames, ToastT, ToastToDismiss, ToasterProps };
@@ -0,0 +1,23 @@
/**
* @license lucide-react v0.469.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/
import createLucideIcon from '../createLucideIcon.js';
const BellMinus = createLucideIcon("BellMinus", [
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
["path", { d: "M15 8h6", key: "8ybuxh" }],
[
"path",
{
d: "M16.243 3.757A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673A9.4 9.4 0 0 1 18.667 12",
key: "bdwj86"
}
]
]);
export { BellMinus as default };
//# sourceMappingURL=bell-minus.js.map
@@ -0,0 +1 @@
module.exports={A:{A:{"1":"_V","4":"_b"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_c"},G:{"1":"_M"},H:{"1":"1D"},I:{"1":"_P"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"YC"},N:{"1":"_A"},O:{"1":"bC"},P:{"1":"_F"},Q:{"1":"JE"},R:{"1":"KE"},S:{"1":"_C"}},B:2,C:"CSS3 Opacity",D:true};
@@ -0,0 +1 @@
{"version":3,"file":"map-easing.mjs","sources":["../../../../../src/animation/waapi/easing/map-easing.ts"],"sourcesContent":["import { Easing, isBezierDefinition } from \"motion-utils\"\nimport { supportsLinearEasing } from \"../../../utils/supports/linear-easing\"\nimport { generateLinearEasing } from \"../utils/linear\"\nimport { cubicBezierAsString } from \"./cubic-bezier\"\nimport { supportedWaapiEasing } from \"./supported\"\n\nexport function mapEasingToNativeEasing(\n easing: Easing | Easing[] | undefined,\n duration: number\n): undefined | string | string[] {\n if (!easing) {\n return undefined\n } else if (typeof easing === \"function\") {\n return supportsLinearEasing()\n ? generateLinearEasing(easing, duration)\n : \"ease-out\"\n } else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing)\n } else if (Array.isArray(easing)) {\n return easing.map(\n (segmentEasing) =>\n (mapEasingToNativeEasing(segmentEasing, duration) as string) ||\n supportedWaapiEasing.easeOut\n )\n } else {\n return supportedWaapiEasing[easing as keyof typeof supportedWaapiEasing]\n }\n}\n"],"names":[],"mappings":";;;;;;AAMM,SAAU,uBAAuB,CACnC,MAAqC,EACrC,QAAgB,EAAA;IAEhB,IAAI,CAAC,MAAM,EAAE;AACT,QAAA,OAAO,SAAS;IACpB;AAAO,SAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACrC,QAAA,OAAO,oBAAoB;AACvB,cAAE,oBAAoB,CAAC,MAAM,EAAE,QAAQ;cACrC,UAAU;IACpB;AAAO,SAAA,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AACnC,QAAA,OAAO,mBAAmB,CAAC,MAAM,CAAC;IACtC;AAAO,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAA,OAAO,MAAM,CAAC,GAAG,CACb,CAAC,aAAa,KACT,uBAAuB,CAAC,aAAa,EAAE,QAAQ,CAAY;YAC5D,oBAAoB,CAAC,OAAO,CACnC;IACL;SAAO;AACH,QAAA,OAAO,oBAAoB,CAAC,MAA2C,CAAC;IAC5E;AACJ;;;;"}
@@ -0,0 +1 @@
{"version":3,"file":"file-axis-3d.js","sources":["../../../src/icons/file-axis-3d.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileAxis3d\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjdaIiAvPgogIDxwYXRoIGQ9Ik0xNCAydjRhMiAyIDAgMCAwIDIgMmg0IiAvPgogIDxwYXRoIGQ9Im04IDE4IDQtNCIgLz4KICA8cGF0aCBkPSJNOCAxMHY4aDgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-axis-3d\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileAxis3d = createLucideIcon('FileAxis3d', [\n ['path', { d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z', key: '1rqfz7' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n ['path', { d: 'm8 18 4-4', key: '12zab0' }],\n ['path', { d: 'M8 10v8h8', key: 'tlaukw' }],\n]);\n\nexport default FileAxis3d;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,iBAAiB,YAAc,CAAA,CAAA,CAAA;AAAA,CAAA,CAChD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAA8D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC3F,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CACxD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA,CAAA;AAAA,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA;AAC5C,CAAC,CAAA,CAAA;;"}
@@ -0,0 +1,2 @@
'use strict';
require('../register')('vow', {Promise: require('vow').Promise})
@@ -0,0 +1,136 @@
(function() {
'use strict';
var collator;
try {
collator = (typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined") ? Intl.Collator("generic", { sensitivity: "base" }) : null;
} catch (err){
console.log("Collator could not be initialized and wouldn't be used");
}
// arrays to re-use
var prevRow = [],
str2Char = [];
/**
* Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
*/
var Levenshtein = {
/**
* Calculate levenshtein distance of the two strings.
*
* @param str1 String the first string.
* @param str2 String the second string.
* @param [options] Additional options.
* @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
* @return Integer the levenshtein distance (0 and above).
*/
get: function(str1, str2, options) {
var useCollator = (options && collator && options.useCollator);
var str1Len = str1.length,
str2Len = str2.length;
// base cases
if (str1Len === 0) return str2Len;
if (str2Len === 0) return str1Len;
// two rows
var curCol, nextCol, i, j, tmp;
// initialise previous row
for (i=0; i<str2Len; ++i) {
prevRow[i] = i;
str2Char[i] = str2.charCodeAt(i);
}
prevRow[str2Len] = str2Len;
var strCmp;
if (useCollator) {
// calculate current row distance from previous row using collator
for (i = 0; i < str1Len; ++i) {
nextCol = i + 1;
for (j = 0; j < str2Len; ++j) {
curCol = nextCol;
// substution
strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
nextCol = prevRow[j] + (strCmp ? 0 : 1);
// insertion
tmp = curCol + 1;
if (nextCol > tmp) {
nextCol = tmp;
}
// deletion
tmp = prevRow[j + 1] + 1;
if (nextCol > tmp) {
nextCol = tmp;
}
// copy current col value into previous (in preparation for next iteration)
prevRow[j] = curCol;
}
// copy last col value into previous (in preparation for next iteration)
prevRow[j] = nextCol;
}
}
else {
// calculate current row distance from previous row without collator
for (i = 0; i < str1Len; ++i) {
nextCol = i + 1;
for (j = 0; j < str2Len; ++j) {
curCol = nextCol;
// substution
strCmp = str1.charCodeAt(i) === str2Char[j];
nextCol = prevRow[j] + (strCmp ? 0 : 1);
// insertion
tmp = curCol + 1;
if (nextCol > tmp) {
nextCol = tmp;
}
// deletion
tmp = prevRow[j + 1] + 1;
if (nextCol > tmp) {
nextCol = tmp;
}
// copy current col value into previous (in preparation for next iteration)
prevRow[j] = curCol;
}
// copy last col value into previous (in preparation for next iteration)
prevRow[j] = nextCol;
}
}
return nextCol;
}
};
// amd
if (typeof define !== "undefined" && define !== null && define.amd) {
define(function() {
return Levenshtein;
});
}
// commonjs
else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
module.exports = Levenshtein;
}
// web worker
else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
self.Levenshtein = Levenshtein;
}
// browser main thread
else if (typeof window !== "undefined" && window !== null) {
window.Levenshtein = Levenshtein;
}
}());
@@ -0,0 +1,430 @@
# Language Specification
## Objective
Create a tool for the Chromium project that generates native Visual Studio,
Xcode and SCons and/or make build files from a platform-independent input
format. Make the input format as reasonably general as possible without
spending extra time trying to "get everything right," except where not doing so
would likely lead Chromium to an eventual dead end. When in doubt, do what
Chromium needs and don't worry about generalizing the solution.
## Background
Numerous other projects, both inside and outside Google, have tried to
create a simple, universal cross-platform build representation that
still allows sufficient per-platform flexibility to accommodate
irreconcilable differences. The fact that no obvious working candidate
exists that meets Chromium's requirements indicates this is probably a
tougher problem than it appears at first glance. We aim to succeed by
creating a tool that is highly specific to Chromium's specific use case,
not to the general case of design a completely platform-independent tool
for expressing any possible build.
The Mac has the most sophisticated model for application development
through an IDE. Consequently, we will use the Xcode model as the
starting point (the input file format must handle Chromium's use of
Xcode seamlessly) and adapt the design as necessary for the other
platforms.
## Overview
The overall design has the following characteristics:
* Input configurations are specified in files with the suffix `.gyp`.
* Each `.gyp` file specifies how to build the targets for the
"component" defined by that file.
* Each `.gyp` file generates one or more output files appropriate to
the platform:
* On Mac, a `.gyp` file generates one Xcode .xcodeproj bundle with
information about how its targets are built.
* On Windows, a `.gyp` file generates one Visual Studio .sln file,
and one Visual Studio .vcproj file per target.
* On Linux, a `.gyp` file generates one SCons file and/or one
Makefile per target
* The `.gyp` file syntax is a Python data structure.
* Use of arbitrary Python in `.gyp` files is forbidden.
* Use of eval() with restricted globals and locals on `.gyp` file
contents restricts the input to an evaluated expression, not
arbitrary Python statements.
* All input is expected to comply with JSON, with two exceptions:
the # character (not inside strings) begins a comment that lasts
until the end of the line, and trailing commas are permitted at
the end of list and dict contents.
* Input data is a dictionary of keywords and values.
* "Invalid" keywords on any given data structure are not illegal,
they're just ignored.
* TODO: providing warnings on use of illegal keywords would help
users catch typos. Figure out something nice to do with this.
## Detailed Design
Some up-front design principles/thoughts/TODOs:
* Re-use keywords consistently.
* Keywords that allow configuration of a platform-specific concept get
prefixed appropriately:
* Examples: `msvs_disabled_warnings`, `xcode_framework_dirs`
* The input syntax is declarative and data-driven.
* This gets enforced by using Python `eval()` (which only evaluates
an expression) instead of `exec` (which executes arbitrary python)
* Semantic meanings of specific keyword values get deferred until all
are read and the configuration is being evaluated to spit out the
appropriate file(s)
* Source file lists:
* Are flat lists. Any imposed ordering within the `.gyp` file (e.g.
alphabetically) is purely by convention and for developer
convenience. When source files are linked or archived together,
it is expected that this will occur in the order that files are
listed in the `.gyp` file.
* Source file lists contain no mechanism for by-hand folder
configuration (`Filter` tags in Visual Studio, `Groups` in Xcode)
* A folder hierarchy is created automatically that mirrors the file
system
### Example
```
{
'target_defaults': {
'defines': [
'U_STATIC_IMPLEMENTATION',
['LOGFILE', 'foo.log',],
],
'include_dirs': [
'..',
],
},
'targets': [
{
'target_name': 'foo',
'type': 'static_library',
'sources': [
'foo/src/foo.cc',
'foo/src/foo_main.cc',
],
'include_dirs': [
'foo',
'foo/include',
],
'conditions': [
[ 'OS==mac', { 'sources': [ 'platform_test_mac.mm' ] } ]
],
'direct_dependent_settings': {
'defines': [
'UNIT_TEST',
],
'include_dirs': [
'foo',
'foo/include',
],
},
},
],
}
```
### Structural Elements
### Top-level Dictionary
This is the single dictionary in the `.gyp` file that defines the
targets and how they're to be built.
The following keywords are meaningful within the top-level dictionary
definition:
| *Keyword* | *Description* |
|:------------------|:------------------|
| `conditions` | A conditional section that may contain other items that can be present in a top-level dictionary, on a conditional basis. See the "Conditionals" section below. |
| `includes` | A list of `.gypi` files to be included in the top-level dictionary. |
| `target_defaults` | A dictionary of default settings to be inherited by all targets in the top-level dictionary. See the "Settings keywords" section below. |
| `targets` | A list of target specifications. See the "targets" below. |
| `variables` | A dictionary containing variable definitions. Each key in this dictionary is the name of a variable, and each value must be a string value that the variable is to be set to. |
### targets
A list of dictionaries defining targets to be built by the files
generated from this `.gyp` file.
Targets may contain `includes`, `conditions`, and `variables` sections
as permitted in the root dictionary. The following additional keywords
have structural meaning for target definitions:
| *Keyword* | *Description* |
|:---------------------------- |:------------------------------------------|
| `actions` | A list of special custom actions to perform on a specific input file, or files, to produce output files. See the "Actions" section below. |
| `all_dependent_settings` | A dictionary of settings to be applied to all dependents of the target, transitively. This includes direct dependents and the entire set of their dependents, and so on. This section may contain anything found within a `target` dictionary, except `configurations`, `target_name`, and `type` sections. Compare `direct_dependent_settings` and `link_settings`. |
| `configurations` | A list of dictionaries defining build configurations for the target. See the "Configurations" section below. |
| `copies` | A list of copy actions to perform. See the "Copies" section below. |
| `defines` | A list of preprocessor definitions to be passed on the command line to the C/C++ compiler (via `-D` or `/D` options). |
| `dependencies` | A list of targets on which this target depends. Targets in other `.gyp` files are specified as `../path/to/other.gyp:target_we_want`. |
| `direct_dependent_settings` | A dictionary of settings to be applied to other targets that depend on this target. These settings will only be applied to direct dependents. This section may contain anything found within a `target` dictionary, except `configurations`, `target_name`, and `type` sections. Compare with `all_dependent_settings` and `link_settings`. |
| `include_dirs` | A list of include directories to be passed on the command line to the C/C++ compiler (via `-I` or `/I` options). |
| `libraries` | A list of list of libraries (and/or frameworks) on which this target depends. |
| `link_settings` | A dictionary of settings to be applied to targets in which this target's contents are linked. `executable` and `shared_library` targets are linkable, so if they depend on a non-linkable target such as a `static_library`, they will adopt its `link_settings`. This section can contain anything found within a `target` dictionary, except `configurations`, `target_name`, and `type` sections. Compare `all_dependent_settings` and `direct_dependent_settings`. |
| `rules` | A special custom action to perform on a list of input files, to produce output files. See the "Rules" section below. |
| `sources` | A list of source files that are used to build this target or which should otherwise show up in the IDE for this target. In practice, we expect this list to be a union of all files necessary to build the target on all platforms, as well as other related files that aren't actually used for building, like README files. |
| `target_conditions` | Like `conditions`, but evaluation is delayed until the settings have been merged into an actual target. `target_conditions` may be used to place conditionals into a `target_defaults` section but have them still depend on specific target settings. |
| `target_name` | The name of a target being defined. |
| `type` | The type of target being defined. This field currently supports `executable`, `static_library`, `shared_library`, and `none`. The `none` target type is useful when producing output which is not linked. For example, converting raw translation files into resources or documentation into platform specific help files. |
| `msvs_props` | A list of Visual Studio property sheets (`.vsprops` files) to be used to build the target. |
| `xcode_config_file` | An Xcode configuration (`.xcconfig` file) to be used to build the target. |
| `xcode_framework_dirs` | A list of framework directories be used to build the target. |
You can affect the way that lists/dictionaries are merged together (for
example the way a list in target\_defaults interacts with the same named
list in the target itself) with a couple of special characters, which
are covered in [Merge
Basics](InputFormatReference#Merge_Basics_(=,_?,_+).md) and [List
Filters](InputFormatReference#List_Filters.md) on the
InputFormatReference page.
### configurations
`configurations` sections may be found within `targets` or
`target_defaults` sections. The `configurations` section is a list of
dictionaries specifying different build configurations. Because
configurations are implemented as lists, it is not currently possible to
override aspects of configurations that are imported into a target from
a `target_defaults` section.
NOTE: It is extremely important that each target within a project define
the same set of configurations. This continues to apply even when a
project spans across multiple `.gyp` files.
A configuration dictionary may contain anything that can be found within
a target dictionary, except for `actions`, `all_dependent_settings`,
`configurations`, `dependencies`, `direct_dependent_settings`,
`libraries`, `link_settings`, `sources`, `target_name`, and `type`.
Configuration dictionaries may also contain these elements:
| *Keyword* | *Description* |
|:---------------------|:----------------------------------------------------|
| `configuration_name` | Required attribute. The name of the configuration. |
### Conditionals
Conditionals may appear within any dictionary in a `.gyp` file. There
are two tpes of conditionals, which differ only in the timing of their
processing. `conditions` sections are processed shortly after loading
`.gyp` files, and `target_conditions` sections are processed after all
dependencies have been computed.
A conditional section is introduced with a `conditions` or
`target_conditions` dictionary keyword, and is composed of a list. Each
list contains two or three elements. The first two elements, which are
always required, are the conditional expression to evaluate and a
dictionary containing settings to merge into the dictionary containing
the `conditions` or `target_conditions` section if the expression
evaluates to true. The third, optional, list element is a dictionary to
merge if the expression evaluates to false.
The `eval()` of the expression string takes place in the context of
global and/or local dictionaries that constructed from the `.gyp` input
data, and overrides the `__builtin__` dictionary, to prevent the
execution of arbitrary Python code.
### Actions
An `actions` section provides a list of custom build actions to perform
on inputs, producing outputs. The `actions` section is organized as a
list. Each item in the list is a dictionary having the following form:
| *Keyword* | *Type* | *Description* |
|:--------------|:-------|:-----------------------------|
| `action_name` | string | The name of the action. Depending on how actions are implemented in the various generators, some may desire or require this property to be set to a unique name; others may ignore this property entirely. |
| `inputs` | list | A list of pathnames treated as inputs to the custom action. |
| `outputs` | list | A list of pathnames that the custom action produces. |
| `action` | list | A command line invocation used to produce `outputs` from `inputs`. For maximum cross-platform compatibility, invocations that require a Python interpreter should be specified with a first element `"python"`. This will enable generators for environments with specialized Python installations to be able to perform the action in an appropriate Python environment. |
| `message` | string | A message to be displayed to the user by the build system when the action is run. |
Build environments will compare `inputs` and `outputs`. If any `output`
is missing or is outdated relative to any `input`, the custom action
will be invoked. If all `outputs` are present and newer than all
`inputs`, the `outputs` are considered up-to-date and the action need
not be invoked.
Actions are implemented in Xcode as shell script build phases performed
prior to the compilation phase. In the Visual Studio generator, actions
appear files with a `FileConfiguration` containing a custom
`VCCustomBuildTool` specifying the remainder of the inputs, the outputs,
and the action.
Combined with variable expansions, actions can be quite powerful. Here
is an example action that leverages variable expansions to minimize
duplication of pathnames:
```
'sources': [
# libraries.cc is generated by the js2c action below.
'<(INTERMEDIATE_DIR)/libraries.cc',
],
'actions': [
{
'variables': {
'core_library_files': [
'src/runtime.js',
'src/v8natives.js',
'src/macros.py',
],
},
'action_name': 'js2c',
'inputs': [
'tools/js2c.py',
'<@(core_library_files)',
],
'outputs': [
'<(INTERMEDIATE_DIR)/libraries.cc',
'<(INTERMEDIATE_DIR)/libraries-empty.cc',
],
'action': ['python', 'tools/js2c.py', '<@(_outputs)', 'CORE', '<@(core_library_files)'],
},
],
```
### Rules
A `rules` section provides custom build action to perform on inputs, producing
outputs. The `rules` section is organized as a list. Each item in the list is
a dictionary having the following form:
| *Keyword* | *Type* | *Description* |
|:------------|:-------|:-----------------------------------------|
| `rule_name` | string | The name of the rule. Depending on how Rules are implemented in the various generators, some may desire or require this property to be set to a unique name; others may ignore this property entirely. |
| `extension` | string | All source files of the current target with the given extension will be treated successively as inputs to the rule. |
| `inputs` | list | Additional dependencies of the rule. |
| `outputs` | list | A list of pathnames that the rule produces. Has access to `RULE_INPUT_` variables (see below). |
| `action` | list | A command line invocation used to produce `outputs` from `inputs`. For maximum cross-platform compatibility, invocations that require a Python interpreter should be specified with a first element `"python"`. This will enable generators for environments with specialized Python installations to be able to perform the action in an appropriate Python environment. Has access to `RULE_INPUT_` variables (see below). |
| `message` | string | A message to be displayed to the user by the build system when the action is run. Has access to `RULE_INPUT_` variables (see below). |
There are several variables available to `outputs`, `action`, and `message`.
| *Variable* | *Description* |
|:---------------------|:------------------------------------|
| `RULE_INPUT_PATH` | The full path to the current input. |
| `RULE_INPUT_DIRNAME` | The directory of the current input. |
| `RULE_INPUT_NAME` | The file name of the current input. |
| `RULE_INPUT_ROOT` | The file name of the current input without extension. |
| `RULE_INPUT_EXT` | The file name extension of the current input. |
Rules can be thought of as Action generators. For each source selected
by `extension` an special action is created. This action starts out with
the same `inputs`, `outputs`, `action`, and `message` as the rule. The
source is added to the action's `inputs`. The `outputs`, `action`, and
`message` are then handled the same but with the additional variables.
If the `_output` variable is used in the `action` or `message` the
`RULE_INPUT_` variables in `output` will be expanded for the current
source.
### Copies
A `copies` section provides a simple means of copying files. The
`copies` section is organized as a list. Each item in the list is a
dictionary having the following form:
| *Keyword* | *Type* | *Description* |
|:--------------|:-------|:------------------------------|
| `destination` | string | The directory into which the `files` will be copied. |
| `files` | list | A list of files to be copied. |
The copies will be created in `destination` and have the same file name
as the file they are copied from. Even if the `files` are from multiple
directories they will all be copied into the `destination` directory.
Each `destination` file has an implicit build dependency on the file it
is copied from.
### Generated Xcode .pbxproj Files
We derive the following things in a `project.pbxproj` plist file within
an `.xcodeproj` bundle from the above input file formats as follows:
* `Group hierarchy`: This is generated in a fixed format with contents
derived from the input files. There is no provision for the user to
specify additional groups or create a custom hierarchy.
* `Configuration group`: This will be used with the
`xcode_config_file` property above, if needed.
* `Source group`: The union of the `sources` lists of all `targets`
after applying appropriate `conditions`. The resulting list is
sorted and put into a group hierarchy that matches the layout of
the directory tree on disk, with a root of // (the top of the
hierarchy).
* `Frameworks group`: Taken directly from `libraries` value for the
target, after applying appropriate conditions.
* `Projects group`: References to other `.xcodeproj` bundles that
are needed by the `.xcodeproj` in which the group is contained.
* `Products group`: Output from the various targets.
* `Project References`:
* `Project Configurations`:
* Per-`.xcodeproj` file settings are not supported, all settings are
applied at the target level.
* `Targets`:
* `Phases`: Copy sources, link with libraries/frameworks, ...
* `Target Configurations`: Specified by input.
* `Dependencies`: (local and remote)
### Generated Visual Studio .vcproj Files
We derive the following sections in a `.vcproj` file from the above
input file formats as follows:
* `VisualStudioProject`:
* `Platforms`:
* `ToolFiles`:
* `Configurations`:
* `Configuration`:
* `References`:
* `Files`:
* `Filter`:
* `File`:
* `FileConfiguration`:
* `Tool`:
* `Globals`:
### Generated Visual Studio .sln Files
We derive the following sections in a `.sln` file from the above input
file formats as follows:
* `Projects`:
* `WebsiteProperties`:
* `ProjectDependencies`:
* `Global`:
* `SolutionConfigurationPlatforms`:
* `ProjectConfigurationPlatforms`:
* `SolutionProperties`:
* `NestedProjects`:
## Caveats
Notes/Question from very first prototype draft of the language.
Make sure these issues are addressed somewhere before deleting.
* Libraries are easy, application abstraction is harder
* Applications involves resource compilation
* Applications involve many inputs
* Applications include transitive closure of dependencies
* Specific use cases like cc\_library
* Mac compiles more than just .c/.cpp files (specifically, .m and .mm
files)
* Compiler options vary by:
* File type
* Target type
* Individual file
* Files may have custom settings per file per platform, but we probably
don't care or need to support this in gyp.
* Will all linked non-Chromium projects always use the same versions of every
subsystem?
* Variants are difficult. We've identified the following variants (some
specific to Chromium, some typical of other projects in the same ballpark):
* Target platform
* V8 vs. JSC
* Debug vs. Release
* Toolchain (VS version, gcc, version)
* Host platform
* L10N
* Vendor
* Purify / Valgrind
* Will everyone upgrade VS at once?
* What does a dylib dependency mean?
@@ -0,0 +1,135 @@
import { f as createRule } from "../utils.js";
const OVERRIDE_SCHEMA = { oneOf: [{
type: "string",
enum: [
"before",
"after",
"both",
"neither"
]
}, {
type: "object",
properties: {
before: { type: "boolean" },
after: { type: "boolean" }
},
additionalProperties: false
}] };
var generator_star_spacing_default = createRule({
name: "generator-star-spacing",
meta: {
type: "layout",
docs: { description: "Enforce consistent spacing around `*` operators in generator functions" },
fixable: "whitespace",
schema: [{ oneOf: [{
type: "string",
enum: [
"before",
"after",
"both",
"neither"
]
}, {
type: "object",
properties: {
before: { type: "boolean" },
after: { type: "boolean" },
named: OVERRIDE_SCHEMA,
anonymous: OVERRIDE_SCHEMA,
method: OVERRIDE_SCHEMA,
shorthand: OVERRIDE_SCHEMA
},
additionalProperties: false
}] }],
defaultOptions: [{
before: true,
after: false
}],
messages: {
missingBefore: "Missing space before *.",
missingAfter: "Missing space after *.",
unexpectedBefore: "Unexpected space before *.",
unexpectedAfter: "Unexpected space after *."
}
},
create(context, [options]) {
const optionDefinitions = {
before: {
before: true,
after: false
},
after: {
before: false,
after: true
},
both: {
before: true,
after: true
},
neither: {
before: false,
after: false
}
};
function optionToDefinition(option, defaults) {
if (!option) return defaults;
return typeof option === "string" ? optionDefinitions[option] : Object.assign({}, defaults, option);
}
const modes = function() {
const defaults = optionToDefinition(options, optionDefinitions.before);
const { named, anonymous, method, shorthand } = options;
return {
named: optionToDefinition(named, defaults),
anonymous: optionToDefinition(anonymous, defaults),
method: optionToDefinition(method, defaults),
shorthand: optionToDefinition(shorthand ?? method, defaults)
};
}();
const sourceCode = context.sourceCode;
function isStarToken(token) {
return token.value === "*" && token.type === "Punctuator";
}
function getStarToken(node) {
return sourceCode.getFirstToken("method" in node.parent && node.parent.method || node.parent.type === "MethodDefinition" ? node.parent : node, isStarToken);
}
function capitalize(str) {
return str[0].toUpperCase() + str.slice(1);
}
function checkSpacing(kind, side, leftToken, rightToken) {
if (!!(rightToken.range[0] - leftToken.range[1]) !== modes[kind][side]) {
const after = leftToken.value === "*";
const spaceRequired = modes[kind][side];
const node = after ? leftToken : rightToken;
const messageId = `${spaceRequired ? "missing" : "unexpected"}${capitalize(side)}`;
context.report({
node,
messageId,
fix(fixer) {
if (spaceRequired) {
if (after) return fixer.insertTextAfter(node, " ");
return fixer.insertTextBefore(node, " ");
}
return fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
}
});
}
}
function checkFunction(node) {
if (!node.generator) return;
const starToken = getStarToken(node);
const prevToken = sourceCode.getTokenBefore(starToken);
const nextToken = sourceCode.getTokenAfter(starToken);
let kind = "named";
if (node.parent.type === "Property" && node.parent.method) kind = "shorthand";
else if (node.parent.type === "MethodDefinition") kind = "method";
else if (!node.id) kind = "anonymous";
if (!((kind === "method" || kind === "shorthand") && starToken === sourceCode.getFirstToken(node.parent))) checkSpacing(kind, "before", prevToken, starToken);
checkSpacing(kind, "after", starToken, nextToken);
}
return {
FunctionDeclaration: checkFunction,
FunctionExpression: checkFunction
};
}
});
export { generator_star_spacing_default as t };
@@ -0,0 +1,56 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
'use strict';
const { ReportBase } = require('istanbul-lib-report');
class JsonSummaryReport extends ReportBase {
constructor(opts) {
super();
this.file = opts.file || 'coverage-summary.json';
this.contentWriter = null;
this.first = true;
}
onStart(root, context) {
this.contentWriter = context.writer.writeFile(this.file);
this.contentWriter.write('{');
}
writeSummary(filePath, sc) {
const cw = this.contentWriter;
if (this.first) {
this.first = false;
} else {
cw.write(',');
}
cw.write(JSON.stringify(filePath));
cw.write(': ');
cw.write(JSON.stringify(sc));
cw.println('');
}
onSummary(node) {
if (!node.isRoot()) {
return;
}
this.writeSummary('total', node.getCoverageSummary());
}
onDetail(node) {
this.writeSummary(
node.getFileCoverage().path,
node.getCoverageSummary()
);
}
onEnd() {
const cw = this.contentWriter;
cw.println('}');
cw.close();
}
}
module.exports = JsonSummaryReport;
@@ -0,0 +1 @@
{"version":3,"file":"circle-chevron-up.js","sources":["../../../src/icons/circle-chevron-up.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name CircleChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtOCAxNCA0LTQgNCA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleChevronUp = createLucideIcon('CircleChevronUp', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm8 14 4-4 4 4', key: 'fy2ptz' }],\n]);\n\nexport default CircleChevronUp;\n"],"names":[],"mappings":";;;;;;;;;AAaM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,iBAAiB,iBAAmB,CAAA,CAAA,CAAA;AAAA,CAC1D,CAAA,CAAC,QAAU,CAAA,CAAA,CAAA,CAAE,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAM,CAAI,CAAA,CAAA,CAAA,IAAA,CAAM,CAAA,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,GAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA;AAAA,CAAA,CACzD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAE,GAAG,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,UAAU,CAAA;AAChD,CAAC,CAAA,CAAA;;"}