create project

This commit is contained in:
ismailsosic
2022-12-27 12:05:56 +01:00
parent 2a33a2d3de
commit cd2143287c
16035 changed files with 2489703 additions and 0 deletions

View File

@@ -0,0 +1,121 @@
import RenderResult from "../render-result";
export * from "./types";
export default class ResponseCache {
constructor(minimalMode){
this.pendingResponses = new Map();
this.minimalMode = minimalMode;
}
get(key, responseGenerator, context) {
var ref3;
const { incrementalCache } = context;
// ensure manual revalidate doesn't block normal requests
const pendingResponseKey = key ? `${key}-${context.isManualRevalidate ? "1" : "0"}` : null;
const pendingResponse = pendingResponseKey ? this.pendingResponses.get(pendingResponseKey) : null;
if (pendingResponse) {
return pendingResponse;
}
let resolver = ()=>{};
let rejecter = ()=>{};
const promise = new Promise((resolve, reject)=>{
resolver = resolve;
rejecter = reject;
});
if (pendingResponseKey) {
this.pendingResponses.set(pendingResponseKey, promise);
}
let resolved = false;
const resolve1 = (cacheEntry)=>{
if (pendingResponseKey) {
// Ensure all reads from the cache get the latest value.
this.pendingResponses.set(pendingResponseKey, Promise.resolve(cacheEntry));
}
if (!resolved) {
resolved = true;
resolver(cacheEntry);
}
};
// we keep the previous cache entry around to leverage
// when the incremental cache is disabled in minimal mode
if (pendingResponseKey && this.minimalMode && ((ref3 = this.previousCacheItem) == null ? void 0 : ref3.key) === pendingResponseKey && this.previousCacheItem.expiresAt > Date.now()) {
resolve1(this.previousCacheItem.entry);
this.pendingResponses.delete(pendingResponseKey);
return promise;
}
(async ()=>{
let cachedResponse = null;
try {
cachedResponse = key && !this.minimalMode ? await incrementalCache.get(key) : null;
if (cachedResponse && !context.isManualRevalidate) {
var ref, ref1;
if (((ref = cachedResponse.value) == null ? void 0 : ref.kind) === "FETCH") {
throw new Error(`invariant: unexpected cachedResponse of kind fetch in response cache`);
}
resolve1({
isStale: cachedResponse.isStale,
revalidate: cachedResponse.curRevalidate,
value: ((ref1 = cachedResponse.value) == null ? void 0 : ref1.kind) === "PAGE" ? {
kind: "PAGE",
html: RenderResult.fromStatic(cachedResponse.value.html),
pageData: cachedResponse.value.pageData
} : cachedResponse.value
});
if (!cachedResponse.isStale || context.isPrefetch) {
// The cached value is still valid, so we don't need
// to update it yet.
return;
}
}
const cacheEntry = await responseGenerator(resolved, !!cachedResponse);
const resolveValue = cacheEntry === null ? null : {
...cacheEntry,
isMiss: !cachedResponse
};
// for manual revalidate wait to resolve until cache is set
if (!context.isManualRevalidate) {
resolve1(resolveValue);
}
if (key && cacheEntry && typeof cacheEntry.revalidate !== "undefined") {
if (this.minimalMode) {
this.previousCacheItem = {
key: pendingResponseKey || key,
entry: cacheEntry,
expiresAt: Date.now() + 1000
};
} else {
var ref2;
await incrementalCache.set(key, ((ref2 = cacheEntry.value) == null ? void 0 : ref2.kind) === "PAGE" ? {
kind: "PAGE",
html: cacheEntry.value.html.toUnchunkedString(),
pageData: cacheEntry.value.pageData
} : cacheEntry.value, cacheEntry.revalidate);
}
} else {
this.previousCacheItem = undefined;
}
if (context.isManualRevalidate) {
resolve1(resolveValue);
}
} catch (err) {
// when a getStaticProps path is erroring we automatically re-set the
// existing cache under a new expiration to prevent non-stop retrying
if (cachedResponse && key) {
await incrementalCache.set(key, cachedResponse.value, Math.min(Math.max(cachedResponse.revalidate || 3, 3), 30));
}
// while revalidating in the background we can't reject as
// we already resolved the cache entry so log the error here
if (resolved) {
console.error(err);
} else {
rejecter(err);
}
} finally{
if (pendingResponseKey) {
this.pendingResponses.delete(pendingResponseKey);
}
}
})();
return promise;
}
};
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../server/response-cache/index.ts"],"names":["RenderResult","ResponseCache","constructor","minimalMode","pendingResponses","Map","get","key","responseGenerator","context","incrementalCache","pendingResponseKey","isManualRevalidate","pendingResponse","resolver","rejecter","promise","Promise","resolve","reject","set","resolved","cacheEntry","previousCacheItem","expiresAt","Date","now","entry","delete","cachedResponse","value","kind","Error","isStale","revalidate","curRevalidate","html","fromStatic","pageData","isPrefetch","resolveValue","isMiss","toUnchunkedString","undefined","err","Math","min","max","console","error"],"mappings":"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"}

View File

@@ -0,0 +1,3 @@
export { };
//# sourceMappingURL=types.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../server/response-cache/types.ts"],"names":[],"mappings":"AAAA,WAmGC"}

View File

@@ -0,0 +1,85 @@
/**
* In the web server, there is currently no incremental cache provided and we
* always SSR the page.
*/ export default class WebResponseCache {
constructor(minimalMode){
this.pendingResponses = new Map();
this.minimalMode = minimalMode;
}
get(key, responseGenerator, context) {
var ref;
// ensure manual revalidate doesn't block normal requests
const pendingResponseKey = key ? `${key}-${context.isManualRevalidate ? "1" : "0"}` : null;
const pendingResponse = pendingResponseKey ? this.pendingResponses.get(pendingResponseKey) : null;
if (pendingResponse) {
return pendingResponse;
}
let resolver = ()=>{};
let rejecter = ()=>{};
const promise = new Promise((resolve, reject)=>{
resolver = resolve;
rejecter = reject;
});
if (pendingResponseKey) {
this.pendingResponses.set(pendingResponseKey, promise);
}
let resolved = false;
const resolve1 = (cacheEntry)=>{
if (pendingResponseKey) {
// Ensure all reads from the cache get the latest value.
this.pendingResponses.set(pendingResponseKey, Promise.resolve(cacheEntry));
}
if (!resolved) {
resolved = true;
resolver(cacheEntry);
}
};
// we keep the previous cache entry around to leverage
// when the incremental cache is disabled in minimal mode
if (pendingResponseKey && this.minimalMode && ((ref = this.previousCacheItem) == null ? void 0 : ref.key) === pendingResponseKey && this.previousCacheItem.expiresAt > Date.now()) {
resolve1(this.previousCacheItem.entry);
this.pendingResponses.delete(pendingResponseKey);
return promise;
}
(async ()=>{
try {
const cacheEntry = await responseGenerator(resolved, false);
const resolveValue = cacheEntry === null ? null : {
...cacheEntry,
isMiss: true
};
// for manual revalidate wait to resolve until cache is set
if (!context.isManualRevalidate) {
resolve1(resolveValue);
}
if (key && cacheEntry && typeof cacheEntry.revalidate !== "undefined") {
this.previousCacheItem = {
key: pendingResponseKey || key,
entry: cacheEntry,
expiresAt: Date.now() + 1000
};
} else {
this.previousCacheItem = undefined;
}
if (context.isManualRevalidate) {
resolve1(resolveValue);
}
} catch (err) {
// while revalidating in the background we can't reject as
// we already resolved the cache entry so log the error here
if (resolved) {
console.error(err);
} else {
rejecter(err);
}
} finally{
if (pendingResponseKey) {
this.pendingResponses.delete(pendingResponseKey);
}
}
})();
return promise;
}
};
//# sourceMappingURL=web.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../server/response-cache/web.ts"],"names":["WebResponseCache","constructor","minimalMode","pendingResponses","Map","get","key","responseGenerator","context","pendingResponseKey","isManualRevalidate","pendingResponse","resolver","rejecter","promise","Promise","resolve","reject","set","resolved","cacheEntry","previousCacheItem","expiresAt","Date","now","entry","delete","resolveValue","isMiss","revalidate","undefined","err","console","error"],"mappings":"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"}