@crvouga/mockingbird-service-bedrock 3.10.4 → 3.10.6
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/CHANGELOG.md +13 -0
- package/dist/{chunk-ZQXYNXYD.js → chunk-B3KY7DUX.js} +2 -2
- package/dist/{chunk-GLFTQTIA.js → chunk-NLNC4UCO.js} +33 -11
- package/dist/chunk-NLNC4UCO.js.map +7 -0
- package/dist/cli.js +3 -3
- package/dist/index.js +1 -1
- package/dist/server.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-GLFTQTIA.js.map +0 -7
- /package/dist/{chunk-ZQXYNXYD.js.map → chunk-B3KY7DUX.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-bedrock
|
|
2
2
|
|
|
3
|
+
## 3.10.6 (2026-11-02)
|
|
4
|
+
|
|
5
|
+
### Fixes and improvements
|
|
6
|
+
|
|
7
|
+
- compare the admin key in constant time ([2a43141](https://github.com/crvouga/mockingbird/commit/2a43141f50dab41e698c3bbce0c69bf65b40e24e))
|
|
8
|
+
|
|
9
|
+
## 3.10.5 (2026-11-02)
|
|
10
|
+
|
|
11
|
+
### Fixes and improvements
|
|
12
|
+
|
|
13
|
+
- stop walkSchema recursing forever on a self-referential $ref ([69464a9](https://github.com/crvouga/mockingbird/commit/69464a9d9e7f468c5e1095125108d4d3d5515431))
|
|
14
|
+
- densify sparse bracket arrays by their written indices ([84a28cb](https://github.com/crvouga/mockingbird/commit/84a28cb182e3d7df91102897f0fc11fca714ba5f))
|
|
15
|
+
|
|
3
16
|
## 3.10.4 (2026-11-02)
|
|
4
17
|
|
|
5
18
|
### Fixes and improvements
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createRuntime,
|
|
3
3
|
parseScript
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NLNC4UCO.js";
|
|
5
5
|
|
|
6
6
|
// src/h2c.ts
|
|
7
7
|
import {
|
|
@@ -338,4 +338,4 @@ export {
|
|
|
338
338
|
createServer,
|
|
339
339
|
serveTarget
|
|
340
340
|
};
|
|
341
|
-
//# sourceMappingURL=chunk-
|
|
341
|
+
//# sourceMappingURL=chunk-B3KY7DUX.js.map
|
|
@@ -495,6 +495,7 @@ var parsePath = (rawKey) => {
|
|
|
495
495
|
return path;
|
|
496
496
|
};
|
|
497
497
|
var isIndex = (segment) => /^(0|[1-9][0-9]*)$/.test(segment);
|
|
498
|
+
var MAX_ARRAY_INDEX = 4294967294;
|
|
498
499
|
var put = (target, key, value) => {
|
|
499
500
|
if (key === "__proto__") {
|
|
500
501
|
Object.defineProperty(target, key, {
|
|
@@ -557,8 +558,17 @@ var decodeFormPairs = (pairs) => {
|
|
|
557
558
|
var densify = (value) => {
|
|
558
559
|
if (typeof value === "string")
|
|
559
560
|
return value;
|
|
560
|
-
if (Array.isArray(value))
|
|
561
|
-
|
|
561
|
+
if (Array.isArray(value)) {
|
|
562
|
+
const dense = [];
|
|
563
|
+
for (const key of Object.keys(value)) {
|
|
564
|
+
if (!isIndex(key) || Number(key) > MAX_ARRAY_INDEX)
|
|
565
|
+
continue;
|
|
566
|
+
const item = value[Number(key)];
|
|
567
|
+
if (item !== void 0)
|
|
568
|
+
dense.push(densify(item));
|
|
569
|
+
}
|
|
570
|
+
return dense;
|
|
571
|
+
}
|
|
562
572
|
const out = {};
|
|
563
573
|
for (const [key, item] of Object.entries(value))
|
|
564
574
|
put(out, key, densify(item));
|
|
@@ -2656,6 +2666,19 @@ var createNamespaceControls = (options) => {
|
|
|
2656
2666
|
};
|
|
2657
2667
|
};
|
|
2658
2668
|
|
|
2669
|
+
// ../core/dist/signing.js
|
|
2670
|
+
var encoder = new TextEncoder();
|
|
2671
|
+
var toHex = (bytes) => [...bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
2672
|
+
var sha = async (algorithm, input) => toHex(await crypto.subtle.digest(algorithm, typeof input === "string" ? encoder.encode(input) : input));
|
|
2673
|
+
var timingSafeEqual = (a, b) => {
|
|
2674
|
+
if (a.length !== b.length)
|
|
2675
|
+
return false;
|
|
2676
|
+
let diff = 0;
|
|
2677
|
+
for (let i = 0; i < a.length; i++)
|
|
2678
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
2679
|
+
return diff === 0;
|
|
2680
|
+
};
|
|
2681
|
+
|
|
2659
2682
|
// ../core/dist/surface.js
|
|
2660
2683
|
var defineMock = (runtime) => runtime;
|
|
2661
2684
|
var ADMIN_ROUTE_REFERENCE = {
|
|
@@ -2774,6 +2797,10 @@ var assertAdminPrefixAvailable = (prefix, paths) => {
|
|
|
2774
2797
|
}
|
|
2775
2798
|
};
|
|
2776
2799
|
var ADMIN_KEY_HEADER = CONTROL_HEADERS.adminKey;
|
|
2800
|
+
var hasAdminKey = (headers, adminKey) => {
|
|
2801
|
+
const sent = headers.get(ADMIN_KEY_HEADER);
|
|
2802
|
+
return sent !== null && timingSafeEqual(sent, adminKey);
|
|
2803
|
+
};
|
|
2777
2804
|
var NAMESPACE_HEADER = CONTROL_HEADERS.namespace;
|
|
2778
2805
|
var ADMIN_DOCS_URL = "https://mockingbird.chrisvouga.dev/docs/admin-controls";
|
|
2779
2806
|
var ADMIN_CONTROL_PAGES = [
|
|
@@ -3247,7 +3274,7 @@ var createControlPlane = (context) => {
|
|
|
3247
3274
|
}
|
|
3248
3275
|
const path = url.pathname.slice(adminPrefix.length) || "/";
|
|
3249
3276
|
const shell = request.method === "GET" && (path === "/ui" || path === "/ui/");
|
|
3250
|
-
if (!shell && context.adminKey !== void 0 && request.headers
|
|
3277
|
+
if (!shell && context.adminKey !== void 0 && !hasAdminKey(request.headers, context.adminKey)) {
|
|
3251
3278
|
return adminError(401, `missing or wrong ${ADMIN_KEY_HEADER}`);
|
|
3252
3279
|
}
|
|
3253
3280
|
for (const route of routes) {
|
|
@@ -4038,12 +4065,7 @@ var stateAdminRoutes = (routes) => {
|
|
|
4038
4065
|
};
|
|
4039
4066
|
|
|
4040
4067
|
// ../core/dist/version.js
|
|
4041
|
-
var PACKAGE_VERSION = true ? "3.10.
|
|
4042
|
-
|
|
4043
|
-
// ../core/dist/signing.js
|
|
4044
|
-
var encoder = new TextEncoder();
|
|
4045
|
-
var toHex = (bytes) => [...bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
4046
|
-
var sha = async (algorithm, input) => toHex(await crypto.subtle.digest(algorithm, typeof input === "string" ? encoder.encode(input) : input));
|
|
4068
|
+
var PACKAGE_VERSION = true ? "3.10.6" : UNRELEASED_VERSION;
|
|
4047
4069
|
|
|
4048
4070
|
// ../core/dist/webhooks.js
|
|
4049
4071
|
var json4 = (status, body) => new Response(JSON.stringify(body), {
|
|
@@ -5024,7 +5046,7 @@ var createRuntime = (options) => {
|
|
|
5024
5046
|
throw error;
|
|
5025
5047
|
}
|
|
5026
5048
|
const rewinds = at !== void 0 && selectedBranch === "main" && MUTATING_METHODS.has(request.method);
|
|
5027
|
-
if ((requested || rewinds) && options.adminKey !== void 0 && request.headers
|
|
5049
|
+
if ((requested || rewinds) && options.adminKey !== void 0 && !hasAdminKey(request.headers, options.adminKey))
|
|
5028
5050
|
return refuse(401, `control headers need ${ADMIN_KEY_HEADER}`);
|
|
5029
5051
|
controls.ensure(namespace);
|
|
5030
5052
|
if (requested?.restore !== void 0 && !snapshotStore.get(namespace, requested.restore))
|
|
@@ -7981,4 +8003,4 @@ export {
|
|
|
7981
8003
|
lexicalEmbedding,
|
|
7982
8004
|
BedrockAPI
|
|
7983
8005
|
};
|
|
7984
|
-
//# sourceMappingURL=chunk-
|
|
8006
|
+
//# sourceMappingURL=chunk-NLNC4UCO.js.map
|