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,18 @@
import type { RouteMatcherProvider } from '../route-matcher-provider';
import type { RouteMatcher } from '../../route-matchers/route-matcher';
interface LoaderComparable<D> {
load(): Promise<D>;
compare(left: D, right: D): boolean;
}
/**
* This will memoize the matchers if the loaded data is comparable.
*/
export declare abstract class CachedRouteMatcherProvider<M extends RouteMatcher = RouteMatcher, D = any> implements RouteMatcherProvider<M> {
private readonly loader;
private data?;
private cached;
constructor(loader: LoaderComparable<D>);
protected abstract transform(data: D): Promise<ReadonlyArray<M>>;
matchers(): Promise<readonly M[]>;
}
export {};
@@ -0,0 +1,30 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "CachedRouteMatcherProvider", {
enumerable: true,
get: function() {
return CachedRouteMatcherProvider;
}
});
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":";;;;+BAWsBA;;;eAAAA;;;AAAf,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,4 @@
export type Manifest = Record<string, string>;
export interface ManifestLoader {
load(name: string): Manifest | null;
}
@@ -0,0 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
//# sourceMappingURL=manifest-loader.js.map
@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,7 @@
import type { Manifest, ManifestLoader } from './manifest-loader';
export declare class NodeManifestLoader implements ManifestLoader {
private readonly distDir;
constructor(distDir: string);
static require(id: string): any;
load(name: string): Manifest | null;
}
@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "NodeManifestLoader", {
enumerable: true,
get: function() {
return NodeManifestLoader;
}
});
const _constants = require("../../../../shared/lib/constants");
const _path = /*#__PURE__*/ _interop_require_default(require("../../../../shared/lib/isomorphic/path"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
class NodeManifestLoader {
constructor(distDir){
this.distDir = distDir;
}
static require(id) {
try {
return require(id);
} catch {
return null;
}
}
load(name) {
return NodeManifestLoader.require(_path.default.join(this.distDir, _constants.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":["NodeManifestLoader","constructor","distDir","require","id","load","name","path","join","SERVER_DIRECTORY"],"mappings":";;;;+BAIaA;;;eAAAA;;;2BAJoB;6DAChB;;;;;;AAGV,MAAMA;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/BI,aAAI,CAACC,IAAI,CAAC,IAAI,CAACN,OAAO,EAAEO,2BAAgB,EAAEH;IAE9C;AACF","ignoreList":[0]}
@@ -0,0 +1,6 @@
import type { Manifest, ManifestLoader } from './manifest-loader';
export declare class ServerManifestLoader implements ManifestLoader {
private readonly getter;
constructor(getter: (name: string) => Manifest | null);
load(name: string): Manifest | null;
}
@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "ServerManifestLoader", {
enumerable: true,
get: function() {
return ServerManifestLoader;
}
});
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":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACXC,YAAY,AAAiBC,MAAyC,CAAE;aAA3CA,SAAAA;IAA4C;IAElEC,KAAKC,IAAY,EAAmB;QACzC,OAAO,IAAI,CAACF,MAAM,CAACE;IACrB;AACF","ignoreList":[0]}