init commit

This commit is contained in:
rxliuli
2025-11-04 05:03:50 +08:00
commit bce557cc2d
1396 changed files with 172991 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
import { getCookie } from '@amp/web-app-components/src/utils/cookie';
import type { LoggerFactory } from '@amp/web-apps-logger';
import { isSome } from '@amp/web-apps-utils';
import { deserializeServerData, stableStringify } from './server-data';
import { type PrefetchedIntent, isPrefetchedIntents } from './types';
export function getPrefetchedIntents(
loggerFactory: LoggerFactory,
options?: { evenIfSignedIn?: boolean; featureKitItfe?: string },
): Map<string, unknown> {
const logger = loggerFactory.loggerFor('getPrefetchedIntents');
const evenIfSignedIn = options?.evenIfSignedIn;
const itfe = options?.featureKitItfe;
const data = deserializeServerData();
if (!data || !isPrefetchedIntents(data)) {
return new Map();
}
// We avoid prefetched intents in two scenarios:
//
// Condition 1: User is signed in (and evenIfSignedIn is false)
// It's possible/likely that dispatching an intent when signed in behaves
// differently.
//
// Condition 2: ITFE is enabled in Feature Kit
// When ITFE is active, we discard prefetched intents so that media API
// calls are triggered in the browser, allowing Feature Kit to inject ITFE
// into those calls.
if ((!evenIfSignedIn && getCookie('media-user-token')) || itfe) {
logger.info(
'Discarding prefetched intents - signed in user or ITFE enabled',
);
return new Map();
}
logger.debug('received prefetched intents from the server:', data);
return new Map(
data
.map(
({
intent,
data,
}: PrefetchedIntent): [string, unknown] | null => {
try {
if (intent.$kind.includes('Library')) {
return null;
}
// NOTE: PrefetchedIntents.get depends on stableStringify
return [stableStringify(intent), data];
} catch (e) {
return null;
}
},
)
.filter(isSome),
);
}