@absolutejs/voice 0.0.22-beta.364 → 0.0.22-beta.365

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/index.js CHANGED
@@ -33565,6 +33565,7 @@ var createVoiceProductionReadinessRoutes = (options) => {
33565
33565
  const routes = new Elysia54({
33566
33566
  name: options.name ?? "absolutejs-voice-production-readiness"
33567
33567
  });
33568
+ let cachedReport;
33568
33569
  const resolveOptions = async (input) => {
33569
33570
  if (!options.resolveOptions) {
33570
33571
  return options;
@@ -33574,14 +33575,41 @@ var createVoiceProductionReadinessRoutes = (options) => {
33574
33575
  ...await options.resolveOptions(input)
33575
33576
  };
33576
33577
  };
33577
- routes.get(path, async ({ query, request }) => buildVoiceProductionReadinessReport(await resolveOptions({ query, request }), { query, request }));
33578
+ const reportCacheKey = (query, request) => {
33579
+ const url = new URL(request.url);
33580
+ const queryKey = Object.entries(query).map(([key, value]) => [key, String(value)]).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}=${value}`).join("&");
33581
+ return `${url.pathname}?${queryKey}`;
33582
+ };
33583
+ const getReport = async (query, request) => {
33584
+ const cacheMs = typeof options.cacheMs === "number" && Number.isFinite(options.cacheMs) && options.cacheMs > 0 ? options.cacheMs : 0;
33585
+ const key = reportCacheKey(query, request);
33586
+ if (cacheMs > 0 && cachedReport && cachedReport.key === key && Date.now() - cachedReport.loadedAt <= cacheMs) {
33587
+ return cachedReport.value;
33588
+ }
33589
+ const value = (async () => {
33590
+ const resolvedOptions = await resolveOptions({ query, request });
33591
+ return {
33592
+ report: await buildVoiceProductionReadinessReport(resolvedOptions, {
33593
+ query,
33594
+ request
33595
+ }),
33596
+ resolvedOptions
33597
+ };
33598
+ })();
33599
+ if (cacheMs > 0) {
33600
+ cachedReport = {
33601
+ key,
33602
+ loadedAt: Date.now(),
33603
+ value
33604
+ };
33605
+ }
33606
+ return value;
33607
+ };
33608
+ routes.get(path, async ({ query, request }) => (await getReport(query, request)).report);
33578
33609
  if (gatePath !== false) {
33579
33610
  routes.get(gatePath, async ({ query, request }) => {
33580
- const resolvedOptions = await resolveOptions({ query, request });
33581
- const gate = await buildVoiceProductionReadinessGate(resolvedOptions, {
33582
- query,
33583
- request
33584
- });
33611
+ const { report, resolvedOptions } = await getReport(query, request);
33612
+ const gate = summarizeVoiceProductionReadinessGate(report, resolvedOptions.gate || undefined);
33585
33613
  return new Response(JSON.stringify(gate), {
33586
33614
  headers: {
33587
33615
  "Content-Type": "application/json; charset=utf-8",
@@ -33593,11 +33621,7 @@ var createVoiceProductionReadinessRoutes = (options) => {
33593
33621
  }
33594
33622
  if (htmlPath !== false) {
33595
33623
  routes.get(htmlPath, async ({ query, request }) => {
33596
- const resolvedOptions = await resolveOptions({ query, request });
33597
- const report = await buildVoiceProductionReadinessReport(resolvedOptions, {
33598
- query,
33599
- request
33600
- });
33624
+ const { report, resolvedOptions } = await getReport(query, request);
33601
33625
  const body = await (resolvedOptions.render ?? renderVoiceProductionReadinessHTML)(report);
33602
33626
  return new Response(body, {
33603
33627
  headers: {
@@ -484,6 +484,7 @@ export type VoiceProductionReadinessRoutesOptions = {
484
484
  query: Record<string, unknown>;
485
485
  request: Request;
486
486
  }) => Promise<VoiceCampaignReadinessProofReport> | VoiceCampaignReadinessProofReport);
487
+ cacheMs?: number;
487
488
  deliveryRuntime?: false | VoiceDeliveryRuntime | VoiceDeliveryRuntimeSummary | ((input: {
488
489
  query: Record<string, unknown>;
489
490
  request: Request;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.364",
3
+ "version": "0.0.22-beta.365",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",