@voyantjs/cruises 0.59.0 → 0.60.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-content.d.ts","sourceRoot":"","sources":["../src/service-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,uBAAuB,EAK5B,KAAK,iBAAiB,EAKtB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAA;AAa3B,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,oBAAoB,CAAA;IACtE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,aAAa,CAAA;IACtB,UAAU,EAAE,uBAAuB,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC/E,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,aAAa,CAAA;IACzD,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"service-content.d.ts","sourceRoot":"","sources":["../src/service-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,uBAAuB,EAK5B,KAAK,iBAAiB,EAKtB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAA;AAa3B,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,oBAAoB,CAAA;IACtE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,aAAa,CAAA;IACtB,UAAU,EAAE,uBAAuB,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC/E,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,aAAa,CAAA;IACzD,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CA2GvC;AA0OD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAG5C,CAAA"}
|
package/dist/service-content.js
CHANGED
|
@@ -50,6 +50,20 @@ export async function getCruiseContent(db, entityId, scope, options) {
|
|
|
50
50
|
};
|
|
51
51
|
const market = scope.market ?? CRUISES_CONTENT_MARKET_ANY;
|
|
52
52
|
const acceptMT = scope.acceptMachineTranslated ?? true;
|
|
53
|
+
const ownsContentCache = adapter?.capabilities.ownsContentCache === true;
|
|
54
|
+
if (ownsContentCache) {
|
|
55
|
+
if (!adapter?.getContent) {
|
|
56
|
+
throw new Error(`cruises adapter for ${entityId} declares ownsContentCache but does not implement getContent`);
|
|
57
|
+
}
|
|
58
|
+
const fresh = await fetchPassThroughContent(adapter, adapterCtx, {
|
|
59
|
+
entity_module: "cruises",
|
|
60
|
+
entity_id: entityId,
|
|
61
|
+
locale: scope.preferredLocales[0] ?? "en-GB",
|
|
62
|
+
market,
|
|
63
|
+
currency: scope.currency,
|
|
64
|
+
});
|
|
65
|
+
return finalizeFresh(db, entityId, fresh, scope, options);
|
|
66
|
+
}
|
|
53
67
|
const cachedRows = await fetchCacheCandidates(db, entityId, market);
|
|
54
68
|
const eligibleRows = acceptMT ? cachedRows : cachedRows.filter((r) => !r.machine_translated);
|
|
55
69
|
const best = pickBestCachedLocale(eligibleRows.map((row) => ({ ...row, locale: row.locale })), scope.preferredLocales);
|
|
@@ -116,6 +130,14 @@ async function fetchFreshContent(db, adapter, ctx, request) {
|
|
|
116
130
|
});
|
|
117
131
|
return result ?? null;
|
|
118
132
|
}
|
|
133
|
+
async function fetchPassThroughContent(adapter, ctx, request) {
|
|
134
|
+
const got = await adapter.getContent(ctx, request);
|
|
135
|
+
const validation = validateCruiseContent(got.content);
|
|
136
|
+
if (!validation.valid) {
|
|
137
|
+
throw new Error(`cruises getContent for ${request.entity_id} failed validation: ${validation.reason}`);
|
|
138
|
+
}
|
|
139
|
+
return got;
|
|
140
|
+
}
|
|
119
141
|
function scheduleRefresh(db, adapter, ctx, request) {
|
|
120
142
|
void withContentRefreshLock(db, {
|
|
121
143
|
entityModule: request.entity_module,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/cruises",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.60.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -89,11 +89,11 @@
|
|
|
89
89
|
"drizzle-orm": "^0.45.2",
|
|
90
90
|
"hono": "^4.12.10",
|
|
91
91
|
"zod": "^4.3.6",
|
|
92
|
-
"@voyantjs/bookings": "0.
|
|
93
|
-
"@voyantjs/core": "0.
|
|
94
|
-
"@voyantjs/db": "0.
|
|
95
|
-
"@voyantjs/hono": "0.
|
|
96
|
-
"@voyantjs/catalog": "0.
|
|
92
|
+
"@voyantjs/bookings": "0.60.0",
|
|
93
|
+
"@voyantjs/core": "0.60.0",
|
|
94
|
+
"@voyantjs/db": "0.60.0",
|
|
95
|
+
"@voyantjs/hono": "0.60.0",
|
|
96
|
+
"@voyantjs/catalog": "0.60.0"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
99
|
"typescript": "^6.0.2",
|