@crvouga/mockingbird-service-brevo 1.10.4 → 1.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-WBYRRKNC.js → chunk-4SXB2QSW.js} +3 -3
- package/dist/{chunk-G3XVSD6X.js → chunk-6JMJUSKQ.js} +31 -6
- package/dist/chunk-6JMJUSKQ.js.map +7 -0
- package/dist/cli.js +2 -2
- package/dist/index.js +1 -1
- package/dist/server.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-G3XVSD6X.js.map +0 -7
- /package/dist/{chunk-WBYRRKNC.js.map → chunk-4SXB2QSW.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-brevo
|
|
2
2
|
|
|
3
|
+
## 1.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
|
+
## 1.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
|
## 1.10.4 (2026-11-02)
|
|
4
17
|
|
|
5
18
|
### Fixes and improvements
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
parseFaultHeader,
|
|
10
10
|
resolveAdminPrefix,
|
|
11
11
|
restoreClock
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6JMJUSKQ.js";
|
|
13
13
|
|
|
14
14
|
// ../../adapters/node/dist/cli.js
|
|
15
15
|
import { readFile as readFile5 } from "node:fs/promises";
|
|
@@ -3057,7 +3057,7 @@ async function preflightFleet(config, options) {
|
|
|
3057
3057
|
break;
|
|
3058
3058
|
}
|
|
3059
3059
|
}
|
|
3060
|
-
targets.set(name, { ...target, packageVersion: packageVersion ?? "1.10.
|
|
3060
|
+
targets.set(name, { ...target, packageVersion: packageVersion ?? "1.10.6" });
|
|
3061
3061
|
} catch (error) {
|
|
3062
3062
|
throw new Error(`service ${name}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
3063
3063
|
}
|
|
@@ -5011,4 +5011,4 @@ export {
|
|
|
5011
5011
|
createServer2 as createServer,
|
|
5012
5012
|
serveTarget
|
|
5013
5013
|
};
|
|
5014
|
-
//# sourceMappingURL=chunk-
|
|
5014
|
+
//# sourceMappingURL=chunk-4SXB2QSW.js.map
|
|
@@ -449,6 +449,7 @@ var parsePath = (rawKey) => {
|
|
|
449
449
|
return path;
|
|
450
450
|
};
|
|
451
451
|
var isIndex = (segment) => /^(0|[1-9][0-9]*)$/.test(segment);
|
|
452
|
+
var MAX_ARRAY_INDEX = 4294967294;
|
|
452
453
|
var put = (target, key, value) => {
|
|
453
454
|
if (key === "__proto__") {
|
|
454
455
|
Object.defineProperty(target, key, {
|
|
@@ -511,8 +512,17 @@ var decodeFormPairs = (pairs) => {
|
|
|
511
512
|
var densify = (value) => {
|
|
512
513
|
if (typeof value === "string")
|
|
513
514
|
return value;
|
|
514
|
-
if (Array.isArray(value))
|
|
515
|
-
|
|
515
|
+
if (Array.isArray(value)) {
|
|
516
|
+
const dense = [];
|
|
517
|
+
for (const key of Object.keys(value)) {
|
|
518
|
+
if (!isIndex(key) || Number(key) > MAX_ARRAY_INDEX)
|
|
519
|
+
continue;
|
|
520
|
+
const item = value[Number(key)];
|
|
521
|
+
if (item !== void 0)
|
|
522
|
+
dense.push(densify(item));
|
|
523
|
+
}
|
|
524
|
+
return dense;
|
|
525
|
+
}
|
|
516
526
|
const out = {};
|
|
517
527
|
for (const [key, item] of Object.entries(value))
|
|
518
528
|
put(out, key, densify(item));
|
|
@@ -2610,6 +2620,17 @@ var createNamespaceControls = (options) => {
|
|
|
2610
2620
|
};
|
|
2611
2621
|
};
|
|
2612
2622
|
|
|
2623
|
+
// ../core/dist/signing.js
|
|
2624
|
+
var encoder = new TextEncoder();
|
|
2625
|
+
var timingSafeEqual = (a, b) => {
|
|
2626
|
+
if (a.length !== b.length)
|
|
2627
|
+
return false;
|
|
2628
|
+
let diff = 0;
|
|
2629
|
+
for (let i = 0; i < a.length; i++)
|
|
2630
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
2631
|
+
return diff === 0;
|
|
2632
|
+
};
|
|
2633
|
+
|
|
2613
2634
|
// ../core/dist/surface.js
|
|
2614
2635
|
var defineMock = (runtime) => runtime;
|
|
2615
2636
|
var ADMIN_ROUTE_REFERENCE = {
|
|
@@ -2728,6 +2749,10 @@ var assertAdminPrefixAvailable = (prefix, paths) => {
|
|
|
2728
2749
|
}
|
|
2729
2750
|
};
|
|
2730
2751
|
var ADMIN_KEY_HEADER = CONTROL_HEADERS.adminKey;
|
|
2752
|
+
var hasAdminKey = (headers, adminKey) => {
|
|
2753
|
+
const sent = headers.get(ADMIN_KEY_HEADER);
|
|
2754
|
+
return sent !== null && timingSafeEqual(sent, adminKey);
|
|
2755
|
+
};
|
|
2731
2756
|
var NAMESPACE_HEADER = CONTROL_HEADERS.namespace;
|
|
2732
2757
|
var ADMIN_DOCS_URL = "https://mockingbird.chrisvouga.dev/docs/admin-controls";
|
|
2733
2758
|
var ADMIN_CONTROL_PAGES = [
|
|
@@ -3201,7 +3226,7 @@ var createControlPlane = (context) => {
|
|
|
3201
3226
|
}
|
|
3202
3227
|
const path = url.pathname.slice(adminPrefix.length) || "/";
|
|
3203
3228
|
const shell = request.method === "GET" && (path === "/ui" || path === "/ui/");
|
|
3204
|
-
if (!shell && context.adminKey !== void 0 && request.headers
|
|
3229
|
+
if (!shell && context.adminKey !== void 0 && !hasAdminKey(request.headers, context.adminKey)) {
|
|
3205
3230
|
return adminError(401, `missing or wrong ${ADMIN_KEY_HEADER}`);
|
|
3206
3231
|
}
|
|
3207
3232
|
for (const route of routes) {
|
|
@@ -3962,7 +3987,7 @@ var stateAdminRoutes = (routes) => {
|
|
|
3962
3987
|
};
|
|
3963
3988
|
|
|
3964
3989
|
// ../core/dist/version.js
|
|
3965
|
-
var PACKAGE_VERSION = true ? "1.10.
|
|
3990
|
+
var PACKAGE_VERSION = true ? "1.10.6" : UNRELEASED_VERSION;
|
|
3966
3991
|
|
|
3967
3992
|
// ../core/dist/webhooks.js
|
|
3968
3993
|
var json4 = (status, body) => new Response(JSON.stringify(body), {
|
|
@@ -4941,7 +4966,7 @@ var createRuntime = (options) => {
|
|
|
4941
4966
|
throw error2;
|
|
4942
4967
|
}
|
|
4943
4968
|
const rewinds = at !== void 0 && selectedBranch === "main" && MUTATING_METHODS.has(request.method);
|
|
4944
|
-
if ((requested || rewinds) && options.adminKey !== void 0 && request.headers
|
|
4969
|
+
if ((requested || rewinds) && options.adminKey !== void 0 && !hasAdminKey(request.headers, options.adminKey))
|
|
4945
4970
|
return refuse(401, `control headers need ${ADMIN_KEY_HEADER}`);
|
|
4946
4971
|
controls.ensure(namespace);
|
|
4947
4972
|
if (requested?.restore !== void 0 && !snapshotStore.get(namespace, requested.restore))
|
|
@@ -5440,4 +5465,4 @@ export {
|
|
|
5440
5465
|
BREVO_NAMESPACE,
|
|
5441
5466
|
BrevoAPI
|
|
5442
5467
|
};
|
|
5443
|
-
//# sourceMappingURL=chunk-
|
|
5468
|
+
//# sourceMappingURL=chunk-6JMJUSKQ.js.map
|