ai-speedometer 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-speedometer +161 -990
- package/package.json +5 -3
- package/dist/highlights-eq9cgrbb.scm +0 -604
- package/dist/highlights-ghv9g403.scm +0 -205
- package/dist/highlights-hk7bwhj4.scm +0 -284
- package/dist/highlights-r812a2qc.scm +0 -150
- package/dist/highlights-x6tmsnaa.scm +0 -115
- package/dist/injections-73j83es3.scm +0 -27
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
package/dist/ai-speedometer
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
5
3
|
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
9
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
|
-
for (let key of __getOwnPropNames(mod))
|
|
12
|
-
if (!__hasOwnProp.call(to, key))
|
|
13
|
-
__defProp(to, key, {
|
|
14
|
-
get: () => mod[key],
|
|
15
|
-
enumerable: true
|
|
16
|
-
});
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
20
4
|
var __export = (target, all) => {
|
|
21
5
|
for (var name in all)
|
|
22
6
|
__defProp(target, name, {
|
|
@@ -1490,61 +1474,85 @@ var getXDGPaths = () => ({
|
|
|
1490
1474
|
}
|
|
1491
1475
|
return merged;
|
|
1492
1476
|
}, getOpencodeGlobalConfigProviders = async () => {
|
|
1477
|
+
return getAuthenticatedProviders();
|
|
1478
|
+
}, getAuthenticatedProviders = async () => {
|
|
1493
1479
|
try {
|
|
1494
|
-
const globalConfig =
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
let models = [];
|
|
1505
|
-
if (entry.models && Object.keys(entry.models).length > 0) {
|
|
1506
|
-
models = Object.entries(entry.models).map(([modelKey, m]) => ({
|
|
1507
|
-
id: `${providerId}_${m.id ?? modelKey}`,
|
|
1508
|
-
name: m.name ?? m.id ?? modelKey
|
|
1509
|
-
}));
|
|
1510
|
-
} else if (mdProvider) {
|
|
1511
|
-
models = mdProvider.models.map((m) => ({ id: `${providerId}_${m.id}`, name: m.name }));
|
|
1480
|
+
const [allModelsDevProviders, authData, globalConfig] = await Promise.all([
|
|
1481
|
+
getAllProviders(),
|
|
1482
|
+
readAuthJson(),
|
|
1483
|
+
Promise.resolve(readOpencodeGlobalConfig())
|
|
1484
|
+
]);
|
|
1485
|
+
const database = new Map;
|
|
1486
|
+
for (const mdProvider of allModelsDevProviders) {
|
|
1487
|
+
const modelMap = new Map;
|
|
1488
|
+
for (const m of mdProvider.models) {
|
|
1489
|
+
modelMap.set(`${mdProvider.id}_${m.id}`, { id: `${mdProvider.id}_${m.id}`, name: m.name });
|
|
1512
1490
|
}
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
baseUrl: entry.options?.baseURL ?? entry.api ?? mdProvider?.baseUrl ?? "",
|
|
1520
|
-
apiKey,
|
|
1521
|
-
models
|
|
1491
|
+
database.set(mdProvider.id, {
|
|
1492
|
+
id: mdProvider.id,
|
|
1493
|
+
name: mdProvider.name,
|
|
1494
|
+
type: mdProvider.type,
|
|
1495
|
+
baseUrl: mdProvider.baseUrl,
|
|
1496
|
+
models: modelMap
|
|
1522
1497
|
});
|
|
1523
1498
|
}
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1499
|
+
for (const [providerID, entry] of Object.entries(globalConfig.provider ?? {})) {
|
|
1500
|
+
const existing = database.get(providerID);
|
|
1501
|
+
const modelMap = existing ? new Map(existing.models) : new Map;
|
|
1502
|
+
for (const [modelKey, m] of Object.entries(entry.models ?? {})) {
|
|
1503
|
+
const resolvedId = `${providerID}_${m.id ?? modelKey}`;
|
|
1504
|
+
modelMap.set(resolvedId, { id: resolvedId, name: m.name ?? m.id ?? modelKey });
|
|
1505
|
+
}
|
|
1506
|
+
database.set(providerID, {
|
|
1507
|
+
id: providerID,
|
|
1508
|
+
name: entry.name ?? existing?.name ?? providerID,
|
|
1509
|
+
type: existing?.type ?? "openai-compatible",
|
|
1510
|
+
baseUrl: entry.options?.baseURL ?? entry.api ?? existing?.baseUrl ?? "",
|
|
1511
|
+
models: modelMap,
|
|
1512
|
+
npm: entry.npm
|
|
1513
|
+
});
|
|
1514
|
+
}
|
|
1515
|
+
const providerMap = new Map;
|
|
1516
|
+
for (const [providerID, authInfo] of Object.entries(authData)) {
|
|
1517
|
+
if (authInfo.type !== "api" || !authInfo.key)
|
|
1518
|
+
continue;
|
|
1519
|
+
const dbEntry = database.get(providerID);
|
|
1520
|
+
if (!dbEntry)
|
|
1521
|
+
continue;
|
|
1522
|
+
const configEntry = globalConfig.provider?.[providerID];
|
|
1523
|
+
const npm = dbEntry.npm ?? configEntry?.npm;
|
|
1524
|
+
const type = npm?.includes("anthropic") ? "anthropic" : dbEntry.type;
|
|
1525
|
+
providerMap.set(providerID, {
|
|
1526
|
+
id: providerID,
|
|
1527
|
+
name: dbEntry.name,
|
|
1528
|
+
type,
|
|
1529
|
+
baseUrl: dbEntry.baseUrl,
|
|
1542
1530
|
apiKey: authInfo.key,
|
|
1543
|
-
models:
|
|
1531
|
+
models: Array.from(dbEntry.models.values())
|
|
1544
1532
|
});
|
|
1545
1533
|
}
|
|
1534
|
+
for (const [providerID, entry] of Object.entries(globalConfig.provider ?? {})) {
|
|
1535
|
+
if (!entry.options?.apiKey)
|
|
1536
|
+
continue;
|
|
1537
|
+
const dbEntry = database.get(providerID);
|
|
1538
|
+
if (!dbEntry)
|
|
1539
|
+
continue;
|
|
1540
|
+
const npm = dbEntry.npm ?? entry.npm;
|
|
1541
|
+
const type = npm?.includes("anthropic") ? "anthropic" : dbEntry.type;
|
|
1542
|
+
providerMap.set(providerID, {
|
|
1543
|
+
id: providerID,
|
|
1544
|
+
name: dbEntry.name,
|
|
1545
|
+
type,
|
|
1546
|
+
baseUrl: dbEntry.baseUrl,
|
|
1547
|
+
apiKey: entry.options.apiKey,
|
|
1548
|
+
models: Array.from(dbEntry.models.values())
|
|
1549
|
+
});
|
|
1550
|
+
}
|
|
1551
|
+
return Array.from(providerMap.values());
|
|
1552
|
+
} catch (error) {
|
|
1553
|
+
console.warn("Warning: Could not load providers:", error.message);
|
|
1554
|
+
return [];
|
|
1546
1555
|
}
|
|
1547
|
-
return authenticatedProviders;
|
|
1548
1556
|
}, getCustomProviders = async () => [], verifyProvider = async (providerId) => {
|
|
1549
1557
|
try {
|
|
1550
1558
|
const allProviders = await getAllProviders();
|
|
@@ -1565,7 +1573,7 @@ var getXDGPaths = () => ({
|
|
|
1565
1573
|
}
|
|
1566
1574
|
return true;
|
|
1567
1575
|
}, getAllAvailableProviders = async (includeAllProviders = false) => {
|
|
1568
|
-
const [
|
|
1576
|
+
const [opencodeProviders, customProvidersFromConfig, customVerifiedProviders] = await Promise.all([
|
|
1569
1577
|
getAuthenticatedProviders(),
|
|
1570
1578
|
(async () => {
|
|
1571
1579
|
try {
|
|
@@ -1582,18 +1590,16 @@ var getXDGPaths = () => ({
|
|
|
1582
1590
|
console.warn("Warning: Could not load custom verified providers:", error.message);
|
|
1583
1591
|
return [];
|
|
1584
1592
|
}
|
|
1585
|
-
})()
|
|
1586
|
-
getOpencodeGlobalConfigProviders()
|
|
1593
|
+
})()
|
|
1587
1594
|
]);
|
|
1588
1595
|
const providerMap = new Map;
|
|
1589
1596
|
customVerifiedProviders.forEach((p) => providerMap.set(p.id, p));
|
|
1590
|
-
|
|
1597
|
+
opencodeProviders.forEach((p) => providerMap.set(p.id, p));
|
|
1591
1598
|
customProvidersFromConfig.forEach((p) => providerMap.set(p.id, p));
|
|
1592
|
-
authenticatedProviders.forEach((p) => providerMap.set(p.id, p));
|
|
1593
1599
|
if (includeAllProviders) {
|
|
1594
1600
|
try {
|
|
1595
1601
|
const allModelsDevProviders = await getAllProviders();
|
|
1596
|
-
const authenticatedIds = new Set(
|
|
1602
|
+
const authenticatedIds = new Set(opencodeProviders.map((p) => p.id));
|
|
1597
1603
|
const customIds = new Set(customProvidersFromConfig.map((p) => p.id));
|
|
1598
1604
|
const customVerifiedIds = new Set(customVerifiedProviders.map((p) => p.id));
|
|
1599
1605
|
allModelsDevProviders.forEach((provider) => {
|
|
@@ -2049,838 +2055,8 @@ var init_headless = __esm(() => {
|
|
|
2049
2055
|
init_benchmark();
|
|
2050
2056
|
});
|
|
2051
2057
|
|
|
2052
|
-
// node_modules/react/cjs/react.development.js
|
|
2053
|
-
var require_react_development = __commonJS((exports, module) => {
|
|
2054
|
-
(function() {
|
|
2055
|
-
function defineDeprecationWarning(methodName, info) {
|
|
2056
|
-
Object.defineProperty(Component.prototype, methodName, {
|
|
2057
|
-
get: function() {
|
|
2058
|
-
console.warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]);
|
|
2059
|
-
}
|
|
2060
|
-
});
|
|
2061
|
-
}
|
|
2062
|
-
function getIteratorFn(maybeIterable) {
|
|
2063
|
-
if (maybeIterable === null || typeof maybeIterable !== "object")
|
|
2064
|
-
return null;
|
|
2065
|
-
maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
|
|
2066
|
-
return typeof maybeIterable === "function" ? maybeIterable : null;
|
|
2067
|
-
}
|
|
2068
|
-
function warnNoop(publicInstance, callerName) {
|
|
2069
|
-
publicInstance = (publicInstance = publicInstance.constructor) && (publicInstance.displayName || publicInstance.name) || "ReactClass";
|
|
2070
|
-
var warningKey = publicInstance + "." + callerName;
|
|
2071
|
-
didWarnStateUpdateForUnmountedComponent[warningKey] || (console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, publicInstance), didWarnStateUpdateForUnmountedComponent[warningKey] = true);
|
|
2072
|
-
}
|
|
2073
|
-
function Component(props, context, updater) {
|
|
2074
|
-
this.props = props;
|
|
2075
|
-
this.context = context;
|
|
2076
|
-
this.refs = emptyObject;
|
|
2077
|
-
this.updater = updater || ReactNoopUpdateQueue;
|
|
2078
|
-
}
|
|
2079
|
-
function ComponentDummy() {}
|
|
2080
|
-
function PureComponent(props, context, updater) {
|
|
2081
|
-
this.props = props;
|
|
2082
|
-
this.context = context;
|
|
2083
|
-
this.refs = emptyObject;
|
|
2084
|
-
this.updater = updater || ReactNoopUpdateQueue;
|
|
2085
|
-
}
|
|
2086
|
-
function noop() {}
|
|
2087
|
-
function testStringCoercion(value) {
|
|
2088
|
-
return "" + value;
|
|
2089
|
-
}
|
|
2090
|
-
function checkKeyStringCoercion(value) {
|
|
2091
|
-
try {
|
|
2092
|
-
testStringCoercion(value);
|
|
2093
|
-
var JSCompiler_inline_result = false;
|
|
2094
|
-
} catch (e) {
|
|
2095
|
-
JSCompiler_inline_result = true;
|
|
2096
|
-
}
|
|
2097
|
-
if (JSCompiler_inline_result) {
|
|
2098
|
-
JSCompiler_inline_result = console;
|
|
2099
|
-
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
|
2100
|
-
var JSCompiler_inline_result$jscomp$0 = typeof Symbol === "function" && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
|
2101
|
-
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
|
|
2102
|
-
return testStringCoercion(value);
|
|
2103
|
-
}
|
|
2104
|
-
}
|
|
2105
|
-
function getComponentNameFromType(type) {
|
|
2106
|
-
if (type == null)
|
|
2107
|
-
return null;
|
|
2108
|
-
if (typeof type === "function")
|
|
2109
|
-
return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
|
2110
|
-
if (typeof type === "string")
|
|
2111
|
-
return type;
|
|
2112
|
-
switch (type) {
|
|
2113
|
-
case REACT_FRAGMENT_TYPE:
|
|
2114
|
-
return "Fragment";
|
|
2115
|
-
case REACT_PROFILER_TYPE:
|
|
2116
|
-
return "Profiler";
|
|
2117
|
-
case REACT_STRICT_MODE_TYPE:
|
|
2118
|
-
return "StrictMode";
|
|
2119
|
-
case REACT_SUSPENSE_TYPE:
|
|
2120
|
-
return "Suspense";
|
|
2121
|
-
case REACT_SUSPENSE_LIST_TYPE:
|
|
2122
|
-
return "SuspenseList";
|
|
2123
|
-
case REACT_ACTIVITY_TYPE:
|
|
2124
|
-
return "Activity";
|
|
2125
|
-
}
|
|
2126
|
-
if (typeof type === "object")
|
|
2127
|
-
switch (typeof type.tag === "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) {
|
|
2128
|
-
case REACT_PORTAL_TYPE:
|
|
2129
|
-
return "Portal";
|
|
2130
|
-
case REACT_CONTEXT_TYPE:
|
|
2131
|
-
return type.displayName || "Context";
|
|
2132
|
-
case REACT_CONSUMER_TYPE:
|
|
2133
|
-
return (type._context.displayName || "Context") + ".Consumer";
|
|
2134
|
-
case REACT_FORWARD_REF_TYPE:
|
|
2135
|
-
var innerType = type.render;
|
|
2136
|
-
type = type.displayName;
|
|
2137
|
-
type || (type = innerType.displayName || innerType.name || "", type = type !== "" ? "ForwardRef(" + type + ")" : "ForwardRef");
|
|
2138
|
-
return type;
|
|
2139
|
-
case REACT_MEMO_TYPE:
|
|
2140
|
-
return innerType = type.displayName || null, innerType !== null ? innerType : getComponentNameFromType(type.type) || "Memo";
|
|
2141
|
-
case REACT_LAZY_TYPE:
|
|
2142
|
-
innerType = type._payload;
|
|
2143
|
-
type = type._init;
|
|
2144
|
-
try {
|
|
2145
|
-
return getComponentNameFromType(type(innerType));
|
|
2146
|
-
} catch (x) {}
|
|
2147
|
-
}
|
|
2148
|
-
return null;
|
|
2149
|
-
}
|
|
2150
|
-
function getTaskName(type) {
|
|
2151
|
-
if (type === REACT_FRAGMENT_TYPE)
|
|
2152
|
-
return "<>";
|
|
2153
|
-
if (typeof type === "object" && type !== null && type.$$typeof === REACT_LAZY_TYPE)
|
|
2154
|
-
return "<...>";
|
|
2155
|
-
try {
|
|
2156
|
-
var name = getComponentNameFromType(type);
|
|
2157
|
-
return name ? "<" + name + ">" : "<...>";
|
|
2158
|
-
} catch (x) {
|
|
2159
|
-
return "<...>";
|
|
2160
|
-
}
|
|
2161
|
-
}
|
|
2162
|
-
function getOwner() {
|
|
2163
|
-
var dispatcher = ReactSharedInternals.A;
|
|
2164
|
-
return dispatcher === null ? null : dispatcher.getOwner();
|
|
2165
|
-
}
|
|
2166
|
-
function UnknownOwner() {
|
|
2167
|
-
return Error("react-stack-top-frame");
|
|
2168
|
-
}
|
|
2169
|
-
function hasValidKey(config) {
|
|
2170
|
-
if (hasOwnProperty.call(config, "key")) {
|
|
2171
|
-
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
|
2172
|
-
if (getter && getter.isReactWarning)
|
|
2173
|
-
return false;
|
|
2174
|
-
}
|
|
2175
|
-
return config.key !== undefined;
|
|
2176
|
-
}
|
|
2177
|
-
function defineKeyPropWarningGetter(props, displayName) {
|
|
2178
|
-
function warnAboutAccessingKey() {
|
|
2179
|
-
specialPropKeyWarningShown || (specialPropKeyWarningShown = true, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
|
|
2180
|
-
}
|
|
2181
|
-
warnAboutAccessingKey.isReactWarning = true;
|
|
2182
|
-
Object.defineProperty(props, "key", {
|
|
2183
|
-
get: warnAboutAccessingKey,
|
|
2184
|
-
configurable: true
|
|
2185
|
-
});
|
|
2186
|
-
}
|
|
2187
|
-
function elementRefGetterWithDeprecationWarning() {
|
|
2188
|
-
var componentName = getComponentNameFromType(this.type);
|
|
2189
|
-
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = true, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
|
|
2190
|
-
componentName = this.props.ref;
|
|
2191
|
-
return componentName !== undefined ? componentName : null;
|
|
2192
|
-
}
|
|
2193
|
-
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
|
2194
|
-
var refProp = props.ref;
|
|
2195
|
-
type = {
|
|
2196
|
-
$$typeof: REACT_ELEMENT_TYPE,
|
|
2197
|
-
type,
|
|
2198
|
-
key,
|
|
2199
|
-
props,
|
|
2200
|
-
_owner: owner
|
|
2201
|
-
};
|
|
2202
|
-
(refProp !== undefined ? refProp : null) !== null ? Object.defineProperty(type, "ref", {
|
|
2203
|
-
enumerable: false,
|
|
2204
|
-
get: elementRefGetterWithDeprecationWarning
|
|
2205
|
-
}) : Object.defineProperty(type, "ref", { enumerable: false, value: null });
|
|
2206
|
-
type._store = {};
|
|
2207
|
-
Object.defineProperty(type._store, "validated", {
|
|
2208
|
-
configurable: false,
|
|
2209
|
-
enumerable: false,
|
|
2210
|
-
writable: true,
|
|
2211
|
-
value: 0
|
|
2212
|
-
});
|
|
2213
|
-
Object.defineProperty(type, "_debugInfo", {
|
|
2214
|
-
configurable: false,
|
|
2215
|
-
enumerable: false,
|
|
2216
|
-
writable: true,
|
|
2217
|
-
value: null
|
|
2218
|
-
});
|
|
2219
|
-
Object.defineProperty(type, "_debugStack", {
|
|
2220
|
-
configurable: false,
|
|
2221
|
-
enumerable: false,
|
|
2222
|
-
writable: true,
|
|
2223
|
-
value: debugStack
|
|
2224
|
-
});
|
|
2225
|
-
Object.defineProperty(type, "_debugTask", {
|
|
2226
|
-
configurable: false,
|
|
2227
|
-
enumerable: false,
|
|
2228
|
-
writable: true,
|
|
2229
|
-
value: debugTask
|
|
2230
|
-
});
|
|
2231
|
-
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
|
2232
|
-
return type;
|
|
2233
|
-
}
|
|
2234
|
-
function cloneAndReplaceKey(oldElement, newKey) {
|
|
2235
|
-
newKey = ReactElement(oldElement.type, newKey, oldElement.props, oldElement._owner, oldElement._debugStack, oldElement._debugTask);
|
|
2236
|
-
oldElement._store && (newKey._store.validated = oldElement._store.validated);
|
|
2237
|
-
return newKey;
|
|
2238
|
-
}
|
|
2239
|
-
function validateChildKeys(node) {
|
|
2240
|
-
isValidElement(node) ? node._store && (node._store.validated = 1) : typeof node === "object" && node !== null && node.$$typeof === REACT_LAZY_TYPE && (node._payload.status === "fulfilled" ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
|
2241
|
-
}
|
|
2242
|
-
function isValidElement(object) {
|
|
2243
|
-
return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
2244
|
-
}
|
|
2245
|
-
function escape(key) {
|
|
2246
|
-
var escaperLookup = { "=": "=0", ":": "=2" };
|
|
2247
|
-
return "$" + key.replace(/[=:]/g, function(match) {
|
|
2248
|
-
return escaperLookup[match];
|
|
2249
|
-
});
|
|
2250
|
-
}
|
|
2251
|
-
function getElementKey(element, index) {
|
|
2252
|
-
return typeof element === "object" && element !== null && element.key != null ? (checkKeyStringCoercion(element.key), escape("" + element.key)) : index.toString(36);
|
|
2253
|
-
}
|
|
2254
|
-
function resolveThenable(thenable) {
|
|
2255
|
-
switch (thenable.status) {
|
|
2256
|
-
case "fulfilled":
|
|
2257
|
-
return thenable.value;
|
|
2258
|
-
case "rejected":
|
|
2259
|
-
throw thenable.reason;
|
|
2260
|
-
default:
|
|
2261
|
-
switch (typeof thenable.status === "string" ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(function(fulfilledValue) {
|
|
2262
|
-
thenable.status === "pending" && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
|
|
2263
|
-
}, function(error) {
|
|
2264
|
-
thenable.status === "pending" && (thenable.status = "rejected", thenable.reason = error);
|
|
2265
|
-
})), thenable.status) {
|
|
2266
|
-
case "fulfilled":
|
|
2267
|
-
return thenable.value;
|
|
2268
|
-
case "rejected":
|
|
2269
|
-
throw thenable.reason;
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
|
-
throw thenable;
|
|
2273
|
-
}
|
|
2274
|
-
function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
|
|
2275
|
-
var type = typeof children;
|
|
2276
|
-
if (type === "undefined" || type === "boolean")
|
|
2277
|
-
children = null;
|
|
2278
|
-
var invokeCallback = false;
|
|
2279
|
-
if (children === null)
|
|
2280
|
-
invokeCallback = true;
|
|
2281
|
-
else
|
|
2282
|
-
switch (type) {
|
|
2283
|
-
case "bigint":
|
|
2284
|
-
case "string":
|
|
2285
|
-
case "number":
|
|
2286
|
-
invokeCallback = true;
|
|
2287
|
-
break;
|
|
2288
|
-
case "object":
|
|
2289
|
-
switch (children.$$typeof) {
|
|
2290
|
-
case REACT_ELEMENT_TYPE:
|
|
2291
|
-
case REACT_PORTAL_TYPE:
|
|
2292
|
-
invokeCallback = true;
|
|
2293
|
-
break;
|
|
2294
|
-
case REACT_LAZY_TYPE:
|
|
2295
|
-
return invokeCallback = children._init, mapIntoArray(invokeCallback(children._payload), array, escapedPrefix, nameSoFar, callback);
|
|
2296
|
-
}
|
|
2297
|
-
}
|
|
2298
|
-
if (invokeCallback) {
|
|
2299
|
-
invokeCallback = children;
|
|
2300
|
-
callback = callback(invokeCallback);
|
|
2301
|
-
var childKey = nameSoFar === "" ? "." + getElementKey(invokeCallback, 0) : nameSoFar;
|
|
2302
|
-
isArrayImpl(callback) ? (escapedPrefix = "", childKey != null && (escapedPrefix = childKey.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) {
|
|
2303
|
-
return c;
|
|
2304
|
-
})) : callback != null && (isValidElement(callback) && (callback.key != null && (invokeCallback && invokeCallback.key === callback.key || checkKeyStringCoercion(callback.key)), escapedPrefix = cloneAndReplaceKey(callback, escapedPrefix + (callback.key == null || invokeCallback && invokeCallback.key === callback.key ? "" : ("" + callback.key).replace(userProvidedKeyEscapeRegex, "$&/") + "/") + childKey), nameSoFar !== "" && invokeCallback != null && isValidElement(invokeCallback) && invokeCallback.key == null && invokeCallback._store && !invokeCallback._store.validated && (escapedPrefix._store.validated = 2), callback = escapedPrefix), array.push(callback));
|
|
2305
|
-
return 1;
|
|
2306
|
-
}
|
|
2307
|
-
invokeCallback = 0;
|
|
2308
|
-
childKey = nameSoFar === "" ? "." : nameSoFar + ":";
|
|
2309
|
-
if (isArrayImpl(children))
|
|
2310
|
-
for (var i = 0;i < children.length; i++)
|
|
2311
|
-
nameSoFar = children[i], type = childKey + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback);
|
|
2312
|
-
else if (i = getIteratorFn(children), typeof i === "function")
|
|
2313
|
-
for (i === children.entries && (didWarnAboutMaps || console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."), didWarnAboutMaps = true), children = i.call(children), i = 0;!(nameSoFar = children.next()).done; )
|
|
2314
|
-
nameSoFar = nameSoFar.value, type = childKey + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback);
|
|
2315
|
-
else if (type === "object") {
|
|
2316
|
-
if (typeof children.then === "function")
|
|
2317
|
-
return mapIntoArray(resolveThenable(children), array, escapedPrefix, nameSoFar, callback);
|
|
2318
|
-
array = String(children);
|
|
2319
|
-
throw Error("Objects are not valid as a React child (found: " + (array === "[object Object]" ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead.");
|
|
2320
|
-
}
|
|
2321
|
-
return invokeCallback;
|
|
2322
|
-
}
|
|
2323
|
-
function mapChildren(children, func, context) {
|
|
2324
|
-
if (children == null)
|
|
2325
|
-
return children;
|
|
2326
|
-
var result = [], count = 0;
|
|
2327
|
-
mapIntoArray(children, result, "", "", function(child) {
|
|
2328
|
-
return func.call(context, child, count++);
|
|
2329
|
-
});
|
|
2330
|
-
return result;
|
|
2331
|
-
}
|
|
2332
|
-
function lazyInitializer(payload) {
|
|
2333
|
-
if (payload._status === -1) {
|
|
2334
|
-
var ioInfo = payload._ioInfo;
|
|
2335
|
-
ioInfo != null && (ioInfo.start = ioInfo.end = performance.now());
|
|
2336
|
-
ioInfo = payload._result;
|
|
2337
|
-
var thenable = ioInfo();
|
|
2338
|
-
thenable.then(function(moduleObject) {
|
|
2339
|
-
if (payload._status === 0 || payload._status === -1) {
|
|
2340
|
-
payload._status = 1;
|
|
2341
|
-
payload._result = moduleObject;
|
|
2342
|
-
var _ioInfo = payload._ioInfo;
|
|
2343
|
-
_ioInfo != null && (_ioInfo.end = performance.now());
|
|
2344
|
-
thenable.status === undefined && (thenable.status = "fulfilled", thenable.value = moduleObject);
|
|
2345
|
-
}
|
|
2346
|
-
}, function(error) {
|
|
2347
|
-
if (payload._status === 0 || payload._status === -1) {
|
|
2348
|
-
payload._status = 2;
|
|
2349
|
-
payload._result = error;
|
|
2350
|
-
var _ioInfo2 = payload._ioInfo;
|
|
2351
|
-
_ioInfo2 != null && (_ioInfo2.end = performance.now());
|
|
2352
|
-
thenable.status === undefined && (thenable.status = "rejected", thenable.reason = error);
|
|
2353
|
-
}
|
|
2354
|
-
});
|
|
2355
|
-
ioInfo = payload._ioInfo;
|
|
2356
|
-
if (ioInfo != null) {
|
|
2357
|
-
ioInfo.value = thenable;
|
|
2358
|
-
var displayName = thenable.displayName;
|
|
2359
|
-
typeof displayName === "string" && (ioInfo.name = displayName);
|
|
2360
|
-
}
|
|
2361
|
-
payload._status === -1 && (payload._status = 0, payload._result = thenable);
|
|
2362
|
-
}
|
|
2363
|
-
if (payload._status === 1)
|
|
2364
|
-
return ioInfo = payload._result, ioInfo === undefined && console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
|
|
2365
|
-
|
|
2366
|
-
Your code should look like:
|
|
2367
|
-
const MyComponent = lazy(() => import('./MyComponent'))
|
|
2368
|
-
|
|
2369
|
-
Did you accidentally put curly braces around the import?`, ioInfo), "default" in ioInfo || console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
|
|
2370
|
-
|
|
2371
|
-
Your code should look like:
|
|
2372
|
-
const MyComponent = lazy(() => import('./MyComponent'))`, ioInfo), ioInfo.default;
|
|
2373
|
-
throw payload._result;
|
|
2374
|
-
}
|
|
2375
|
-
function resolveDispatcher() {
|
|
2376
|
-
var dispatcher = ReactSharedInternals.H;
|
|
2377
|
-
dispatcher === null && console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
|
|
2378
|
-
1. You might have mismatching versions of React and the renderer (such as React DOM)
|
|
2379
|
-
2. You might be breaking the Rules of Hooks
|
|
2380
|
-
3. You might have more than one copy of React in the same app
|
|
2381
|
-
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`);
|
|
2382
|
-
return dispatcher;
|
|
2383
|
-
}
|
|
2384
|
-
function releaseAsyncTransition() {
|
|
2385
|
-
ReactSharedInternals.asyncTransitions--;
|
|
2386
|
-
}
|
|
2387
|
-
function enqueueTask(task) {
|
|
2388
|
-
if (enqueueTaskImpl === null)
|
|
2389
|
-
try {
|
|
2390
|
-
var requireString = ("require" + Math.random()).slice(0, 7);
|
|
2391
|
-
enqueueTaskImpl = (module && module[requireString]).call(module, "timers").setImmediate;
|
|
2392
|
-
} catch (_err) {
|
|
2393
|
-
enqueueTaskImpl = function(callback) {
|
|
2394
|
-
didWarnAboutMessageChannel === false && (didWarnAboutMessageChannel = true, typeof MessageChannel === "undefined" && console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));
|
|
2395
|
-
var channel = new MessageChannel;
|
|
2396
|
-
channel.port1.onmessage = callback;
|
|
2397
|
-
channel.port2.postMessage(undefined);
|
|
2398
|
-
};
|
|
2399
|
-
}
|
|
2400
|
-
return enqueueTaskImpl(task);
|
|
2401
|
-
}
|
|
2402
|
-
function aggregateErrors(errors) {
|
|
2403
|
-
return 1 < errors.length && typeof AggregateError === "function" ? new AggregateError(errors) : errors[0];
|
|
2404
|
-
}
|
|
2405
|
-
function popActScope(prevActQueue, prevActScopeDepth) {
|
|
2406
|
-
prevActScopeDepth !== actScopeDepth - 1 && console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. ");
|
|
2407
|
-
actScopeDepth = prevActScopeDepth;
|
|
2408
|
-
}
|
|
2409
|
-
function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
|
|
2410
|
-
var queue = ReactSharedInternals.actQueue;
|
|
2411
|
-
if (queue !== null)
|
|
2412
|
-
if (queue.length !== 0)
|
|
2413
|
-
try {
|
|
2414
|
-
flushActQueue(queue);
|
|
2415
|
-
enqueueTask(function() {
|
|
2416
|
-
return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
|
2417
|
-
});
|
|
2418
|
-
return;
|
|
2419
|
-
} catch (error) {
|
|
2420
|
-
ReactSharedInternals.thrownErrors.push(error);
|
|
2421
|
-
}
|
|
2422
|
-
else
|
|
2423
|
-
ReactSharedInternals.actQueue = null;
|
|
2424
|
-
0 < ReactSharedInternals.thrownErrors.length ? (queue = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(queue)) : resolve(returnValue);
|
|
2425
|
-
}
|
|
2426
|
-
function flushActQueue(queue) {
|
|
2427
|
-
if (!isFlushing) {
|
|
2428
|
-
isFlushing = true;
|
|
2429
|
-
var i = 0;
|
|
2430
|
-
try {
|
|
2431
|
-
for (;i < queue.length; i++) {
|
|
2432
|
-
var callback = queue[i];
|
|
2433
|
-
do {
|
|
2434
|
-
ReactSharedInternals.didUsePromise = false;
|
|
2435
|
-
var continuation = callback(false);
|
|
2436
|
-
if (continuation !== null) {
|
|
2437
|
-
if (ReactSharedInternals.didUsePromise) {
|
|
2438
|
-
queue[i] = callback;
|
|
2439
|
-
queue.splice(0, i);
|
|
2440
|
-
return;
|
|
2441
|
-
}
|
|
2442
|
-
callback = continuation;
|
|
2443
|
-
} else
|
|
2444
|
-
break;
|
|
2445
|
-
} while (1);
|
|
2446
|
-
}
|
|
2447
|
-
queue.length = 0;
|
|
2448
|
-
} catch (error) {
|
|
2449
|
-
queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);
|
|
2450
|
-
} finally {
|
|
2451
|
-
isFlushing = false;
|
|
2452
|
-
}
|
|
2453
|
-
}
|
|
2454
|
-
}
|
|
2455
|
-
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
|
2456
|
-
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, didWarnStateUpdateForUnmountedComponent = {}, ReactNoopUpdateQueue = {
|
|
2457
|
-
isMounted: function() {
|
|
2458
|
-
return false;
|
|
2459
|
-
},
|
|
2460
|
-
enqueueForceUpdate: function(publicInstance) {
|
|
2461
|
-
warnNoop(publicInstance, "forceUpdate");
|
|
2462
|
-
},
|
|
2463
|
-
enqueueReplaceState: function(publicInstance) {
|
|
2464
|
-
warnNoop(publicInstance, "replaceState");
|
|
2465
|
-
},
|
|
2466
|
-
enqueueSetState: function(publicInstance) {
|
|
2467
|
-
warnNoop(publicInstance, "setState");
|
|
2468
|
-
}
|
|
2469
|
-
}, assign = Object.assign, emptyObject = {};
|
|
2470
|
-
Object.freeze(emptyObject);
|
|
2471
|
-
Component.prototype.isReactComponent = {};
|
|
2472
|
-
Component.prototype.setState = function(partialState, callback) {
|
|
2473
|
-
if (typeof partialState !== "object" && typeof partialState !== "function" && partialState != null)
|
|
2474
|
-
throw Error("takes an object of state variables to update or a function which returns an object of state variables.");
|
|
2475
|
-
this.updater.enqueueSetState(this, partialState, callback, "setState");
|
|
2476
|
-
};
|
|
2477
|
-
Component.prototype.forceUpdate = function(callback) {
|
|
2478
|
-
this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
|
|
2479
|
-
};
|
|
2480
|
-
var deprecatedAPIs = {
|
|
2481
|
-
isMounted: [
|
|
2482
|
-
"isMounted",
|
|
2483
|
-
"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."
|
|
2484
|
-
],
|
|
2485
|
-
replaceState: [
|
|
2486
|
-
"replaceState",
|
|
2487
|
-
"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."
|
|
2488
|
-
]
|
|
2489
|
-
};
|
|
2490
|
-
for (fnName in deprecatedAPIs)
|
|
2491
|
-
deprecatedAPIs.hasOwnProperty(fnName) && defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
|
|
2492
|
-
ComponentDummy.prototype = Component.prototype;
|
|
2493
|
-
deprecatedAPIs = PureComponent.prototype = new ComponentDummy;
|
|
2494
|
-
deprecatedAPIs.constructor = PureComponent;
|
|
2495
|
-
assign(deprecatedAPIs, Component.prototype);
|
|
2496
|
-
deprecatedAPIs.isPureReactComponent = true;
|
|
2497
|
-
var isArrayImpl = Array.isArray, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = {
|
|
2498
|
-
H: null,
|
|
2499
|
-
A: null,
|
|
2500
|
-
T: null,
|
|
2501
|
-
S: null,
|
|
2502
|
-
actQueue: null,
|
|
2503
|
-
asyncTransitions: 0,
|
|
2504
|
-
isBatchingLegacy: false,
|
|
2505
|
-
didScheduleLegacyUpdate: false,
|
|
2506
|
-
didUsePromise: false,
|
|
2507
|
-
thrownErrors: [],
|
|
2508
|
-
getCurrentStack: null,
|
|
2509
|
-
recentlyCreatedOwnerStacks: 0
|
|
2510
|
-
}, hasOwnProperty = Object.prototype.hasOwnProperty, createTask = console.createTask ? console.createTask : function() {
|
|
2511
|
-
return null;
|
|
2512
|
-
};
|
|
2513
|
-
deprecatedAPIs = {
|
|
2514
|
-
react_stack_bottom_frame: function(callStackForError) {
|
|
2515
|
-
return callStackForError();
|
|
2516
|
-
}
|
|
2517
|
-
};
|
|
2518
|
-
var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;
|
|
2519
|
-
var didWarnAboutElementRef = {};
|
|
2520
|
-
var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(deprecatedAPIs, UnknownOwner)();
|
|
2521
|
-
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
|
2522
|
-
var didWarnAboutMaps = false, userProvidedKeyEscapeRegex = /\/+/g, reportGlobalError = typeof reportError === "function" ? reportError : function(error) {
|
|
2523
|
-
if (typeof window === "object" && typeof window.ErrorEvent === "function") {
|
|
2524
|
-
var event = new window.ErrorEvent("error", {
|
|
2525
|
-
bubbles: true,
|
|
2526
|
-
cancelable: true,
|
|
2527
|
-
message: typeof error === "object" && error !== null && typeof error.message === "string" ? String(error.message) : String(error),
|
|
2528
|
-
error
|
|
2529
|
-
});
|
|
2530
|
-
if (!window.dispatchEvent(event))
|
|
2531
|
-
return;
|
|
2532
|
-
} else if (typeof process === "object" && typeof process.emit === "function") {
|
|
2533
|
-
process.emit("uncaughtException", error);
|
|
2534
|
-
return;
|
|
2535
|
-
}
|
|
2536
|
-
console.error(error);
|
|
2537
|
-
}, didWarnAboutMessageChannel = false, enqueueTaskImpl = null, actScopeDepth = 0, didWarnNoAwaitAct = false, isFlushing = false, queueSeveralMicrotasks = typeof queueMicrotask === "function" ? function(callback) {
|
|
2538
|
-
queueMicrotask(function() {
|
|
2539
|
-
return queueMicrotask(callback);
|
|
2540
|
-
});
|
|
2541
|
-
} : enqueueTask;
|
|
2542
|
-
deprecatedAPIs = Object.freeze({
|
|
2543
|
-
__proto__: null,
|
|
2544
|
-
c: function(size) {
|
|
2545
|
-
return resolveDispatcher().useMemoCache(size);
|
|
2546
|
-
}
|
|
2547
|
-
});
|
|
2548
|
-
var fnName = {
|
|
2549
|
-
map: mapChildren,
|
|
2550
|
-
forEach: function(children, forEachFunc, forEachContext) {
|
|
2551
|
-
mapChildren(children, function() {
|
|
2552
|
-
forEachFunc.apply(this, arguments);
|
|
2553
|
-
}, forEachContext);
|
|
2554
|
-
},
|
|
2555
|
-
count: function(children) {
|
|
2556
|
-
var n = 0;
|
|
2557
|
-
mapChildren(children, function() {
|
|
2558
|
-
n++;
|
|
2559
|
-
});
|
|
2560
|
-
return n;
|
|
2561
|
-
},
|
|
2562
|
-
toArray: function(children) {
|
|
2563
|
-
return mapChildren(children, function(child) {
|
|
2564
|
-
return child;
|
|
2565
|
-
}) || [];
|
|
2566
|
-
},
|
|
2567
|
-
only: function(children) {
|
|
2568
|
-
if (!isValidElement(children))
|
|
2569
|
-
throw Error("React.Children.only expected to receive a single React element child.");
|
|
2570
|
-
return children;
|
|
2571
|
-
}
|
|
2572
|
-
};
|
|
2573
|
-
exports.Activity = REACT_ACTIVITY_TYPE;
|
|
2574
|
-
exports.Children = fnName;
|
|
2575
|
-
exports.Component = Component;
|
|
2576
|
-
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
2577
|
-
exports.Profiler = REACT_PROFILER_TYPE;
|
|
2578
|
-
exports.PureComponent = PureComponent;
|
|
2579
|
-
exports.StrictMode = REACT_STRICT_MODE_TYPE;
|
|
2580
|
-
exports.Suspense = REACT_SUSPENSE_TYPE;
|
|
2581
|
-
exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
|
|
2582
|
-
exports.__COMPILER_RUNTIME = deprecatedAPIs;
|
|
2583
|
-
exports.act = function(callback) {
|
|
2584
|
-
var prevActQueue = ReactSharedInternals.actQueue, prevActScopeDepth = actScopeDepth;
|
|
2585
|
-
actScopeDepth++;
|
|
2586
|
-
var queue = ReactSharedInternals.actQueue = prevActQueue !== null ? prevActQueue : [], didAwaitActCall = false;
|
|
2587
|
-
try {
|
|
2588
|
-
var result = callback();
|
|
2589
|
-
} catch (error) {
|
|
2590
|
-
ReactSharedInternals.thrownErrors.push(error);
|
|
2591
|
-
}
|
|
2592
|
-
if (0 < ReactSharedInternals.thrownErrors.length)
|
|
2593
|
-
throw popActScope(prevActQueue, prevActScopeDepth), callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
|
|
2594
|
-
if (result !== null && typeof result === "object" && typeof result.then === "function") {
|
|
2595
|
-
var thenable = result;
|
|
2596
|
-
queueSeveralMicrotasks(function() {
|
|
2597
|
-
didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"));
|
|
2598
|
-
});
|
|
2599
|
-
return {
|
|
2600
|
-
then: function(resolve, reject) {
|
|
2601
|
-
didAwaitActCall = true;
|
|
2602
|
-
thenable.then(function(returnValue) {
|
|
2603
|
-
popActScope(prevActQueue, prevActScopeDepth);
|
|
2604
|
-
if (prevActScopeDepth === 0) {
|
|
2605
|
-
try {
|
|
2606
|
-
flushActQueue(queue), enqueueTask(function() {
|
|
2607
|
-
return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
|
2608
|
-
});
|
|
2609
|
-
} catch (error$0) {
|
|
2610
|
-
ReactSharedInternals.thrownErrors.push(error$0);
|
|
2611
|
-
}
|
|
2612
|
-
if (0 < ReactSharedInternals.thrownErrors.length) {
|
|
2613
|
-
var _thrownError = aggregateErrors(ReactSharedInternals.thrownErrors);
|
|
2614
|
-
ReactSharedInternals.thrownErrors.length = 0;
|
|
2615
|
-
reject(_thrownError);
|
|
2616
|
-
}
|
|
2617
|
-
} else
|
|
2618
|
-
resolve(returnValue);
|
|
2619
|
-
}, function(error) {
|
|
2620
|
-
popActScope(prevActQueue, prevActScopeDepth);
|
|
2621
|
-
0 < ReactSharedInternals.thrownErrors.length ? (error = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(error)) : reject(error);
|
|
2622
|
-
});
|
|
2623
|
-
}
|
|
2624
|
-
};
|
|
2625
|
-
}
|
|
2626
|
-
var returnValue$jscomp$0 = result;
|
|
2627
|
-
popActScope(prevActQueue, prevActScopeDepth);
|
|
2628
|
-
prevActScopeDepth === 0 && (flushActQueue(queue), queue.length !== 0 && queueSeveralMicrotasks(function() {
|
|
2629
|
-
didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"));
|
|
2630
|
-
}), ReactSharedInternals.actQueue = null);
|
|
2631
|
-
if (0 < ReactSharedInternals.thrownErrors.length)
|
|
2632
|
-
throw callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
|
|
2633
|
-
return {
|
|
2634
|
-
then: function(resolve, reject) {
|
|
2635
|
-
didAwaitActCall = true;
|
|
2636
|
-
prevActScopeDepth === 0 ? (ReactSharedInternals.actQueue = queue, enqueueTask(function() {
|
|
2637
|
-
return recursivelyFlushAsyncActWork(returnValue$jscomp$0, resolve, reject);
|
|
2638
|
-
})) : resolve(returnValue$jscomp$0);
|
|
2639
|
-
}
|
|
2640
|
-
};
|
|
2641
|
-
};
|
|
2642
|
-
exports.cache = function(fn) {
|
|
2643
|
-
return function() {
|
|
2644
|
-
return fn.apply(null, arguments);
|
|
2645
|
-
};
|
|
2646
|
-
};
|
|
2647
|
-
exports.cacheSignal = function() {
|
|
2648
|
-
return null;
|
|
2649
|
-
};
|
|
2650
|
-
exports.captureOwnerStack = function() {
|
|
2651
|
-
var getCurrentStack = ReactSharedInternals.getCurrentStack;
|
|
2652
|
-
return getCurrentStack === null ? null : getCurrentStack();
|
|
2653
|
-
};
|
|
2654
|
-
exports.cloneElement = function(element, config, children) {
|
|
2655
|
-
if (element === null || element === undefined)
|
|
2656
|
-
throw Error("The argument must be a React element, but you passed " + element + ".");
|
|
2657
|
-
var props = assign({}, element.props), key = element.key, owner = element._owner;
|
|
2658
|
-
if (config != null) {
|
|
2659
|
-
var JSCompiler_inline_result;
|
|
2660
|
-
a: {
|
|
2661
|
-
if (hasOwnProperty.call(config, "ref") && (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(config, "ref").get) && JSCompiler_inline_result.isReactWarning) {
|
|
2662
|
-
JSCompiler_inline_result = false;
|
|
2663
|
-
break a;
|
|
2664
|
-
}
|
|
2665
|
-
JSCompiler_inline_result = config.ref !== undefined;
|
|
2666
|
-
}
|
|
2667
|
-
JSCompiler_inline_result && (owner = getOwner());
|
|
2668
|
-
hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key);
|
|
2669
|
-
for (propName in config)
|
|
2670
|
-
!hasOwnProperty.call(config, propName) || propName === "key" || propName === "__self" || propName === "__source" || propName === "ref" && config.ref === undefined || (props[propName] = config[propName]);
|
|
2671
|
-
}
|
|
2672
|
-
var propName = arguments.length - 2;
|
|
2673
|
-
if (propName === 1)
|
|
2674
|
-
props.children = children;
|
|
2675
|
-
else if (1 < propName) {
|
|
2676
|
-
JSCompiler_inline_result = Array(propName);
|
|
2677
|
-
for (var i = 0;i < propName; i++)
|
|
2678
|
-
JSCompiler_inline_result[i] = arguments[i + 2];
|
|
2679
|
-
props.children = JSCompiler_inline_result;
|
|
2680
|
-
}
|
|
2681
|
-
props = ReactElement(element.type, key, props, owner, element._debugStack, element._debugTask);
|
|
2682
|
-
for (key = 2;key < arguments.length; key++)
|
|
2683
|
-
validateChildKeys(arguments[key]);
|
|
2684
|
-
return props;
|
|
2685
|
-
};
|
|
2686
|
-
exports.createContext = function(defaultValue) {
|
|
2687
|
-
defaultValue = {
|
|
2688
|
-
$$typeof: REACT_CONTEXT_TYPE,
|
|
2689
|
-
_currentValue: defaultValue,
|
|
2690
|
-
_currentValue2: defaultValue,
|
|
2691
|
-
_threadCount: 0,
|
|
2692
|
-
Provider: null,
|
|
2693
|
-
Consumer: null
|
|
2694
|
-
};
|
|
2695
|
-
defaultValue.Provider = defaultValue;
|
|
2696
|
-
defaultValue.Consumer = {
|
|
2697
|
-
$$typeof: REACT_CONSUMER_TYPE,
|
|
2698
|
-
_context: defaultValue
|
|
2699
|
-
};
|
|
2700
|
-
defaultValue._currentRenderer = null;
|
|
2701
|
-
defaultValue._currentRenderer2 = null;
|
|
2702
|
-
return defaultValue;
|
|
2703
|
-
};
|
|
2704
|
-
exports.createElement = function(type, config, children) {
|
|
2705
|
-
for (var i = 2;i < arguments.length; i++)
|
|
2706
|
-
validateChildKeys(arguments[i]);
|
|
2707
|
-
i = {};
|
|
2708
|
-
var key = null;
|
|
2709
|
-
if (config != null)
|
|
2710
|
-
for (propName in didWarnAboutOldJSXRuntime || !("__self" in config) || "key" in config || (didWarnAboutOldJSXRuntime = true, console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")), hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key), config)
|
|
2711
|
-
hasOwnProperty.call(config, propName) && propName !== "key" && propName !== "__self" && propName !== "__source" && (i[propName] = config[propName]);
|
|
2712
|
-
var childrenLength = arguments.length - 2;
|
|
2713
|
-
if (childrenLength === 1)
|
|
2714
|
-
i.children = children;
|
|
2715
|
-
else if (1 < childrenLength) {
|
|
2716
|
-
for (var childArray = Array(childrenLength), _i = 0;_i < childrenLength; _i++)
|
|
2717
|
-
childArray[_i] = arguments[_i + 2];
|
|
2718
|
-
Object.freeze && Object.freeze(childArray);
|
|
2719
|
-
i.children = childArray;
|
|
2720
|
-
}
|
|
2721
|
-
if (type && type.defaultProps)
|
|
2722
|
-
for (propName in childrenLength = type.defaultProps, childrenLength)
|
|
2723
|
-
i[propName] === undefined && (i[propName] = childrenLength[propName]);
|
|
2724
|
-
key && defineKeyPropWarningGetter(i, typeof type === "function" ? type.displayName || type.name || "Unknown" : type);
|
|
2725
|
-
var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
|
2726
|
-
return ReactElement(type, key, i, getOwner(), propName ? Error("react-stack-top-frame") : unknownOwnerDebugStack, propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
|
2727
|
-
};
|
|
2728
|
-
exports.createRef = function() {
|
|
2729
|
-
var refObject = { current: null };
|
|
2730
|
-
Object.seal(refObject);
|
|
2731
|
-
return refObject;
|
|
2732
|
-
};
|
|
2733
|
-
exports.forwardRef = function(render) {
|
|
2734
|
-
render != null && render.$$typeof === REACT_MEMO_TYPE ? console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).") : typeof render !== "function" ? console.error("forwardRef requires a render function but was given %s.", render === null ? "null" : typeof render) : render.length !== 0 && render.length !== 2 && console.error("forwardRef render functions accept exactly two parameters: props and ref. %s", render.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined.");
|
|
2735
|
-
render != null && render.defaultProps != null && console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");
|
|
2736
|
-
var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render }, ownName;
|
|
2737
|
-
Object.defineProperty(elementType, "displayName", {
|
|
2738
|
-
enumerable: false,
|
|
2739
|
-
configurable: true,
|
|
2740
|
-
get: function() {
|
|
2741
|
-
return ownName;
|
|
2742
|
-
},
|
|
2743
|
-
set: function(name) {
|
|
2744
|
-
ownName = name;
|
|
2745
|
-
render.name || render.displayName || (Object.defineProperty(render, "name", { value: name }), render.displayName = name);
|
|
2746
|
-
}
|
|
2747
|
-
});
|
|
2748
|
-
return elementType;
|
|
2749
|
-
};
|
|
2750
|
-
exports.isValidElement = isValidElement;
|
|
2751
|
-
exports.lazy = function(ctor) {
|
|
2752
|
-
ctor = { _status: -1, _result: ctor };
|
|
2753
|
-
var lazyType = {
|
|
2754
|
-
$$typeof: REACT_LAZY_TYPE,
|
|
2755
|
-
_payload: ctor,
|
|
2756
|
-
_init: lazyInitializer
|
|
2757
|
-
}, ioInfo = {
|
|
2758
|
-
name: "lazy",
|
|
2759
|
-
start: -1,
|
|
2760
|
-
end: -1,
|
|
2761
|
-
value: null,
|
|
2762
|
-
owner: null,
|
|
2763
|
-
debugStack: Error("react-stack-top-frame"),
|
|
2764
|
-
debugTask: console.createTask ? console.createTask("lazy()") : null
|
|
2765
|
-
};
|
|
2766
|
-
ctor._ioInfo = ioInfo;
|
|
2767
|
-
lazyType._debugInfo = [{ awaited: ioInfo }];
|
|
2768
|
-
return lazyType;
|
|
2769
|
-
};
|
|
2770
|
-
exports.memo = function(type, compare) {
|
|
2771
|
-
type == null && console.error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type);
|
|
2772
|
-
compare = {
|
|
2773
|
-
$$typeof: REACT_MEMO_TYPE,
|
|
2774
|
-
type,
|
|
2775
|
-
compare: compare === undefined ? null : compare
|
|
2776
|
-
};
|
|
2777
|
-
var ownName;
|
|
2778
|
-
Object.defineProperty(compare, "displayName", {
|
|
2779
|
-
enumerable: false,
|
|
2780
|
-
configurable: true,
|
|
2781
|
-
get: function() {
|
|
2782
|
-
return ownName;
|
|
2783
|
-
},
|
|
2784
|
-
set: function(name) {
|
|
2785
|
-
ownName = name;
|
|
2786
|
-
type.name || type.displayName || (Object.defineProperty(type, "name", { value: name }), type.displayName = name);
|
|
2787
|
-
}
|
|
2788
|
-
});
|
|
2789
|
-
return compare;
|
|
2790
|
-
};
|
|
2791
|
-
exports.startTransition = function(scope) {
|
|
2792
|
-
var prevTransition = ReactSharedInternals.T, currentTransition = {};
|
|
2793
|
-
currentTransition._updatedFibers = new Set;
|
|
2794
|
-
ReactSharedInternals.T = currentTransition;
|
|
2795
|
-
try {
|
|
2796
|
-
var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
|
|
2797
|
-
onStartTransitionFinish !== null && onStartTransitionFinish(currentTransition, returnValue);
|
|
2798
|
-
typeof returnValue === "object" && returnValue !== null && typeof returnValue.then === "function" && (ReactSharedInternals.asyncTransitions++, returnValue.then(releaseAsyncTransition, releaseAsyncTransition), returnValue.then(noop, reportGlobalError));
|
|
2799
|
-
} catch (error) {
|
|
2800
|
-
reportGlobalError(error);
|
|
2801
|
-
} finally {
|
|
2802
|
-
prevTransition === null && currentTransition._updatedFibers && (scope = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < scope && console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")), prevTransition !== null && currentTransition.types !== null && (prevTransition.types !== null && prevTransition.types !== currentTransition.types && console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
|
|
2803
|
-
}
|
|
2804
|
-
};
|
|
2805
|
-
exports.unstable_useCacheRefresh = function() {
|
|
2806
|
-
return resolveDispatcher().useCacheRefresh();
|
|
2807
|
-
};
|
|
2808
|
-
exports.use = function(usable) {
|
|
2809
|
-
return resolveDispatcher().use(usable);
|
|
2810
|
-
};
|
|
2811
|
-
exports.useActionState = function(action, initialState, permalink) {
|
|
2812
|
-
return resolveDispatcher().useActionState(action, initialState, permalink);
|
|
2813
|
-
};
|
|
2814
|
-
exports.useCallback = function(callback, deps) {
|
|
2815
|
-
return resolveDispatcher().useCallback(callback, deps);
|
|
2816
|
-
};
|
|
2817
|
-
exports.useContext = function(Context) {
|
|
2818
|
-
var dispatcher = resolveDispatcher();
|
|
2819
|
-
Context.$$typeof === REACT_CONSUMER_TYPE && console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?");
|
|
2820
|
-
return dispatcher.useContext(Context);
|
|
2821
|
-
};
|
|
2822
|
-
exports.useDebugValue = function(value, formatterFn) {
|
|
2823
|
-
return resolveDispatcher().useDebugValue(value, formatterFn);
|
|
2824
|
-
};
|
|
2825
|
-
exports.useDeferredValue = function(value, initialValue) {
|
|
2826
|
-
return resolveDispatcher().useDeferredValue(value, initialValue);
|
|
2827
|
-
};
|
|
2828
|
-
exports.useEffect = function(create, deps) {
|
|
2829
|
-
create == null && console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
|
2830
|
-
return resolveDispatcher().useEffect(create, deps);
|
|
2831
|
-
};
|
|
2832
|
-
exports.useEffectEvent = function(callback) {
|
|
2833
|
-
return resolveDispatcher().useEffectEvent(callback);
|
|
2834
|
-
};
|
|
2835
|
-
exports.useId = function() {
|
|
2836
|
-
return resolveDispatcher().useId();
|
|
2837
|
-
};
|
|
2838
|
-
exports.useImperativeHandle = function(ref, create, deps) {
|
|
2839
|
-
return resolveDispatcher().useImperativeHandle(ref, create, deps);
|
|
2840
|
-
};
|
|
2841
|
-
exports.useInsertionEffect = function(create, deps) {
|
|
2842
|
-
create == null && console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
|
2843
|
-
return resolveDispatcher().useInsertionEffect(create, deps);
|
|
2844
|
-
};
|
|
2845
|
-
exports.useLayoutEffect = function(create, deps) {
|
|
2846
|
-
create == null && console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?");
|
|
2847
|
-
return resolveDispatcher().useLayoutEffect(create, deps);
|
|
2848
|
-
};
|
|
2849
|
-
exports.useMemo = function(create, deps) {
|
|
2850
|
-
return resolveDispatcher().useMemo(create, deps);
|
|
2851
|
-
};
|
|
2852
|
-
exports.useOptimistic = function(passthrough, reducer) {
|
|
2853
|
-
return resolveDispatcher().useOptimistic(passthrough, reducer);
|
|
2854
|
-
};
|
|
2855
|
-
exports.useReducer = function(reducer, initialArg, init) {
|
|
2856
|
-
return resolveDispatcher().useReducer(reducer, initialArg, init);
|
|
2857
|
-
};
|
|
2858
|
-
exports.useRef = function(initialValue) {
|
|
2859
|
-
return resolveDispatcher().useRef(initialValue);
|
|
2860
|
-
};
|
|
2861
|
-
exports.useState = function(initialState) {
|
|
2862
|
-
return resolveDispatcher().useState(initialState);
|
|
2863
|
-
};
|
|
2864
|
-
exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
|
|
2865
|
-
return resolveDispatcher().useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
2866
|
-
};
|
|
2867
|
-
exports.useTransition = function() {
|
|
2868
|
-
return resolveDispatcher().useTransition();
|
|
2869
|
-
};
|
|
2870
|
-
exports.version = "19.2.4";
|
|
2871
|
-
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
|
2872
|
-
})();
|
|
2873
|
-
});
|
|
2874
|
-
|
|
2875
|
-
// node_modules/react/index.js
|
|
2876
|
-
var require_react = __commonJS((exports, module) => {
|
|
2877
|
-
var react_development = __toESM(require_react_development());
|
|
2878
|
-
if (false) {} else {
|
|
2879
|
-
module.exports = react_development;
|
|
2880
|
-
}
|
|
2881
|
-
});
|
|
2882
|
-
|
|
2883
2058
|
// src/tui/context/AppContext.tsx
|
|
2059
|
+
import { createContext, useContext, useReducer, useEffect } from "react";
|
|
2884
2060
|
import { jsxDEV } from "@opentui/react/jsx-dev-runtime";
|
|
2885
2061
|
function appReducer(state, action) {
|
|
2886
2062
|
switch (action.type) {
|
|
@@ -2920,8 +2096,8 @@ function appReducer(state, action) {
|
|
|
2920
2096
|
}
|
|
2921
2097
|
}
|
|
2922
2098
|
function AppProvider({ children }) {
|
|
2923
|
-
const [state, dispatch] =
|
|
2924
|
-
|
|
2099
|
+
const [state, dispatch] = useReducer(appReducer, initialState);
|
|
2100
|
+
useEffect(() => {
|
|
2925
2101
|
let cancelled = false;
|
|
2926
2102
|
async function loadConfig2() {
|
|
2927
2103
|
try {
|
|
@@ -2947,7 +2123,7 @@ function AppProvider({ children }) {
|
|
|
2947
2123
|
}, undefined, false, undefined, this);
|
|
2948
2124
|
}
|
|
2949
2125
|
function useAppContext() {
|
|
2950
|
-
const ctx =
|
|
2126
|
+
const ctx = useContext(AppContext);
|
|
2951
2127
|
if (!ctx)
|
|
2952
2128
|
throw new Error("useAppContext must be used within AppProvider");
|
|
2953
2129
|
return ctx;
|
|
@@ -2956,9 +2132,8 @@ function useNavigate() {
|
|
|
2956
2132
|
const { dispatch } = useAppContext();
|
|
2957
2133
|
return (screen) => dispatch({ type: "NAVIGATE", screen });
|
|
2958
2134
|
}
|
|
2959
|
-
var
|
|
2135
|
+
var initialState, AppContext;
|
|
2960
2136
|
var init_AppContext = __esm(() => {
|
|
2961
|
-
import_react = __toESM(require_react(), 1);
|
|
2962
2137
|
initialState = {
|
|
2963
2138
|
screen: "main-menu",
|
|
2964
2139
|
config: null,
|
|
@@ -2966,7 +2141,7 @@ var init_AppContext = __esm(() => {
|
|
|
2966
2141
|
benchResults: [],
|
|
2967
2142
|
isLoadingConfig: true
|
|
2968
2143
|
};
|
|
2969
|
-
AppContext =
|
|
2144
|
+
AppContext = createContext(null);
|
|
2970
2145
|
});
|
|
2971
2146
|
|
|
2972
2147
|
// package.json
|
|
@@ -2974,7 +2149,7 @@ var package_default;
|
|
|
2974
2149
|
var init_package = __esm(() => {
|
|
2975
2150
|
package_default = {
|
|
2976
2151
|
name: "ai-speedometer",
|
|
2977
|
-
version: "2.0.
|
|
2152
|
+
version: "2.0.5",
|
|
2978
2153
|
description: "A comprehensive CLI tool for benchmarking AI models across multiple providers with parallel execution and professional metrics",
|
|
2979
2154
|
bin: {
|
|
2980
2155
|
"ai-speedometer": "dist/ai-speedometer",
|
|
@@ -2990,7 +2165,7 @@ var init_package = __esm(() => {
|
|
|
2990
2165
|
"test:watch": "bun test --watch",
|
|
2991
2166
|
"test:update": "bun test --update-snapshots",
|
|
2992
2167
|
typecheck: "bun tsc --noEmit",
|
|
2993
|
-
build: "bun build src/index.ts --outdir dist --target bun --external '@opentui/core' --external '@opentui/react' && printf '#!/usr/bin/env bun\\n' | cat - dist/index.js > dist/ai-speedometer && chmod +x dist/ai-speedometer && rm dist/index.js",
|
|
2168
|
+
build: "bun build src/index.ts --outdir dist --target bun --external '@opentui/core' --external '@opentui/react' --external 'react' --external 'react-reconciler' && printf '#!/usr/bin/env bun\\n' | cat - dist/index.js > dist/ai-speedometer && chmod +x dist/ai-speedometer && rm dist/index.js",
|
|
2994
2169
|
prepublishOnly: "bun run build"
|
|
2995
2170
|
},
|
|
2996
2171
|
keywords: [
|
|
@@ -3026,7 +2201,9 @@ var init_package = __esm(() => {
|
|
|
3026
2201
|
],
|
|
3027
2202
|
dependencies: {
|
|
3028
2203
|
"@opentui/core": "0.1.79",
|
|
3029
|
-
"@opentui/react": "0.1.79"
|
|
2204
|
+
"@opentui/react": "0.1.79",
|
|
2205
|
+
react: "^19.0.0",
|
|
2206
|
+
"react-reconciler": "^0.32.0"
|
|
3030
2207
|
},
|
|
3031
2208
|
devDependencies: {
|
|
3032
2209
|
"jsonc-parser": "^3.3.1"
|
|
@@ -3088,13 +2265,14 @@ function Footer({ hints }) {
|
|
|
3088
2265
|
var init_Footer = () => {};
|
|
3089
2266
|
|
|
3090
2267
|
// src/tui/screens/MainMenuScreen.tsx
|
|
2268
|
+
import { useState } from "react";
|
|
3091
2269
|
import { useRenderer } from "@opentui/react";
|
|
3092
2270
|
import { useKeyboard } from "@opentui/react";
|
|
3093
2271
|
import { jsxDEV as jsxDEV4 } from "@opentui/react/jsx-dev-runtime";
|
|
3094
2272
|
function MainMenuScreen() {
|
|
3095
2273
|
const navigate = useNavigate();
|
|
3096
2274
|
const renderer = useRenderer();
|
|
3097
|
-
const [cursor, setCursor] =
|
|
2275
|
+
const [cursor, setCursor] = useState(0);
|
|
3098
2276
|
useKeyboard((key) => {
|
|
3099
2277
|
if (key.name === "up") {
|
|
3100
2278
|
setCursor((i) => (i - 1 + ITEMS.length) % ITEMS.length);
|
|
@@ -3177,11 +2355,10 @@ function MainMenuScreen() {
|
|
|
3177
2355
|
]
|
|
3178
2356
|
}, undefined, true, undefined, this);
|
|
3179
2357
|
}
|
|
3180
|
-
var
|
|
2358
|
+
var ITEMS;
|
|
3181
2359
|
var init_MainMenuScreen = __esm(() => {
|
|
3182
2360
|
init_AppContext();
|
|
3183
2361
|
init_package();
|
|
3184
|
-
import_react2 = __toESM(require_react(), 1);
|
|
3185
2362
|
ITEMS = [
|
|
3186
2363
|
{ label: "\u26A1 Run Benchmark", desc: "test model speed & throughput", color: "#7dcfff" },
|
|
3187
2364
|
{ label: "\u2699 Manage Models", desc: "add providers and configure", color: "#bb9af7" },
|
|
@@ -3190,10 +2367,11 @@ var init_MainMenuScreen = __esm(() => {
|
|
|
3190
2367
|
});
|
|
3191
2368
|
|
|
3192
2369
|
// src/tui/components/MenuList.tsx
|
|
2370
|
+
import { useState as useState2 } from "react";
|
|
3193
2371
|
import { useKeyboard as useKeyboard2 } from "@opentui/react";
|
|
3194
2372
|
import { jsxDEV as jsxDEV5 } from "@opentui/react/jsx-dev-runtime";
|
|
3195
2373
|
function MenuList({ items, selectedIndex: initialIndex = 0, onSelect, onNavigate }) {
|
|
3196
|
-
const [cursor, setCursor] =
|
|
2374
|
+
const [cursor, setCursor] = useState2(initialIndex);
|
|
3197
2375
|
useKeyboard2((key) => {
|
|
3198
2376
|
if (key.name === "up") {
|
|
3199
2377
|
const next = (cursor - 1 + items.length) % items.length;
|
|
@@ -3241,10 +2419,7 @@ function MenuList({ items, selectedIndex: initialIndex = 0, onSelect, onNavigate
|
|
|
3241
2419
|
})
|
|
3242
2420
|
}, undefined, false, undefined, this);
|
|
3243
2421
|
}
|
|
3244
|
-
var
|
|
3245
|
-
var init_MenuList = __esm(() => {
|
|
3246
|
-
import_react5 = __toESM(require_react(), 1);
|
|
3247
|
-
});
|
|
2422
|
+
var init_MenuList = () => {};
|
|
3248
2423
|
|
|
3249
2424
|
// src/tui/screens/ModelMenuScreen.tsx
|
|
3250
2425
|
import { useKeyboard as useKeyboard3 } from "@opentui/react";
|
|
@@ -3301,12 +2476,13 @@ var init_ModelMenuScreen = __esm(() => {
|
|
|
3301
2476
|
});
|
|
3302
2477
|
|
|
3303
2478
|
// src/tui/hooks/usePaste.ts
|
|
2479
|
+
import { useEffect as useEffect2, useRef } from "react";
|
|
3304
2480
|
import { useRenderer as useRenderer2 } from "@opentui/react";
|
|
3305
2481
|
function usePaste(onPaste) {
|
|
3306
2482
|
const renderer = useRenderer2();
|
|
3307
|
-
const callbackRef =
|
|
2483
|
+
const callbackRef = useRef(onPaste);
|
|
3308
2484
|
callbackRef.current = onPaste;
|
|
3309
|
-
|
|
2485
|
+
useEffect2(() => {
|
|
3310
2486
|
const handler = (event) => callbackRef.current(event.text);
|
|
3311
2487
|
renderer.keyInput.on("paste", handler);
|
|
3312
2488
|
return () => {
|
|
@@ -3314,28 +2490,26 @@ function usePaste(onPaste) {
|
|
|
3314
2490
|
};
|
|
3315
2491
|
}, [renderer]);
|
|
3316
2492
|
}
|
|
3317
|
-
var
|
|
3318
|
-
var init_usePaste = __esm(() => {
|
|
3319
|
-
import_react8 = __toESM(require_react(), 1);
|
|
3320
|
-
});
|
|
2493
|
+
var init_usePaste = () => {};
|
|
3321
2494
|
|
|
3322
2495
|
// src/tui/screens/ModelSelectScreen.tsx
|
|
2496
|
+
import { useState as useState3, useEffect as useEffect3, useCallback, useRef as useRef2 } from "react";
|
|
3323
2497
|
import { useKeyboard as useKeyboard4, useTerminalDimensions } from "@opentui/react";
|
|
3324
2498
|
import { jsxDEV as jsxDEV7 } from "@opentui/react/jsx-dev-runtime";
|
|
3325
2499
|
function ModelSelectScreen() {
|
|
3326
2500
|
const { state, dispatch } = useAppContext();
|
|
3327
2501
|
const navigate = useNavigate();
|
|
3328
2502
|
const { height, width } = useTerminalDimensions();
|
|
3329
|
-
const [searchQuery, setSearchQuery] =
|
|
3330
|
-
const [cursor, setCursor] =
|
|
3331
|
-
const [selected, setSelected] =
|
|
3332
|
-
const [allModels, setAllModels] =
|
|
3333
|
-
const [recentKeys, setRecentKeys] =
|
|
3334
|
-
const [debouncedQuery, setDebouncedQuery] =
|
|
3335
|
-
const scrollboxRef =
|
|
2503
|
+
const [searchQuery, setSearchQuery] = useState3("");
|
|
2504
|
+
const [cursor, setCursor] = useState3(0);
|
|
2505
|
+
const [selected, setSelected] = useState3(new Set);
|
|
2506
|
+
const [allModels, setAllModels] = useState3([]);
|
|
2507
|
+
const [recentKeys, setRecentKeys] = useState3(new Set);
|
|
2508
|
+
const [debouncedQuery, setDebouncedQuery] = useState3("");
|
|
2509
|
+
const scrollboxRef = useRef2(null);
|
|
3336
2510
|
const PAGE_SIZE = Math.max(3, height - 14);
|
|
3337
2511
|
const CARD_W = Math.min(60, width - 4);
|
|
3338
|
-
|
|
2512
|
+
useEffect3(() => {
|
|
3339
2513
|
const providers = state.config?.providers ?? [];
|
|
3340
2514
|
const models = [];
|
|
3341
2515
|
for (const provider of providers) {
|
|
@@ -3370,11 +2544,11 @@ function ModelSelectScreen() {
|
|
|
3370
2544
|
}
|
|
3371
2545
|
loadRecents();
|
|
3372
2546
|
}, [state.config]);
|
|
3373
|
-
|
|
2547
|
+
useEffect3(() => {
|
|
3374
2548
|
const t = setTimeout(() => setDebouncedQuery(searchQuery), DEBOUNCE_MS);
|
|
3375
2549
|
return () => clearTimeout(t);
|
|
3376
2550
|
}, [searchQuery]);
|
|
3377
|
-
|
|
2551
|
+
useEffect3(() => {
|
|
3378
2552
|
setCursor(0);
|
|
3379
2553
|
}, [debouncedQuery]);
|
|
3380
2554
|
function isRecent(m) {
|
|
@@ -3413,7 +2587,7 @@ function ModelSelectScreen() {
|
|
|
3413
2587
|
})();
|
|
3414
2588
|
const allModelRows = allRows.filter((r) => r.kind === "model");
|
|
3415
2589
|
const cursorModel = allModelRows[cursor]?.model;
|
|
3416
|
-
|
|
2590
|
+
useEffect3(() => {
|
|
3417
2591
|
const sb = scrollboxRef.current;
|
|
3418
2592
|
if (!sb)
|
|
3419
2593
|
return;
|
|
@@ -3425,7 +2599,7 @@ function ModelSelectScreen() {
|
|
|
3425
2599
|
sb.scrollTo(cursor - visible + 1);
|
|
3426
2600
|
}
|
|
3427
2601
|
}, [cursor, PAGE_SIZE]);
|
|
3428
|
-
const launchBench =
|
|
2602
|
+
const launchBench = useCallback((models) => {
|
|
3429
2603
|
dispatch({ type: "BENCH_START", models });
|
|
3430
2604
|
navigate("benchmark");
|
|
3431
2605
|
}, [dispatch, navigate]);
|
|
@@ -3656,11 +2830,10 @@ function ModelSelectScreen() {
|
|
|
3656
2830
|
}, undefined, true, undefined, this)
|
|
3657
2831
|
}, undefined, false, undefined, this);
|
|
3658
2832
|
}
|
|
3659
|
-
var
|
|
2833
|
+
var DEBOUNCE_MS = 50;
|
|
3660
2834
|
var init_ModelSelectScreen = __esm(() => {
|
|
3661
2835
|
init_AppContext();
|
|
3662
2836
|
init_usePaste();
|
|
3663
|
-
import_react10 = __toESM(require_react(), 1);
|
|
3664
2837
|
});
|
|
3665
2838
|
|
|
3666
2839
|
// src/tui/components/BarChart.tsx
|
|
@@ -3766,6 +2939,7 @@ function ResultsTable({ results, pendingCount }) {
|
|
|
3766
2939
|
var init_ResultsTable = () => {};
|
|
3767
2940
|
|
|
3768
2941
|
// src/tui/screens/BenchmarkScreen.tsx
|
|
2942
|
+
import { useState as useState4, useEffect as useEffect4, useRef as useRef3, useMemo } from "react";
|
|
3769
2943
|
import { useKeyboard as useKeyboard5 } from "@opentui/react";
|
|
3770
2944
|
import { jsxDEV as jsxDEV10 } from "@opentui/react/jsx-dev-runtime";
|
|
3771
2945
|
function rankBadge(rank) {
|
|
@@ -3786,12 +2960,12 @@ function Divider() {
|
|
|
3786
2960
|
function BenchmarkScreen() {
|
|
3787
2961
|
const { state, dispatch } = useAppContext();
|
|
3788
2962
|
const navigate = useNavigate();
|
|
3789
|
-
const [modelStates, setModelStates] =
|
|
3790
|
-
const [spinnerFrame, setSpinnerFrame] =
|
|
3791
|
-
const [allDone, setAllDone] =
|
|
3792
|
-
const spinnerRef =
|
|
3793
|
-
const startedRef =
|
|
3794
|
-
|
|
2963
|
+
const [modelStates, setModelStates] = useState4([]);
|
|
2964
|
+
const [spinnerFrame, setSpinnerFrame] = useState4(0);
|
|
2965
|
+
const [allDone, setAllDone] = useState4(false);
|
|
2966
|
+
const spinnerRef = useRef3(null);
|
|
2967
|
+
const startedRef = useRef3(false);
|
|
2968
|
+
useEffect4(() => {
|
|
3795
2969
|
if (startedRef.current)
|
|
3796
2970
|
return;
|
|
3797
2971
|
startedRef.current = true;
|
|
@@ -3850,7 +3024,7 @@ function BenchmarkScreen() {
|
|
|
3850
3024
|
const maxTtftForBar = Math.max(...done.map((m) => (m.result?.timeToFirstToken ?? 0) / 1000), 1);
|
|
3851
3025
|
const doneResults = tpsRanked.map((m) => m.result);
|
|
3852
3026
|
const pendingCount = running.length + pending.length;
|
|
3853
|
-
const allRows =
|
|
3027
|
+
const allRows = useMemo(() => {
|
|
3854
3028
|
const rows = [];
|
|
3855
3029
|
if (!allDone) {
|
|
3856
3030
|
const total = modelStates.length || 1;
|
|
@@ -4247,15 +3421,15 @@ function BenchmarkScreen() {
|
|
|
4247
3421
|
]
|
|
4248
3422
|
}, undefined, true, undefined, this);
|
|
4249
3423
|
}
|
|
4250
|
-
var
|
|
3424
|
+
var BAR_W = 25;
|
|
4251
3425
|
var init_BenchmarkScreen = __esm(() => {
|
|
4252
3426
|
init_AppContext();
|
|
4253
3427
|
init_BarChart();
|
|
4254
3428
|
init_ResultsTable();
|
|
4255
|
-
import_react12 = __toESM(require_react(), 1);
|
|
4256
3429
|
});
|
|
4257
3430
|
|
|
4258
3431
|
// src/tui/screens/AddVerifiedScreen.tsx
|
|
3432
|
+
import { useState as useState5, useEffect as useEffect5, useRef as useRef4 } from "react";
|
|
4259
3433
|
import { useKeyboard as useKeyboard6, useTerminalDimensions as useTerminalDimensions2 } from "@opentui/react";
|
|
4260
3434
|
import { jsxDEV as jsxDEV11 } from "@opentui/react/jsx-dev-runtime";
|
|
4261
3435
|
function AddVerifiedScreen() {
|
|
@@ -4264,19 +3438,19 @@ function AddVerifiedScreen() {
|
|
|
4264
3438
|
const { height, width } = useTerminalDimensions2();
|
|
4265
3439
|
const PAGE_SIZE = Math.max(3, height - 16);
|
|
4266
3440
|
const CARD_W = Math.min(62, width - 4);
|
|
4267
|
-
const [step, setStep] =
|
|
4268
|
-
const [allProviders, setAllProviders] =
|
|
4269
|
-
const [filtered, setFiltered] =
|
|
4270
|
-
const [cursor, setCursor] =
|
|
4271
|
-
const [searchQuery, setSearchQuery] =
|
|
4272
|
-
const scrollboxRef =
|
|
4273
|
-
const [selectedProvider, setSelectedProvider] =
|
|
4274
|
-
const [apiKey, setApiKey] =
|
|
4275
|
-
const [saving, setSaving] =
|
|
4276
|
-
const [saveError, setSaveError] =
|
|
4277
|
-
const [saveSuccess, setSaveSuccess] =
|
|
4278
|
-
const [loadError, setLoadError] =
|
|
4279
|
-
|
|
3441
|
+
const [step, setStep] = useState5("browse");
|
|
3442
|
+
const [allProviders, setAllProviders] = useState5([]);
|
|
3443
|
+
const [filtered, setFiltered] = useState5([]);
|
|
3444
|
+
const [cursor, setCursor] = useState5(0);
|
|
3445
|
+
const [searchQuery, setSearchQuery] = useState5("");
|
|
3446
|
+
const scrollboxRef = useRef4(null);
|
|
3447
|
+
const [selectedProvider, setSelectedProvider] = useState5(null);
|
|
3448
|
+
const [apiKey, setApiKey] = useState5("");
|
|
3449
|
+
const [saving, setSaving] = useState5(false);
|
|
3450
|
+
const [saveError, setSaveError] = useState5("");
|
|
3451
|
+
const [saveSuccess, setSaveSuccess] = useState5(false);
|
|
3452
|
+
const [loadError, setLoadError] = useState5("");
|
|
3453
|
+
useEffect5(() => {
|
|
4280
3454
|
async function load() {
|
|
4281
3455
|
try {
|
|
4282
3456
|
const { getAllProviders: getAllProviders2 } = await Promise.resolve().then(() => (init_models_dev(), exports_models_dev));
|
|
@@ -4289,7 +3463,7 @@ function AddVerifiedScreen() {
|
|
|
4289
3463
|
}
|
|
4290
3464
|
load();
|
|
4291
3465
|
}, []);
|
|
4292
|
-
|
|
3466
|
+
useEffect5(() => {
|
|
4293
3467
|
if (!searchQuery) {
|
|
4294
3468
|
setFiltered(allProviders);
|
|
4295
3469
|
} else {
|
|
@@ -4298,7 +3472,7 @@ function AddVerifiedScreen() {
|
|
|
4298
3472
|
}
|
|
4299
3473
|
setCursor(0);
|
|
4300
3474
|
}, [searchQuery, allProviders]);
|
|
4301
|
-
|
|
3475
|
+
useEffect5(() => {
|
|
4302
3476
|
const sb = scrollboxRef.current;
|
|
4303
3477
|
if (!sb)
|
|
4304
3478
|
return;
|
|
@@ -4704,14 +3878,13 @@ function AddVerifiedScreen() {
|
|
|
4704
3878
|
}, undefined, true, undefined, this)
|
|
4705
3879
|
}, undefined, false, undefined, this);
|
|
4706
3880
|
}
|
|
4707
|
-
var import_react14;
|
|
4708
3881
|
var init_AddVerifiedScreen = __esm(() => {
|
|
4709
3882
|
init_AppContext();
|
|
4710
3883
|
init_usePaste();
|
|
4711
|
-
import_react14 = __toESM(require_react(), 1);
|
|
4712
3884
|
});
|
|
4713
3885
|
|
|
4714
3886
|
// src/tui/screens/AddCustomScreen.tsx
|
|
3887
|
+
import { useState as useState6 } from "react";
|
|
4715
3888
|
import { useKeyboard as useKeyboard7, useTerminalDimensions as useTerminalDimensions3 } from "@opentui/react";
|
|
4716
3889
|
import { jsxDEV as jsxDEV12 } from "@opentui/react/jsx-dev-runtime";
|
|
4717
3890
|
function stepIndex(s) {
|
|
@@ -4722,18 +3895,18 @@ function AddCustomScreen() {
|
|
|
4722
3895
|
const navigate = useNavigate();
|
|
4723
3896
|
const { width } = useTerminalDimensions3();
|
|
4724
3897
|
const CARD_W = Math.min(60, width - 4);
|
|
4725
|
-
const [step, setStep] =
|
|
4726
|
-
const [providerType, setProviderType] =
|
|
4727
|
-
const [typeCursor, setTypeCursor] =
|
|
4728
|
-
const [providerId, setProviderId] =
|
|
4729
|
-
const [providerName, setProviderName] =
|
|
4730
|
-
const [baseUrl, setBaseUrl] =
|
|
4731
|
-
const [apiKey, setApiKey] =
|
|
4732
|
-
const [modelInput, setModelInput] =
|
|
4733
|
-
const [models, setModels] =
|
|
4734
|
-
const [saveError, setSaveError] =
|
|
4735
|
-
const [savedModelCount, setSavedModelCount] =
|
|
4736
|
-
const [inputError, setInputError] =
|
|
3898
|
+
const [step, setStep] = useState6("type");
|
|
3899
|
+
const [providerType, setProviderType] = useState6("openai-compatible");
|
|
3900
|
+
const [typeCursor, setTypeCursor] = useState6(0);
|
|
3901
|
+
const [providerId, setProviderId] = useState6("");
|
|
3902
|
+
const [providerName, setProviderName] = useState6("");
|
|
3903
|
+
const [baseUrl, setBaseUrl] = useState6("");
|
|
3904
|
+
const [apiKey, setApiKey] = useState6("");
|
|
3905
|
+
const [modelInput, setModelInput] = useState6("");
|
|
3906
|
+
const [models, setModels] = useState6([]);
|
|
3907
|
+
const [saveError, setSaveError] = useState6("");
|
|
3908
|
+
const [savedModelCount, setSavedModelCount] = useState6(0);
|
|
3909
|
+
const [inputError, setInputError] = useState6("");
|
|
4737
3910
|
const typeItems = ["OpenAI Compatible", "Anthropic", "Back"];
|
|
4738
3911
|
async function doSave() {
|
|
4739
3912
|
setStep("saving");
|
|
@@ -5261,17 +4434,17 @@ function AddCustomScreen() {
|
|
|
5261
4434
|
}, undefined, true, undefined, this)
|
|
5262
4435
|
}, undefined, false, undefined, this);
|
|
5263
4436
|
}
|
|
5264
|
-
var
|
|
4437
|
+
var STEPS, STEP_LABELS, STEP_NUM;
|
|
5265
4438
|
var init_AddCustomScreen = __esm(() => {
|
|
5266
4439
|
init_AppContext();
|
|
5267
4440
|
init_usePaste();
|
|
5268
|
-
import_react16 = __toESM(require_react(), 1);
|
|
5269
4441
|
STEPS = ["type", "id", "name", "url", "key", "models"];
|
|
5270
4442
|
STEP_LABELS = ["Type", "ID", "Name", "URL", "Key", "Models"];
|
|
5271
4443
|
STEP_NUM = ["\u2460", "\u2461", "\u2462", "\u2463", "\u2464", "\u2465"];
|
|
5272
4444
|
});
|
|
5273
4445
|
|
|
5274
4446
|
// src/tui/screens/AddModelsScreen.tsx
|
|
4447
|
+
import { useState as useState7, useEffect as useEffect6 } from "react";
|
|
5275
4448
|
import { useKeyboard as useKeyboard8, useTerminalDimensions as useTerminalDimensions4 } from "@opentui/react";
|
|
5276
4449
|
import { jsxDEV as jsxDEV13 } from "@opentui/react/jsx-dev-runtime";
|
|
5277
4450
|
function AddModelsScreen() {
|
|
@@ -5279,17 +4452,17 @@ function AddModelsScreen() {
|
|
|
5279
4452
|
const navigate = useNavigate();
|
|
5280
4453
|
const { width } = useTerminalDimensions4();
|
|
5281
4454
|
const CARD_W = Math.min(60, width - 4);
|
|
5282
|
-
const [step, setStep] =
|
|
5283
|
-
const [providers, setProviders] =
|
|
5284
|
-
const [cursor, setCursor] =
|
|
5285
|
-
const [selectedProvider, setSelectedProvider] =
|
|
5286
|
-
const [modelInput, setModelInput] =
|
|
5287
|
-
const [addedModels, setAddedModels] =
|
|
5288
|
-
const [loadError, setLoadError] =
|
|
5289
|
-
const [saveError, setSaveError] =
|
|
5290
|
-
const [inputError, setInputError] =
|
|
5291
|
-
const [done, setDone] =
|
|
5292
|
-
|
|
4455
|
+
const [step, setStep] = useState7("pick");
|
|
4456
|
+
const [providers, setProviders] = useState7([]);
|
|
4457
|
+
const [cursor, setCursor] = useState7(0);
|
|
4458
|
+
const [selectedProvider, setSelectedProvider] = useState7(null);
|
|
4459
|
+
const [modelInput, setModelInput] = useState7("");
|
|
4460
|
+
const [addedModels, setAddedModels] = useState7([]);
|
|
4461
|
+
const [loadError, setLoadError] = useState7("");
|
|
4462
|
+
const [saveError, setSaveError] = useState7("");
|
|
4463
|
+
const [inputError, setInputError] = useState7("");
|
|
4464
|
+
const [done, setDone] = useState7(false);
|
|
4465
|
+
useEffect6(() => {
|
|
5293
4466
|
async function load() {
|
|
5294
4467
|
try {
|
|
5295
4468
|
const { getCustomProvidersFromConfig: getCustomProvidersFromConfig2 } = await Promise.resolve().then(() => (init_ai_config(), exports_ai_config));
|
|
@@ -5651,11 +4824,9 @@ function AddModelsScreen() {
|
|
|
5651
4824
|
}, undefined, true, undefined, this)
|
|
5652
4825
|
}, undefined, false, undefined, this);
|
|
5653
4826
|
}
|
|
5654
|
-
var import_react18;
|
|
5655
4827
|
var init_AddModelsScreen = __esm(() => {
|
|
5656
4828
|
init_AppContext();
|
|
5657
4829
|
init_usePaste();
|
|
5658
|
-
import_react18 = __toESM(require_react(), 1);
|
|
5659
4830
|
});
|
|
5660
4831
|
|
|
5661
4832
|
// src/tui/screens/ListProvidersScreen.tsx
|