This commit is contained in:
Kismet Hasanaj
2026-05-02 20:07:02 +02:00
parent ce8672e283
commit 34dc9aec52
9428 changed files with 1733330 additions and 0 deletions
@@ -0,0 +1,22 @@
/**
* This will memoize the matchers if the loaded data is comparable.
*/ export class CachedRouteMatcherProvider {
constructor(loader){
this.loader = loader;
this.cached = [];
}
async matchers() {
const data = await this.loader.load();
if (!data) return [];
// Return the cached matchers if the data has not changed.
if (this.data && this.loader.compare(this.data, data)) return this.cached;
this.data = data;
// Transform the manifest into matchers.
const matchers = await this.transform(data);
// Cache the matchers.
this.cached = matchers;
return matchers;
}
}
//# sourceMappingURL=cached-route-matcher-provider.js.map
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/route-matcher-providers/helpers/cached-route-matcher-provider.ts"],"sourcesContent":["import type { RouteMatcherProvider } from '../route-matcher-provider'\nimport type { RouteMatcher } from '../../route-matchers/route-matcher'\n\ninterface LoaderComparable<D> {\n load(): Promise<D>\n compare(left: D, right: D): boolean\n}\n\n/**\n * This will memoize the matchers if the loaded data is comparable.\n */\nexport abstract class CachedRouteMatcherProvider<\n M extends RouteMatcher = RouteMatcher,\n D = any,\n> implements RouteMatcherProvider<M>\n{\n private data?: D\n private cached: ReadonlyArray<M> = []\n\n constructor(private readonly loader: LoaderComparable<D>) {}\n\n protected abstract transform(data: D): Promise<ReadonlyArray<M>>\n\n public async matchers(): Promise<readonly M[]> {\n const data = await this.loader.load()\n if (!data) return []\n\n // Return the cached matchers if the data has not changed.\n if (this.data && this.loader.compare(this.data, data)) return this.cached\n this.data = data\n\n // Transform the manifest into matchers.\n const matchers = await this.transform(data)\n\n // Cache the matchers.\n this.cached = matchers\n\n return matchers\n }\n}\n"],"names":["CachedRouteMatcherProvider","constructor","loader","cached","matchers","data","load","compare","transform"],"mappings":"AAQA;;CAEC,GACD,OAAO,MAAeA;IAQpBC,YAAY,AAAiBC,MAA2B,CAAE;aAA7BA,SAAAA;aAFrBC,SAA2B,EAAE;IAEsB;IAI3D,MAAaC,WAAkC;QAC7C,MAAMC,OAAO,MAAM,IAAI,CAACH,MAAM,CAACI,IAAI;QACnC,IAAI,CAACD,MAAM,OAAO,EAAE;QAEpB,0DAA0D;QAC1D,IAAI,IAAI,CAACA,IAAI,IAAI,IAAI,CAACH,MAAM,CAACK,OAAO,CAAC,IAAI,CAACF,IAAI,EAAEA,OAAO,OAAO,IAAI,CAACF,MAAM;QACzE,IAAI,CAACE,IAAI,GAAGA;QAEZ,wCAAwC;QACxC,MAAMD,WAAW,MAAM,IAAI,CAACI,SAAS,CAACH;QAEtC,sBAAsB;QACtB,IAAI,CAACF,MAAM,GAAGC;QAEd,OAAOA;IACT;AACF","ignoreList":[0]}
@@ -0,0 +1,3 @@
export { };
//# sourceMappingURL=manifest-loader.js.map
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/server/route-matcher-providers/helpers/manifest-loaders/manifest-loader.ts"],"sourcesContent":["export type Manifest = Record<string, string>\n\nexport interface ManifestLoader {\n load(name: string): Manifest | null\n}\n"],"names":[],"mappings":"AAEA,WAEC","ignoreList":[0]}
@@ -0,0 +1,19 @@
import { SERVER_DIRECTORY } from '../../../../shared/lib/constants';
import path from '../../../../shared/lib/isomorphic/path';
export class NodeManifestLoader {
constructor(distDir){
this.distDir = distDir;
}
static require(id) {
try {
return require(id);
} catch {
return null;
}
}
load(name) {
return NodeManifestLoader.require(path.join(this.distDir, SERVER_DIRECTORY, name));
}
}
//# sourceMappingURL=node-manifest-loader.js.map
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.ts"],"sourcesContent":["import { SERVER_DIRECTORY } from '../../../../shared/lib/constants'\nimport path from '../../../../shared/lib/isomorphic/path'\nimport type { Manifest, ManifestLoader } from './manifest-loader'\n\nexport class NodeManifestLoader implements ManifestLoader {\n constructor(private readonly distDir: string) {}\n\n static require(id: string) {\n try {\n return require(id)\n } catch {\n return null\n }\n }\n\n public load(name: string): Manifest | null {\n return NodeManifestLoader.require(\n path.join(this.distDir, SERVER_DIRECTORY, name)\n )\n }\n}\n"],"names":["SERVER_DIRECTORY","path","NodeManifestLoader","constructor","distDir","require","id","load","name","join"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAkC;AACnE,OAAOC,UAAU,yCAAwC;AAGzD,OAAO,MAAMC;IACXC,YAAY,AAAiBC,OAAe,CAAE;aAAjBA,UAAAA;IAAkB;IAE/C,OAAOC,QAAQC,EAAU,EAAE;QACzB,IAAI;YACF,OAAOD,QAAQC;QACjB,EAAE,OAAM;YACN,OAAO;QACT;IACF;IAEOC,KAAKC,IAAY,EAAmB;QACzC,OAAON,mBAAmBG,OAAO,CAC/BJ,KAAKQ,IAAI,CAAC,IAAI,CAACL,OAAO,EAAEJ,kBAAkBQ;IAE9C;AACF","ignoreList":[0]}
@@ -0,0 +1,10 @@
export class ServerManifestLoader {
constructor(getter){
this.getter = getter;
}
load(name) {
return this.getter(name);
}
}
//# sourceMappingURL=server-manifest-loader.js.map
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.ts"],"sourcesContent":["import type { Manifest, ManifestLoader } from './manifest-loader'\n\nexport class ServerManifestLoader implements ManifestLoader {\n constructor(private readonly getter: (name: string) => Manifest | null) {}\n\n public load(name: string): Manifest | null {\n return this.getter(name)\n }\n}\n"],"names":["ServerManifestLoader","constructor","getter","load","name"],"mappings":"AAEA,OAAO,MAAMA;IACXC,YAAY,AAAiBC,MAAyC,CAAE;aAA3CA,SAAAA;IAA4C;IAElEC,KAAKC,IAAY,EAAmB;QACzC,OAAO,IAAI,CAACF,MAAM,CAACE;IACrB;AACF","ignoreList":[0]}