This commit is contained in:
+1
@@ -0,0 +1 @@
|
||||
../baseline-browser-mapping/dist/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../browserslist/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../ejs/bin/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../glob/dist/esm/bin.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jake/bin/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jsesc/bin/jsesc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../json5/lib/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../which/bin/node-which
|
||||
+1
@@ -0,0 +1 @@
|
||||
../@babel/parser/bin/babel-parser.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../regjsparser/bin/parser
|
||||
+1
@@ -0,0 +1 @@
|
||||
../semver/bin/semver.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../terser/bin/terser
|
||||
+1
@@ -0,0 +1 @@
|
||||
../update-browserslist-db/cli.js
|
||||
-114782
File diff suppressed because it is too large
Load Diff
-7
File diff suppressed because one or more lines are too long
-16
@@ -1,16 +0,0 @@
|
||||
import {
|
||||
check_default
|
||||
} from "./chunk-IOOJRWFM.js";
|
||||
import "./chunk-WPKGHLNR.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
check_default as default
|
||||
};
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
import {
|
||||
chevron_right_default
|
||||
} from "./chunk-WWFBEETI.js";
|
||||
import "./chunk-WPKGHLNR.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
chevron_right_default as default
|
||||
};
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
import {
|
||||
circle_default
|
||||
} from "./chunk-RP7C34GZ.js";
|
||||
import "./chunk-WPKGHLNR.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
circle_default as default
|
||||
};
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
import {
|
||||
minus_default
|
||||
} from "./chunk-ZYKZD434.js";
|
||||
import "./chunk-WPKGHLNR.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
minus_default as default
|
||||
};
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
+290
-8
@@ -1,16 +1,298 @@
|
||||
import {
|
||||
x_default
|
||||
} from "./chunk-4KD2RPWH.js";
|
||||
import "./chunk-WPKGHLNR.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
add_locations,
|
||||
attribute_effect,
|
||||
check_target,
|
||||
each,
|
||||
element,
|
||||
hmr,
|
||||
index,
|
||||
legacy_api,
|
||||
prop,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
validate_dynamic_element_tag,
|
||||
wrap_snippet
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
append,
|
||||
comment,
|
||||
from_svg
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
child,
|
||||
first_child,
|
||||
get,
|
||||
noop,
|
||||
pop,
|
||||
push,
|
||||
reset,
|
||||
sibling,
|
||||
to_array,
|
||||
user_derived
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/defaultAttributes.js
|
||||
var defaultAttributes = {
|
||||
xmlns: "http://www.w3.org/2000/svg",
|
||||
width: 24,
|
||||
height: 24,
|
||||
viewBox: "0 0 24 24",
|
||||
fill: "none",
|
||||
stroke: "currentColor",
|
||||
"stroke-width": 2,
|
||||
"stroke-linecap": "round",
|
||||
"stroke-linejoin": "round"
|
||||
};
|
||||
var defaultAttributes_default = defaultAttributes;
|
||||
|
||||
// node_modules/@lucide/svelte/dist/Icon.svelte
|
||||
Icon[FILENAME] = "node_modules/@lucide/svelte/dist/Icon.svelte";
|
||||
var root = add_locations(from_svg(`<svg><!><!></svg>`), Icon[FILENAME], [[5, 0]]);
|
||||
function Icon($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Icon);
|
||||
const color = prop($$props, "color", 3, "currentColor"), size = prop($$props, "size", 3, 24), strokeWidth = prop($$props, "strokeWidth", 3, 2), absoluteStrokeWidth = prop($$props, "absoluteStrokeWidth", 3, false), iconNode = prop($$props, "iconNode", 19, () => []), props = rest_props(
|
||||
$$props,
|
||||
[
|
||||
"$$slots",
|
||||
"$$events",
|
||||
"$$legacy",
|
||||
"name",
|
||||
"color",
|
||||
"size",
|
||||
"strokeWidth",
|
||||
"absoluteStrokeWidth",
|
||||
"iconNode",
|
||||
"children"
|
||||
],
|
||||
"props"
|
||||
);
|
||||
var $$exports = { ...legacy_api() };
|
||||
var svg = root();
|
||||
attribute_effect(
|
||||
svg,
|
||||
($0) => ({
|
||||
...defaultAttributes_default,
|
||||
...props,
|
||||
width: size(),
|
||||
height: size(),
|
||||
stroke: color(),
|
||||
"stroke-width": $0,
|
||||
class: [
|
||||
"lucide-icon lucide",
|
||||
$$props.name && `lucide-${$$props.name}`,
|
||||
$$props.class
|
||||
]
|
||||
}),
|
||||
[
|
||||
() => absoluteStrokeWidth() ? Number(strokeWidth()) * 24 / Number(size()) : strokeWidth()
|
||||
]
|
||||
);
|
||||
var node = child(svg);
|
||||
add_svelte_meta(
|
||||
() => each(node, 17, iconNode, index, ($$anchor2, $$item) => {
|
||||
var $$array = user_derived(() => to_array(get($$item), 2));
|
||||
let tag = () => get($$array)[0];
|
||||
tag();
|
||||
let attrs = () => get($$array)[1];
|
||||
attrs();
|
||||
var fragment = comment();
|
||||
var node_1 = first_child(fragment);
|
||||
{
|
||||
validate_dynamic_element_tag(tag);
|
||||
element(
|
||||
node_1,
|
||||
tag,
|
||||
true,
|
||||
($$element, $$anchor3) => {
|
||||
attribute_effect($$element, () => ({ ...attrs() }));
|
||||
},
|
||||
void 0,
|
||||
[15, 4]
|
||||
);
|
||||
}
|
||||
append($$anchor2, fragment);
|
||||
}),
|
||||
"each",
|
||||
Icon,
|
||||
14,
|
||||
2
|
||||
);
|
||||
var node_2 = sibling(node);
|
||||
add_svelte_meta(() => snippet(node_2, () => $$props.children ?? noop), "render", Icon, 20, 2);
|
||||
reset(svg);
|
||||
append($$anchor, svg);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Icon = hmr(Icon);
|
||||
import.meta.hot.accept((module) => {
|
||||
Icon[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var Icon_default = Icon;
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/x.svelte
|
||||
X[FILENAME] = "node_modules/@lucide/svelte/dist/icons/x.svelte";
|
||||
function X($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, X);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [
|
||||
["path", { "d": "M18 6 6 18" }],
|
||||
["path", { "d": "m6 6 12 12" }]
|
||||
];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name X
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/x
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "x" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(X, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", X, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
X,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
X = hmr(X);
|
||||
import.meta.hot.accept((module) => {
|
||||
X[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var x_default = X;
|
||||
export {
|
||||
x_default as default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/defaultAttributes.js:
|
||||
@lucide/svelte/dist/icons/x.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/x.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=@lucide_svelte_icons_x.js.map
|
||||
|
||||
+4
-4
File diff suppressed because one or more lines are too long
+75
-117
@@ -1,193 +1,169 @@
|
||||
{
|
||||
"hash": "e518da11",
|
||||
"configHash": "7f9165df",
|
||||
"lockfileHash": "ec9999f8",
|
||||
"browserHash": "cd033ea7",
|
||||
"hash": "37e34cef",
|
||||
"configHash": "a611bccb",
|
||||
"lockfileHash": "43c145e9",
|
||||
"browserHash": "448eb4c9",
|
||||
"optimized": {
|
||||
"svelte": {
|
||||
"src": "../../svelte/src/index-client.js",
|
||||
"file": "svelte.js",
|
||||
"fileHash": "365f6da8",
|
||||
"fileHash": "c6b22047",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/animate": {
|
||||
"src": "../../svelte/src/animate/index.js",
|
||||
"file": "svelte_animate.js",
|
||||
"fileHash": "c812c267",
|
||||
"fileHash": "5011b580",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/attachments": {
|
||||
"src": "../../svelte/src/attachments/index.js",
|
||||
"file": "svelte_attachments.js",
|
||||
"fileHash": "840015e5",
|
||||
"fileHash": "d1840acb",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/easing": {
|
||||
"src": "../../svelte/src/easing/index.js",
|
||||
"file": "svelte_easing.js",
|
||||
"fileHash": "e4270293",
|
||||
"fileHash": "34f41b00",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/internal": {
|
||||
"src": "../../svelte/src/internal/index.js",
|
||||
"file": "svelte_internal.js",
|
||||
"fileHash": "ef33a44e",
|
||||
"fileHash": "fcebec5d",
|
||||
"needsInterop": true
|
||||
},
|
||||
"svelte/internal/client": {
|
||||
"src": "../../svelte/src/internal/client/index.js",
|
||||
"file": "svelte_internal_client.js",
|
||||
"fileHash": "2e8748f4",
|
||||
"fileHash": "45e77dad",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/internal/disclose-version": {
|
||||
"src": "../../svelte/src/internal/disclose-version.js",
|
||||
"file": "svelte_internal_disclose-version.js",
|
||||
"fileHash": "1757bad3",
|
||||
"fileHash": "115aad6f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/internal/flags/async": {
|
||||
"src": "../../svelte/src/internal/flags/async.js",
|
||||
"file": "svelte_internal_flags_async.js",
|
||||
"fileHash": "c241ce7c",
|
||||
"fileHash": "ac9a79da",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/internal/flags/legacy": {
|
||||
"src": "../../svelte/src/internal/flags/legacy.js",
|
||||
"file": "svelte_internal_flags_legacy.js",
|
||||
"fileHash": "ba5bce19",
|
||||
"fileHash": "c14f18cb",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/internal/flags/tracing": {
|
||||
"src": "../../svelte/src/internal/flags/tracing.js",
|
||||
"file": "svelte_internal_flags_tracing.js",
|
||||
"fileHash": "215d3d25",
|
||||
"fileHash": "829fa550",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/legacy": {
|
||||
"src": "../../svelte/src/legacy/legacy-client.js",
|
||||
"file": "svelte_legacy.js",
|
||||
"fileHash": "0f502868",
|
||||
"fileHash": "ca1e28bc",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/motion": {
|
||||
"src": "../../svelte/src/motion/index.js",
|
||||
"file": "svelte_motion.js",
|
||||
"fileHash": "488c6058",
|
||||
"fileHash": "b66b5c8a",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/reactivity": {
|
||||
"src": "../../svelte/src/reactivity/index-client.js",
|
||||
"file": "svelte_reactivity.js",
|
||||
"fileHash": "d34eeae1",
|
||||
"fileHash": "d9fb62ce",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/reactivity/window": {
|
||||
"src": "../../svelte/src/reactivity/window/index.js",
|
||||
"file": "svelte_reactivity_window.js",
|
||||
"fileHash": "057b2ac4",
|
||||
"fileHash": "33ae9e17",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/store": {
|
||||
"src": "../../svelte/src/store/index-client.js",
|
||||
"file": "svelte_store.js",
|
||||
"fileHash": "118a19da",
|
||||
"fileHash": "e6b3cc8f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/transition": {
|
||||
"src": "../../svelte/src/transition/index.js",
|
||||
"file": "svelte_transition.js",
|
||||
"fileHash": "d765b037",
|
||||
"fileHash": "790ea0bf",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte/events": {
|
||||
"src": "../../svelte/src/events/index.js",
|
||||
"file": "svelte_events.js",
|
||||
"fileHash": "ed7f6e9a",
|
||||
"fileHash": "ad27b93b",
|
||||
"needsInterop": false
|
||||
},
|
||||
"svelte > clsx": {
|
||||
"src": "../../clsx/dist/clsx.mjs",
|
||||
"file": "svelte___clsx.js",
|
||||
"fileHash": "1c06ad48",
|
||||
"needsInterop": false
|
||||
},
|
||||
"clsx": {
|
||||
"src": "../../clsx/dist/clsx.mjs",
|
||||
"file": "clsx.js",
|
||||
"fileHash": "e44371d9",
|
||||
"needsInterop": false
|
||||
},
|
||||
"esm-env": {
|
||||
"src": "../../esm-env/index.js",
|
||||
"file": "esm-env.js",
|
||||
"fileHash": "0c6974a4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-merge": {
|
||||
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
|
||||
"file": "tailwind-merge.js",
|
||||
"fileHash": "5ba3bf0a",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-variants": {
|
||||
"src": "../../tailwind-variants/dist/index.js",
|
||||
"file": "tailwind-variants.js",
|
||||
"fileHash": "54e9d8eb",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte": {
|
||||
"src": "../../@lucide/svelte/dist/lucide-svelte.js",
|
||||
"file": "@lucide_svelte.js",
|
||||
"fileHash": "f964b574",
|
||||
"needsInterop": false
|
||||
},
|
||||
"barcode-detector-api-polyfill": {
|
||||
"src": "../../barcode-detector-api-polyfill/esm/index.js",
|
||||
"file": "barcode-detector-api-polyfill.js",
|
||||
"fileHash": "64cd8179",
|
||||
"needsInterop": false
|
||||
},
|
||||
"bits-ui": {
|
||||
"src": "../../bits-ui/dist/index.js",
|
||||
"file": "bits-ui.js",
|
||||
"fileHash": "4f20570e",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte/icons/check": {
|
||||
"src": "../../@lucide/svelte/dist/icons/check.js",
|
||||
"file": "@lucide_svelte_icons_check.js",
|
||||
"fileHash": "f69265aa",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte/icons/minus": {
|
||||
"src": "../../@lucide/svelte/dist/icons/minus.js",
|
||||
"file": "@lucide_svelte_icons_minus.js",
|
||||
"fileHash": "86ab0319",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte/icons/circle": {
|
||||
"src": "../../@lucide/svelte/dist/icons/circle.js",
|
||||
"file": "@lucide_svelte_icons_circle.js",
|
||||
"fileHash": "9551f82a",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte/icons/chevron-right": {
|
||||
"src": "../../@lucide/svelte/dist/icons/chevron-right.js",
|
||||
"file": "@lucide_svelte_icons_chevron-right.js",
|
||||
"fileHash": "56cc655e",
|
||||
"fileHash": "1962473f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@lucide/svelte/icons/x": {
|
||||
"src": "../../@lucide/svelte/dist/icons/x.js",
|
||||
"file": "@lucide_svelte_icons_x.js",
|
||||
"fileHash": "699cd3d3",
|
||||
"fileHash": "b3e378c6",
|
||||
"needsInterop": false
|
||||
},
|
||||
"barcode-detector-api-polyfill": {
|
||||
"src": "../../barcode-detector-api-polyfill/esm/index.js",
|
||||
"file": "barcode-detector-api-polyfill.js",
|
||||
"fileHash": "b4f2b255",
|
||||
"needsInterop": false
|
||||
},
|
||||
"bits-ui": {
|
||||
"src": "../../bits-ui/dist/index.js",
|
||||
"file": "bits-ui.js",
|
||||
"fileHash": "b730dd77",
|
||||
"needsInterop": false
|
||||
},
|
||||
"clsx": {
|
||||
"src": "../../clsx/dist/clsx.mjs",
|
||||
"file": "clsx.js",
|
||||
"fileHash": "23b1c3b1",
|
||||
"needsInterop": false
|
||||
},
|
||||
"devalue": {
|
||||
"src": "../../devalue/index.js",
|
||||
"file": "devalue.js",
|
||||
"fileHash": "6ed78888",
|
||||
"needsInterop": false
|
||||
},
|
||||
"esm-env": {
|
||||
"src": "../../esm-env/index.js",
|
||||
"file": "esm-env.js",
|
||||
"fileHash": "7a9e40fe",
|
||||
"needsInterop": false
|
||||
},
|
||||
"pocketbase": {
|
||||
"src": "../../pocketbase/dist/pocketbase.es.mjs",
|
||||
"file": "pocketbase.js",
|
||||
"fileHash": "f92add1a",
|
||||
"fileHash": "05329739",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-merge": {
|
||||
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
|
||||
"file": "tailwind-merge.js",
|
||||
"fileHash": "7f53d13f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"tailwind-variants": {
|
||||
"src": "../../tailwind-variants/dist/index.js",
|
||||
"file": "tailwind-variants.js",
|
||||
"fileHash": "0bcd346b",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
@@ -198,18 +174,6 @@
|
||||
"chunk-MZVN5SDE": {
|
||||
"file": "chunk-MZVN5SDE.js"
|
||||
},
|
||||
"chunk-4KD2RPWH": {
|
||||
"file": "chunk-4KD2RPWH.js"
|
||||
},
|
||||
"chunk-WWFBEETI": {
|
||||
"file": "chunk-WWFBEETI.js"
|
||||
},
|
||||
"chunk-RP7C34GZ": {
|
||||
"file": "chunk-RP7C34GZ.js"
|
||||
},
|
||||
"chunk-ZYKZD434": {
|
||||
"file": "chunk-ZYKZD434.js"
|
||||
},
|
||||
"chunk-EZEETTA4": {
|
||||
"file": "chunk-EZEETTA4.js"
|
||||
},
|
||||
@@ -219,17 +183,14 @@
|
||||
"chunk-7RQDXF5S": {
|
||||
"file": "chunk-7RQDXF5S.js"
|
||||
},
|
||||
"chunk-IOOJRWFM": {
|
||||
"file": "chunk-IOOJRWFM.js"
|
||||
"chunk-YERFD2CZ": {
|
||||
"file": "chunk-YERFD2CZ.js"
|
||||
},
|
||||
"chunk-WPKGHLNR": {
|
||||
"file": "chunk-WPKGHLNR.js"
|
||||
"chunk-EXK7SDUS": {
|
||||
"file": "chunk-EXK7SDUS.js"
|
||||
},
|
||||
"chunk-2LGM3QYM": {
|
||||
"file": "chunk-2LGM3QYM.js"
|
||||
},
|
||||
"chunk-XRZOVX56": {
|
||||
"file": "chunk-XRZOVX56.js"
|
||||
"chunk-U7P2NEEE": {
|
||||
"file": "chunk-U7P2NEEE.js"
|
||||
},
|
||||
"chunk-57IKBECK": {
|
||||
"file": "chunk-57IKBECK.js"
|
||||
@@ -243,15 +204,12 @@
|
||||
"chunk-HNWPC2PS": {
|
||||
"file": "chunk-HNWPC2PS.js"
|
||||
},
|
||||
"chunk-2LGM3QYM": {
|
||||
"file": "chunk-2LGM3QYM.js"
|
||||
},
|
||||
"chunk-OHYQYV5R": {
|
||||
"file": "chunk-OHYQYV5R.js"
|
||||
},
|
||||
"chunk-U7P2NEEE": {
|
||||
"file": "chunk-U7P2NEEE.js"
|
||||
},
|
||||
"chunk-YERFD2CZ": {
|
||||
"file": "chunk-YERFD2CZ.js"
|
||||
},
|
||||
"chunk-X4VJQ2O3": {
|
||||
"file": "chunk-X4VJQ2O3.js"
|
||||
}
|
||||
|
||||
+5
-5
@@ -4,7 +4,6 @@ import {
|
||||
} from "./chunk-EZEETTA4.js";
|
||||
import "./chunk-3TACVO2P.js";
|
||||
import "./chunk-7RQDXF5S.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import {
|
||||
add_locations,
|
||||
append_styles,
|
||||
@@ -39,7 +38,10 @@ import {
|
||||
validate_snippet_args,
|
||||
validate_void_dynamic_element,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import {
|
||||
clsx
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
append,
|
||||
comment,
|
||||
@@ -91,10 +93,8 @@ import "./chunk-XWATFG4W.js";
|
||||
import {
|
||||
true_default
|
||||
} from "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-2LGM3QYM.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import {
|
||||
clsx
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
__export,
|
||||
__privateAdd,
|
||||
|
||||
-180
@@ -1,180 +0,0 @@
|
||||
import {
|
||||
Icon_default
|
||||
} from "./chunk-WPKGHLNR.js";
|
||||
import {
|
||||
check_target,
|
||||
hmr,
|
||||
legacy_api,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
first_child,
|
||||
noop,
|
||||
pop,
|
||||
push
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/x.svelte
|
||||
X[FILENAME] = "node_modules/@lucide/svelte/dist/icons/x.svelte";
|
||||
function X($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, X);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [
|
||||
["path", { "d": "M18 6 6 18" }],
|
||||
["path", { "d": "m6 6 12 12" }]
|
||||
];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name X
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/x
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "x" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(X, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", X, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
X,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
X = hmr(X);
|
||||
import.meta.hot.accept((module) => {
|
||||
X[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var x_default = X;
|
||||
|
||||
export {
|
||||
x_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/icons/x.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/x.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-4KD2RPWH.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/icons/x.svelte"],
|
||||
"sourcesContent": ["<script lang=\"ts\">/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n *\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * ---\n *\n * The MIT License (MIT) (for portions derived from Feather)\n *\n * Copyright (c) 2013-2023 Cole Bemis\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\nimport Icon from '../Icon.svelte';\nlet props = $props();\nconst iconNode = [[\"path\", { \"d\": \"M18 6 6 18\" }], [\"path\", { \"d\": \"m6 6 12 12\" }]];\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {FunctionalComponent} Svelte component\n *\n */\n</script>\n\n<Icon name=\"x\" {...props} iconNode={iconNode}>\n {@render props.children?.()}\n</Icon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAAA;;;MA6CI,QAAK,WAAA,SAAA,CAAA,WAAA,YAAA,UAAA,GAAA,OAAA;QACH,WAAQ;KAAK,QAAM,EAAI,KAAK,aAAY,CAAA;KAAM,QAAM,EAAI,KAAK,aAAY,CAAA;;;;;;;;;;;;;;;;;;MAc9E,aAAI,MAAA,aAAA,EAAA,MAAA,IAAA,GAAA,MAAc,OAAK;;iBAAY;;;;;8DACnB,YAAQ,IAAA,GAAA,UAAA,GAAA,IAAA,CAAA;;;;;;;;;;;;;;AAHjB;;;;;;;;",
|
||||
"names": []
|
||||
}
|
||||
Generated
Vendored
+4
-4
@@ -1,3 +1,6 @@
|
||||
import {
|
||||
clsx
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
append,
|
||||
assign_nodes,
|
||||
@@ -180,9 +183,6 @@ import {
|
||||
async_mode_flag,
|
||||
legacy_mode_flag
|
||||
} from "./chunk-OHYQYV5R.js";
|
||||
import {
|
||||
clsx
|
||||
} from "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
__privateAdd,
|
||||
__privateGet,
|
||||
@@ -4573,4 +4573,4 @@ export {
|
||||
beforeUpdate,
|
||||
afterUpdate
|
||||
};
|
||||
//# sourceMappingURL=chunk-XRZOVX56.js.map
|
||||
//# sourceMappingURL=chunk-EXK7SDUS.js.map
|
||||
Generated
Vendored
-177
@@ -1,177 +0,0 @@
|
||||
import {
|
||||
Icon_default
|
||||
} from "./chunk-WPKGHLNR.js";
|
||||
import {
|
||||
check_target,
|
||||
hmr,
|
||||
legacy_api,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
first_child,
|
||||
noop,
|
||||
pop,
|
||||
push
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/check.svelte
|
||||
Check[FILENAME] = "node_modules/@lucide/svelte/dist/icons/check.svelte";
|
||||
function Check($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Check);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [["path", { "d": "M20 6 9 17l-5-5" }]];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name Check
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/check
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "check" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(Check, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", Check, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
Check,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Check = hmr(Check);
|
||||
import.meta.hot.accept((module) => {
|
||||
Check[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var check_default = Check;
|
||||
|
||||
export {
|
||||
check_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/icons/check.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/check.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-IOOJRWFM.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/icons/check.svelte"],
|
||||
"sourcesContent": ["<script lang=\"ts\">/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n *\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * ---\n *\n * The MIT License (MIT) (for portions derived from Feather)\n *\n * Copyright (c) 2013-2023 Cole Bemis\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\nimport Icon from '../Icon.svelte';\nlet props = $props();\nconst iconNode = [[\"path\", { \"d\": \"M20 6 9 17l-5-5\" }]];\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {FunctionalComponent} Svelte component\n *\n */\n</script>\n\n<Icon name=\"check\" {...props} iconNode={iconNode}>\n {@render props.children?.()}\n</Icon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAAA;;;MA6CI,QAAK,WAAA,SAAA,CAAA,WAAA,YAAA,UAAA,GAAA,OAAA;QACH,WAAQ,CAAA,CAAK,QAAM,EAAI,KAAK,kBAAiB,CAAA,CAAA;;;;;;;;;;;;;;;;;MAclD,aAAI,MAAA,aAAA,EAAA,MAAA,QAAA,GAAA,MAAkB,OAAK;;iBAAY;;;;;8DACvB,YAAQ,IAAA,GAAA,UAAA,OAAA,IAAA,CAAA;;;;;;;;;;;;;;AAHjB;;;;;;;;",
|
||||
"names": []
|
||||
}
|
||||
-177
@@ -1,177 +0,0 @@
|
||||
import {
|
||||
Icon_default
|
||||
} from "./chunk-WPKGHLNR.js";
|
||||
import {
|
||||
check_target,
|
||||
hmr,
|
||||
legacy_api,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
first_child,
|
||||
noop,
|
||||
pop,
|
||||
push
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/circle.svelte
|
||||
Circle[FILENAME] = "node_modules/@lucide/svelte/dist/icons/circle.svelte";
|
||||
function Circle($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Circle);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [["circle", { "cx": "12", "cy": "12", "r": "10" }]];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name Circle
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/circle
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "circle" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(Circle, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", Circle, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
Circle,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Circle = hmr(Circle);
|
||||
import.meta.hot.accept((module) => {
|
||||
Circle[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var circle_default = Circle;
|
||||
|
||||
export {
|
||||
circle_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/icons/circle.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/circle.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-RP7C34GZ.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/icons/circle.svelte"],
|
||||
"sourcesContent": ["<script lang=\"ts\">/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n *\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * ---\n *\n * The MIT License (MIT) (for portions derived from Feather)\n *\n * Copyright (c) 2013-2023 Cole Bemis\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\nimport Icon from '../Icon.svelte';\nlet props = $props();\nconst iconNode = [[\"circle\", { \"cx\": \"12\", \"cy\": \"12\", \"r\": \"10\" }]];\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {FunctionalComponent} Svelte component\n *\n */\n</script>\n\n<Icon name=\"circle\" {...props} iconNode={iconNode}>\n {@render props.children?.()}\n</Icon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAAA;;;MA6CI,QAAK,WAAA,SAAA,CAAA,WAAA,YAAA,UAAA,GAAA,OAAA;QACH,WAAQ,CAAA,CAAK,UAAQ,EAAI,MAAM,MAAM,MAAM,MAAM,KAAK,KAAI,CAAA,CAAA;;;;;;;;;;;;;;;;;MAc/D,aAAI,MAAA,aAAA,EAAA,MAAA,SAAA,GAAA,MAAmB,OAAK;;iBAAY;;;;;8DACxB,YAAQ,IAAA,GAAA,UAAA,QAAA,IAAA,CAAA;;;;;;;;;;;;;;AAHjB;;;;;;;;",
|
||||
"names": []
|
||||
}
|
||||
-189
@@ -1,189 +0,0 @@
|
||||
import {
|
||||
add_locations,
|
||||
attribute_effect,
|
||||
check_target,
|
||||
each,
|
||||
element,
|
||||
hmr,
|
||||
index,
|
||||
legacy_api,
|
||||
prop,
|
||||
rest_props,
|
||||
snippet,
|
||||
validate_dynamic_element_tag
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment,
|
||||
from_svg
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
child,
|
||||
first_child,
|
||||
get,
|
||||
noop,
|
||||
pop,
|
||||
push,
|
||||
reset,
|
||||
sibling,
|
||||
to_array,
|
||||
user_derived
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/defaultAttributes.js
|
||||
var defaultAttributes = {
|
||||
xmlns: "http://www.w3.org/2000/svg",
|
||||
width: 24,
|
||||
height: 24,
|
||||
viewBox: "0 0 24 24",
|
||||
fill: "none",
|
||||
stroke: "currentColor",
|
||||
"stroke-width": 2,
|
||||
"stroke-linecap": "round",
|
||||
"stroke-linejoin": "round"
|
||||
};
|
||||
var defaultAttributes_default = defaultAttributes;
|
||||
|
||||
// node_modules/@lucide/svelte/dist/Icon.svelte
|
||||
Icon[FILENAME] = "node_modules/@lucide/svelte/dist/Icon.svelte";
|
||||
var root = add_locations(from_svg(`<svg><!><!></svg>`), Icon[FILENAME], [[5, 0]]);
|
||||
function Icon($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Icon);
|
||||
const color = prop($$props, "color", 3, "currentColor"), size = prop($$props, "size", 3, 24), strokeWidth = prop($$props, "strokeWidth", 3, 2), absoluteStrokeWidth = prop($$props, "absoluteStrokeWidth", 3, false), iconNode = prop($$props, "iconNode", 19, () => []), props = rest_props(
|
||||
$$props,
|
||||
[
|
||||
"$$slots",
|
||||
"$$events",
|
||||
"$$legacy",
|
||||
"name",
|
||||
"color",
|
||||
"size",
|
||||
"strokeWidth",
|
||||
"absoluteStrokeWidth",
|
||||
"iconNode",
|
||||
"children"
|
||||
],
|
||||
"props"
|
||||
);
|
||||
var $$exports = { ...legacy_api() };
|
||||
var svg = root();
|
||||
attribute_effect(
|
||||
svg,
|
||||
($0) => ({
|
||||
...defaultAttributes_default,
|
||||
...props,
|
||||
width: size(),
|
||||
height: size(),
|
||||
stroke: color(),
|
||||
"stroke-width": $0,
|
||||
class: [
|
||||
"lucide-icon lucide",
|
||||
$$props.name && `lucide-${$$props.name}`,
|
||||
$$props.class
|
||||
]
|
||||
}),
|
||||
[
|
||||
() => absoluteStrokeWidth() ? Number(strokeWidth()) * 24 / Number(size()) : strokeWidth()
|
||||
]
|
||||
);
|
||||
var node = child(svg);
|
||||
add_svelte_meta(
|
||||
() => each(node, 17, iconNode, index, ($$anchor2, $$item) => {
|
||||
var $$array = user_derived(() => to_array(get($$item), 2));
|
||||
let tag = () => get($$array)[0];
|
||||
tag();
|
||||
let attrs = () => get($$array)[1];
|
||||
attrs();
|
||||
var fragment = comment();
|
||||
var node_1 = first_child(fragment);
|
||||
{
|
||||
validate_dynamic_element_tag(tag);
|
||||
element(
|
||||
node_1,
|
||||
tag,
|
||||
true,
|
||||
($$element, $$anchor3) => {
|
||||
attribute_effect($$element, () => ({ ...attrs() }));
|
||||
},
|
||||
void 0,
|
||||
[15, 4]
|
||||
);
|
||||
}
|
||||
append($$anchor2, fragment);
|
||||
}),
|
||||
"each",
|
||||
Icon,
|
||||
14,
|
||||
2
|
||||
);
|
||||
var node_2 = sibling(node);
|
||||
add_svelte_meta(() => snippet(node_2, () => $$props.children ?? noop), "render", Icon, 20, 2);
|
||||
reset(svg);
|
||||
append($$anchor, svg);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Icon = hmr(Icon);
|
||||
import.meta.hot.accept((module) => {
|
||||
Icon[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var Icon_default = Icon;
|
||||
|
||||
export {
|
||||
defaultAttributes_default,
|
||||
Icon_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/defaultAttributes.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-WPKGHLNR.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/defaultAttributes.js", "../../@lucide/svelte/dist/Icon.svelte"],
|
||||
"sourcesContent": ["/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n * \n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n * \n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n * \n * ---\n * \n * The MIT License (MIT) (for portions derived from Feather)\n * \n * Copyright (c) 2013-2023 Cole Bemis\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n */\nconst defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n};\nexport default defaultAttributes;\n", "<script lang=\"ts\">import defaultAttributes from './defaultAttributes.js';\nconst { name, color = 'currentColor', size = 24, strokeWidth = 2, absoluteStrokeWidth = false, iconNode = [], children, ...props } = $props();\n</script>\n\n<svg\n {...defaultAttributes}\n {...props}\n width={size}\n height={size}\n stroke={color}\n stroke-width={absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth}\n class={['lucide-icon lucide', name && `lucide-${name}`, props.class]}\n>\n {#each iconNode as [tag, attrs]}\n <svelte:element\n this={tag}\n {...attrs}\n />\n {/each}\n {@render children?.()}\n</svg>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,IAAM,oBAAoB;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,mBAAmB;AACvB;AACA,IAAO,4BAAQ;;;;;iCCvDf;;;QACc,QAAK,KAAA,SAAA,SAAA,GAAG,cAAc,GAAE,OAAI,KAAA,SAAA,QAAA,GAAG,EAAE,GAAE,cAAW,KAAA,SAAA,eAAA,GAAG,CAAC,GAAE,sBAAmB,KAAA,SAAA,uBAAA,GAAG,KAAK,GAAE,WAAQ,KAAA,SAAA,YAAA,IAAA,MAAA,CAAA,CAAA,GAAoB,QAAK;;;;;;;;;;;;;;;;;MAG/H,MAAA,KAAA;;IAAA;;SACK;SACA;aACG,KAAI;cACH,KAAI;cACJ,MAAK;;;QAEL;;gBAAsD;;;;YADhD,oBAAmB,IAAI,OAAO,YAAW,CAAA,IAAI,KAAM,OAAO,KAAI,CAAA,IAAI,YAAW;;;mBAN5F,GAAA;;yBASQ,UAAQ,OAAA,CAAAA,WAAA,WAAA;;UAAK,MAAI,MAAA,IAAA,OAAA,EAAA,CAAA;;UAAC,QAAM,MAAA,IAAA,OAAA,EAAA,CAAA;;;;;qCAErB,GAAG;;;UAAH;;;oDACF,MAAK,EAAA,EAAA;;;;;;;;;;;;;;;QAZd,GAAA;mBAAA,GAAA;;AAFO;;;;;;;;",
|
||||
"names": ["$$anchor"]
|
||||
}
|
||||
-177
@@ -1,177 +0,0 @@
|
||||
import {
|
||||
Icon_default
|
||||
} from "./chunk-WPKGHLNR.js";
|
||||
import {
|
||||
check_target,
|
||||
hmr,
|
||||
legacy_api,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
first_child,
|
||||
noop,
|
||||
pop,
|
||||
push
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/chevron-right.svelte
|
||||
Chevron_right[FILENAME] = "node_modules/@lucide/svelte/dist/icons/chevron-right.svelte";
|
||||
function Chevron_right($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Chevron_right);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [["path", { "d": "m9 18 6-6-6-6" }]];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name ChevronRight
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/chevron-right
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "chevron-right" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(Chevron_right, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", Chevron_right, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
Chevron_right,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Chevron_right = hmr(Chevron_right);
|
||||
import.meta.hot.accept((module) => {
|
||||
Chevron_right[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var chevron_right_default = Chevron_right;
|
||||
|
||||
export {
|
||||
chevron_right_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/icons/chevron-right.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/chevron-right.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-WWFBEETI.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/icons/chevron-right.svelte"],
|
||||
"sourcesContent": ["<script lang=\"ts\">/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n *\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * ---\n *\n * The MIT License (MIT) (for portions derived from Feather)\n *\n * Copyright (c) 2013-2023 Cole Bemis\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\nimport Icon from '../Icon.svelte';\nlet props = $props();\nconst iconNode = [[\"path\", { \"d\": \"m9 18 6-6-6-6\" }]];\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {FunctionalComponent} Svelte component\n *\n */\n</script>\n\n<Icon name=\"chevron-right\" {...props} iconNode={iconNode}>\n {@render props.children?.()}\n</Icon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAAA;;;MA6CI,QAAK,WAAA,SAAA,CAAA,WAAA,YAAA,UAAA,GAAA,OAAA;QACH,WAAQ,CAAA,CAAK,QAAM,EAAI,KAAK,gBAAe,CAAA,CAAA;;;;;;;;;;;;;;;;;MAchD,aAAI,MAAA,aAAA,EAAA,MAAA,gBAAA,GAAA,MAA0B,OAAK;;iBAAY;;;;;8DAC/B,YAAQ,IAAA,GAAA,UAAA,eAAA,IAAA,CAAA;;;;;;;;;;;;;;AAHjB;;;;;;;;",
|
||||
"names": []
|
||||
}
|
||||
-177
@@ -1,177 +0,0 @@
|
||||
import {
|
||||
Icon_default
|
||||
} from "./chunk-WPKGHLNR.js";
|
||||
import {
|
||||
check_target,
|
||||
hmr,
|
||||
legacy_api,
|
||||
rest_props,
|
||||
snippet,
|
||||
spread_props,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
import {
|
||||
append,
|
||||
comment
|
||||
} from "./chunk-57IKBECK.js";
|
||||
import {
|
||||
FILENAME,
|
||||
HMR,
|
||||
add_svelte_meta,
|
||||
first_child,
|
||||
noop,
|
||||
pop,
|
||||
push
|
||||
} from "./chunk-JC3VXQM7.js";
|
||||
|
||||
// node_modules/@lucide/svelte/dist/icons/minus.svelte
|
||||
Minus[FILENAME] = "node_modules/@lucide/svelte/dist/icons/minus.svelte";
|
||||
function Minus($$anchor, $$props) {
|
||||
check_target(new.target);
|
||||
push($$props, true, Minus);
|
||||
let props = rest_props($$props, ["$$slots", "$$events", "$$legacy"], "props");
|
||||
const iconNode = [["path", { "d": "M5 12h14" }]];
|
||||
var $$exports = { ...legacy_api() };
|
||||
var fragment = comment();
|
||||
var node = first_child(fragment);
|
||||
add_svelte_meta(
|
||||
() => (
|
||||
/**
|
||||
* @component @name Minus
|
||||
* @description Lucide SVG icon component, renders SVG Element with children.
|
||||
*
|
||||
* @preview  - https://lucide.dev/icons/minus
|
||||
* @see https://lucide.dev/guide/packages/lucide-svelte - Documentation
|
||||
*
|
||||
* @param {Object} props - Lucide icons props and any valid SVG attribute
|
||||
* @returns {FunctionalComponent} Svelte component
|
||||
*
|
||||
*/
|
||||
Icon_default(node, spread_props({ name: "minus" }, () => props, {
|
||||
get iconNode() {
|
||||
return iconNode;
|
||||
},
|
||||
children: wrap_snippet(Minus, ($$anchor2, $$slotProps) => {
|
||||
var fragment_1 = comment();
|
||||
var node_1 = first_child(fragment_1);
|
||||
add_svelte_meta(() => snippet(node_1, () => $$props.children ?? noop), "render", Minus, 62, 2);
|
||||
append($$anchor2, fragment_1);
|
||||
}),
|
||||
$$slots: { default: true }
|
||||
}))
|
||||
),
|
||||
"component",
|
||||
Minus,
|
||||
61,
|
||||
0,
|
||||
{ componentTag: "Icon" }
|
||||
);
|
||||
append($$anchor, fragment);
|
||||
return pop($$exports);
|
||||
}
|
||||
if (import.meta.hot) {
|
||||
Minus = hmr(Minus);
|
||||
import.meta.hot.accept((module) => {
|
||||
Minus[HMR].update(module.default);
|
||||
});
|
||||
}
|
||||
var minus_default = Minus;
|
||||
|
||||
export {
|
||||
minus_default
|
||||
};
|
||||
/*! Bundled license information:
|
||||
|
||||
@lucide/svelte/dist/icons/minus.svelte:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
|
||||
@lucide/svelte/dist/icons/minus.js:
|
||||
(**
|
||||
* @license @lucide/svelte v0.561.0 - ISC
|
||||
*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* The MIT License (MIT) (for portions derived from Feather)
|
||||
*
|
||||
* Copyright (c) 2013-2023 Cole Bemis
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-ZYKZD434.js.map
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../@lucide/svelte/dist/icons/minus.svelte"],
|
||||
"sourcesContent": ["<script lang=\"ts\">/**\n * @license @lucide/svelte v0.561.0 - ISC\n *\n * ISC License\n *\n * Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * ---\n *\n * The MIT License (MIT) (for portions derived from Feather)\n *\n * Copyright (c) 2013-2023 Cole Bemis\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\nimport Icon from '../Icon.svelte';\nlet props = $props();\nconst iconNode = [[\"path\", { \"d\": \"M5 12h14\" }]];\n/**\n * @component @name Minus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/minus\n * @see https://lucide.dev/guide/packages/lucide-svelte - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {FunctionalComponent} Svelte component\n *\n */\n</script>\n\n<Icon name=\"minus\" {...props} iconNode={iconNode}>\n {@render props.children?.()}\n</Icon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAAA;;;MA6CI,QAAK,WAAA,SAAA,CAAA,WAAA,YAAA,UAAA,GAAA,OAAA;QACH,WAAQ,CAAA,CAAK,QAAM,EAAI,KAAK,WAAU,CAAA,CAAA;;;;;;;;;;;;;;;;;MAc3C,aAAI,MAAA,aAAA,EAAA,MAAA,QAAA,GAAA,MAAkB,OAAK;;iBAAY;;;;;8DACvB,YAAQ,IAAA,GAAA,UAAA,OAAA,IAAA,CAAA;;;;;;;;;;;;;;AAHjB;;;;;;;;",
|
||||
"names": []
|
||||
}
|
||||
+820
@@ -0,0 +1,820 @@
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
|
||||
// node_modules/devalue/src/utils.js
|
||||
var escaped = {
|
||||
"<": "\\u003C",
|
||||
"\\": "\\\\",
|
||||
"\b": "\\b",
|
||||
"\f": "\\f",
|
||||
"\n": "\\n",
|
||||
"\r": "\\r",
|
||||
" ": "\\t",
|
||||
"\u2028": "\\u2028",
|
||||
"\u2029": "\\u2029"
|
||||
};
|
||||
var DevalueError = class extends Error {
|
||||
/**
|
||||
* @param {string} message
|
||||
* @param {string[]} keys
|
||||
* @param {any} [value] - The value that failed to be serialized
|
||||
* @param {any} [root] - The root value being serialized
|
||||
*/
|
||||
constructor(message, keys, value, root) {
|
||||
super(message);
|
||||
this.name = "DevalueError";
|
||||
this.path = keys.join("");
|
||||
this.value = value;
|
||||
this.root = root;
|
||||
}
|
||||
};
|
||||
function is_primitive(thing) {
|
||||
return Object(thing) !== thing;
|
||||
}
|
||||
var object_proto_names = Object.getOwnPropertyNames(
|
||||
Object.prototype
|
||||
).sort().join("\0");
|
||||
function is_plain_object(thing) {
|
||||
const proto = Object.getPrototypeOf(thing);
|
||||
return proto === Object.prototype || proto === null || Object.getPrototypeOf(proto) === null || Object.getOwnPropertyNames(proto).sort().join("\0") === object_proto_names;
|
||||
}
|
||||
function get_type(thing) {
|
||||
return Object.prototype.toString.call(thing).slice(8, -1);
|
||||
}
|
||||
function get_escaped_char(char) {
|
||||
switch (char) {
|
||||
case '"':
|
||||
return '\\"';
|
||||
case "<":
|
||||
return "\\u003C";
|
||||
case "\\":
|
||||
return "\\\\";
|
||||
case "\n":
|
||||
return "\\n";
|
||||
case "\r":
|
||||
return "\\r";
|
||||
case " ":
|
||||
return "\\t";
|
||||
case "\b":
|
||||
return "\\b";
|
||||
case "\f":
|
||||
return "\\f";
|
||||
case "\u2028":
|
||||
return "\\u2028";
|
||||
case "\u2029":
|
||||
return "\\u2029";
|
||||
default:
|
||||
return char < " " ? `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}` : "";
|
||||
}
|
||||
}
|
||||
function stringify_string(str) {
|
||||
let result = "";
|
||||
let last_pos = 0;
|
||||
const len = str.length;
|
||||
for (let i = 0; i < len; i += 1) {
|
||||
const char = str[i];
|
||||
const replacement = get_escaped_char(char);
|
||||
if (replacement) {
|
||||
result += str.slice(last_pos, i) + replacement;
|
||||
last_pos = i + 1;
|
||||
}
|
||||
}
|
||||
return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`;
|
||||
}
|
||||
function enumerable_symbols(object) {
|
||||
return Object.getOwnPropertySymbols(object).filter(
|
||||
(symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable
|
||||
);
|
||||
}
|
||||
var is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
|
||||
function stringify_key(key) {
|
||||
return is_identifier.test(key) ? "." + key : "[" + JSON.stringify(key) + "]";
|
||||
}
|
||||
|
||||
// node_modules/devalue/src/uneval.js
|
||||
var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$";
|
||||
var unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;
|
||||
var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
|
||||
function uneval(value, replacer) {
|
||||
const counts = /* @__PURE__ */ new Map();
|
||||
const keys = [];
|
||||
const custom = /* @__PURE__ */ new Map();
|
||||
function walk(thing) {
|
||||
if (!is_primitive(thing)) {
|
||||
if (counts.has(thing)) {
|
||||
counts.set(thing, counts.get(thing) + 1);
|
||||
return;
|
||||
}
|
||||
counts.set(thing, 1);
|
||||
if (replacer) {
|
||||
const str2 = replacer(thing, (value2) => uneval(value2, replacer));
|
||||
if (typeof str2 === "string") {
|
||||
custom.set(thing, str2);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (typeof thing === "function") {
|
||||
throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
|
||||
}
|
||||
const type = get_type(thing);
|
||||
switch (type) {
|
||||
case "Number":
|
||||
case "BigInt":
|
||||
case "String":
|
||||
case "Boolean":
|
||||
case "Date":
|
||||
case "RegExp":
|
||||
case "URL":
|
||||
case "URLSearchParams":
|
||||
return;
|
||||
case "Array":
|
||||
thing.forEach((value2, i) => {
|
||||
keys.push(`[${i}]`);
|
||||
walk(value2);
|
||||
keys.pop();
|
||||
});
|
||||
break;
|
||||
case "Set":
|
||||
Array.from(thing).forEach(walk);
|
||||
break;
|
||||
case "Map":
|
||||
for (const [key, value2] of thing) {
|
||||
keys.push(
|
||||
`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`
|
||||
);
|
||||
walk(value2);
|
||||
keys.pop();
|
||||
}
|
||||
break;
|
||||
case "Int8Array":
|
||||
case "Uint8Array":
|
||||
case "Uint8ClampedArray":
|
||||
case "Int16Array":
|
||||
case "Uint16Array":
|
||||
case "Int32Array":
|
||||
case "Uint32Array":
|
||||
case "Float32Array":
|
||||
case "Float64Array":
|
||||
case "BigInt64Array":
|
||||
case "BigUint64Array":
|
||||
walk(thing.buffer);
|
||||
return;
|
||||
case "ArrayBuffer":
|
||||
return;
|
||||
case "Temporal.Duration":
|
||||
case "Temporal.Instant":
|
||||
case "Temporal.PlainDate":
|
||||
case "Temporal.PlainTime":
|
||||
case "Temporal.PlainDateTime":
|
||||
case "Temporal.PlainMonthDay":
|
||||
case "Temporal.PlainYearMonth":
|
||||
case "Temporal.ZonedDateTime":
|
||||
return;
|
||||
default:
|
||||
if (!is_plain_object(thing)) {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify arbitrary non-POJOs`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
if (enumerable_symbols(thing).length > 0) {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify POJOs with symbolic keys`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
for (const key in thing) {
|
||||
keys.push(stringify_key(key));
|
||||
walk(thing[key]);
|
||||
keys.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
walk(value);
|
||||
const names = /* @__PURE__ */ new Map();
|
||||
Array.from(counts).filter((entry) => entry[1] > 1).sort((a, b) => b[1] - a[1]).forEach((entry, i) => {
|
||||
names.set(entry[0], get_name(i));
|
||||
});
|
||||
function stringify2(thing) {
|
||||
if (names.has(thing)) {
|
||||
return names.get(thing);
|
||||
}
|
||||
if (is_primitive(thing)) {
|
||||
return stringify_primitive(thing);
|
||||
}
|
||||
if (custom.has(thing)) {
|
||||
return custom.get(thing);
|
||||
}
|
||||
const type = get_type(thing);
|
||||
switch (type) {
|
||||
case "Number":
|
||||
case "String":
|
||||
case "Boolean":
|
||||
return `Object(${stringify2(thing.valueOf())})`;
|
||||
case "RegExp":
|
||||
return `new RegExp(${stringify_string(thing.source)}, "${thing.flags}")`;
|
||||
case "Date":
|
||||
return `new Date(${thing.getTime()})`;
|
||||
case "URL":
|
||||
return `new URL(${stringify_string(thing.toString())})`;
|
||||
case "URLSearchParams":
|
||||
return `new URLSearchParams(${stringify_string(thing.toString())})`;
|
||||
case "Array":
|
||||
const members = (
|
||||
/** @type {any[]} */
|
||||
thing.map(
|
||||
(v, i) => i in thing ? stringify2(v) : ""
|
||||
)
|
||||
);
|
||||
const tail = thing.length === 0 || thing.length - 1 in thing ? "" : ",";
|
||||
return `[${members.join(",")}${tail}]`;
|
||||
case "Set":
|
||||
case "Map":
|
||||
return `new ${type}([${Array.from(thing).map(stringify2).join(",")}])`;
|
||||
case "Int8Array":
|
||||
case "Uint8Array":
|
||||
case "Uint8ClampedArray":
|
||||
case "Int16Array":
|
||||
case "Uint16Array":
|
||||
case "Int32Array":
|
||||
case "Uint32Array":
|
||||
case "Float32Array":
|
||||
case "Float64Array":
|
||||
case "BigInt64Array":
|
||||
case "BigUint64Array": {
|
||||
let str2 = `new ${type}`;
|
||||
if (counts.get(thing.buffer) === 1) {
|
||||
const array = new thing.constructor(thing.buffer);
|
||||
str2 += `([${array}])`;
|
||||
} else {
|
||||
str2 += `([${stringify2(thing.buffer)}])`;
|
||||
}
|
||||
const a = thing.byteOffset;
|
||||
const b = a + thing.byteLength;
|
||||
if (a > 0 || b !== thing.buffer.byteLength) {
|
||||
const m = +/(\d+)/.exec(type)[1] / 8;
|
||||
str2 += `.subarray(${a / m},${b / m})`;
|
||||
}
|
||||
return str2;
|
||||
}
|
||||
case "ArrayBuffer": {
|
||||
const ui8 = new Uint8Array(thing);
|
||||
return `new Uint8Array([${ui8.toString()}]).buffer`;
|
||||
}
|
||||
case "Temporal.Duration":
|
||||
case "Temporal.Instant":
|
||||
case "Temporal.PlainDate":
|
||||
case "Temporal.PlainTime":
|
||||
case "Temporal.PlainDateTime":
|
||||
case "Temporal.PlainMonthDay":
|
||||
case "Temporal.PlainYearMonth":
|
||||
case "Temporal.ZonedDateTime":
|
||||
return `${type}.from(${stringify_string(thing.toString())})`;
|
||||
default:
|
||||
const keys2 = Object.keys(thing);
|
||||
const obj = keys2.map((key) => `${safe_key(key)}:${stringify2(thing[key])}`).join(",");
|
||||
const proto = Object.getPrototypeOf(thing);
|
||||
if (proto === null) {
|
||||
return keys2.length > 0 ? `{${obj},__proto__:null}` : `{__proto__:null}`;
|
||||
}
|
||||
return `{${obj}}`;
|
||||
}
|
||||
}
|
||||
const str = stringify2(value);
|
||||
if (names.size) {
|
||||
const params = [];
|
||||
const statements = [];
|
||||
const values = [];
|
||||
names.forEach((name, thing) => {
|
||||
params.push(name);
|
||||
if (custom.has(thing)) {
|
||||
values.push(
|
||||
/** @type {string} */
|
||||
custom.get(thing)
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (is_primitive(thing)) {
|
||||
values.push(stringify_primitive(thing));
|
||||
return;
|
||||
}
|
||||
const type = get_type(thing);
|
||||
switch (type) {
|
||||
case "Number":
|
||||
case "String":
|
||||
case "Boolean":
|
||||
values.push(`Object(${stringify2(thing.valueOf())})`);
|
||||
break;
|
||||
case "RegExp":
|
||||
values.push(thing.toString());
|
||||
break;
|
||||
case "Date":
|
||||
values.push(`new Date(${thing.getTime()})`);
|
||||
break;
|
||||
case "Array":
|
||||
values.push(`Array(${thing.length})`);
|
||||
thing.forEach((v, i) => {
|
||||
statements.push(`${name}[${i}]=${stringify2(v)}`);
|
||||
});
|
||||
break;
|
||||
case "Set":
|
||||
values.push(`new Set`);
|
||||
statements.push(
|
||||
`${name}.${Array.from(thing).map((v) => `add(${stringify2(v)})`).join(".")}`
|
||||
);
|
||||
break;
|
||||
case "Map":
|
||||
values.push(`new Map`);
|
||||
statements.push(
|
||||
`${name}.${Array.from(thing).map(([k, v]) => `set(${stringify2(k)}, ${stringify2(v)})`).join(".")}`
|
||||
);
|
||||
break;
|
||||
case "ArrayBuffer":
|
||||
values.push(
|
||||
`new Uint8Array([${new Uint8Array(thing).join(",")}]).buffer`
|
||||
);
|
||||
break;
|
||||
default:
|
||||
values.push(
|
||||
Object.getPrototypeOf(thing) === null ? "Object.create(null)" : "{}"
|
||||
);
|
||||
Object.keys(thing).forEach((key) => {
|
||||
statements.push(
|
||||
`${name}${safe_prop(key)}=${stringify2(thing[key])}`
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
statements.push(`return ${str}`);
|
||||
return `(function(${params.join(",")}){${statements.join(
|
||||
";"
|
||||
)}}(${values.join(",")}))`;
|
||||
} else {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
function get_name(num) {
|
||||
let name = "";
|
||||
do {
|
||||
name = chars[num % chars.length] + name;
|
||||
num = ~~(num / chars.length) - 1;
|
||||
} while (num >= 0);
|
||||
return reserved.test(name) ? `${name}0` : name;
|
||||
}
|
||||
function escape_unsafe_char(c) {
|
||||
return escaped[c] || c;
|
||||
}
|
||||
function escape_unsafe_chars(str) {
|
||||
return str.replace(unsafe_chars, escape_unsafe_char);
|
||||
}
|
||||
function safe_key(key) {
|
||||
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key));
|
||||
}
|
||||
function safe_prop(key) {
|
||||
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? `.${key}` : `[${escape_unsafe_chars(JSON.stringify(key))}]`;
|
||||
}
|
||||
function stringify_primitive(thing) {
|
||||
if (typeof thing === "string") return stringify_string(thing);
|
||||
if (thing === void 0) return "void 0";
|
||||
if (thing === 0 && 1 / thing < 0) return "-0";
|
||||
const str = String(thing);
|
||||
if (typeof thing === "number") return str.replace(/^(-)?0\./, "$1.");
|
||||
if (typeof thing === "bigint") return thing + "n";
|
||||
return str;
|
||||
}
|
||||
|
||||
// node_modules/devalue/src/base64.js
|
||||
function encode64(arraybuffer) {
|
||||
const dv = new DataView(arraybuffer);
|
||||
let binaryString = "";
|
||||
for (let i = 0; i < arraybuffer.byteLength; i++) {
|
||||
binaryString += String.fromCharCode(dv.getUint8(i));
|
||||
}
|
||||
return binaryToAscii(binaryString);
|
||||
}
|
||||
function decode64(string) {
|
||||
const binaryString = asciiToBinary(string);
|
||||
const arraybuffer = new ArrayBuffer(binaryString.length);
|
||||
const dv = new DataView(arraybuffer);
|
||||
for (let i = 0; i < arraybuffer.byteLength; i++) {
|
||||
dv.setUint8(i, binaryString.charCodeAt(i));
|
||||
}
|
||||
return arraybuffer;
|
||||
}
|
||||
var KEY_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
function asciiToBinary(data) {
|
||||
if (data.length % 4 === 0) {
|
||||
data = data.replace(/==?$/, "");
|
||||
}
|
||||
let output = "";
|
||||
let buffer = 0;
|
||||
let accumulatedBits = 0;
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
buffer <<= 6;
|
||||
buffer |= KEY_STRING.indexOf(data[i]);
|
||||
accumulatedBits += 6;
|
||||
if (accumulatedBits === 24) {
|
||||
output += String.fromCharCode((buffer & 16711680) >> 16);
|
||||
output += String.fromCharCode((buffer & 65280) >> 8);
|
||||
output += String.fromCharCode(buffer & 255);
|
||||
buffer = accumulatedBits = 0;
|
||||
}
|
||||
}
|
||||
if (accumulatedBits === 12) {
|
||||
buffer >>= 4;
|
||||
output += String.fromCharCode(buffer);
|
||||
} else if (accumulatedBits === 18) {
|
||||
buffer >>= 2;
|
||||
output += String.fromCharCode((buffer & 65280) >> 8);
|
||||
output += String.fromCharCode(buffer & 255);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
function binaryToAscii(str) {
|
||||
let out = "";
|
||||
for (let i = 0; i < str.length; i += 3) {
|
||||
const groupsOfSix = [void 0, void 0, void 0, void 0];
|
||||
groupsOfSix[0] = str.charCodeAt(i) >> 2;
|
||||
groupsOfSix[1] = (str.charCodeAt(i) & 3) << 4;
|
||||
if (str.length > i + 1) {
|
||||
groupsOfSix[1] |= str.charCodeAt(i + 1) >> 4;
|
||||
groupsOfSix[2] = (str.charCodeAt(i + 1) & 15) << 2;
|
||||
}
|
||||
if (str.length > i + 2) {
|
||||
groupsOfSix[2] |= str.charCodeAt(i + 2) >> 6;
|
||||
groupsOfSix[3] = str.charCodeAt(i + 2) & 63;
|
||||
}
|
||||
for (let j = 0; j < groupsOfSix.length; j++) {
|
||||
if (typeof groupsOfSix[j] === "undefined") {
|
||||
out += "=";
|
||||
} else {
|
||||
out += KEY_STRING[groupsOfSix[j]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
// node_modules/devalue/src/constants.js
|
||||
var UNDEFINED = -1;
|
||||
var HOLE = -2;
|
||||
var NAN = -3;
|
||||
var POSITIVE_INFINITY = -4;
|
||||
var NEGATIVE_INFINITY = -5;
|
||||
var NEGATIVE_ZERO = -6;
|
||||
|
||||
// node_modules/devalue/src/parse.js
|
||||
function parse(serialized, revivers) {
|
||||
return unflatten(JSON.parse(serialized), revivers);
|
||||
}
|
||||
function unflatten(parsed, revivers) {
|
||||
if (typeof parsed === "number") return hydrate(parsed, true);
|
||||
if (!Array.isArray(parsed) || parsed.length === 0) {
|
||||
throw new Error("Invalid input");
|
||||
}
|
||||
const values = (
|
||||
/** @type {any[]} */
|
||||
parsed
|
||||
);
|
||||
const hydrated = Array(values.length);
|
||||
let hydrating = null;
|
||||
function hydrate(index, standalone = false) {
|
||||
if (index === UNDEFINED) return void 0;
|
||||
if (index === NAN) return NaN;
|
||||
if (index === POSITIVE_INFINITY) return Infinity;
|
||||
if (index === NEGATIVE_INFINITY) return -Infinity;
|
||||
if (index === NEGATIVE_ZERO) return -0;
|
||||
if (standalone || typeof index !== "number") {
|
||||
throw new Error(`Invalid input`);
|
||||
}
|
||||
if (index in hydrated) return hydrated[index];
|
||||
const value = values[index];
|
||||
if (!value || typeof value !== "object") {
|
||||
hydrated[index] = value;
|
||||
} else if (Array.isArray(value)) {
|
||||
if (typeof value[0] === "string") {
|
||||
const type = value[0];
|
||||
const reviver = revivers && Object.hasOwn(revivers, type) ? revivers[type] : void 0;
|
||||
if (reviver) {
|
||||
let i = value[1];
|
||||
if (typeof i !== "number") {
|
||||
i = values.push(value[1]) - 1;
|
||||
}
|
||||
hydrating ?? (hydrating = /* @__PURE__ */ new Set());
|
||||
if (hydrating.has(i)) {
|
||||
throw new Error("Invalid circular reference");
|
||||
}
|
||||
hydrating.add(i);
|
||||
hydrated[index] = reviver(hydrate(i));
|
||||
hydrating.delete(i);
|
||||
return hydrated[index];
|
||||
}
|
||||
switch (type) {
|
||||
case "Date":
|
||||
hydrated[index] = new Date(value[1]);
|
||||
break;
|
||||
case "Set":
|
||||
const set = /* @__PURE__ */ new Set();
|
||||
hydrated[index] = set;
|
||||
for (let i = 1; i < value.length; i += 1) {
|
||||
set.add(hydrate(value[i]));
|
||||
}
|
||||
break;
|
||||
case "Map":
|
||||
const map = /* @__PURE__ */ new Map();
|
||||
hydrated[index] = map;
|
||||
for (let i = 1; i < value.length; i += 2) {
|
||||
map.set(hydrate(value[i]), hydrate(value[i + 1]));
|
||||
}
|
||||
break;
|
||||
case "RegExp":
|
||||
hydrated[index] = new RegExp(value[1], value[2]);
|
||||
break;
|
||||
case "Object":
|
||||
hydrated[index] = Object(value[1]);
|
||||
break;
|
||||
case "BigInt":
|
||||
hydrated[index] = BigInt(value[1]);
|
||||
break;
|
||||
case "null":
|
||||
const obj = /* @__PURE__ */ Object.create(null);
|
||||
hydrated[index] = obj;
|
||||
for (let i = 1; i < value.length; i += 2) {
|
||||
obj[value[i]] = hydrate(value[i + 1]);
|
||||
}
|
||||
break;
|
||||
case "Int8Array":
|
||||
case "Uint8Array":
|
||||
case "Uint8ClampedArray":
|
||||
case "Int16Array":
|
||||
case "Uint16Array":
|
||||
case "Int32Array":
|
||||
case "Uint32Array":
|
||||
case "Float32Array":
|
||||
case "Float64Array":
|
||||
case "BigInt64Array":
|
||||
case "BigUint64Array": {
|
||||
if (values[value[1]][0] !== "ArrayBuffer") {
|
||||
throw new Error("Invalid data");
|
||||
}
|
||||
const TypedArrayConstructor = globalThis[type];
|
||||
const buffer = hydrate(value[1]);
|
||||
const typedArray = new TypedArrayConstructor(buffer);
|
||||
hydrated[index] = value[2] !== void 0 ? typedArray.subarray(value[2], value[3]) : typedArray;
|
||||
break;
|
||||
}
|
||||
case "ArrayBuffer": {
|
||||
const base64 = value[1];
|
||||
if (typeof base64 !== "string") {
|
||||
throw new Error("Invalid ArrayBuffer encoding");
|
||||
}
|
||||
const arraybuffer = decode64(base64);
|
||||
hydrated[index] = arraybuffer;
|
||||
break;
|
||||
}
|
||||
case "Temporal.Duration":
|
||||
case "Temporal.Instant":
|
||||
case "Temporal.PlainDate":
|
||||
case "Temporal.PlainTime":
|
||||
case "Temporal.PlainDateTime":
|
||||
case "Temporal.PlainMonthDay":
|
||||
case "Temporal.PlainYearMonth":
|
||||
case "Temporal.ZonedDateTime": {
|
||||
const temporalName = type.slice(9);
|
||||
hydrated[index] = Temporal[temporalName].from(value[1]);
|
||||
break;
|
||||
}
|
||||
case "URL": {
|
||||
const url = new URL(value[1]);
|
||||
hydrated[index] = url;
|
||||
break;
|
||||
}
|
||||
case "URLSearchParams": {
|
||||
const url = new URLSearchParams(value[1]);
|
||||
hydrated[index] = url;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new Error(`Unknown type ${type}`);
|
||||
}
|
||||
} else {
|
||||
const array = new Array(value.length);
|
||||
hydrated[index] = array;
|
||||
for (let i = 0; i < value.length; i += 1) {
|
||||
const n = value[i];
|
||||
if (n === HOLE) continue;
|
||||
array[i] = hydrate(n);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const object = {};
|
||||
hydrated[index] = object;
|
||||
for (const key in value) {
|
||||
if (key === "__proto__") {
|
||||
throw new Error("Cannot parse an object with a `__proto__` property");
|
||||
}
|
||||
const n = value[key];
|
||||
object[key] = hydrate(n);
|
||||
}
|
||||
}
|
||||
return hydrated[index];
|
||||
}
|
||||
return hydrate(0);
|
||||
}
|
||||
|
||||
// node_modules/devalue/src/stringify.js
|
||||
function stringify(value, reducers) {
|
||||
const stringified = [];
|
||||
const indexes = /* @__PURE__ */ new Map();
|
||||
const custom = [];
|
||||
if (reducers) {
|
||||
for (const key of Object.getOwnPropertyNames(reducers)) {
|
||||
custom.push({ key, fn: reducers[key] });
|
||||
}
|
||||
}
|
||||
const keys = [];
|
||||
let p = 0;
|
||||
function flatten(thing) {
|
||||
if (thing === void 0) return UNDEFINED;
|
||||
if (Number.isNaN(thing)) return NAN;
|
||||
if (thing === Infinity) return POSITIVE_INFINITY;
|
||||
if (thing === -Infinity) return NEGATIVE_INFINITY;
|
||||
if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO;
|
||||
if (indexes.has(thing)) return indexes.get(thing);
|
||||
const index2 = p++;
|
||||
indexes.set(thing, index2);
|
||||
for (const { key, fn } of custom) {
|
||||
const value2 = fn(thing);
|
||||
if (value2) {
|
||||
stringified[index2] = `["${key}",${flatten(value2)}]`;
|
||||
return index2;
|
||||
}
|
||||
}
|
||||
if (typeof thing === "function") {
|
||||
throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
|
||||
}
|
||||
let str = "";
|
||||
if (is_primitive(thing)) {
|
||||
str = stringify_primitive2(thing);
|
||||
} else {
|
||||
const type = get_type(thing);
|
||||
switch (type) {
|
||||
case "Number":
|
||||
case "String":
|
||||
case "Boolean":
|
||||
str = `["Object",${stringify_primitive2(thing)}]`;
|
||||
break;
|
||||
case "BigInt":
|
||||
str = `["BigInt",${thing}]`;
|
||||
break;
|
||||
case "Date":
|
||||
const valid = !isNaN(thing.getDate());
|
||||
str = `["Date","${valid ? thing.toISOString() : ""}"]`;
|
||||
break;
|
||||
case "URL":
|
||||
str = `["URL",${stringify_string(thing.toString())}]`;
|
||||
break;
|
||||
case "URLSearchParams":
|
||||
str = `["URLSearchParams",${stringify_string(thing.toString())}]`;
|
||||
break;
|
||||
case "RegExp":
|
||||
const { source, flags } = thing;
|
||||
str = flags ? `["RegExp",${stringify_string(source)},"${flags}"]` : `["RegExp",${stringify_string(source)}]`;
|
||||
break;
|
||||
case "Array":
|
||||
str = "[";
|
||||
for (let i = 0; i < thing.length; i += 1) {
|
||||
if (i > 0) str += ",";
|
||||
if (i in thing) {
|
||||
keys.push(`[${i}]`);
|
||||
str += flatten(thing[i]);
|
||||
keys.pop();
|
||||
} else {
|
||||
str += HOLE;
|
||||
}
|
||||
}
|
||||
str += "]";
|
||||
break;
|
||||
case "Set":
|
||||
str = '["Set"';
|
||||
for (const value2 of thing) {
|
||||
str += `,${flatten(value2)}`;
|
||||
}
|
||||
str += "]";
|
||||
break;
|
||||
case "Map":
|
||||
str = '["Map"';
|
||||
for (const [key, value2] of thing) {
|
||||
keys.push(
|
||||
`.get(${is_primitive(key) ? stringify_primitive2(key) : "..."})`
|
||||
);
|
||||
str += `,${flatten(key)},${flatten(value2)}`;
|
||||
keys.pop();
|
||||
}
|
||||
str += "]";
|
||||
break;
|
||||
case "Int8Array":
|
||||
case "Uint8Array":
|
||||
case "Uint8ClampedArray":
|
||||
case "Int16Array":
|
||||
case "Uint16Array":
|
||||
case "Int32Array":
|
||||
case "Uint32Array":
|
||||
case "Float32Array":
|
||||
case "Float64Array":
|
||||
case "BigInt64Array":
|
||||
case "BigUint64Array": {
|
||||
const typedArray = thing;
|
||||
str = '["' + type + '",' + flatten(typedArray.buffer);
|
||||
const a = thing.byteOffset;
|
||||
const b = a + thing.byteLength;
|
||||
if (a > 0 || b !== typedArray.buffer.byteLength) {
|
||||
const m = +/(\d+)/.exec(type)[1] / 8;
|
||||
str += `,${a / m},${b / m}`;
|
||||
}
|
||||
str += "]";
|
||||
break;
|
||||
}
|
||||
case "ArrayBuffer": {
|
||||
const arraybuffer = thing;
|
||||
const base64 = encode64(arraybuffer);
|
||||
str = `["ArrayBuffer","${base64}"]`;
|
||||
break;
|
||||
}
|
||||
case "Temporal.Duration":
|
||||
case "Temporal.Instant":
|
||||
case "Temporal.PlainDate":
|
||||
case "Temporal.PlainTime":
|
||||
case "Temporal.PlainDateTime":
|
||||
case "Temporal.PlainMonthDay":
|
||||
case "Temporal.PlainYearMonth":
|
||||
case "Temporal.ZonedDateTime":
|
||||
str = `["${type}",${stringify_string(thing.toString())}]`;
|
||||
break;
|
||||
default:
|
||||
if (!is_plain_object(thing)) {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify arbitrary non-POJOs`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
if (enumerable_symbols(thing).length > 0) {
|
||||
throw new DevalueError(
|
||||
`Cannot stringify POJOs with symbolic keys`,
|
||||
keys,
|
||||
thing,
|
||||
value
|
||||
);
|
||||
}
|
||||
if (Object.getPrototypeOf(thing) === null) {
|
||||
str = '["null"';
|
||||
for (const key in thing) {
|
||||
keys.push(stringify_key(key));
|
||||
str += `,${stringify_string(key)},${flatten(thing[key])}`;
|
||||
keys.pop();
|
||||
}
|
||||
str += "]";
|
||||
} else {
|
||||
str = "{";
|
||||
let started = false;
|
||||
for (const key in thing) {
|
||||
if (started) str += ",";
|
||||
started = true;
|
||||
keys.push(stringify_key(key));
|
||||
str += `${stringify_string(key)}:${flatten(thing[key])}`;
|
||||
keys.pop();
|
||||
}
|
||||
str += "}";
|
||||
}
|
||||
}
|
||||
}
|
||||
stringified[index2] = str;
|
||||
return index2;
|
||||
}
|
||||
const index = flatten(value);
|
||||
if (index < 0) return `${index}`;
|
||||
return `[${stringified.join(",")}]`;
|
||||
}
|
||||
function stringify_primitive2(thing) {
|
||||
const type = typeof thing;
|
||||
if (type === "string") return stringify_string(thing);
|
||||
if (thing instanceof String) return stringify_string(thing.toString());
|
||||
if (thing === void 0) return UNDEFINED.toString();
|
||||
if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO.toString();
|
||||
if (type === "bigint") return `["BigInt","${thing}"]`;
|
||||
return String(thing);
|
||||
}
|
||||
export {
|
||||
DevalueError,
|
||||
parse,
|
||||
stringify,
|
||||
uneval,
|
||||
unflatten
|
||||
};
|
||||
//# sourceMappingURL=devalue.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+2
-2
@@ -7,7 +7,8 @@ import {
|
||||
hydratable,
|
||||
onDestroy,
|
||||
onMount
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
hydrate,
|
||||
mount,
|
||||
@@ -28,7 +29,6 @@ import {
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
afterUpdate,
|
||||
|
||||
+2
-2
@@ -1,13 +1,13 @@
|
||||
import {
|
||||
createAttachmentKey,
|
||||
fromAction
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import "./chunk-JC3VXQM7.js";
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
createAttachmentKey,
|
||||
|
||||
+2
-2
@@ -107,7 +107,8 @@ import {
|
||||
validate_store,
|
||||
validate_void_dynamic_element,
|
||||
wrap_snippet
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
append,
|
||||
comment,
|
||||
@@ -203,7 +204,6 @@ import {
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
CLASS,
|
||||
|
||||
+5
-5
@@ -3,11 +3,15 @@ import {
|
||||
} from "./chunk-EZEETTA4.js";
|
||||
import "./chunk-3TACVO2P.js";
|
||||
import "./chunk-7RQDXF5S.js";
|
||||
import {
|
||||
linear
|
||||
} from "./chunk-YERFD2CZ.js";
|
||||
import {
|
||||
loop,
|
||||
raf,
|
||||
writable
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import {
|
||||
deferred,
|
||||
@@ -23,10 +27,6 @@ import {
|
||||
true_default
|
||||
} from "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
linear
|
||||
} from "./chunk-YERFD2CZ.js";
|
||||
import {
|
||||
__privateAdd,
|
||||
__privateGet,
|
||||
|
||||
+2
-2
@@ -8,7 +8,8 @@ import {
|
||||
} from "./chunk-EZEETTA4.js";
|
||||
import "./chunk-3TACVO2P.js";
|
||||
import "./chunk-7RQDXF5S.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import {
|
||||
createSubscriber
|
||||
@@ -16,7 +17,6 @@ import {
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
export {
|
||||
MediaQuery,
|
||||
|
||||
+2
-2
@@ -2,7 +2,8 @@ import {
|
||||
ReactiveValue
|
||||
} from "./chunk-3TACVO2P.js";
|
||||
import "./chunk-7RQDXF5S.js";
|
||||
import "./chunk-XRZOVX56.js";
|
||||
import "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import {
|
||||
get,
|
||||
@@ -16,7 +17,6 @@ import {
|
||||
true_default
|
||||
} from "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import {
|
||||
__privateAdd,
|
||||
__privateGet,
|
||||
|
||||
+2
-2
@@ -4,7 +4,8 @@ import {
|
||||
readable,
|
||||
readonly,
|
||||
writable
|
||||
} from "./chunk-XRZOVX56.js";
|
||||
} from "./chunk-EXK7SDUS.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-57IKBECK.js";
|
||||
import {
|
||||
active_effect,
|
||||
@@ -19,7 +20,6 @@ import {
|
||||
import "./chunk-XWATFG4W.js";
|
||||
import "./chunk-HNWPC2PS.js";
|
||||
import "./chunk-OHYQYV5R.js";
|
||||
import "./chunk-U7P2NEEE.js";
|
||||
import "./chunk-X4VJQ2O3.js";
|
||||
|
||||
// node_modules/svelte/src/store/index-client.js
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Apideck
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
[](https://npmjs.com/@apideck/better-ajv-errors) [](https://npmjs.com/@apideck/better-ajv-errors) [](https://github.com/apideck-libraries/better-ajv-errors/actions/workflows/main.yml?query=branch%3Amain++)
|
||||
|
||||
# @apideck/better-ajv-errors 👮♀️
|
||||
|
||||
> Human-friendly JSON Schema validation for APIs
|
||||
|
||||
|
||||
- Readable and helpful [ajv](https://github.com/ajv-validator/ajv) errors
|
||||
- API-friendly format
|
||||
- Suggestions for spelling mistakes
|
||||
- Minimal footprint: 1.56 kB (gzip + minified)
|
||||
|
||||

|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
$ yarn add @apideck/better-ajv-errors
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
$ npm i @apideck/better-ajv-errors
|
||||
```
|
||||
|
||||
Also make sure that you've installed [ajv](https://www.npmjs.com/package/ajv) at version 8 or higher.
|
||||
|
||||
## Usage
|
||||
|
||||
After validating some data with ajv, pass the errors to `betterAjvErrors`
|
||||
|
||||
```ts
|
||||
import Ajv from 'ajv';
|
||||
import { betterAjvErrors } from '@apideck/better-ajv-errors';
|
||||
|
||||
// Without allErrors: true, ajv will only return the first error
|
||||
const ajv = new Ajv({ allErrors: true });
|
||||
|
||||
const valid = ajv.validate(schema, data);
|
||||
|
||||
if (!valid) {
|
||||
const betterErrors = betterAjvErrors({ schema, data, errors: ajv.errors });
|
||||
}
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### betterAjvErrors
|
||||
|
||||
Function that formats ajv validation errors in a human-friendly format.
|
||||
|
||||
#### Parameters
|
||||
|
||||
- `options: BetterAjvErrorsOptions`
|
||||
- `errors: ErrorObject[] | null | undefined` Your ajv errors, you will find these in the `errors` property of your ajv instance (`ErrorObject` is a type from the ajv package).
|
||||
- `data: Object` The data you passed to ajv to be validated.
|
||||
- `schema: JSONSchema` The schema you passed to ajv to validate against.
|
||||
- `basePath?: string` An optional base path to prefix paths returned by `betterAjvErrors`. For example, in APIs, it could be useful to use `'{requestBody}'` or `'{queryParemeters}'` as a basePath. This will make it clear to users where exactly the error occurred.
|
||||
|
||||
#### Return Value
|
||||
|
||||
- `ValidationError[]` Array of formatted errors (properties of `ValidationError` below)
|
||||
- `message: string` Formatted error message
|
||||
- `suggestion?: string` Optional suggestion based on provided data and schema
|
||||
- `path: string` Object path where the error occurred (example: `.foo.bar.0.quz`)
|
||||
- `context: { errorType: DefinedError['keyword']; [additionalContext: string]: unknown }` `errorType` is `error.keyword` proxied from `ajv`. `errorType` can be used as a key for i18n if needed. There might be additional properties on context, based on the type of error.
|
||||
|
||||
## Related
|
||||
|
||||
- [atlassian/better-ajv-errors](https://github.com/atlassian/better-ajv-errors) was the inspiration for this library. Atlassian's library is more focused on CLI errors, this library is focused on developer-friendly API error messages.
|
||||
Generated
Vendored
+246
@@ -0,0 +1,246 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||||
|
||||
var leven = _interopDefault(require('leven'));
|
||||
var pointer = _interopDefault(require('jsonpointer'));
|
||||
|
||||
function _extends() {
|
||||
_extends = Object.assign || function (target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i];
|
||||
|
||||
for (var key in source) {
|
||||
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||||
target[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
};
|
||||
|
||||
return _extends.apply(this, arguments);
|
||||
}
|
||||
|
||||
var AJV_ERROR_KEYWORD_WEIGHT_MAP = {
|
||||
"enum": 1,
|
||||
type: 0
|
||||
};
|
||||
var QUOTES_REGEX = /"/g;
|
||||
var NOT_REGEX = /NOT/g;
|
||||
var SLASH_REGEX = /\//g;
|
||||
|
||||
var filterSingleErrorPerProperty = function filterSingleErrorPerProperty(errors) {
|
||||
var errorsPerProperty = errors.reduce(function (acc, error) {
|
||||
var _ref, _error$params$additio, _error$params, _error$params2, _AJV_ERROR_KEYWORD_WE, _AJV_ERROR_KEYWORD_WE2;
|
||||
|
||||
var prop = error.instancePath + ((_ref = (_error$params$additio = (_error$params = error.params) == null ? void 0 : _error$params.additionalProperty) != null ? _error$params$additio : (_error$params2 = error.params) == null ? void 0 : _error$params2.missingProperty) != null ? _ref : '');
|
||||
var existingError = acc[prop];
|
||||
|
||||
if (!existingError) {
|
||||
acc[prop] = error;
|
||||
return acc;
|
||||
}
|
||||
|
||||
var weight = (_AJV_ERROR_KEYWORD_WE = AJV_ERROR_KEYWORD_WEIGHT_MAP[error.keyword]) != null ? _AJV_ERROR_KEYWORD_WE : 0;
|
||||
var existingWeight = (_AJV_ERROR_KEYWORD_WE2 = AJV_ERROR_KEYWORD_WEIGHT_MAP[existingError.keyword]) != null ? _AJV_ERROR_KEYWORD_WE2 : 0;
|
||||
|
||||
if (weight > existingWeight) {
|
||||
acc[prop] = error;
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
return Object.values(errorsPerProperty);
|
||||
};
|
||||
|
||||
var getSuggestion = function getSuggestion(_ref) {
|
||||
var value = _ref.value,
|
||||
suggestions = _ref.suggestions,
|
||||
_ref$format = _ref.format,
|
||||
format = _ref$format === void 0 ? function (suggestion) {
|
||||
return "Did you mean '" + suggestion + "'?";
|
||||
} : _ref$format;
|
||||
if (!value) return '';
|
||||
var bestSuggestion = suggestions.reduce(function (best, current) {
|
||||
var distance = leven(value, current);
|
||||
|
||||
if (best.distance > distance) {
|
||||
return {
|
||||
value: current,
|
||||
distance: distance
|
||||
};
|
||||
}
|
||||
|
||||
return best;
|
||||
}, {
|
||||
distance: Infinity,
|
||||
value: ''
|
||||
});
|
||||
return bestSuggestion.distance < value.length ? format(bestSuggestion.value) : '';
|
||||
};
|
||||
|
||||
var pointerToDotNotation = function pointerToDotNotation(pointer) {
|
||||
return pointer.replace(SLASH_REGEX, '.');
|
||||
};
|
||||
var cleanAjvMessage = function cleanAjvMessage(message) {
|
||||
return message.replace(QUOTES_REGEX, "'").replace(NOT_REGEX, 'not');
|
||||
};
|
||||
var getLastSegment = function getLastSegment(path) {
|
||||
var segments = path.split('/');
|
||||
return segments.pop();
|
||||
};
|
||||
var safeJsonPointer = function safeJsonPointer(_ref) {
|
||||
var object = _ref.object,
|
||||
pnter = _ref.pnter,
|
||||
fallback = _ref.fallback;
|
||||
|
||||
try {
|
||||
return pointer.get(object, pnter);
|
||||
} catch (err) {
|
||||
return fallback;
|
||||
}
|
||||
};
|
||||
|
||||
var betterAjvErrors = function betterAjvErrors(_ref) {
|
||||
var errors = _ref.errors,
|
||||
data = _ref.data,
|
||||
schema = _ref.schema,
|
||||
_ref$basePath = _ref.basePath,
|
||||
basePath = _ref$basePath === void 0 ? '{base}' : _ref$basePath;
|
||||
|
||||
if (!Array.isArray(errors) || errors.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
var definedErrors = filterSingleErrorPerProperty(errors);
|
||||
return definedErrors.map(function (error) {
|
||||
var path = pointerToDotNotation(basePath + error.instancePath);
|
||||
var prop = getLastSegment(error.instancePath);
|
||||
var defaultContext = {
|
||||
errorType: error.keyword
|
||||
};
|
||||
var defaultMessage = (prop ? "property '" + prop + "'" : path) + " " + cleanAjvMessage(error.message);
|
||||
var validationError;
|
||||
|
||||
switch (error.keyword) {
|
||||
case 'additionalProperties':
|
||||
{
|
||||
var additionalProp = error.params.additionalProperty;
|
||||
var suggestionPointer = error.schemaPath.replace('#', '').replace('/additionalProperties', '');
|
||||
|
||||
var _safeJsonPointer = safeJsonPointer({
|
||||
object: schema,
|
||||
pnter: suggestionPointer,
|
||||
fallback: {
|
||||
properties: {}
|
||||
}
|
||||
}),
|
||||
properties = _safeJsonPointer.properties;
|
||||
|
||||
validationError = {
|
||||
message: "'" + additionalProp + "' property is not expected to be here",
|
||||
suggestion: getSuggestion({
|
||||
value: additionalProp,
|
||||
suggestions: Object.keys(properties != null ? properties : {}),
|
||||
format: function format(suggestion) {
|
||||
return "Did you mean property '" + suggestion + "'?";
|
||||
}
|
||||
}),
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'enum':
|
||||
{
|
||||
var suggestions = error.params.allowedValues.map(function (value) {
|
||||
return value.toString();
|
||||
});
|
||||
|
||||
var _prop = getLastSegment(error.instancePath);
|
||||
|
||||
var value = safeJsonPointer({
|
||||
object: data,
|
||||
pnter: error.instancePath,
|
||||
fallback: ''
|
||||
});
|
||||
validationError = {
|
||||
message: "'" + _prop + "' property must be equal to one of the allowed values",
|
||||
suggestion: getSuggestion({
|
||||
value: value,
|
||||
suggestions: suggestions
|
||||
}),
|
||||
path: path,
|
||||
context: _extends({}, defaultContext, {
|
||||
allowedValues: error.params.allowedValues
|
||||
})
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'type':
|
||||
{
|
||||
var _prop2 = getLastSegment(error.instancePath);
|
||||
|
||||
var type = error.params.type;
|
||||
validationError = {
|
||||
message: "'" + _prop2 + "' property type must be " + type,
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'required':
|
||||
{
|
||||
validationError = {
|
||||
message: path + " must have required property '" + error.params.missingProperty + "'",
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'const':
|
||||
{
|
||||
return {
|
||||
message: "'" + prop + "' property must be equal to the allowed value",
|
||||
path: path,
|
||||
context: _extends({}, defaultContext, {
|
||||
allowedValue: error.params.allowedValue
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
default:
|
||||
return {
|
||||
message: defaultMessage,
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
} // Remove empty properties
|
||||
|
||||
|
||||
var errorEntries = Object.entries(validationError);
|
||||
|
||||
for (var _i = 0, _errorEntries = errorEntries; _i < _errorEntries.length; _i++) {
|
||||
var _errorEntries$_i = _errorEntries[_i],
|
||||
key = _errorEntries$_i[0],
|
||||
_value = _errorEntries$_i[1];
|
||||
|
||||
if (_value === null || _value === undefined || _value === '') {
|
||||
delete validationError[key];
|
||||
}
|
||||
}
|
||||
|
||||
return validationError;
|
||||
});
|
||||
};
|
||||
|
||||
exports.betterAjvErrors = betterAjvErrors;
|
||||
//# sourceMappingURL=better-ajv-errors.cjs.development.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("leven")),r=e(require("jsonpointer"));function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(this,arguments)}var n={enum:1,type:0},o=/"/g,s=/NOT/g,u=/\//g,l=function(e){var r=e.value,a=e.format,n=void 0===a?function(e){return"Did you mean '"+e+"'?"}:a;if(!r)return"";var o=e.suggestions.reduce((function(e,a){var n=t(r,a);return e.distance>n?{value:a,distance:n}:e}),{distance:Infinity,value:""});return o.distance<r.length?n(o.value):""},i=function(e){return e.split("/").pop()},p=function(e){var t=e.object,a=e.pnter,n=e.fallback;try{return r.get(t,a)}catch(e){return n}};exports.betterAjvErrors=function(e){var t=e.errors,r=e.data,c=e.schema,d=e.basePath,v=void 0===d?"{base}":d;return Array.isArray(t)&&0!==t.length?function(e){var t=e.reduce((function(e,t){var r,a,o,s,u,l,i=t.instancePath+(null!=(r=null!=(a=null==(o=t.params)?void 0:o.additionalProperty)?a:null==(s=t.params)?void 0:s.missingProperty)?r:""),p=e[i];return p?((null!=(u=n[t.keyword])?u:0)>(null!=(l=n[p.keyword])?l:0)&&(e[i]=t),e):(e[i]=t,e)}),{});return Object.values(t)}(t).map((function(e){var t,n=function(e){return e.replace(u,".")}(v+e.instancePath),d=i(e.instancePath),y={errorType:e.keyword},f=(d?"property '"+d+"'":n)+" "+e.message.replace(o,"'").replace(s,"not");switch(e.keyword){case"additionalProperties":var m=e.params.additionalProperty,g=e.schemaPath.replace("#","").replace("/additionalProperties",""),h=p({object:c,pnter:g,fallback:{properties:{}}}).properties;t={message:"'"+m+"' property is not expected to be here",suggestion:l({value:m,suggestions:Object.keys(null!=h?h:{}),format:function(e){return"Did you mean property '"+e+"'?"}}),path:n,context:y};break;case"enum":var b=e.params.allowedValues.map((function(e){return e.toString()})),P=i(e.instancePath),w=p({object:r,pnter:e.instancePath,fallback:""});t={message:"'"+P+"' property must be equal to one of the allowed values",suggestion:l({value:w,suggestions:b}),path:n,context:a({},y,{allowedValues:e.params.allowedValues})};break;case"type":t={message:"'"+i(e.instancePath)+"' property type must be "+e.params.type,path:n,context:y};break;case"required":t={message:n+" must have required property '"+e.params.missingProperty+"'",path:n,context:y};break;case"const":return{message:"'"+d+"' property must be equal to the allowed value",path:n,context:a({},y,{allowedValue:e.params.allowedValue})};default:return{message:f,path:n,context:y}}for(var j=0,k=Object.entries(t);j<k.length;j++){var x=k[j],O=x[1];null!=O&&""!==O||delete t[x[0]]}return t})):[]};
|
||||
//# sourceMappingURL=better-ajv-errors.cjs.production.min.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+240
@@ -0,0 +1,240 @@
|
||||
import leven from 'leven';
|
||||
import pointer from 'jsonpointer';
|
||||
|
||||
function _extends() {
|
||||
_extends = Object.assign || function (target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i];
|
||||
|
||||
for (var key in source) {
|
||||
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||||
target[key] = source[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
};
|
||||
|
||||
return _extends.apply(this, arguments);
|
||||
}
|
||||
|
||||
var AJV_ERROR_KEYWORD_WEIGHT_MAP = {
|
||||
"enum": 1,
|
||||
type: 0
|
||||
};
|
||||
var QUOTES_REGEX = /"/g;
|
||||
var NOT_REGEX = /NOT/g;
|
||||
var SLASH_REGEX = /\//g;
|
||||
|
||||
var filterSingleErrorPerProperty = function filterSingleErrorPerProperty(errors) {
|
||||
var errorsPerProperty = errors.reduce(function (acc, error) {
|
||||
var _ref, _error$params$additio, _error$params, _error$params2, _AJV_ERROR_KEYWORD_WE, _AJV_ERROR_KEYWORD_WE2;
|
||||
|
||||
var prop = error.instancePath + ((_ref = (_error$params$additio = (_error$params = error.params) == null ? void 0 : _error$params.additionalProperty) != null ? _error$params$additio : (_error$params2 = error.params) == null ? void 0 : _error$params2.missingProperty) != null ? _ref : '');
|
||||
var existingError = acc[prop];
|
||||
|
||||
if (!existingError) {
|
||||
acc[prop] = error;
|
||||
return acc;
|
||||
}
|
||||
|
||||
var weight = (_AJV_ERROR_KEYWORD_WE = AJV_ERROR_KEYWORD_WEIGHT_MAP[error.keyword]) != null ? _AJV_ERROR_KEYWORD_WE : 0;
|
||||
var existingWeight = (_AJV_ERROR_KEYWORD_WE2 = AJV_ERROR_KEYWORD_WEIGHT_MAP[existingError.keyword]) != null ? _AJV_ERROR_KEYWORD_WE2 : 0;
|
||||
|
||||
if (weight > existingWeight) {
|
||||
acc[prop] = error;
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
return Object.values(errorsPerProperty);
|
||||
};
|
||||
|
||||
var getSuggestion = function getSuggestion(_ref) {
|
||||
var value = _ref.value,
|
||||
suggestions = _ref.suggestions,
|
||||
_ref$format = _ref.format,
|
||||
format = _ref$format === void 0 ? function (suggestion) {
|
||||
return "Did you mean '" + suggestion + "'?";
|
||||
} : _ref$format;
|
||||
if (!value) return '';
|
||||
var bestSuggestion = suggestions.reduce(function (best, current) {
|
||||
var distance = leven(value, current);
|
||||
|
||||
if (best.distance > distance) {
|
||||
return {
|
||||
value: current,
|
||||
distance: distance
|
||||
};
|
||||
}
|
||||
|
||||
return best;
|
||||
}, {
|
||||
distance: Infinity,
|
||||
value: ''
|
||||
});
|
||||
return bestSuggestion.distance < value.length ? format(bestSuggestion.value) : '';
|
||||
};
|
||||
|
||||
var pointerToDotNotation = function pointerToDotNotation(pointer) {
|
||||
return pointer.replace(SLASH_REGEX, '.');
|
||||
};
|
||||
var cleanAjvMessage = function cleanAjvMessage(message) {
|
||||
return message.replace(QUOTES_REGEX, "'").replace(NOT_REGEX, 'not');
|
||||
};
|
||||
var getLastSegment = function getLastSegment(path) {
|
||||
var segments = path.split('/');
|
||||
return segments.pop();
|
||||
};
|
||||
var safeJsonPointer = function safeJsonPointer(_ref) {
|
||||
var object = _ref.object,
|
||||
pnter = _ref.pnter,
|
||||
fallback = _ref.fallback;
|
||||
|
||||
try {
|
||||
return pointer.get(object, pnter);
|
||||
} catch (err) {
|
||||
return fallback;
|
||||
}
|
||||
};
|
||||
|
||||
var betterAjvErrors = function betterAjvErrors(_ref) {
|
||||
var errors = _ref.errors,
|
||||
data = _ref.data,
|
||||
schema = _ref.schema,
|
||||
_ref$basePath = _ref.basePath,
|
||||
basePath = _ref$basePath === void 0 ? '{base}' : _ref$basePath;
|
||||
|
||||
if (!Array.isArray(errors) || errors.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
var definedErrors = filterSingleErrorPerProperty(errors);
|
||||
return definedErrors.map(function (error) {
|
||||
var path = pointerToDotNotation(basePath + error.instancePath);
|
||||
var prop = getLastSegment(error.instancePath);
|
||||
var defaultContext = {
|
||||
errorType: error.keyword
|
||||
};
|
||||
var defaultMessage = (prop ? "property '" + prop + "'" : path) + " " + cleanAjvMessage(error.message);
|
||||
var validationError;
|
||||
|
||||
switch (error.keyword) {
|
||||
case 'additionalProperties':
|
||||
{
|
||||
var additionalProp = error.params.additionalProperty;
|
||||
var suggestionPointer = error.schemaPath.replace('#', '').replace('/additionalProperties', '');
|
||||
|
||||
var _safeJsonPointer = safeJsonPointer({
|
||||
object: schema,
|
||||
pnter: suggestionPointer,
|
||||
fallback: {
|
||||
properties: {}
|
||||
}
|
||||
}),
|
||||
properties = _safeJsonPointer.properties;
|
||||
|
||||
validationError = {
|
||||
message: "'" + additionalProp + "' property is not expected to be here",
|
||||
suggestion: getSuggestion({
|
||||
value: additionalProp,
|
||||
suggestions: Object.keys(properties != null ? properties : {}),
|
||||
format: function format(suggestion) {
|
||||
return "Did you mean property '" + suggestion + "'?";
|
||||
}
|
||||
}),
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'enum':
|
||||
{
|
||||
var suggestions = error.params.allowedValues.map(function (value) {
|
||||
return value.toString();
|
||||
});
|
||||
|
||||
var _prop = getLastSegment(error.instancePath);
|
||||
|
||||
var value = safeJsonPointer({
|
||||
object: data,
|
||||
pnter: error.instancePath,
|
||||
fallback: ''
|
||||
});
|
||||
validationError = {
|
||||
message: "'" + _prop + "' property must be equal to one of the allowed values",
|
||||
suggestion: getSuggestion({
|
||||
value: value,
|
||||
suggestions: suggestions
|
||||
}),
|
||||
path: path,
|
||||
context: _extends({}, defaultContext, {
|
||||
allowedValues: error.params.allowedValues
|
||||
})
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'type':
|
||||
{
|
||||
var _prop2 = getLastSegment(error.instancePath);
|
||||
|
||||
var type = error.params.type;
|
||||
validationError = {
|
||||
message: "'" + _prop2 + "' property type must be " + type,
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'required':
|
||||
{
|
||||
validationError = {
|
||||
message: path + " must have required property '" + error.params.missingProperty + "'",
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
case 'const':
|
||||
{
|
||||
return {
|
||||
message: "'" + prop + "' property must be equal to the allowed value",
|
||||
path: path,
|
||||
context: _extends({}, defaultContext, {
|
||||
allowedValue: error.params.allowedValue
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
default:
|
||||
return {
|
||||
message: defaultMessage,
|
||||
path: path,
|
||||
context: defaultContext
|
||||
};
|
||||
} // Remove empty properties
|
||||
|
||||
|
||||
var errorEntries = Object.entries(validationError);
|
||||
|
||||
for (var _i = 0, _errorEntries = errorEntries; _i < _errorEntries.length; _i++) {
|
||||
var _errorEntries$_i = _errorEntries[_i],
|
||||
key = _errorEntries$_i[0],
|
||||
_value = _errorEntries$_i[1];
|
||||
|
||||
if (_value === null || _value === undefined || _value === '') {
|
||||
delete validationError[key];
|
||||
}
|
||||
}
|
||||
|
||||
return validationError;
|
||||
});
|
||||
};
|
||||
|
||||
export { betterAjvErrors };
|
||||
//# sourceMappingURL=better-ajv-errors.esm.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+5
@@ -0,0 +1,5 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
export declare const AJV_ERROR_KEYWORD_WEIGHT_MAP: Partial<Record<DefinedError['keyword'], number>>;
|
||||
export declare const QUOTES_REGEX: RegExp;
|
||||
export declare const NOT_REGEX: RegExp;
|
||||
export declare const SLASH_REGEX: RegExp;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { ErrorObject } from 'ajv';
|
||||
import type { JSONSchema6 } from 'json-schema';
|
||||
import { ValidationError } from './types/ValidationError';
|
||||
export interface BetterAjvErrorsOptions {
|
||||
errors: ErrorObject[] | null | undefined;
|
||||
data: any;
|
||||
schema: JSONSchema6;
|
||||
basePath?: string;
|
||||
}
|
||||
export declare const betterAjvErrors: ({ errors, data, schema, basePath, }: BetterAjvErrorsOptions) => ValidationError[];
|
||||
export { ValidationError };
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
|
||||
'use strict'
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
module.exports = require('./better-ajv-errors.cjs.production.min.js')
|
||||
} else {
|
||||
module.exports = require('./better-ajv-errors.cjs.development.js')
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
export declare const filterSingleErrorPerProperty: (errors: DefinedError[]) => DefinedError[];
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
export declare const getSuggestion: ({ value, suggestions, format, }: {
|
||||
value: string | null;
|
||||
suggestions: string[];
|
||||
format?: ((suggestion: string) => string) | undefined;
|
||||
}) => string;
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
export declare const pointerToDotNotation: (pointer: string) => string;
|
||||
export declare const cleanAjvMessage: (message: string) => string;
|
||||
export declare const getLastSegment: (path: string) => string;
|
||||
export declare const safeJsonPointer: <T>({ object, pnter, fallback }: {
|
||||
object: any;
|
||||
pnter: string;
|
||||
fallback: T;
|
||||
}) => T;
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
export interface ValidationError {
|
||||
message: string;
|
||||
path: string;
|
||||
suggestion?: string;
|
||||
context: {
|
||||
errorType: DefinedError['keyword'];
|
||||
[additionalContext: string]: unknown;
|
||||
};
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"name": "@apideck/better-ajv-errors",
|
||||
"description": "Human-friendly JSON Schema validation for APIs",
|
||||
"version": "0.3.6",
|
||||
"author": "Apideck <support@apideck.com> (https://apideck.com/)",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apideck-libraries/better-ajv-errors"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/apideck-libraries/better-ajv-errors/issues"
|
||||
},
|
||||
"contributors": [
|
||||
"Elias Meire <elias@apideck.com>"
|
||||
],
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/better-ajv-errors.esm.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
"files": [
|
||||
"dist",
|
||||
"src"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "tsdx watch",
|
||||
"build": "tsdx build",
|
||||
"test": "tsdx test",
|
||||
"lint": "tsdx lint",
|
||||
"prepare": "tsdx build",
|
||||
"size": "size-limit",
|
||||
"release": "np --no-publish && npm publish --access public --registry https://registry.npmjs.org",
|
||||
"analyze": "size-limit --why"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "tsdx lint"
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
"printWidth": 120,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "es5"
|
||||
},
|
||||
"size-limit": [
|
||||
{
|
||||
"path": "dist/better-ajv-errors.cjs.production.min.js",
|
||||
"limit": "2 KB"
|
||||
},
|
||||
{
|
||||
"path": "dist/better-ajv-errors.esm.js",
|
||||
"limit": "2.5 KB"
|
||||
}
|
||||
],
|
||||
"devDependencies": {
|
||||
"@size-limit/preset-small-lib": "^7.0.8",
|
||||
"ajv": "^8.11.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"husky": "^8.0.1",
|
||||
"np": "^7.6.1",
|
||||
"size-limit": "^7.0.8",
|
||||
"tsdx": "^0.14.1",
|
||||
"tslib": "^2.4.0",
|
||||
"typescript": "^4.7.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ajv": ">=8"
|
||||
},
|
||||
"dependencies": {
|
||||
"json-schema": "^0.4.0",
|
||||
"jsonpointer": "^5.0.0",
|
||||
"leven": "^3.1.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"prettier": "^2.3.0"
|
||||
},
|
||||
"keywords": [
|
||||
"apideck",
|
||||
"ajv",
|
||||
"json",
|
||||
"schema",
|
||||
"json-schema",
|
||||
"errors",
|
||||
"human"
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
|
||||
export const AJV_ERROR_KEYWORD_WEIGHT_MAP: Partial<Record<DefinedError['keyword'], number>> = {
|
||||
enum: 1,
|
||||
type: 0,
|
||||
};
|
||||
|
||||
export const QUOTES_REGEX = /"/g;
|
||||
export const NOT_REGEX = /NOT/g;
|
||||
export const SLASH_REGEX = /\//g;
|
||||
+434
@@ -0,0 +1,434 @@
|
||||
import Ajv from 'ajv';
|
||||
import { JSONSchema6 } from 'json-schema';
|
||||
import { betterAjvErrors } from './index';
|
||||
|
||||
describe('betterAjvErrors', () => {
|
||||
let ajv: Ajv;
|
||||
let schema: JSONSchema6;
|
||||
let data: Record<string, unknown>;
|
||||
|
||||
beforeEach(() => {
|
||||
ajv = new Ajv({ allErrors: true });
|
||||
schema = {
|
||||
type: 'object',
|
||||
required: ['str'],
|
||||
properties: {
|
||||
str: {
|
||||
type: 'string',
|
||||
},
|
||||
enum: {
|
||||
type: 'string',
|
||||
enum: ['one', 'two'],
|
||||
},
|
||||
bounds: {
|
||||
type: 'number',
|
||||
minimum: 2,
|
||||
maximum: 4,
|
||||
},
|
||||
nested: {
|
||||
type: 'object',
|
||||
required: ['deepReq'],
|
||||
properties: {
|
||||
deepReq: {
|
||||
type: 'boolean',
|
||||
},
|
||||
deep: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
};
|
||||
});
|
||||
|
||||
describe('additionalProperties', () => {
|
||||
it('should handle additionalProperties=false', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
foo: 'bar',
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'foo' property is not expected to be here",
|
||||
path: '{base}',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should handle additionalProperties=true', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
foo: 'bar',
|
||||
};
|
||||
schema.additionalProperties = true;
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([]);
|
||||
});
|
||||
|
||||
it('should give suggestions when relevant', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
bonds: 'bar',
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'bonds' property is not expected to be here",
|
||||
path: '{base}',
|
||||
suggestion: "Did you mean property 'bounds'?",
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should handle object schemas without properties', () => {
|
||||
data = {
|
||||
empty: { foo: 1 },
|
||||
};
|
||||
schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
empty: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'foo' property is not expected to be here",
|
||||
path: '{base}.empty',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('required', () => {
|
||||
it('should handle required properties', () => {
|
||||
data = {
|
||||
nested: {},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'required',
|
||||
},
|
||||
message: "{base} must have required property 'str'",
|
||||
path: '{base}',
|
||||
},
|
||||
{
|
||||
context: {
|
||||
errorType: 'required',
|
||||
},
|
||||
message: "{base}.nested must have required property 'deepReq'",
|
||||
path: '{base}.nested',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should handle multiple required properties', () => {
|
||||
schema = {
|
||||
type: 'object',
|
||||
required: ['req1', 'req2'],
|
||||
properties: {
|
||||
req1: {
|
||||
type: 'string',
|
||||
},
|
||||
req2: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
};
|
||||
data = {};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'required',
|
||||
},
|
||||
message: "{base} must have required property 'req1'",
|
||||
path: '{base}',
|
||||
},
|
||||
{
|
||||
context: {
|
||||
errorType: 'required',
|
||||
},
|
||||
message: "{base} must have required property 'req2'",
|
||||
path: '{base}',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('type', () => {
|
||||
it('should handle type errors', () => {
|
||||
data = {
|
||||
str: 123,
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'type',
|
||||
},
|
||||
message: "'str' property type must be string",
|
||||
path: '{base}.str',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('minimum/maximum', () => {
|
||||
it('should handle minimum/maximum errors', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
bounds: 123,
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'maximum',
|
||||
},
|
||||
message: "property 'bounds' must be <= 4",
|
||||
path: '{base}.bounds',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('enum', () => {
|
||||
it('should handle enum errors', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
enum: 'zzzz',
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'enum',
|
||||
allowedValues: ['one', 'two'],
|
||||
},
|
||||
message: "'enum' property must be equal to one of the allowed values",
|
||||
path: '{base}.enum',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should provide suggestions when relevant', () => {
|
||||
data = {
|
||||
str: 'str',
|
||||
enum: 'pne',
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'enum',
|
||||
allowedValues: ['one', 'two'],
|
||||
},
|
||||
message: "'enum' property must be equal to one of the allowed values",
|
||||
path: '{base}.enum',
|
||||
suggestion: "Did you mean 'one'?",
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should not crash on null value', () => {
|
||||
data = {
|
||||
type: null,
|
||||
};
|
||||
schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
type: {
|
||||
type: 'string',
|
||||
enum: ['primary', 'secondary'],
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
allowedValues: ['primary', 'secondary'],
|
||||
errorType: 'enum',
|
||||
},
|
||||
message: "'type' property must be equal to one of the allowed values",
|
||||
path: '{base}.type',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle array paths', () => {
|
||||
data = {
|
||||
custom: [{ foo: 'bar' }, { aaa: 'zzz' }],
|
||||
};
|
||||
schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
custom: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
id: {
|
||||
type: 'string',
|
||||
},
|
||||
title: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'foo' property is not expected to be here",
|
||||
path: '{base}.custom.0',
|
||||
},
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'aaa' property is not expected to be here",
|
||||
path: '{base}.custom.1',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should handle file $refs', () => {
|
||||
data = {
|
||||
child: [{ foo: 'bar' }, { aaa: 'zzz' }],
|
||||
};
|
||||
schema = {
|
||||
$id: 'http://example.com/schemas/Main.json',
|
||||
type: 'object',
|
||||
properties: {
|
||||
child: {
|
||||
type: 'array',
|
||||
items: {
|
||||
$ref: './Child.json',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.addSchema({
|
||||
$id: 'http://example.com/schemas/Child.json',
|
||||
additionalProperties: false,
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
});
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'foo' property is not expected to be here",
|
||||
path: '{base}.child.0',
|
||||
},
|
||||
{
|
||||
context: {
|
||||
errorType: 'additionalProperties',
|
||||
},
|
||||
message: "'aaa' property is not expected to be here",
|
||||
path: '{base}.child.1',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should handle number enums', () => {
|
||||
data = {
|
||||
isLive: 2,
|
||||
};
|
||||
schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
isLive: {
|
||||
type: 'integer',
|
||||
enum: [0, 1],
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
allowedValues: [0, 1],
|
||||
errorType: 'enum',
|
||||
},
|
||||
message: "'isLive' property must be equal to one of the allowed values",
|
||||
path: '{base}.isLive',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
describe('const', () => {
|
||||
it('should handle const errors', () => {
|
||||
data = {
|
||||
const: 2,
|
||||
};
|
||||
schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
const: {
|
||||
type: 'integer',
|
||||
const: 42,
|
||||
},
|
||||
},
|
||||
};
|
||||
ajv.validate(schema, data);
|
||||
const errors = betterAjvErrors({ data, schema, errors: ajv.errors });
|
||||
expect(errors).toEqual([
|
||||
{
|
||||
context: {
|
||||
allowedValue: 42,
|
||||
errorType: 'const',
|
||||
},
|
||||
message: "'const' property must be equal to the allowed value",
|
||||
path: '{base}.const',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
import { DefinedError, ErrorObject } from 'ajv';
|
||||
import type { JSONSchema6 } from 'json-schema';
|
||||
import { ValidationError } from './types/ValidationError';
|
||||
import { filterSingleErrorPerProperty } from './lib/filter';
|
||||
import { getSuggestion } from './lib/suggestions';
|
||||
import { cleanAjvMessage, getLastSegment, pointerToDotNotation, safeJsonPointer } from './lib/utils';
|
||||
|
||||
export interface BetterAjvErrorsOptions {
|
||||
errors: ErrorObject[] | null | undefined;
|
||||
data: any;
|
||||
schema: JSONSchema6;
|
||||
basePath?: string;
|
||||
}
|
||||
|
||||
export const betterAjvErrors = ({
|
||||
errors,
|
||||
data,
|
||||
schema,
|
||||
basePath = '{base}',
|
||||
}: BetterAjvErrorsOptions): ValidationError[] => {
|
||||
if (!Array.isArray(errors) || errors.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const definedErrors = filterSingleErrorPerProperty(errors as DefinedError[]);
|
||||
|
||||
return definedErrors.map((error) => {
|
||||
const path = pointerToDotNotation(basePath + error.instancePath);
|
||||
const prop = getLastSegment(error.instancePath);
|
||||
const defaultContext = {
|
||||
errorType: error.keyword,
|
||||
};
|
||||
const defaultMessage = `${prop ? `property '${prop}'` : path} ${cleanAjvMessage(error.message as string)}`;
|
||||
|
||||
let validationError: ValidationError;
|
||||
|
||||
switch (error.keyword) {
|
||||
case 'additionalProperties': {
|
||||
const additionalProp = error.params.additionalProperty;
|
||||
const suggestionPointer = error.schemaPath.replace('#', '').replace('/additionalProperties', '');
|
||||
const { properties } = safeJsonPointer({
|
||||
object: schema,
|
||||
pnter: suggestionPointer,
|
||||
fallback: { properties: {} },
|
||||
});
|
||||
validationError = {
|
||||
message: `'${additionalProp}' property is not expected to be here`,
|
||||
suggestion: getSuggestion({
|
||||
value: additionalProp,
|
||||
suggestions: Object.keys(properties ?? {}),
|
||||
format: (suggestion) => `Did you mean property '${suggestion}'?`,
|
||||
}),
|
||||
path,
|
||||
context: defaultContext,
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'enum': {
|
||||
const suggestions = error.params.allowedValues.map((value) => value.toString());
|
||||
const prop = getLastSegment(error.instancePath);
|
||||
const value = safeJsonPointer({ object: data, pnter: error.instancePath, fallback: '' });
|
||||
validationError = {
|
||||
message: `'${prop}' property must be equal to one of the allowed values`,
|
||||
suggestion: getSuggestion({
|
||||
value,
|
||||
suggestions,
|
||||
}),
|
||||
path,
|
||||
context: {
|
||||
...defaultContext,
|
||||
allowedValues: error.params.allowedValues,
|
||||
},
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'type': {
|
||||
const prop = getLastSegment(error.instancePath);
|
||||
const type = error.params.type;
|
||||
validationError = {
|
||||
message: `'${prop}' property type must be ${type}`,
|
||||
path,
|
||||
context: defaultContext,
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'required': {
|
||||
validationError = {
|
||||
message: `${path} must have required property '${error.params.missingProperty}'`,
|
||||
path,
|
||||
context: defaultContext,
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'const': {
|
||||
return {
|
||||
message: `'${prop}' property must be equal to the allowed value`,
|
||||
path,
|
||||
context: {
|
||||
...defaultContext,
|
||||
allowedValue: error.params.allowedValue,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
default:
|
||||
return { message: defaultMessage, path, context: defaultContext };
|
||||
}
|
||||
|
||||
// Remove empty properties
|
||||
const errorEntries = Object.entries(validationError);
|
||||
for (const [key, value] of errorEntries as [keyof ValidationError, unknown][]) {
|
||||
if (value === null || value === undefined || value === '') {
|
||||
delete validationError[key];
|
||||
}
|
||||
}
|
||||
|
||||
return validationError;
|
||||
});
|
||||
};
|
||||
|
||||
export { ValidationError };
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
import { AJV_ERROR_KEYWORD_WEIGHT_MAP } from '../constants';
|
||||
|
||||
export const filterSingleErrorPerProperty = (errors: DefinedError[]): DefinedError[] => {
|
||||
const errorsPerProperty = errors.reduce<Record<string, DefinedError>>((acc, error) => {
|
||||
const prop =
|
||||
error.instancePath + ((error.params as any)?.additionalProperty ?? (error.params as any)?.missingProperty ?? '');
|
||||
const existingError = acc[prop];
|
||||
if (!existingError) {
|
||||
acc[prop] = error;
|
||||
return acc;
|
||||
}
|
||||
const weight = AJV_ERROR_KEYWORD_WEIGHT_MAP[error.keyword] ?? 0;
|
||||
const existingWeight = AJV_ERROR_KEYWORD_WEIGHT_MAP[existingError.keyword] ?? 0;
|
||||
|
||||
if (weight > existingWeight) {
|
||||
acc[prop] = error;
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
return Object.values(errorsPerProperty);
|
||||
};
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
import leven from 'leven';
|
||||
|
||||
export const getSuggestion = ({
|
||||
value,
|
||||
suggestions,
|
||||
format = (suggestion) => `Did you mean '${suggestion}'?`,
|
||||
}: {
|
||||
value: string | null;
|
||||
suggestions: string[];
|
||||
format?: (suggestion: string) => string;
|
||||
}): string => {
|
||||
if (!value) return '';
|
||||
const bestSuggestion = suggestions.reduce(
|
||||
(best, current) => {
|
||||
const distance = leven(value, current);
|
||||
if (best.distance > distance) {
|
||||
return { value: current, distance };
|
||||
}
|
||||
|
||||
return best;
|
||||
},
|
||||
{
|
||||
distance: Infinity,
|
||||
value: '',
|
||||
}
|
||||
);
|
||||
|
||||
return bestSuggestion.distance < value.length ? format(bestSuggestion.value) : '';
|
||||
};
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import { NOT_REGEX, QUOTES_REGEX, SLASH_REGEX } from '../constants';
|
||||
import pointer from 'jsonpointer';
|
||||
|
||||
export const pointerToDotNotation = (pointer: string): string => {
|
||||
return pointer.replace(SLASH_REGEX, '.');
|
||||
};
|
||||
|
||||
export const cleanAjvMessage = (message: string): string => {
|
||||
return message.replace(QUOTES_REGEX, "'").replace(NOT_REGEX, 'not');
|
||||
};
|
||||
|
||||
export const getLastSegment = (path: string): string => {
|
||||
const segments = path.split('/');
|
||||
return segments.pop() as string;
|
||||
};
|
||||
|
||||
export const safeJsonPointer = <T>({ object, pnter, fallback }: { object: any; pnter: string; fallback: T }): T => {
|
||||
try {
|
||||
return pointer.get(object, pnter);
|
||||
} catch (err) {
|
||||
return fallback;
|
||||
}
|
||||
};
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { DefinedError } from 'ajv';
|
||||
|
||||
export interface ValidationError {
|
||||
message: string;
|
||||
path: string;
|
||||
suggestion?: string;
|
||||
context: {
|
||||
errorType: DefinedError['keyword'];
|
||||
[additionalContext: string]: unknown;
|
||||
};
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# @babel/code-frame
|
||||
|
||||
> Generate errors that contain a code frame that point to source locations.
|
||||
|
||||
See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save-dev @babel/code-frame
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/code-frame --dev
|
||||
```
|
||||
+217
@@ -0,0 +1,217 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
var picocolors = require('picocolors');
|
||||
var jsTokens = require('js-tokens');
|
||||
var helperValidatorIdentifier = require('@babel/helper-validator-identifier');
|
||||
|
||||
function isColorSupported() {
|
||||
return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported
|
||||
);
|
||||
}
|
||||
const compose = (f, g) => v => f(g(v));
|
||||
function buildDefs(colors) {
|
||||
return {
|
||||
keyword: colors.cyan,
|
||||
capitalized: colors.yellow,
|
||||
jsxIdentifier: colors.yellow,
|
||||
punctuator: colors.yellow,
|
||||
number: colors.magenta,
|
||||
string: colors.green,
|
||||
regex: colors.magenta,
|
||||
comment: colors.gray,
|
||||
invalid: compose(compose(colors.white, colors.bgRed), colors.bold),
|
||||
gutter: colors.gray,
|
||||
marker: compose(colors.red, colors.bold),
|
||||
message: compose(colors.red, colors.bold),
|
||||
reset: colors.reset
|
||||
};
|
||||
}
|
||||
const defsOn = buildDefs(picocolors.createColors(true));
|
||||
const defsOff = buildDefs(picocolors.createColors(false));
|
||||
function getDefs(enabled) {
|
||||
return enabled ? defsOn : defsOff;
|
||||
}
|
||||
|
||||
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
|
||||
const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
|
||||
const BRACKET = /^[()[\]{}]$/;
|
||||
let tokenize;
|
||||
const JSX_TAG = /^[a-z][\w-]*$/i;
|
||||
const getTokenType = function (token, offset, text) {
|
||||
if (token.type === "name") {
|
||||
const tokenValue = token.value;
|
||||
if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
|
||||
return "keyword";
|
||||
}
|
||||
if (JSX_TAG.test(tokenValue) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
|
||||
return "jsxIdentifier";
|
||||
}
|
||||
const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
|
||||
if (firstChar !== firstChar.toLowerCase()) {
|
||||
return "capitalized";
|
||||
}
|
||||
}
|
||||
if (token.type === "punctuator" && BRACKET.test(token.value)) {
|
||||
return "bracket";
|
||||
}
|
||||
if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
|
||||
return "punctuator";
|
||||
}
|
||||
return token.type;
|
||||
};
|
||||
tokenize = function* (text) {
|
||||
let match;
|
||||
while (match = jsTokens.default.exec(text)) {
|
||||
const token = jsTokens.matchToToken(match);
|
||||
yield {
|
||||
type: getTokenType(token, match.index, text),
|
||||
value: token.value
|
||||
};
|
||||
}
|
||||
};
|
||||
function highlight(text) {
|
||||
if (text === "") return "";
|
||||
const defs = getDefs(true);
|
||||
let highlighted = "";
|
||||
for (const {
|
||||
type,
|
||||
value
|
||||
} of tokenize(text)) {
|
||||
if (type in defs) {
|
||||
highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n");
|
||||
} else {
|
||||
highlighted += value;
|
||||
}
|
||||
}
|
||||
return highlighted;
|
||||
}
|
||||
|
||||
let deprecationWarningShown = false;
|
||||
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
||||
function getMarkerLines(loc, source, opts, startLineBaseZero) {
|
||||
const startLoc = Object.assign({
|
||||
column: 0,
|
||||
line: -1
|
||||
}, loc.start);
|
||||
const endLoc = Object.assign({}, startLoc, loc.end);
|
||||
const {
|
||||
linesAbove = 2,
|
||||
linesBelow = 3
|
||||
} = opts || {};
|
||||
const startLine = startLoc.line - startLineBaseZero;
|
||||
const startColumn = startLoc.column;
|
||||
const endLine = endLoc.line - startLineBaseZero;
|
||||
const endColumn = endLoc.column;
|
||||
let start = Math.max(startLine - (linesAbove + 1), 0);
|
||||
let end = Math.min(source.length, endLine + linesBelow);
|
||||
if (startLine === -1) {
|
||||
start = 0;
|
||||
}
|
||||
if (endLine === -1) {
|
||||
end = source.length;
|
||||
}
|
||||
const lineDiff = endLine - startLine;
|
||||
const markerLines = {};
|
||||
if (lineDiff) {
|
||||
for (let i = 0; i <= lineDiff; i++) {
|
||||
const lineNumber = i + startLine;
|
||||
if (!startColumn) {
|
||||
markerLines[lineNumber] = true;
|
||||
} else if (i === 0) {
|
||||
const sourceLength = source[lineNumber - 1].length;
|
||||
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
|
||||
} else if (i === lineDiff) {
|
||||
markerLines[lineNumber] = [0, endColumn];
|
||||
} else {
|
||||
const sourceLength = source[lineNumber - i].length;
|
||||
markerLines[lineNumber] = [0, sourceLength];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (startColumn === endColumn) {
|
||||
if (startColumn) {
|
||||
markerLines[startLine] = [startColumn, 0];
|
||||
} else {
|
||||
markerLines[startLine] = true;
|
||||
}
|
||||
} else {
|
||||
markerLines[startLine] = [startColumn, endColumn - startColumn];
|
||||
}
|
||||
}
|
||||
return {
|
||||
start,
|
||||
end,
|
||||
markerLines
|
||||
};
|
||||
}
|
||||
function codeFrameColumns(rawLines, loc, opts = {}) {
|
||||
const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
|
||||
const startLineBaseZero = (opts.startLine || 1) - 1;
|
||||
const defs = getDefs(shouldHighlight);
|
||||
const lines = rawLines.split(NEWLINE);
|
||||
const {
|
||||
start,
|
||||
end,
|
||||
markerLines
|
||||
} = getMarkerLines(loc, lines, opts, startLineBaseZero);
|
||||
const hasColumns = loc.start && typeof loc.start.column === "number";
|
||||
const numberMaxWidth = String(end + startLineBaseZero).length;
|
||||
const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
|
||||
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
|
||||
const number = start + 1 + index;
|
||||
const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);
|
||||
const gutter = ` ${paddedNumber} |`;
|
||||
const hasMarker = markerLines[number];
|
||||
const lastMarkerLine = !markerLines[number + 1];
|
||||
if (hasMarker) {
|
||||
let markerLine = "";
|
||||
if (Array.isArray(hasMarker)) {
|
||||
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
|
||||
const numberOfMarkers = hasMarker[1] || 1;
|
||||
markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join("");
|
||||
if (lastMarkerLine && opts.message) {
|
||||
markerLine += " " + defs.message(opts.message);
|
||||
}
|
||||
}
|
||||
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
|
||||
} else {
|
||||
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`;
|
||||
}
|
||||
}).join("\n");
|
||||
if (opts.message && !hasColumns) {
|
||||
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
|
||||
}
|
||||
if (shouldHighlight) {
|
||||
return defs.reset(frame);
|
||||
} else {
|
||||
return frame;
|
||||
}
|
||||
}
|
||||
function index (rawLines, lineNumber, colNumber, opts = {}) {
|
||||
if (!deprecationWarningShown) {
|
||||
deprecationWarningShown = true;
|
||||
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
|
||||
if (process.emitWarning) {
|
||||
process.emitWarning(message, "DeprecationWarning");
|
||||
} else {
|
||||
const deprecationError = new Error(message);
|
||||
deprecationError.name = "DeprecationWarning";
|
||||
console.warn(new Error(message));
|
||||
}
|
||||
}
|
||||
colNumber = Math.max(colNumber, 0);
|
||||
const location = {
|
||||
start: {
|
||||
column: colNumber,
|
||||
line: lineNumber
|
||||
}
|
||||
};
|
||||
return codeFrameColumns(rawLines, location, opts);
|
||||
}
|
||||
|
||||
exports.codeFrameColumns = codeFrameColumns;
|
||||
exports.default = index;
|
||||
exports.highlight = highlight;
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "@babel/code-frame",
|
||||
"version": "7.29.0",
|
||||
"description": "Generate errors that contain a code frame that point to source locations.",
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"homepage": "https://babel.dev/docs/en/next/babel-code-frame",
|
||||
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-code-frame"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.28.5",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"charcodes": "^0.2.0",
|
||||
"import-meta-resolve": "^4.1.0",
|
||||
"strip-ansi": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"type": "commonjs"
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# @babel/compat-data
|
||||
|
||||
> The compat-data to determine required Babel plugins
|
||||
|
||||
See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save @babel/compat-data
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/compat-data
|
||||
```
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file as Babel 8 drop support of core-js 2
|
||||
module.exports = require("./data/corejs2-built-ins.json");
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file now that it is included in babel-plugin-polyfill-corejs3
|
||||
module.exports = require("./data/corejs3-shipped-proposals.json");
|
||||
+2106
File diff suppressed because it is too large
Load Diff
+5
@@ -0,0 +1,5 @@
|
||||
[
|
||||
"esnext.promise.all-settled",
|
||||
"esnext.string.match-all",
|
||||
"esnext.global-this"
|
||||
]
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"es6.module": {
|
||||
"chrome": "61",
|
||||
"and_chr": "61",
|
||||
"edge": "16",
|
||||
"firefox": "60",
|
||||
"and_ff": "60",
|
||||
"node": "13.2.0",
|
||||
"opera": "48",
|
||||
"op_mob": "45",
|
||||
"safari": "10.1",
|
||||
"ios": "10.3",
|
||||
"samsung": "8.2",
|
||||
"android": "61",
|
||||
"electron": "2.0",
|
||||
"ios_saf": "10.3"
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"transform-async-to-generator": [
|
||||
"bugfix/transform-async-arrows-in-class"
|
||||
],
|
||||
"transform-parameters": [
|
||||
"bugfix/transform-edge-default-parameters",
|
||||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression"
|
||||
],
|
||||
"transform-function-name": [
|
||||
"bugfix/transform-edge-function-name"
|
||||
],
|
||||
"transform-block-scoping": [
|
||||
"bugfix/transform-safari-block-shadowing",
|
||||
"bugfix/transform-safari-for-shadowing"
|
||||
],
|
||||
"transform-template-literals": [
|
||||
"bugfix/transform-tagged-template-caching"
|
||||
],
|
||||
"transform-optional-chaining": [
|
||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
||||
],
|
||||
"proposal-optional-chaining": [
|
||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining"
|
||||
],
|
||||
"transform-class-properties": [
|
||||
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
||||
"bugfix/transform-firefox-class-in-computed-class-key",
|
||||
"bugfix/transform-safari-class-field-initializer-scope"
|
||||
],
|
||||
"proposal-class-properties": [
|
||||
"bugfix/transform-v8-static-class-fields-redefine-readonly",
|
||||
"bugfix/transform-firefox-class-in-computed-class-key",
|
||||
"bugfix/transform-safari-class-field-initializer-scope"
|
||||
]
|
||||
}
|
||||
+203
@@ -0,0 +1,203 @@
|
||||
{
|
||||
"bugfix/transform-async-arrows-in-class": {
|
||||
"chrome": "55",
|
||||
"opera": "42",
|
||||
"edge": "15",
|
||||
"firefox": "52",
|
||||
"safari": "11",
|
||||
"node": "7.6",
|
||||
"deno": "1",
|
||||
"ios": "11",
|
||||
"samsung": "6",
|
||||
"opera_mobile": "42",
|
||||
"electron": "1.6"
|
||||
},
|
||||
"bugfix/transform-edge-default-parameters": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "18",
|
||||
"firefox": "52",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"bugfix/transform-edge-function-name": {
|
||||
"chrome": "51",
|
||||
"opera": "38",
|
||||
"edge": "79",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6.5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.2"
|
||||
},
|
||||
"bugfix/transform-safari-block-shadowing": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "12",
|
||||
"firefox": "44",
|
||||
"safari": "11",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ie": "11",
|
||||
"ios": "11",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"bugfix/transform-safari-for-shadowing": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "12",
|
||||
"firefox": "4",
|
||||
"safari": "11",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ie": "11",
|
||||
"ios": "11",
|
||||
"samsung": "5",
|
||||
"rhino": "1.7.13",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "14",
|
||||
"firefox": "2",
|
||||
"safari": "16.3",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "16.3",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"bugfix/transform-tagged-template-caching": {
|
||||
"chrome": "41",
|
||||
"opera": "28",
|
||||
"edge": "12",
|
||||
"firefox": "34",
|
||||
"safari": "13",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "13",
|
||||
"samsung": "3.4",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "28",
|
||||
"electron": "0.21"
|
||||
},
|
||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining": {
|
||||
"chrome": "91",
|
||||
"opera": "77",
|
||||
"edge": "91",
|
||||
"firefox": "74",
|
||||
"safari": "13.1",
|
||||
"node": "16.9",
|
||||
"deno": "1.9",
|
||||
"ios": "13.4",
|
||||
"samsung": "16",
|
||||
"opera_mobile": "64",
|
||||
"electron": "13.0"
|
||||
},
|
||||
"transform-optional-chaining": {
|
||||
"chrome": "80",
|
||||
"opera": "67",
|
||||
"edge": "80",
|
||||
"firefox": "74",
|
||||
"safari": "13.1",
|
||||
"node": "14",
|
||||
"deno": "1",
|
||||
"ios": "13.4",
|
||||
"samsung": "13",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "57",
|
||||
"electron": "8.0"
|
||||
},
|
||||
"proposal-optional-chaining": {
|
||||
"chrome": "80",
|
||||
"opera": "67",
|
||||
"edge": "80",
|
||||
"firefox": "74",
|
||||
"safari": "13.1",
|
||||
"node": "14",
|
||||
"deno": "1",
|
||||
"ios": "13.4",
|
||||
"samsung": "13",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "57",
|
||||
"electron": "8.0"
|
||||
},
|
||||
"transform-parameters": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "15",
|
||||
"firefox": "52",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"transform-async-to-generator": {
|
||||
"chrome": "55",
|
||||
"opera": "42",
|
||||
"edge": "15",
|
||||
"firefox": "52",
|
||||
"safari": "10.1",
|
||||
"node": "7.6",
|
||||
"deno": "1",
|
||||
"ios": "10.3",
|
||||
"samsung": "6",
|
||||
"opera_mobile": "42",
|
||||
"electron": "1.6"
|
||||
},
|
||||
"transform-template-literals": {
|
||||
"chrome": "41",
|
||||
"opera": "28",
|
||||
"edge": "13",
|
||||
"firefox": "34",
|
||||
"safari": "9",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "3.4",
|
||||
"opera_mobile": "28",
|
||||
"electron": "0.21"
|
||||
},
|
||||
"transform-function-name": {
|
||||
"chrome": "51",
|
||||
"opera": "38",
|
||||
"edge": "14",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6.5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.2"
|
||||
},
|
||||
"transform-block-scoping": {
|
||||
"chrome": "50",
|
||||
"opera": "37",
|
||||
"edge": "14",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "37",
|
||||
"electron": "1.1"
|
||||
}
|
||||
}
|
||||
+838
@@ -0,0 +1,838 @@
|
||||
{
|
||||
"transform-explicit-resource-management": {
|
||||
"chrome": "134",
|
||||
"edge": "134",
|
||||
"firefox": "141",
|
||||
"node": "24",
|
||||
"electron": "35.0"
|
||||
},
|
||||
"transform-duplicate-named-capturing-groups-regex": {
|
||||
"chrome": "126",
|
||||
"opera": "112",
|
||||
"edge": "126",
|
||||
"firefox": "129",
|
||||
"safari": "17.4",
|
||||
"node": "23",
|
||||
"ios": "17.4",
|
||||
"electron": "31.0"
|
||||
},
|
||||
"transform-regexp-modifiers": {
|
||||
"chrome": "125",
|
||||
"opera": "111",
|
||||
"edge": "125",
|
||||
"firefox": "132",
|
||||
"node": "23",
|
||||
"samsung": "27",
|
||||
"electron": "31.0"
|
||||
},
|
||||
"transform-unicode-sets-regex": {
|
||||
"chrome": "112",
|
||||
"opera": "98",
|
||||
"edge": "112",
|
||||
"firefox": "116",
|
||||
"safari": "17",
|
||||
"node": "20",
|
||||
"deno": "1.32",
|
||||
"ios": "17",
|
||||
"samsung": "23",
|
||||
"opera_mobile": "75",
|
||||
"electron": "24.0"
|
||||
},
|
||||
"bugfix/transform-v8-static-class-fields-redefine-readonly": {
|
||||
"chrome": "98",
|
||||
"opera": "84",
|
||||
"edge": "98",
|
||||
"firefox": "75",
|
||||
"safari": "15",
|
||||
"node": "12",
|
||||
"deno": "1.18",
|
||||
"ios": "15",
|
||||
"samsung": "11",
|
||||
"opera_mobile": "52",
|
||||
"electron": "17.0"
|
||||
},
|
||||
"bugfix/transform-firefox-class-in-computed-class-key": {
|
||||
"chrome": "74",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "126",
|
||||
"safari": "16",
|
||||
"node": "12",
|
||||
"deno": "1",
|
||||
"ios": "16",
|
||||
"samsung": "11",
|
||||
"opera_mobile": "53",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"bugfix/transform-safari-class-field-initializer-scope": {
|
||||
"chrome": "74",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "69",
|
||||
"safari": "16",
|
||||
"node": "12",
|
||||
"deno": "1",
|
||||
"ios": "16",
|
||||
"samsung": "11",
|
||||
"opera_mobile": "53",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"transform-class-static-block": {
|
||||
"chrome": "94",
|
||||
"opera": "80",
|
||||
"edge": "94",
|
||||
"firefox": "93",
|
||||
"safari": "16.4",
|
||||
"node": "16.11",
|
||||
"deno": "1.14",
|
||||
"ios": "16.4",
|
||||
"samsung": "17",
|
||||
"opera_mobile": "66",
|
||||
"electron": "15.0"
|
||||
},
|
||||
"proposal-class-static-block": {
|
||||
"chrome": "94",
|
||||
"opera": "80",
|
||||
"edge": "94",
|
||||
"firefox": "93",
|
||||
"safari": "16.4",
|
||||
"node": "16.11",
|
||||
"deno": "1.14",
|
||||
"ios": "16.4",
|
||||
"samsung": "17",
|
||||
"opera_mobile": "66",
|
||||
"electron": "15.0"
|
||||
},
|
||||
"transform-private-property-in-object": {
|
||||
"chrome": "91",
|
||||
"opera": "77",
|
||||
"edge": "91",
|
||||
"firefox": "90",
|
||||
"safari": "15",
|
||||
"node": "16.9",
|
||||
"deno": "1.9",
|
||||
"ios": "15",
|
||||
"samsung": "16",
|
||||
"opera_mobile": "64",
|
||||
"electron": "13.0"
|
||||
},
|
||||
"proposal-private-property-in-object": {
|
||||
"chrome": "91",
|
||||
"opera": "77",
|
||||
"edge": "91",
|
||||
"firefox": "90",
|
||||
"safari": "15",
|
||||
"node": "16.9",
|
||||
"deno": "1.9",
|
||||
"ios": "15",
|
||||
"samsung": "16",
|
||||
"opera_mobile": "64",
|
||||
"electron": "13.0"
|
||||
},
|
||||
"transform-class-properties": {
|
||||
"chrome": "74",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "90",
|
||||
"safari": "14.1",
|
||||
"node": "12",
|
||||
"deno": "1",
|
||||
"ios": "14.5",
|
||||
"samsung": "11",
|
||||
"opera_mobile": "53",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"proposal-class-properties": {
|
||||
"chrome": "74",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "90",
|
||||
"safari": "14.1",
|
||||
"node": "12",
|
||||
"deno": "1",
|
||||
"ios": "14.5",
|
||||
"samsung": "11",
|
||||
"opera_mobile": "53",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"transform-private-methods": {
|
||||
"chrome": "84",
|
||||
"opera": "70",
|
||||
"edge": "84",
|
||||
"firefox": "90",
|
||||
"safari": "15",
|
||||
"node": "14.6",
|
||||
"deno": "1",
|
||||
"ios": "15",
|
||||
"samsung": "14",
|
||||
"opera_mobile": "60",
|
||||
"electron": "10.0"
|
||||
},
|
||||
"proposal-private-methods": {
|
||||
"chrome": "84",
|
||||
"opera": "70",
|
||||
"edge": "84",
|
||||
"firefox": "90",
|
||||
"safari": "15",
|
||||
"node": "14.6",
|
||||
"deno": "1",
|
||||
"ios": "15",
|
||||
"samsung": "14",
|
||||
"opera_mobile": "60",
|
||||
"electron": "10.0"
|
||||
},
|
||||
"transform-numeric-separator": {
|
||||
"chrome": "75",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "70",
|
||||
"safari": "13",
|
||||
"node": "12.5",
|
||||
"deno": "1",
|
||||
"ios": "13",
|
||||
"samsung": "11",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "54",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"proposal-numeric-separator": {
|
||||
"chrome": "75",
|
||||
"opera": "62",
|
||||
"edge": "79",
|
||||
"firefox": "70",
|
||||
"safari": "13",
|
||||
"node": "12.5",
|
||||
"deno": "1",
|
||||
"ios": "13",
|
||||
"samsung": "11",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "54",
|
||||
"electron": "6.0"
|
||||
},
|
||||
"transform-logical-assignment-operators": {
|
||||
"chrome": "85",
|
||||
"opera": "71",
|
||||
"edge": "85",
|
||||
"firefox": "79",
|
||||
"safari": "14",
|
||||
"node": "15",
|
||||
"deno": "1.2",
|
||||
"ios": "14",
|
||||
"samsung": "14",
|
||||
"opera_mobile": "60",
|
||||
"electron": "10.0"
|
||||
},
|
||||
"proposal-logical-assignment-operators": {
|
||||
"chrome": "85",
|
||||
"opera": "71",
|
||||
"edge": "85",
|
||||
"firefox": "79",
|
||||
"safari": "14",
|
||||
"node": "15",
|
||||
"deno": "1.2",
|
||||
"ios": "14",
|
||||
"samsung": "14",
|
||||
"opera_mobile": "60",
|
||||
"electron": "10.0"
|
||||
},
|
||||
"transform-nullish-coalescing-operator": {
|
||||
"chrome": "80",
|
||||
"opera": "67",
|
||||
"edge": "80",
|
||||
"firefox": "72",
|
||||
"safari": "13.1",
|
||||
"node": "14",
|
||||
"deno": "1",
|
||||
"ios": "13.4",
|
||||
"samsung": "13",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "57",
|
||||
"electron": "8.0"
|
||||
},
|
||||
"proposal-nullish-coalescing-operator": {
|
||||
"chrome": "80",
|
||||
"opera": "67",
|
||||
"edge": "80",
|
||||
"firefox": "72",
|
||||
"safari": "13.1",
|
||||
"node": "14",
|
||||
"deno": "1",
|
||||
"ios": "13.4",
|
||||
"samsung": "13",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "57",
|
||||
"electron": "8.0"
|
||||
},
|
||||
"transform-optional-chaining": {
|
||||
"chrome": "91",
|
||||
"opera": "77",
|
||||
"edge": "91",
|
||||
"firefox": "74",
|
||||
"safari": "13.1",
|
||||
"node": "16.9",
|
||||
"deno": "1.9",
|
||||
"ios": "13.4",
|
||||
"samsung": "16",
|
||||
"opera_mobile": "64",
|
||||
"electron": "13.0"
|
||||
},
|
||||
"proposal-optional-chaining": {
|
||||
"chrome": "91",
|
||||
"opera": "77",
|
||||
"edge": "91",
|
||||
"firefox": "74",
|
||||
"safari": "13.1",
|
||||
"node": "16.9",
|
||||
"deno": "1.9",
|
||||
"ios": "13.4",
|
||||
"samsung": "16",
|
||||
"opera_mobile": "64",
|
||||
"electron": "13.0"
|
||||
},
|
||||
"transform-json-strings": {
|
||||
"chrome": "66",
|
||||
"opera": "53",
|
||||
"edge": "79",
|
||||
"firefox": "62",
|
||||
"safari": "12",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "12",
|
||||
"samsung": "9",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"proposal-json-strings": {
|
||||
"chrome": "66",
|
||||
"opera": "53",
|
||||
"edge": "79",
|
||||
"firefox": "62",
|
||||
"safari": "12",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "12",
|
||||
"samsung": "9",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-optional-catch-binding": {
|
||||
"chrome": "66",
|
||||
"opera": "53",
|
||||
"edge": "79",
|
||||
"firefox": "58",
|
||||
"safari": "11.1",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "9",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"proposal-optional-catch-binding": {
|
||||
"chrome": "66",
|
||||
"opera": "53",
|
||||
"edge": "79",
|
||||
"firefox": "58",
|
||||
"safari": "11.1",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "9",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-parameters": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "18",
|
||||
"firefox": "52",
|
||||
"safari": "16.3",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "16.3",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"transform-async-generator-functions": {
|
||||
"chrome": "63",
|
||||
"opera": "50",
|
||||
"edge": "79",
|
||||
"firefox": "57",
|
||||
"safari": "12",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "12",
|
||||
"samsung": "8",
|
||||
"opera_mobile": "46",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"proposal-async-generator-functions": {
|
||||
"chrome": "63",
|
||||
"opera": "50",
|
||||
"edge": "79",
|
||||
"firefox": "57",
|
||||
"safari": "12",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "12",
|
||||
"samsung": "8",
|
||||
"opera_mobile": "46",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-object-rest-spread": {
|
||||
"chrome": "60",
|
||||
"opera": "47",
|
||||
"edge": "79",
|
||||
"firefox": "55",
|
||||
"safari": "11.1",
|
||||
"node": "8.3",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "8",
|
||||
"opera_mobile": "44",
|
||||
"electron": "2.0"
|
||||
},
|
||||
"proposal-object-rest-spread": {
|
||||
"chrome": "60",
|
||||
"opera": "47",
|
||||
"edge": "79",
|
||||
"firefox": "55",
|
||||
"safari": "11.1",
|
||||
"node": "8.3",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "8",
|
||||
"opera_mobile": "44",
|
||||
"electron": "2.0"
|
||||
},
|
||||
"transform-dotall-regex": {
|
||||
"chrome": "62",
|
||||
"opera": "49",
|
||||
"edge": "79",
|
||||
"firefox": "78",
|
||||
"safari": "11.1",
|
||||
"node": "8.10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "8",
|
||||
"rhino": "1.7.15",
|
||||
"opera_mobile": "46",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-unicode-property-regex": {
|
||||
"chrome": "64",
|
||||
"opera": "51",
|
||||
"edge": "79",
|
||||
"firefox": "78",
|
||||
"safari": "11.1",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "9",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"proposal-unicode-property-regex": {
|
||||
"chrome": "64",
|
||||
"opera": "51",
|
||||
"edge": "79",
|
||||
"firefox": "78",
|
||||
"safari": "11.1",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "9",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-named-capturing-groups-regex": {
|
||||
"chrome": "64",
|
||||
"opera": "51",
|
||||
"edge": "79",
|
||||
"firefox": "78",
|
||||
"safari": "11.1",
|
||||
"node": "10",
|
||||
"deno": "1",
|
||||
"ios": "11.3",
|
||||
"samsung": "9",
|
||||
"opera_mobile": "47",
|
||||
"electron": "3.0"
|
||||
},
|
||||
"transform-async-to-generator": {
|
||||
"chrome": "55",
|
||||
"opera": "42",
|
||||
"edge": "15",
|
||||
"firefox": "52",
|
||||
"safari": "11",
|
||||
"node": "7.6",
|
||||
"deno": "1",
|
||||
"ios": "11",
|
||||
"samsung": "6",
|
||||
"opera_mobile": "42",
|
||||
"electron": "1.6"
|
||||
},
|
||||
"transform-exponentiation-operator": {
|
||||
"chrome": "52",
|
||||
"opera": "39",
|
||||
"edge": "14",
|
||||
"firefox": "52",
|
||||
"safari": "10.1",
|
||||
"node": "7",
|
||||
"deno": "1",
|
||||
"ios": "10.3",
|
||||
"samsung": "6",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.3"
|
||||
},
|
||||
"transform-template-literals": {
|
||||
"chrome": "41",
|
||||
"opera": "28",
|
||||
"edge": "13",
|
||||
"firefox": "34",
|
||||
"safari": "13",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "13",
|
||||
"samsung": "3.4",
|
||||
"opera_mobile": "28",
|
||||
"electron": "0.21"
|
||||
},
|
||||
"transform-literals": {
|
||||
"chrome": "44",
|
||||
"opera": "31",
|
||||
"edge": "12",
|
||||
"firefox": "53",
|
||||
"safari": "9",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "4",
|
||||
"rhino": "1.7.15",
|
||||
"opera_mobile": "32",
|
||||
"electron": "0.30"
|
||||
},
|
||||
"transform-function-name": {
|
||||
"chrome": "51",
|
||||
"opera": "38",
|
||||
"edge": "79",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6.5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.2"
|
||||
},
|
||||
"transform-arrow-functions": {
|
||||
"chrome": "47",
|
||||
"opera": "34",
|
||||
"edge": "13",
|
||||
"firefox": "43",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"rhino": "1.7.13",
|
||||
"opera_mobile": "34",
|
||||
"electron": "0.36"
|
||||
},
|
||||
"transform-block-scoped-functions": {
|
||||
"chrome": "41",
|
||||
"opera": "28",
|
||||
"edge": "12",
|
||||
"firefox": "46",
|
||||
"safari": "10",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ie": "11",
|
||||
"ios": "10",
|
||||
"samsung": "3.4",
|
||||
"opera_mobile": "28",
|
||||
"electron": "0.21"
|
||||
},
|
||||
"transform-classes": {
|
||||
"chrome": "46",
|
||||
"opera": "33",
|
||||
"edge": "13",
|
||||
"firefox": "45",
|
||||
"safari": "10",
|
||||
"node": "5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "33",
|
||||
"electron": "0.36"
|
||||
},
|
||||
"transform-object-super": {
|
||||
"chrome": "46",
|
||||
"opera": "33",
|
||||
"edge": "13",
|
||||
"firefox": "45",
|
||||
"safari": "10",
|
||||
"node": "5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "33",
|
||||
"electron": "0.36"
|
||||
},
|
||||
"transform-shorthand-properties": {
|
||||
"chrome": "43",
|
||||
"opera": "30",
|
||||
"edge": "12",
|
||||
"firefox": "33",
|
||||
"safari": "9",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "4",
|
||||
"rhino": "1.7.14",
|
||||
"opera_mobile": "30",
|
||||
"electron": "0.27"
|
||||
},
|
||||
"transform-duplicate-keys": {
|
||||
"chrome": "42",
|
||||
"opera": "29",
|
||||
"edge": "12",
|
||||
"firefox": "34",
|
||||
"safari": "9",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "3.4",
|
||||
"opera_mobile": "29",
|
||||
"electron": "0.25"
|
||||
},
|
||||
"transform-computed-properties": {
|
||||
"chrome": "44",
|
||||
"opera": "31",
|
||||
"edge": "12",
|
||||
"firefox": "34",
|
||||
"safari": "7.1",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "8",
|
||||
"samsung": "4",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "32",
|
||||
"electron": "0.30"
|
||||
},
|
||||
"transform-for-of": {
|
||||
"chrome": "51",
|
||||
"opera": "38",
|
||||
"edge": "15",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6.5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.2"
|
||||
},
|
||||
"transform-sticky-regex": {
|
||||
"chrome": "49",
|
||||
"opera": "36",
|
||||
"edge": "13",
|
||||
"firefox": "3",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"rhino": "1.7.15",
|
||||
"opera_mobile": "36",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"transform-unicode-escapes": {
|
||||
"chrome": "44",
|
||||
"opera": "31",
|
||||
"edge": "12",
|
||||
"firefox": "53",
|
||||
"safari": "9",
|
||||
"node": "4",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "4",
|
||||
"rhino": "1.7.15",
|
||||
"opera_mobile": "32",
|
||||
"electron": "0.30"
|
||||
},
|
||||
"transform-unicode-regex": {
|
||||
"chrome": "50",
|
||||
"opera": "37",
|
||||
"edge": "13",
|
||||
"firefox": "46",
|
||||
"safari": "12",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "12",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "37",
|
||||
"electron": "1.1"
|
||||
},
|
||||
"transform-spread": {
|
||||
"chrome": "46",
|
||||
"opera": "33",
|
||||
"edge": "13",
|
||||
"firefox": "45",
|
||||
"safari": "10",
|
||||
"node": "5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "33",
|
||||
"electron": "0.36"
|
||||
},
|
||||
"transform-destructuring": {
|
||||
"chrome": "51",
|
||||
"opera": "38",
|
||||
"edge": "15",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6.5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "41",
|
||||
"electron": "1.2"
|
||||
},
|
||||
"transform-block-scoping": {
|
||||
"chrome": "50",
|
||||
"opera": "37",
|
||||
"edge": "14",
|
||||
"firefox": "53",
|
||||
"safari": "11",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "11",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "37",
|
||||
"electron": "1.1"
|
||||
},
|
||||
"transform-typeof-symbol": {
|
||||
"chrome": "48",
|
||||
"opera": "35",
|
||||
"edge": "12",
|
||||
"firefox": "36",
|
||||
"safari": "9",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "9",
|
||||
"samsung": "5",
|
||||
"rhino": "1.8",
|
||||
"opera_mobile": "35",
|
||||
"electron": "0.37"
|
||||
},
|
||||
"transform-new-target": {
|
||||
"chrome": "46",
|
||||
"opera": "33",
|
||||
"edge": "14",
|
||||
"firefox": "41",
|
||||
"safari": "10",
|
||||
"node": "5",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "33",
|
||||
"electron": "0.36"
|
||||
},
|
||||
"transform-regenerator": {
|
||||
"chrome": "50",
|
||||
"opera": "37",
|
||||
"edge": "13",
|
||||
"firefox": "53",
|
||||
"safari": "10",
|
||||
"node": "6",
|
||||
"deno": "1",
|
||||
"ios": "10",
|
||||
"samsung": "5",
|
||||
"opera_mobile": "37",
|
||||
"electron": "1.1"
|
||||
},
|
||||
"transform-member-expression-literals": {
|
||||
"chrome": "7",
|
||||
"opera": "12",
|
||||
"edge": "12",
|
||||
"firefox": "2",
|
||||
"safari": "5.1",
|
||||
"node": "0.4",
|
||||
"deno": "1",
|
||||
"ie": "9",
|
||||
"android": "4",
|
||||
"ios": "6",
|
||||
"phantom": "1.9",
|
||||
"samsung": "1",
|
||||
"rhino": "1.7.13",
|
||||
"opera_mobile": "12",
|
||||
"electron": "0.20"
|
||||
},
|
||||
"transform-property-literals": {
|
||||
"chrome": "7",
|
||||
"opera": "12",
|
||||
"edge": "12",
|
||||
"firefox": "2",
|
||||
"safari": "5.1",
|
||||
"node": "0.4",
|
||||
"deno": "1",
|
||||
"ie": "9",
|
||||
"android": "4",
|
||||
"ios": "6",
|
||||
"phantom": "1.9",
|
||||
"samsung": "1",
|
||||
"rhino": "1.7.13",
|
||||
"opera_mobile": "12",
|
||||
"electron": "0.20"
|
||||
},
|
||||
"transform-reserved-words": {
|
||||
"chrome": "13",
|
||||
"opera": "10.50",
|
||||
"edge": "12",
|
||||
"firefox": "2",
|
||||
"safari": "3.1",
|
||||
"node": "0.6",
|
||||
"deno": "1",
|
||||
"ie": "9",
|
||||
"android": "4.4",
|
||||
"ios": "6",
|
||||
"phantom": "1.9",
|
||||
"samsung": "1",
|
||||
"rhino": "1.7.13",
|
||||
"opera_mobile": "10.1",
|
||||
"electron": "0.20"
|
||||
},
|
||||
"transform-export-namespace-from": {
|
||||
"chrome": "72",
|
||||
"deno": "1.0",
|
||||
"edge": "79",
|
||||
"firefox": "80",
|
||||
"node": "13.2.0",
|
||||
"opera": "60",
|
||||
"opera_mobile": "51",
|
||||
"safari": "14.1",
|
||||
"ios": "14.5",
|
||||
"samsung": "11.0",
|
||||
"android": "72",
|
||||
"electron": "5.0"
|
||||
},
|
||||
"proposal-export-namespace-from": {
|
||||
"chrome": "72",
|
||||
"deno": "1.0",
|
||||
"edge": "79",
|
||||
"firefox": "80",
|
||||
"node": "13.2.0",
|
||||
"opera": "60",
|
||||
"opera_mobile": "51",
|
||||
"safari": "14.1",
|
||||
"ios": "14.5",
|
||||
"samsung": "11.0",
|
||||
"android": "72",
|
||||
"electron": "5.0"
|
||||
}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||
module.exports = require("./data/native-modules.json");
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||
module.exports = require("./data/overlapping-plugins.json");
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "@babel/compat-data",
|
||||
"version": "7.29.0",
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"license": "MIT",
|
||||
"description": "The compat-data to determine required Babel plugins",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-compat-data"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"exports": {
|
||||
"./plugins": "./plugins.js",
|
||||
"./native-modules": "./native-modules.js",
|
||||
"./corejs2-built-ins": "./corejs2-built-ins.js",
|
||||
"./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
|
||||
"./overlapping-plugins": "./overlapping-plugins.js",
|
||||
"./plugin-bugfixes": "./plugin-bugfixes.js"
|
||||
},
|
||||
"scripts": {
|
||||
"build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.mjs && node ./scripts/build-modules-support.mjs && node ./scripts/build-bugfixes-targets.mjs"
|
||||
},
|
||||
"keywords": [
|
||||
"babel",
|
||||
"compat-table",
|
||||
"compat-data"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@mdn/browser-compat-data": "^6.0.8",
|
||||
"core-js-compat": "^3.48.0",
|
||||
"electron-to-chromium": "^1.5.278"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"type": "commonjs"
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||
module.exports = require("./data/plugin-bugfixes.json");
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
||||
module.exports = require("./data/plugins.json");
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# @babel/core
|
||||
|
||||
> Babel compiler core.
|
||||
|
||||
See our website [@babel/core](https://babeljs.io/docs/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save-dev @babel/core
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/core --dev
|
||||
```
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
0 && 0;
|
||||
|
||||
//# sourceMappingURL=cache-contexts.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"names":[],"sources":["../../src/config/cache-contexts.ts"],"sourcesContent":["import type { ConfigContext } from \"./config-chain.ts\";\nimport type {\n CallerMetadata,\n TargetsListOrObject,\n} from \"./validation/options.ts\";\n\nexport type { ConfigContext as FullConfig };\n\nexport type FullPreset = {\n targets: TargetsListOrObject;\n} & ConfigContext;\nexport type FullPlugin = {\n assumptions: Record<string, boolean>;\n} & FullPreset;\n\n// Context not including filename since it is used in places that cannot\n// process 'ignore'/'only' and other filename-based logic.\nexport type SimpleConfig = {\n envName: string;\n caller: CallerMetadata | undefined;\n};\nexport type SimplePreset = {\n targets: TargetsListOrObject;\n} & SimpleConfig;\nexport type SimplePlugin = {\n assumptions: Record<string, boolean>;\n} & SimplePreset;\n"],"mappings":"","ignoreList":[]}
|
||||
+261
@@ -0,0 +1,261 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.assertSimpleType = assertSimpleType;
|
||||
exports.makeStrongCache = makeStrongCache;
|
||||
exports.makeStrongCacheSync = makeStrongCacheSync;
|
||||
exports.makeWeakCache = makeWeakCache;
|
||||
exports.makeWeakCacheSync = makeWeakCacheSync;
|
||||
function _gensync() {
|
||||
const data = require("gensync");
|
||||
_gensync = function () {
|
||||
return data;
|
||||
};
|
||||
return data;
|
||||
}
|
||||
var _async = require("../gensync-utils/async.js");
|
||||
var _util = require("./util.js");
|
||||
const synchronize = gen => {
|
||||
return _gensync()(gen).sync;
|
||||
};
|
||||
function* genTrue() {
|
||||
return true;
|
||||
}
|
||||
function makeWeakCache(handler) {
|
||||
return makeCachedFunction(WeakMap, handler);
|
||||
}
|
||||
function makeWeakCacheSync(handler) {
|
||||
return synchronize(makeWeakCache(handler));
|
||||
}
|
||||
function makeStrongCache(handler) {
|
||||
return makeCachedFunction(Map, handler);
|
||||
}
|
||||
function makeStrongCacheSync(handler) {
|
||||
return synchronize(makeStrongCache(handler));
|
||||
}
|
||||
function makeCachedFunction(CallCache, handler) {
|
||||
const callCacheSync = new CallCache();
|
||||
const callCacheAsync = new CallCache();
|
||||
const futureCache = new CallCache();
|
||||
return function* cachedFunction(arg, data) {
|
||||
const asyncContext = yield* (0, _async.isAsync)();
|
||||
const callCache = asyncContext ? callCacheAsync : callCacheSync;
|
||||
const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
|
||||
if (cached.valid) return cached.value;
|
||||
const cache = new CacheConfigurator(data);
|
||||
const handlerResult = handler(arg, cache);
|
||||
let finishLock;
|
||||
let value;
|
||||
if ((0, _util.isIterableIterator)(handlerResult)) {
|
||||
value = yield* (0, _async.onFirstPause)(handlerResult, () => {
|
||||
finishLock = setupAsyncLocks(cache, futureCache, arg);
|
||||
});
|
||||
} else {
|
||||
value = handlerResult;
|
||||
}
|
||||
updateFunctionCache(callCache, cache, arg, value);
|
||||
if (finishLock) {
|
||||
futureCache.delete(arg);
|
||||
finishLock.release(value);
|
||||
}
|
||||
return value;
|
||||
};
|
||||
}
|
||||
function* getCachedValue(cache, arg, data) {
|
||||
const cachedValue = cache.get(arg);
|
||||
if (cachedValue) {
|
||||
for (const {
|
||||
value,
|
||||
valid
|
||||
} of cachedValue) {
|
||||
if (yield* valid(data)) return {
|
||||
valid: true,
|
||||
value
|
||||
};
|
||||
}
|
||||
}
|
||||
return {
|
||||
valid: false,
|
||||
value: null
|
||||
};
|
||||
}
|
||||
function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
|
||||
const cached = yield* getCachedValue(callCache, arg, data);
|
||||
if (cached.valid) {
|
||||
return cached;
|
||||
}
|
||||
if (asyncContext) {
|
||||
const cached = yield* getCachedValue(futureCache, arg, data);
|
||||
if (cached.valid) {
|
||||
const value = yield* (0, _async.waitFor)(cached.value.promise);
|
||||
return {
|
||||
valid: true,
|
||||
value
|
||||
};
|
||||
}
|
||||
}
|
||||
return {
|
||||
valid: false,
|
||||
value: null
|
||||
};
|
||||
}
|
||||
function setupAsyncLocks(config, futureCache, arg) {
|
||||
const finishLock = new Lock();
|
||||
updateFunctionCache(futureCache, config, arg, finishLock);
|
||||
return finishLock;
|
||||
}
|
||||
function updateFunctionCache(cache, config, arg, value) {
|
||||
if (!config.configured()) config.forever();
|
||||
let cachedValue = cache.get(arg);
|
||||
config.deactivate();
|
||||
switch (config.mode()) {
|
||||
case "forever":
|
||||
cachedValue = [{
|
||||
value,
|
||||
valid: genTrue
|
||||
}];
|
||||
cache.set(arg, cachedValue);
|
||||
break;
|
||||
case "invalidate":
|
||||
cachedValue = [{
|
||||
value,
|
||||
valid: config.validator()
|
||||
}];
|
||||
cache.set(arg, cachedValue);
|
||||
break;
|
||||
case "valid":
|
||||
if (cachedValue) {
|
||||
cachedValue.push({
|
||||
value,
|
||||
valid: config.validator()
|
||||
});
|
||||
} else {
|
||||
cachedValue = [{
|
||||
value,
|
||||
valid: config.validator()
|
||||
}];
|
||||
cache.set(arg, cachedValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
class CacheConfigurator {
|
||||
constructor(data) {
|
||||
this._active = true;
|
||||
this._never = false;
|
||||
this._forever = false;
|
||||
this._invalidate = false;
|
||||
this._configured = false;
|
||||
this._pairs = [];
|
||||
this._data = void 0;
|
||||
this._data = data;
|
||||
}
|
||||
simple() {
|
||||
return makeSimpleConfigurator(this);
|
||||
}
|
||||
mode() {
|
||||
if (this._never) return "never";
|
||||
if (this._forever) return "forever";
|
||||
if (this._invalidate) return "invalidate";
|
||||
return "valid";
|
||||
}
|
||||
forever() {
|
||||
if (!this._active) {
|
||||
throw new Error("Cannot change caching after evaluation has completed.");
|
||||
}
|
||||
if (this._never) {
|
||||
throw new Error("Caching has already been configured with .never()");
|
||||
}
|
||||
this._forever = true;
|
||||
this._configured = true;
|
||||
}
|
||||
never() {
|
||||
if (!this._active) {
|
||||
throw new Error("Cannot change caching after evaluation has completed.");
|
||||
}
|
||||
if (this._forever) {
|
||||
throw new Error("Caching has already been configured with .forever()");
|
||||
}
|
||||
this._never = true;
|
||||
this._configured = true;
|
||||
}
|
||||
using(handler) {
|
||||
if (!this._active) {
|
||||
throw new Error("Cannot change caching after evaluation has completed.");
|
||||
}
|
||||
if (this._never || this._forever) {
|
||||
throw new Error("Caching has already been configured with .never or .forever()");
|
||||
}
|
||||
this._configured = true;
|
||||
const key = handler(this._data);
|
||||
const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
|
||||
if ((0, _async.isThenable)(key)) {
|
||||
return key.then(key => {
|
||||
this._pairs.push([key, fn]);
|
||||
return key;
|
||||
});
|
||||
}
|
||||
this._pairs.push([key, fn]);
|
||||
return key;
|
||||
}
|
||||
invalidate(handler) {
|
||||
this._invalidate = true;
|
||||
return this.using(handler);
|
||||
}
|
||||
validator() {
|
||||
const pairs = this._pairs;
|
||||
return function* (data) {
|
||||
for (const [key, fn] of pairs) {
|
||||
if (key !== (yield* fn(data))) return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
deactivate() {
|
||||
this._active = false;
|
||||
}
|
||||
configured() {
|
||||
return this._configured;
|
||||
}
|
||||
}
|
||||
function makeSimpleConfigurator(cache) {
|
||||
function cacheFn(val) {
|
||||
if (typeof val === "boolean") {
|
||||
if (val) cache.forever();else cache.never();
|
||||
return;
|
||||
}
|
||||
return cache.using(() => assertSimpleType(val()));
|
||||
}
|
||||
cacheFn.forever = () => cache.forever();
|
||||
cacheFn.never = () => cache.never();
|
||||
cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
|
||||
cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
|
||||
return cacheFn;
|
||||
}
|
||||
function assertSimpleType(value) {
|
||||
if ((0, _async.isThenable)(value)) {
|
||||
throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
|
||||
}
|
||||
if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
|
||||
throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
class Lock {
|
||||
constructor() {
|
||||
this.released = false;
|
||||
this.promise = void 0;
|
||||
this._resolve = void 0;
|
||||
this.promise = new Promise(resolve => {
|
||||
this._resolve = resolve;
|
||||
});
|
||||
}
|
||||
release(value) {
|
||||
this.released = true;
|
||||
this._resolve(value);
|
||||
}
|
||||
}
|
||||
0 && 0;
|
||||
|
||||
//# sourceMappingURL=caching.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+469
@@ -0,0 +1,469 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.buildPresetChain = buildPresetChain;
|
||||
exports.buildPresetChainWalker = void 0;
|
||||
exports.buildRootChain = buildRootChain;
|
||||
function _path() {
|
||||
const data = require("path");
|
||||
_path = function () {
|
||||
return data;
|
||||
};
|
||||
return data;
|
||||
}
|
||||
function _debug() {
|
||||
const data = require("debug");
|
||||
_debug = function () {
|
||||
return data;
|
||||
};
|
||||
return data;
|
||||
}
|
||||
var _options = require("./validation/options.js");
|
||||
var _patternToRegex = require("./pattern-to-regex.js");
|
||||
var _printer = require("./printer.js");
|
||||
var _rewriteStackTrace = require("../errors/rewrite-stack-trace.js");
|
||||
var _configError = require("../errors/config-error.js");
|
||||
var _index = require("./files/index.js");
|
||||
var _caching = require("./caching.js");
|
||||
var _configDescriptors = require("./config-descriptors.js");
|
||||
const debug = _debug()("babel:config:config-chain");
|
||||
function* buildPresetChain(arg, context) {
|
||||
const chain = yield* buildPresetChainWalker(arg, context);
|
||||
if (!chain) return null;
|
||||
return {
|
||||
plugins: dedupDescriptors(chain.plugins),
|
||||
presets: dedupDescriptors(chain.presets),
|
||||
options: chain.options.map(o => createConfigChainOptions(o)),
|
||||
files: new Set()
|
||||
};
|
||||
}
|
||||
const buildPresetChainWalker = exports.buildPresetChainWalker = makeChainWalker({
|
||||
root: preset => loadPresetDescriptors(preset),
|
||||
env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
|
||||
overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
|
||||
overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
|
||||
createLogger: () => () => {}
|
||||
});
|
||||
const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
|
||||
const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
|
||||
const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
|
||||
const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
|
||||
function* buildRootChain(opts, context) {
|
||||
let configReport, babelRcReport;
|
||||
const programmaticLogger = new _printer.ConfigPrinter();
|
||||
const programmaticChain = yield* loadProgrammaticChain({
|
||||
options: opts,
|
||||
dirname: context.cwd
|
||||
}, context, undefined, programmaticLogger);
|
||||
if (!programmaticChain) return null;
|
||||
const programmaticReport = yield* programmaticLogger.output();
|
||||
let configFile;
|
||||
if (typeof opts.configFile === "string") {
|
||||
configFile = yield* (0, _index.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
|
||||
} else if (opts.configFile !== false) {
|
||||
configFile = yield* (0, _index.findRootConfig)(context.root, context.envName, context.caller);
|
||||
}
|
||||
let {
|
||||
babelrc,
|
||||
babelrcRoots
|
||||
} = opts;
|
||||
let babelrcRootsDirectory = context.cwd;
|
||||
const configFileChain = emptyChain();
|
||||
const configFileLogger = new _printer.ConfigPrinter();
|
||||
if (configFile) {
|
||||
const validatedFile = validateConfigFile(configFile);
|
||||
const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
|
||||
if (!result) return null;
|
||||
configReport = yield* configFileLogger.output();
|
||||
if (babelrc === undefined) {
|
||||
babelrc = validatedFile.options.babelrc;
|
||||
}
|
||||
if (babelrcRoots === undefined) {
|
||||
babelrcRootsDirectory = validatedFile.dirname;
|
||||
babelrcRoots = validatedFile.options.babelrcRoots;
|
||||
}
|
||||
mergeChain(configFileChain, result);
|
||||
}
|
||||
let ignoreFile, babelrcFile;
|
||||
let isIgnored = false;
|
||||
const fileChain = emptyChain();
|
||||
if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
|
||||
const pkgData = yield* (0, _index.findPackageData)(context.filename);
|
||||
if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
|
||||
({
|
||||
ignore: ignoreFile,
|
||||
config: babelrcFile
|
||||
} = yield* (0, _index.findRelativeConfig)(pkgData, context.envName, context.caller));
|
||||
if (ignoreFile) {
|
||||
fileChain.files.add(ignoreFile.filepath);
|
||||
}
|
||||
if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
|
||||
isIgnored = true;
|
||||
}
|
||||
if (babelrcFile && !isIgnored) {
|
||||
const validatedFile = validateBabelrcFile(babelrcFile);
|
||||
const babelrcLogger = new _printer.ConfigPrinter();
|
||||
const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
|
||||
if (!result) {
|
||||
isIgnored = true;
|
||||
} else {
|
||||
babelRcReport = yield* babelrcLogger.output();
|
||||
mergeChain(fileChain, result);
|
||||
}
|
||||
}
|
||||
if (babelrcFile && isIgnored) {
|
||||
fileChain.files.add(babelrcFile.filepath);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (context.showConfig) {
|
||||
console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
|
||||
}
|
||||
const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
|
||||
return {
|
||||
plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
|
||||
presets: isIgnored ? [] : dedupDescriptors(chain.presets),
|
||||
options: isIgnored ? [] : chain.options.map(o => createConfigChainOptions(o)),
|
||||
fileHandling: isIgnored ? "ignored" : "transpile",
|
||||
ignore: ignoreFile || undefined,
|
||||
babelrc: babelrcFile || undefined,
|
||||
config: configFile || undefined,
|
||||
files: chain.files
|
||||
};
|
||||
}
|
||||
function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
|
||||
if (typeof babelrcRoots === "boolean") return babelrcRoots;
|
||||
const absoluteRoot = context.root;
|
||||
if (babelrcRoots === undefined) {
|
||||
return pkgData.directories.includes(absoluteRoot);
|
||||
}
|
||||
let babelrcPatterns = babelrcRoots;
|
||||
if (!Array.isArray(babelrcPatterns)) {
|
||||
babelrcPatterns = [babelrcPatterns];
|
||||
}
|
||||
babelrcPatterns = babelrcPatterns.map(pat => {
|
||||
return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
|
||||
});
|
||||
if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
|
||||
return pkgData.directories.includes(absoluteRoot);
|
||||
}
|
||||
return babelrcPatterns.some(pat => {
|
||||
if (typeof pat === "string") {
|
||||
pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
|
||||
}
|
||||
return pkgData.directories.some(directory => {
|
||||
return matchPattern(pat, babelrcRootsDirectory, directory, context);
|
||||
});
|
||||
});
|
||||
}
|
||||
const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||
filepath: file.filepath,
|
||||
dirname: file.dirname,
|
||||
options: (0, _options.validate)("configfile", file.options, file.filepath)
|
||||
}));
|
||||
const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||
filepath: file.filepath,
|
||||
dirname: file.dirname,
|
||||
options: (0, _options.validate)("babelrcfile", file.options, file.filepath)
|
||||
}));
|
||||
const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
|
||||
filepath: file.filepath,
|
||||
dirname: file.dirname,
|
||||
options: (0, _options.validate)("extendsfile", file.options, file.filepath)
|
||||
}));
|
||||
const loadProgrammaticChain = makeChainWalker({
|
||||
root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
|
||||
env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
|
||||
overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
|
||||
overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
|
||||
createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
|
||||
});
|
||||
const loadFileChainWalker = makeChainWalker({
|
||||
root: file => loadFileDescriptors(file),
|
||||
env: (file, envName) => loadFileEnvDescriptors(file)(envName),
|
||||
overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
|
||||
overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
|
||||
createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
|
||||
});
|
||||
function* loadFileChain(input, context, files, baseLogger) {
|
||||
const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
|
||||
chain == null || chain.files.add(input.filepath);
|
||||
return chain;
|
||||
}
|
||||
const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
|
||||
const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
|
||||
const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
|
||||
const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
|
||||
function buildFileLogger(filepath, context, baseLogger) {
|
||||
if (!baseLogger) {
|
||||
return () => {};
|
||||
}
|
||||
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
|
||||
filepath
|
||||
});
|
||||
}
|
||||
function buildRootDescriptors({
|
||||
dirname,
|
||||
options
|
||||
}, alias, descriptors) {
|
||||
return descriptors(dirname, options, alias);
|
||||
}
|
||||
function buildProgrammaticLogger(_, context, baseLogger) {
|
||||
var _context$caller;
|
||||
if (!baseLogger) {
|
||||
return () => {};
|
||||
}
|
||||
return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
|
||||
callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
|
||||
});
|
||||
}
|
||||
function buildEnvDescriptors({
|
||||
dirname,
|
||||
options
|
||||
}, alias, descriptors, envName) {
|
||||
var _options$env;
|
||||
const opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
|
||||
return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
|
||||
}
|
||||
function buildOverrideDescriptors({
|
||||
dirname,
|
||||
options
|
||||
}, alias, descriptors, index) {
|
||||
var _options$overrides;
|
||||
const opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
|
||||
if (!opts) throw new Error("Assertion failure - missing override");
|
||||
return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
|
||||
}
|
||||
function buildOverrideEnvDescriptors({
|
||||
dirname,
|
||||
options
|
||||
}, alias, descriptors, index, envName) {
|
||||
var _options$overrides2, _override$env;
|
||||
const override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
|
||||
if (!override) throw new Error("Assertion failure - missing override");
|
||||
const opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
|
||||
return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
|
||||
}
|
||||
function makeChainWalker({
|
||||
root,
|
||||
env,
|
||||
overrides,
|
||||
overridesEnv,
|
||||
createLogger
|
||||
}) {
|
||||
return function* chainWalker(input, context, files = new Set(), baseLogger) {
|
||||
const {
|
||||
dirname
|
||||
} = input;
|
||||
const flattenedConfigs = [];
|
||||
const rootOpts = root(input);
|
||||
if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
|
||||
flattenedConfigs.push({
|
||||
config: rootOpts,
|
||||
envName: undefined,
|
||||
index: undefined
|
||||
});
|
||||
const envOpts = env(input, context.envName);
|
||||
if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
|
||||
flattenedConfigs.push({
|
||||
config: envOpts,
|
||||
envName: context.envName,
|
||||
index: undefined
|
||||
});
|
||||
}
|
||||
(rootOpts.options.overrides || []).forEach((_, index) => {
|
||||
const overrideOps = overrides(input, index);
|
||||
if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
|
||||
flattenedConfigs.push({
|
||||
config: overrideOps,
|
||||
index,
|
||||
envName: undefined
|
||||
});
|
||||
const overrideEnvOpts = overridesEnv(input, index, context.envName);
|
||||
if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
|
||||
flattenedConfigs.push({
|
||||
config: overrideEnvOpts,
|
||||
index,
|
||||
envName: context.envName
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (flattenedConfigs.some(({
|
||||
config: {
|
||||
options: {
|
||||
ignore,
|
||||
only
|
||||
}
|
||||
}
|
||||
}) => shouldIgnore(context, ignore, only, dirname))) {
|
||||
return null;
|
||||
}
|
||||
const chain = emptyChain();
|
||||
const logger = createLogger(input, context, baseLogger);
|
||||
for (const {
|
||||
config,
|
||||
index,
|
||||
envName
|
||||
} of flattenedConfigs) {
|
||||
if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
|
||||
return null;
|
||||
}
|
||||
logger(config, index, envName);
|
||||
yield* mergeChainOpts(chain, config);
|
||||
}
|
||||
return chain;
|
||||
};
|
||||
}
|
||||
function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
|
||||
if (opts.extends === undefined) return true;
|
||||
const file = yield* (0, _index.loadConfig)(opts.extends, dirname, context.envName, context.caller);
|
||||
if (files.has(file)) {
|
||||
throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
|
||||
}
|
||||
files.add(file);
|
||||
const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
|
||||
files.delete(file);
|
||||
if (!fileChain) return false;
|
||||
mergeChain(chain, fileChain);
|
||||
return true;
|
||||
}
|
||||
function mergeChain(target, source) {
|
||||
target.options.push(...source.options);
|
||||
target.plugins.push(...source.plugins);
|
||||
target.presets.push(...source.presets);
|
||||
for (const file of source.files) {
|
||||
target.files.add(file);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
function* mergeChainOpts(target, {
|
||||
options,
|
||||
plugins,
|
||||
presets
|
||||
}) {
|
||||
target.options.push(options);
|
||||
target.plugins.push(...(yield* plugins()));
|
||||
target.presets.push(...(yield* presets()));
|
||||
return target;
|
||||
}
|
||||
function emptyChain() {
|
||||
return {
|
||||
options: [],
|
||||
presets: [],
|
||||
plugins: [],
|
||||
files: new Set()
|
||||
};
|
||||
}
|
||||
function createConfigChainOptions(opts) {
|
||||
const options = Object.assign({}, opts);
|
||||
delete options.extends;
|
||||
delete options.env;
|
||||
delete options.overrides;
|
||||
delete options.plugins;
|
||||
delete options.presets;
|
||||
delete options.passPerPreset;
|
||||
delete options.ignore;
|
||||
delete options.only;
|
||||
delete options.test;
|
||||
delete options.include;
|
||||
delete options.exclude;
|
||||
if (hasOwnProperty.call(options, "sourceMap")) {
|
||||
options.sourceMaps = options.sourceMap;
|
||||
delete options.sourceMap;
|
||||
}
|
||||
return options;
|
||||
}
|
||||
function dedupDescriptors(items) {
|
||||
const map = new Map();
|
||||
const descriptors = [];
|
||||
for (const item of items) {
|
||||
if (typeof item.value === "function") {
|
||||
const fnKey = item.value;
|
||||
let nameMap = map.get(fnKey);
|
||||
if (!nameMap) {
|
||||
nameMap = new Map();
|
||||
map.set(fnKey, nameMap);
|
||||
}
|
||||
let desc = nameMap.get(item.name);
|
||||
if (!desc) {
|
||||
desc = {
|
||||
value: item
|
||||
};
|
||||
descriptors.push(desc);
|
||||
if (!item.ownPass) nameMap.set(item.name, desc);
|
||||
} else {
|
||||
desc.value = item;
|
||||
}
|
||||
} else {
|
||||
descriptors.push({
|
||||
value: item
|
||||
});
|
||||
}
|
||||
}
|
||||
return descriptors.reduce((acc, desc) => {
|
||||
acc.push(desc.value);
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
function configIsApplicable({
|
||||
options
|
||||
}, dirname, context, configName) {
|
||||
return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
|
||||
}
|
||||
function configFieldIsApplicable(context, test, dirname, configName) {
|
||||
const patterns = Array.isArray(test) ? test : [test];
|
||||
return matchesPatterns(context, patterns, dirname, configName);
|
||||
}
|
||||
function ignoreListReplacer(_key, value) {
|
||||
if (value instanceof RegExp) {
|
||||
return String(value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function shouldIgnore(context, ignore, only, dirname) {
|
||||
if (ignore && matchesPatterns(context, ignore, dirname)) {
|
||||
var _context$filename;
|
||||
const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
|
||||
debug(message);
|
||||
if (context.showConfig) {
|
||||
console.log(message);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (only && !matchesPatterns(context, only, dirname)) {
|
||||
var _context$filename2;
|
||||
const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
|
||||
debug(message);
|
||||
if (context.showConfig) {
|
||||
console.log(message);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function matchesPatterns(context, patterns, dirname, configName) {
|
||||
return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context, configName));
|
||||
}
|
||||
function matchPattern(pattern, dirname, pathToTest, context, configName) {
|
||||
if (typeof pattern === "function") {
|
||||
return !!(0, _rewriteStackTrace.endHiddenCallStack)(pattern)(pathToTest, {
|
||||
dirname,
|
||||
envName: context.envName,
|
||||
caller: context.caller
|
||||
});
|
||||
}
|
||||
if (typeof pathToTest !== "string") {
|
||||
throw new _configError.default(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`, configName);
|
||||
}
|
||||
if (typeof pattern === "string") {
|
||||
pattern = (0, _patternToRegex.default)(pattern, dirname);
|
||||
}
|
||||
return pattern.test(pathToTest);
|
||||
}
|
||||
0 && 0;
|
||||
|
||||
//# sourceMappingURL=config-chain.js.map
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user