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

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,40 @@ 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 queryKey = Object.entries(query).map(([key, value]) => [key, String(value)]).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}=${value}`).join("&");
33580
+ return queryKey;
33581
+ };
33582
+ const getReport = async (query, request) => {
33583
+ const cacheMs = typeof options.cacheMs === "number" && Number.isFinite(options.cacheMs) && options.cacheMs > 0 ? options.cacheMs : 0;
33584
+ const key = reportCacheKey(query, request);
33585
+ if (cacheMs > 0 && cachedReport && cachedReport.key === key && Date.now() - cachedReport.loadedAt <= cacheMs) {
33586
+ return cachedReport.value;
33587
+ }
33588
+ const value = (async () => {
33589
+ const resolvedOptions = await resolveOptions({ query, request });
33590
+ return {
33591
+ report: await buildVoiceProductionReadinessReport(resolvedOptions, {
33592
+ query,
33593
+ request
33594
+ }),
33595
+ resolvedOptions
33596
+ };
33597
+ })();
33598
+ if (cacheMs > 0) {
33599
+ cachedReport = {
33600
+ key,
33601
+ loadedAt: Date.now(),
33602
+ value
33603
+ };
33604
+ }
33605
+ return value;
33606
+ };
33607
+ routes.get(path, async ({ query, request }) => (await getReport(query, request)).report);
33578
33608
  if (gatePath !== false) {
33579
33609
  routes.get(gatePath, async ({ query, request }) => {
33580
- const resolvedOptions = await resolveOptions({ query, request });
33581
- const gate = await buildVoiceProductionReadinessGate(resolvedOptions, {
33582
- query,
33583
- request
33584
- });
33610
+ const { report, resolvedOptions } = await getReport(query, request);
33611
+ const gate = summarizeVoiceProductionReadinessGate(report, resolvedOptions.gate || undefined);
33585
33612
  return new Response(JSON.stringify(gate), {
33586
33613
  headers: {
33587
33614
  "Content-Type": "application/json; charset=utf-8",
@@ -33593,11 +33620,7 @@ var createVoiceProductionReadinessRoutes = (options) => {
33593
33620
  }
33594
33621
  if (htmlPath !== false) {
33595
33622
  routes.get(htmlPath, async ({ query, request }) => {
33596
- const resolvedOptions = await resolveOptions({ query, request });
33597
- const report = await buildVoiceProductionReadinessReport(resolvedOptions, {
33598
- query,
33599
- request
33600
- });
33623
+ const { report, resolvedOptions } = await getReport(query, request);
33601
33624
  const body = await (resolvedOptions.render ?? renderVoiceProductionReadinessHTML)(report);
33602
33625
  return new Response(body, {
33603
33626
  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.366",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",