inital commit

This commit is contained in:
2026-01-01 15:25:19 +05:30
commit f0ae49465a
36361 changed files with 4894111 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import { absolutePathToPage } from '../../shared/lib/page-path/absolute-path-to-page';
/**
* Normalizes a given filename so that it's relative to the provided directory.
* It will also strip the extension (if provided) and the trailing `/index`.
*/ export class AbsoluteFilenameNormalizer {
/**
*
* @param dir the directory for which the files should be made relative to
* @param extensions the extensions the file could have
* @param keepIndex when `true` the trailing `/index` is _not_ removed
*/ constructor(dir, extensions, pagesType){
this.dir = dir;
this.extensions = extensions;
this.pagesType = pagesType;
}
normalize(filename) {
return absolutePathToPage(filename, {
extensions: this.extensions,
keepIndex: false,
dir: this.dir,
pagesType: this.pagesType
});
}
}
//# sourceMappingURL=absolute-filename-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/absolute-filename-normalizer.ts"],"sourcesContent":["import type { PAGE_TYPES } from '../../lib/page-types'\nimport { absolutePathToPage } from '../../shared/lib/page-path/absolute-path-to-page'\nimport type { Normalizer } from './normalizer'\n\n/**\n * Normalizes a given filename so that it's relative to the provided directory.\n * It will also strip the extension (if provided) and the trailing `/index`.\n */\nexport class AbsoluteFilenameNormalizer implements Normalizer {\n /**\n *\n * @param dir the directory for which the files should be made relative to\n * @param extensions the extensions the file could have\n * @param keepIndex when `true` the trailing `/index` is _not_ removed\n */\n constructor(\n private readonly dir: string,\n private readonly extensions: ReadonlyArray<string>,\n private readonly pagesType: PAGE_TYPES\n ) {}\n\n public normalize(filename: string): string {\n return absolutePathToPage(filename, {\n extensions: this.extensions,\n keepIndex: false,\n dir: this.dir,\n pagesType: this.pagesType,\n })\n }\n}\n"],"names":["absolutePathToPage","AbsoluteFilenameNormalizer","constructor","dir","extensions","pagesType","normalize","filename","keepIndex"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,mDAAkD;AAGrF;;;CAGC,GACD,OAAO,MAAMC;IACX;;;;;GAKC,GACDC,YACE,AAAiBC,GAAW,EAC5B,AAAiBC,UAAiC,EAClD,AAAiBC,SAAqB,CACtC;aAHiBF,MAAAA;aACAC,aAAAA;aACAC,YAAAA;IAChB;IAEIC,UAAUC,QAAgB,EAAU;QACzC,OAAOP,mBAAmBO,UAAU;YAClCH,YAAY,IAAI,CAACA,UAAU;YAC3BI,WAAW;YACXL,KAAK,IAAI,CAACA,GAAG;YACbE,WAAW,IAAI,CAACA,SAAS;QAC3B;IACF;AACF"}

View File

@@ -0,0 +1,26 @@
import { Normalizers } from '../../normalizers';
import { PrefixingNormalizer } from '../../prefixing-normalizer';
import { normalizePagePath } from '../../../../shared/lib/page-path/normalize-page-path';
export class AppBundlePathNormalizer extends PrefixingNormalizer {
constructor(){
super('app');
}
normalize(page) {
return super.normalize(normalizePagePath(page));
}
}
export class DevAppBundlePathNormalizer extends Normalizers {
constructor(pageNormalizer){
super([
// This should normalize the filename to a page.
pageNormalizer,
// Normalize the app page to a pathname.
new AppBundlePathNormalizer()
]);
}
normalize(filename) {
return super.normalize(filename);
}
}
//# sourceMappingURL=app-bundle-path-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/app/app-bundle-path-normalizer.ts"],"sourcesContent":["import { Normalizers } from '../../normalizers'\nimport type { Normalizer } from '../../normalizer'\nimport { PrefixingNormalizer } from '../../prefixing-normalizer'\nimport { normalizePagePath } from '../../../../shared/lib/page-path/normalize-page-path'\n\nexport class AppBundlePathNormalizer extends PrefixingNormalizer {\n constructor() {\n super('app')\n }\n\n public normalize(page: string): string {\n return super.normalize(normalizePagePath(page))\n }\n}\n\nexport class DevAppBundlePathNormalizer extends Normalizers {\n constructor(pageNormalizer: Normalizer) {\n super([\n // This should normalize the filename to a page.\n pageNormalizer,\n // Normalize the app page to a pathname.\n new AppBundlePathNormalizer(),\n ])\n }\n\n public normalize(filename: string): string {\n return super.normalize(filename)\n }\n}\n"],"names":["Normalizers","PrefixingNormalizer","normalizePagePath","AppBundlePathNormalizer","constructor","normalize","page","DevAppBundlePathNormalizer","pageNormalizer","filename"],"mappings":"AAAA,SAASA,WAAW,QAAQ,oBAAmB;AAE/C,SAASC,mBAAmB,QAAQ,6BAA4B;AAChE,SAASC,iBAAiB,QAAQ,uDAAsD;AAExF,OAAO,MAAMC,gCAAgCF;IAC3CG,aAAc;QACZ,KAAK,CAAC;IACR;IAEOC,UAAUC,IAAY,EAAU;QACrC,OAAO,KAAK,CAACD,UAAUH,kBAAkBI;IAC3C;AACF;AAEA,OAAO,MAAMC,mCAAmCP;IAC9CI,YAAYI,cAA0B,CAAE;QACtC,KAAK,CAAC;YACJ,gDAAgD;YAChDA;YACA,wCAAwC;YACxC,IAAIL;SACL;IACH;IAEOE,UAAUI,QAAgB,EAAU;QACzC,OAAO,KAAK,CAACJ,UAAUI;IACzB;AACF"}

View File

@@ -0,0 +1,12 @@
import { SERVER_DIRECTORY } from '../../../../shared/lib/constants';
import { PrefixingNormalizer } from '../../prefixing-normalizer';
export class AppFilenameNormalizer extends PrefixingNormalizer {
constructor(distDir){
super(distDir, SERVER_DIRECTORY);
}
normalize(manifestFilename) {
return super.normalize(manifestFilename);
}
}
//# sourceMappingURL=app-filename-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/app/app-filename-normalizer.ts"],"sourcesContent":["import { SERVER_DIRECTORY } from '../../../../shared/lib/constants'\nimport { PrefixingNormalizer } from '../../prefixing-normalizer'\n\nexport class AppFilenameNormalizer extends PrefixingNormalizer {\n constructor(distDir: string) {\n super(distDir, SERVER_DIRECTORY)\n }\n\n public normalize(manifestFilename: string): string {\n return super.normalize(manifestFilename)\n }\n}\n"],"names":["SERVER_DIRECTORY","PrefixingNormalizer","AppFilenameNormalizer","constructor","distDir","normalize","manifestFilename"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAkC;AACnE,SAASC,mBAAmB,QAAQ,6BAA4B;AAEhE,OAAO,MAAMC,8BAA8BD;IACzCE,YAAYC,OAAe,CAAE;QAC3B,KAAK,CAACA,SAASJ;IACjB;IAEOK,UAAUC,gBAAwB,EAAU;QACjD,OAAO,KAAK,CAACD,UAAUC;IACzB;AACF"}

View File

@@ -0,0 +1,12 @@
import { PAGE_TYPES } from '../../../../lib/page-types';
import { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer';
/**
* DevAppPageNormalizer is a normalizer that is used to normalize a pathname
* to a page in the `app` directory.
*/ export class DevAppPageNormalizer extends AbsoluteFilenameNormalizer {
constructor(appDir, extensions){
super(appDir, extensions, PAGE_TYPES.APP);
}
}
//# sourceMappingURL=app-page-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/app/app-page-normalizer.ts"],"sourcesContent":["import { PAGE_TYPES } from '../../../../lib/page-types'\nimport { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer'\n\n/**\n * DevAppPageNormalizer is a normalizer that is used to normalize a pathname\n * to a page in the `app` directory.\n */\nexport class DevAppPageNormalizer extends AbsoluteFilenameNormalizer {\n constructor(appDir: string, extensions: ReadonlyArray<string>) {\n super(appDir, extensions, PAGE_TYPES.APP)\n }\n}\n"],"names":["PAGE_TYPES","AbsoluteFilenameNormalizer","DevAppPageNormalizer","constructor","appDir","extensions","APP"],"mappings":"AAAA,SAASA,UAAU,QAAQ,6BAA4B;AACvD,SAASC,0BAA0B,QAAQ,qCAAoC;AAE/E;;;CAGC,GACD,OAAO,MAAMC,6BAA6BD;IACxCE,YAAYC,MAAc,EAAEC,UAAiC,CAAE;QAC7D,KAAK,CAACD,QAAQC,YAAYL,WAAWM,GAAG;IAC1C;AACF"}

View File

@@ -0,0 +1,33 @@
import { normalizeAppPath } from '../../../../shared/lib/router/utils/app-paths';
import { Normalizers } from '../../normalizers';
import { wrapNormalizerFn } from '../../wrap-normalizer-fn';
import { UnderscoreNormalizer } from '../../underscore-normalizer';
export class AppPathnameNormalizer extends Normalizers {
constructor(){
super([
// The pathname to match should have the trailing `/page` and other route
// group information stripped from it.
wrapNormalizerFn(normalizeAppPath),
// The page should have the `%5F` characters replaced with `_` characters.
new UnderscoreNormalizer()
]);
}
normalize(page) {
return super.normalize(page);
}
}
export class DevAppPathnameNormalizer extends Normalizers {
constructor(pageNormalizer){
super([
// This should normalize the filename to a page.
pageNormalizer,
// Normalize the app page to a pathname.
new AppPathnameNormalizer()
]);
}
normalize(filename) {
return super.normalize(filename);
}
}
//# sourceMappingURL=app-pathname-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/app/app-pathname-normalizer.ts"],"sourcesContent":["import { normalizeAppPath } from '../../../../shared/lib/router/utils/app-paths'\nimport { Normalizers } from '../../normalizers'\nimport { wrapNormalizerFn } from '../../wrap-normalizer-fn'\nimport { UnderscoreNormalizer } from '../../underscore-normalizer'\nimport type { Normalizer } from '../../normalizer'\n\nexport class AppPathnameNormalizer extends Normalizers {\n constructor() {\n super([\n // The pathname to match should have the trailing `/page` and other route\n // group information stripped from it.\n wrapNormalizerFn(normalizeAppPath),\n // The page should have the `%5F` characters replaced with `_` characters.\n new UnderscoreNormalizer(),\n ])\n }\n\n public normalize(page: string): string {\n return super.normalize(page)\n }\n}\n\nexport class DevAppPathnameNormalizer extends Normalizers {\n constructor(pageNormalizer: Normalizer) {\n super([\n // This should normalize the filename to a page.\n pageNormalizer,\n // Normalize the app page to a pathname.\n new AppPathnameNormalizer(),\n ])\n }\n\n public normalize(filename: string): string {\n return super.normalize(filename)\n }\n}\n"],"names":["normalizeAppPath","Normalizers","wrapNormalizerFn","UnderscoreNormalizer","AppPathnameNormalizer","constructor","normalize","page","DevAppPathnameNormalizer","pageNormalizer","filename"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gDAA+C;AAChF,SAASC,WAAW,QAAQ,oBAAmB;AAC/C,SAASC,gBAAgB,QAAQ,2BAA0B;AAC3D,SAASC,oBAAoB,QAAQ,8BAA6B;AAGlE,OAAO,MAAMC,8BAA8BH;IACzCI,aAAc;QACZ,KAAK,CAAC;YACJ,yEAAyE;YACzE,sCAAsC;YACtCH,iBAAiBF;YACjB,0EAA0E;YAC1E,IAAIG;SACL;IACH;IAEOG,UAAUC,IAAY,EAAU;QACrC,OAAO,KAAK,CAACD,UAAUC;IACzB;AACF;AAEA,OAAO,MAAMC,iCAAiCP;IAC5CI,YAAYI,cAA0B,CAAE;QACtC,KAAK,CAAC;YACJ,gDAAgD;YAChDA;YACA,wCAAwC;YACxC,IAAIL;SACL;IACH;IAEOE,UAAUI,QAAgB,EAAU;QACzC,OAAO,KAAK,CAACJ,UAAUI;IACzB;AACF"}

View File

@@ -0,0 +1,20 @@
import { AppBundlePathNormalizer, DevAppBundlePathNormalizer } from './app-bundle-path-normalizer';
import { AppFilenameNormalizer } from './app-filename-normalizer';
import { DevAppPageNormalizer } from './app-page-normalizer';
import { AppPathnameNormalizer, DevAppPathnameNormalizer } from './app-pathname-normalizer';
export class AppNormalizers {
constructor(distDir){
this.filename = new AppFilenameNormalizer(distDir);
this.pathname = new AppPathnameNormalizer();
this.bundlePath = new AppBundlePathNormalizer();
}
}
export class DevAppNormalizers {
constructor(appDir, extensions){
this.page = new DevAppPageNormalizer(appDir, extensions);
this.pathname = new DevAppPathnameNormalizer(this.page);
this.bundlePath = new DevAppBundlePathNormalizer(this.page);
}
}
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/app/index.ts"],"sourcesContent":["import {\n AppBundlePathNormalizer,\n DevAppBundlePathNormalizer,\n} from './app-bundle-path-normalizer'\nimport { AppFilenameNormalizer } from './app-filename-normalizer'\nimport { DevAppPageNormalizer } from './app-page-normalizer'\nimport {\n AppPathnameNormalizer,\n DevAppPathnameNormalizer,\n} from './app-pathname-normalizer'\n\nexport class AppNormalizers {\n public readonly filename: AppFilenameNormalizer\n public readonly pathname: AppPathnameNormalizer\n public readonly bundlePath: AppBundlePathNormalizer\n\n constructor(distDir: string) {\n this.filename = new AppFilenameNormalizer(distDir)\n this.pathname = new AppPathnameNormalizer()\n this.bundlePath = new AppBundlePathNormalizer()\n }\n}\n\nexport class DevAppNormalizers {\n public readonly page: DevAppPageNormalizer\n public readonly pathname: DevAppPathnameNormalizer\n public readonly bundlePath: DevAppBundlePathNormalizer\n\n constructor(appDir: string, extensions: ReadonlyArray<string>) {\n this.page = new DevAppPageNormalizer(appDir, extensions)\n this.pathname = new DevAppPathnameNormalizer(this.page)\n this.bundlePath = new DevAppBundlePathNormalizer(this.page)\n }\n}\n"],"names":["AppBundlePathNormalizer","DevAppBundlePathNormalizer","AppFilenameNormalizer","DevAppPageNormalizer","AppPathnameNormalizer","DevAppPathnameNormalizer","AppNormalizers","constructor","distDir","filename","pathname","bundlePath","DevAppNormalizers","appDir","extensions","page"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,0BAA0B,QACrB,+BAA8B;AACrC,SAASC,qBAAqB,QAAQ,4BAA2B;AACjE,SAASC,oBAAoB,QAAQ,wBAAuB;AAC5D,SACEC,qBAAqB,EACrBC,wBAAwB,QACnB,4BAA2B;AAElC,OAAO,MAAMC;IAKXC,YAAYC,OAAe,CAAE;QAC3B,IAAI,CAACC,QAAQ,GAAG,IAAIP,sBAAsBM;QAC1C,IAAI,CAACE,QAAQ,GAAG,IAAIN;QACpB,IAAI,CAACO,UAAU,GAAG,IAAIX;IACxB;AACF;AAEA,OAAO,MAAMY;IAKXL,YAAYM,MAAc,EAAEC,UAAiC,CAAE;QAC7D,IAAI,CAACC,IAAI,GAAG,IAAIZ,qBAAqBU,QAAQC;QAC7C,IAAI,CAACJ,QAAQ,GAAG,IAAIL,yBAAyB,IAAI,CAACU,IAAI;QACtD,IAAI,CAACJ,UAAU,GAAG,IAAIV,2BAA2B,IAAI,CAACc,IAAI;IAC5D;AACF"}

View File

@@ -0,0 +1,22 @@
import { DevPagesBundlePathNormalizer, PagesBundlePathNormalizer } from './pages-bundle-path-normalizer';
import { PagesFilenameNormalizer } from './pages-filename-normalizer';
import { DevPagesPageNormalizer } from './pages-page-normalizer';
import { DevPagesPathnameNormalizer } from './pages-pathname-normalizer';
export class PagesNormalizers {
constructor(distDir){
this.filename = new PagesFilenameNormalizer(distDir);
this.bundlePath = new PagesBundlePathNormalizer();
// You'd think that we'd require a `pathname` normalizer here, but for
// `/pages` we have to handle i18n routes, which means that we need to
// analyze the page path to determine the locale prefix and it's locale.
}
}
export class DevPagesNormalizers {
constructor(pagesDir, extensions){
this.page = new DevPagesPageNormalizer(pagesDir, extensions);
this.pathname = new DevPagesPathnameNormalizer(pagesDir, extensions);
this.bundlePath = new DevPagesBundlePathNormalizer(this.page);
}
}
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/pages/index.ts"],"sourcesContent":["import {\n DevPagesBundlePathNormalizer,\n PagesBundlePathNormalizer,\n} from './pages-bundle-path-normalizer'\nimport { PagesFilenameNormalizer } from './pages-filename-normalizer'\nimport { DevPagesPageNormalizer } from './pages-page-normalizer'\nimport { DevPagesPathnameNormalizer } from './pages-pathname-normalizer'\n\nexport class PagesNormalizers {\n public readonly filename: PagesFilenameNormalizer\n public readonly bundlePath: PagesBundlePathNormalizer\n\n constructor(distDir: string) {\n this.filename = new PagesFilenameNormalizer(distDir)\n this.bundlePath = new PagesBundlePathNormalizer()\n\n // You'd think that we'd require a `pathname` normalizer here, but for\n // `/pages` we have to handle i18n routes, which means that we need to\n // analyze the page path to determine the locale prefix and it's locale.\n }\n}\n\nexport class DevPagesNormalizers {\n public readonly page: DevPagesPageNormalizer\n public readonly pathname: DevPagesPathnameNormalizer\n public readonly bundlePath: DevPagesBundlePathNormalizer\n\n constructor(pagesDir: string, extensions: ReadonlyArray<string>) {\n this.page = new DevPagesPageNormalizer(pagesDir, extensions)\n this.pathname = new DevPagesPathnameNormalizer(pagesDir, extensions)\n this.bundlePath = new DevPagesBundlePathNormalizer(this.page)\n }\n}\n"],"names":["DevPagesBundlePathNormalizer","PagesBundlePathNormalizer","PagesFilenameNormalizer","DevPagesPageNormalizer","DevPagesPathnameNormalizer","PagesNormalizers","constructor","distDir","filename","bundlePath","DevPagesNormalizers","pagesDir","extensions","page","pathname"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,yBAAyB,QACpB,iCAAgC;AACvC,SAASC,uBAAuB,QAAQ,8BAA6B;AACrE,SAASC,sBAAsB,QAAQ,0BAAyB;AAChE,SAASC,0BAA0B,QAAQ,8BAA6B;AAExE,OAAO,MAAMC;IAIXC,YAAYC,OAAe,CAAE;QAC3B,IAAI,CAACC,QAAQ,GAAG,IAAIN,wBAAwBK;QAC5C,IAAI,CAACE,UAAU,GAAG,IAAIR;IAEtB,sEAAsE;IACtE,sEAAsE;IACtE,wEAAwE;IAC1E;AACF;AAEA,OAAO,MAAMS;IAKXJ,YAAYK,QAAgB,EAAEC,UAAiC,CAAE;QAC/D,IAAI,CAACC,IAAI,GAAG,IAAIV,uBAAuBQ,UAAUC;QACjD,IAAI,CAACE,QAAQ,GAAG,IAAIV,2BAA2BO,UAAUC;QACzD,IAAI,CAACH,UAAU,GAAG,IAAIT,6BAA6B,IAAI,CAACa,IAAI;IAC9D;AACF"}

View File

@@ -0,0 +1,33 @@
import { normalizePagePath } from '../../../../shared/lib/page-path/normalize-page-path';
import { Normalizers } from '../../normalizers';
import { PrefixingNormalizer } from '../../prefixing-normalizer';
import { wrapNormalizerFn } from '../../wrap-normalizer-fn';
export class PagesBundlePathNormalizer extends Normalizers {
constructor(){
super([
// The bundle path should have the trailing `/index` stripped from
// it.
wrapNormalizerFn(normalizePagePath),
// The page should prefixed with `pages/`.
new PrefixingNormalizer('pages')
]);
}
normalize(page) {
return super.normalize(page);
}
}
export class DevPagesBundlePathNormalizer extends Normalizers {
constructor(pagesNormalizer){
super([
// This should normalize the filename to a page.
pagesNormalizer,
// Normalize the app page to a pathname.
new PagesBundlePathNormalizer()
]);
}
normalize(filename) {
return super.normalize(filename);
}
}
//# sourceMappingURL=pages-bundle-path-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/pages/pages-bundle-path-normalizer.ts"],"sourcesContent":["import { normalizePagePath } from '../../../../shared/lib/page-path/normalize-page-path'\nimport type { Normalizer } from '../../normalizer'\nimport { Normalizers } from '../../normalizers'\nimport { PrefixingNormalizer } from '../../prefixing-normalizer'\nimport { wrapNormalizerFn } from '../../wrap-normalizer-fn'\n\nexport class PagesBundlePathNormalizer extends Normalizers {\n constructor() {\n super([\n // The bundle path should have the trailing `/index` stripped from\n // it.\n wrapNormalizerFn(normalizePagePath),\n // The page should prefixed with `pages/`.\n new PrefixingNormalizer('pages'),\n ])\n }\n\n public normalize(page: string): string {\n return super.normalize(page)\n }\n}\n\nexport class DevPagesBundlePathNormalizer extends Normalizers {\n constructor(pagesNormalizer: Normalizer) {\n super([\n // This should normalize the filename to a page.\n pagesNormalizer,\n // Normalize the app page to a pathname.\n new PagesBundlePathNormalizer(),\n ])\n }\n\n public normalize(filename: string): string {\n return super.normalize(filename)\n }\n}\n"],"names":["normalizePagePath","Normalizers","PrefixingNormalizer","wrapNormalizerFn","PagesBundlePathNormalizer","constructor","normalize","page","DevPagesBundlePathNormalizer","pagesNormalizer","filename"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uDAAsD;AAExF,SAASC,WAAW,QAAQ,oBAAmB;AAC/C,SAASC,mBAAmB,QAAQ,6BAA4B;AAChE,SAASC,gBAAgB,QAAQ,2BAA0B;AAE3D,OAAO,MAAMC,kCAAkCH;IAC7CI,aAAc;QACZ,KAAK,CAAC;YACJ,kEAAkE;YAClE,MAAM;YACNF,iBAAiBH;YACjB,0CAA0C;YAC1C,IAAIE,oBAAoB;SACzB;IACH;IAEOI,UAAUC,IAAY,EAAU;QACrC,OAAO,KAAK,CAACD,UAAUC;IACzB;AACF;AAEA,OAAO,MAAMC,qCAAqCP;IAChDI,YAAYI,eAA2B,CAAE;QACvC,KAAK,CAAC;YACJ,gDAAgD;YAChDA;YACA,wCAAwC;YACxC,IAAIL;SACL;IACH;IAEOE,UAAUI,QAAgB,EAAU;QACzC,OAAO,KAAK,CAACJ,UAAUI;IACzB;AACF"}

View File

@@ -0,0 +1,12 @@
import { SERVER_DIRECTORY } from '../../../../shared/lib/constants';
import { PrefixingNormalizer } from '../../prefixing-normalizer';
export class PagesFilenameNormalizer extends PrefixingNormalizer {
constructor(distDir){
super(distDir, SERVER_DIRECTORY);
}
normalize(manifestFilename) {
return super.normalize(manifestFilename);
}
}
//# sourceMappingURL=pages-filename-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/pages/pages-filename-normalizer.ts"],"sourcesContent":["import { SERVER_DIRECTORY } from '../../../../shared/lib/constants'\nimport { PrefixingNormalizer } from '../../prefixing-normalizer'\n\nexport class PagesFilenameNormalizer extends PrefixingNormalizer {\n constructor(distDir: string) {\n super(distDir, SERVER_DIRECTORY)\n }\n\n public normalize(manifestFilename: string): string {\n return super.normalize(manifestFilename)\n }\n}\n"],"names":["SERVER_DIRECTORY","PrefixingNormalizer","PagesFilenameNormalizer","constructor","distDir","normalize","manifestFilename"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAkC;AACnE,SAASC,mBAAmB,QAAQ,6BAA4B;AAEhE,OAAO,MAAMC,gCAAgCD;IAC3CE,YAAYC,OAAe,CAAE;QAC3B,KAAK,CAACA,SAASJ;IACjB;IAEOK,UAAUC,gBAAwB,EAAU;QACjD,OAAO,KAAK,CAACD,UAAUC;IACzB;AACF"}

View File

@@ -0,0 +1,9 @@
import { PAGE_TYPES } from '../../../../lib/page-types';
import { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer';
export class DevPagesPageNormalizer extends AbsoluteFilenameNormalizer {
constructor(pagesDir, extensions){
super(pagesDir, extensions, PAGE_TYPES.PAGES);
}
}
//# sourceMappingURL=pages-page-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/pages/pages-page-normalizer.ts"],"sourcesContent":["import { PAGE_TYPES } from '../../../../lib/page-types'\nimport { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer'\n\nexport class DevPagesPageNormalizer extends AbsoluteFilenameNormalizer {\n constructor(pagesDir: string, extensions: ReadonlyArray<string>) {\n super(pagesDir, extensions, PAGE_TYPES.PAGES)\n }\n}\n"],"names":["PAGE_TYPES","AbsoluteFilenameNormalizer","DevPagesPageNormalizer","constructor","pagesDir","extensions","PAGES"],"mappings":"AAAA,SAASA,UAAU,QAAQ,6BAA4B;AACvD,SAASC,0BAA0B,QAAQ,qCAAoC;AAE/E,OAAO,MAAMC,+BAA+BD;IAC1CE,YAAYC,QAAgB,EAAEC,UAAiC,CAAE;QAC/D,KAAK,CAACD,UAAUC,YAAYL,WAAWM,KAAK;IAC9C;AACF"}

View File

@@ -0,0 +1,9 @@
import { PAGE_TYPES } from '../../../../lib/page-types';
import { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer';
export class DevPagesPathnameNormalizer extends AbsoluteFilenameNormalizer {
constructor(pagesDir, extensions){
super(pagesDir, extensions, PAGE_TYPES.PAGES);
}
}
//# sourceMappingURL=pages-pathname-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../src/server/normalizers/built/pages/pages-pathname-normalizer.ts"],"sourcesContent":["import { PAGE_TYPES } from '../../../../lib/page-types'\nimport { AbsoluteFilenameNormalizer } from '../../absolute-filename-normalizer'\n\nexport class DevPagesPathnameNormalizer extends AbsoluteFilenameNormalizer {\n constructor(pagesDir: string, extensions: ReadonlyArray<string>) {\n super(pagesDir, extensions, PAGE_TYPES.PAGES)\n }\n}\n"],"names":["PAGE_TYPES","AbsoluteFilenameNormalizer","DevPagesPathnameNormalizer","constructor","pagesDir","extensions","PAGES"],"mappings":"AAAA,SAASA,UAAU,QAAQ,6BAA4B;AACvD,SAASC,0BAA0B,QAAQ,qCAAoC;AAE/E,OAAO,MAAMC,mCAAmCD;IAC9CE,YAAYC,QAAgB,EAAEC,UAAiC,CAAE;QAC/D,KAAK,CAACD,UAAUC,YAAYL,WAAWM,KAAK;IAC9C;AACF"}

View File

@@ -0,0 +1,18 @@
/**
* Normalizes the pathname by removing the locale prefix if any.
*/ export class LocaleRouteNormalizer {
constructor(provider){
this.provider = provider;
}
/**
* Normalizes the pathname by removing the locale prefix if any.
*
* @param pathname The pathname to normalize.
* @returns The pathname without the locale prefix (if any).
*/ normalize(pathname) {
const match = this.provider.analyze(pathname);
return match.pathname;
}
}
//# sourceMappingURL=locale-route-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/locale-route-normalizer.ts"],"sourcesContent":["import type { I18NProvider } from '../lib/i18n-provider'\nimport type { Normalizer } from './normalizer'\n\n/**\n * Normalizes the pathname by removing the locale prefix if any.\n */\nexport class LocaleRouteNormalizer implements Normalizer {\n constructor(private readonly provider: I18NProvider) {}\n\n /**\n * Normalizes the pathname by removing the locale prefix if any.\n *\n * @param pathname The pathname to normalize.\n * @returns The pathname without the locale prefix (if any).\n */\n public normalize(pathname: string): string {\n const match = this.provider.analyze(pathname)\n return match.pathname\n }\n}\n"],"names":["LocaleRouteNormalizer","constructor","provider","normalize","pathname","match","analyze"],"mappings":"AAGA;;CAEC,GACD,OAAO,MAAMA;IACXC,YAAY,AAAiBC,QAAsB,CAAE;aAAxBA,WAAAA;IAAyB;IAEtD;;;;;GAKC,GACD,AAAOC,UAAUC,QAAgB,EAAU;QACzC,MAAMC,QAAQ,IAAI,CAACH,QAAQ,CAACI,OAAO,CAACF;QACpC,OAAOC,MAAMD,QAAQ;IACvB;AACF"}

View File

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

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/normalizer.ts"],"sourcesContent":["export interface Normalizer {\n normalize(pathname: string): string\n}\n"],"names":[],"mappings":"AAAA,WAEC"}

View File

@@ -0,0 +1,16 @@
/**
* Normalizers combines many normalizers into a single normalizer interface that
* will normalize the inputted pathname with each normalizer in order.
*/ export class Normalizers {
constructor(normalizers = []){
this.normalizers = normalizers;
}
push(normalizer) {
this.normalizers.push(normalizer);
}
normalize(pathname) {
return this.normalizers.reduce((normalized, normalizer)=>normalizer.normalize(normalized), pathname);
}
}
//# sourceMappingURL=normalizers.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/normalizers.ts"],"sourcesContent":["import type { Normalizer } from './normalizer'\n\n/**\n * Normalizers combines many normalizers into a single normalizer interface that\n * will normalize the inputted pathname with each normalizer in order.\n */\nexport class Normalizers implements Normalizer {\n constructor(private readonly normalizers: Array<Normalizer> = []) {}\n\n public push(normalizer: Normalizer) {\n this.normalizers.push(normalizer)\n }\n\n public normalize(pathname: string): string {\n return this.normalizers.reduce<string>(\n (normalized, normalizer) => normalizer.normalize(normalized),\n pathname\n )\n }\n}\n"],"names":["Normalizers","constructor","normalizers","push","normalizer","normalize","pathname","reduce","normalized"],"mappings":"AAEA;;;CAGC,GACD,OAAO,MAAMA;IACXC,YAAY,AAAiBC,cAAiC,EAAE,CAAE;aAArCA,cAAAA;IAAsC;IAE5DC,KAAKC,UAAsB,EAAE;QAClC,IAAI,CAACF,WAAW,CAACC,IAAI,CAACC;IACxB;IAEOC,UAAUC,QAAgB,EAAU;QACzC,OAAO,IAAI,CAACJ,WAAW,CAACK,MAAM,CAC5B,CAACC,YAAYJ,aAAeA,WAAWC,SAAS,CAACG,aACjDF;IAEJ;AACF"}

View File

@@ -0,0 +1,11 @@
import path from '../../shared/lib/isomorphic/path';
export class PrefixingNormalizer {
constructor(...prefixes){
this.prefix = path.posix.join(...prefixes);
}
normalize(pathname) {
return path.posix.join(this.prefix, pathname);
}
}
//# sourceMappingURL=prefixing-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/prefixing-normalizer.ts"],"sourcesContent":["import path from '../../shared/lib/isomorphic/path'\nimport type { Normalizer } from './normalizer'\n\nexport class PrefixingNormalizer implements Normalizer {\n private readonly prefix: string\n\n constructor(...prefixes: ReadonlyArray<string>) {\n this.prefix = path.posix.join(...prefixes)\n }\n\n public normalize(pathname: string): string {\n return path.posix.join(this.prefix, pathname)\n }\n}\n"],"names":["path","PrefixingNormalizer","constructor","prefixes","prefix","posix","join","normalize","pathname"],"mappings":"AAAA,OAAOA,UAAU,mCAAkC;AAGnD,OAAO,MAAMC;IAGXC,YAAY,GAAGC,QAA+B,CAAE;QAC9C,IAAI,CAACC,MAAM,GAAGJ,KAAKK,KAAK,CAACC,IAAI,IAAIH;IACnC;IAEOI,UAAUC,QAAgB,EAAU;QACzC,OAAOR,KAAKK,KAAK,CAACC,IAAI,CAAC,IAAI,CAACF,MAAM,EAAEI;IACtC;AACF"}

View File

@@ -0,0 +1,15 @@
import { PrefixPathnameNormalizer } from './prefix';
export class BasePathPathnameNormalizer extends PrefixPathnameNormalizer {
constructor(basePath){
if (!basePath || basePath === '/') {
throw Object.defineProperty(new Error('Invariant: basePath must be set and cannot be "/"'), "__NEXT_ERROR_CODE", {
value: "E154",
enumerable: false,
configurable: true
});
}
super(basePath);
}
}
//# sourceMappingURL=base-path.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/base-path.ts"],"sourcesContent":["import type { PathnameNormalizer } from './pathname-normalizer'\n\nimport { PrefixPathnameNormalizer } from './prefix'\n\nexport class BasePathPathnameNormalizer\n extends PrefixPathnameNormalizer\n implements PathnameNormalizer\n{\n constructor(basePath: string) {\n if (!basePath || basePath === '/') {\n throw new Error('Invariant: basePath must be set and cannot be \"/\"')\n }\n\n super(basePath)\n }\n}\n"],"names":["PrefixPathnameNormalizer","BasePathPathnameNormalizer","constructor","basePath","Error"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,WAAU;AAEnD,OAAO,MAAMC,mCACHD;IAGRE,YAAYC,QAAgB,CAAE;QAC5B,IAAI,CAACA,YAAYA,aAAa,KAAK;YACjC,MAAM,qBAA8D,CAA9D,IAAIC,MAAM,sDAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAA6D;QACrE;QAEA,KAAK,CAACD;IACR;AACF"}

View File

@@ -0,0 +1,28 @@
import { denormalizePagePath } from '../../../shared/lib/page-path/denormalize-page-path';
import { PrefixPathnameNormalizer } from './prefix';
import { SuffixPathnameNormalizer } from './suffix';
export class NextDataPathnameNormalizer {
constructor(buildID){
this.suffix = new SuffixPathnameNormalizer('.json');
if (!buildID) {
throw Object.defineProperty(new Error('Invariant: buildID is required'), "__NEXT_ERROR_CODE", {
value: "E200",
enumerable: false,
configurable: true
});
}
this.prefix = new PrefixPathnameNormalizer(`/_next/data/${buildID}`);
}
match(pathname) {
return this.prefix.match(pathname) && this.suffix.match(pathname);
}
normalize(pathname, matched) {
// If we're not matched and we don't match, we don't need to normalize.
if (!matched && !this.match(pathname)) return pathname;
pathname = this.prefix.normalize(pathname, true);
pathname = this.suffix.normalize(pathname, true);
return denormalizePagePath(pathname);
}
}
//# sourceMappingURL=next-data.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/next-data.ts"],"sourcesContent":["import type { PathnameNormalizer } from './pathname-normalizer'\n\nimport { denormalizePagePath } from '../../../shared/lib/page-path/denormalize-page-path'\nimport { PrefixPathnameNormalizer } from './prefix'\nimport { SuffixPathnameNormalizer } from './suffix'\n\nexport class NextDataPathnameNormalizer implements PathnameNormalizer {\n private readonly prefix: PrefixPathnameNormalizer\n private readonly suffix = new SuffixPathnameNormalizer('.json')\n constructor(buildID: string) {\n if (!buildID) {\n throw new Error('Invariant: buildID is required')\n }\n\n this.prefix = new PrefixPathnameNormalizer(`/_next/data/${buildID}`)\n }\n\n public match(pathname: string) {\n return this.prefix.match(pathname) && this.suffix.match(pathname)\n }\n\n public normalize(pathname: string, matched?: boolean): string {\n // If we're not matched and we don't match, we don't need to normalize.\n if (!matched && !this.match(pathname)) return pathname\n\n pathname = this.prefix.normalize(pathname, true)\n pathname = this.suffix.normalize(pathname, true)\n\n return denormalizePagePath(pathname)\n }\n}\n"],"names":["denormalizePagePath","PrefixPathnameNormalizer","SuffixPathnameNormalizer","NextDataPathnameNormalizer","constructor","buildID","suffix","Error","prefix","match","pathname","normalize","matched"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,sDAAqD;AACzF,SAASC,wBAAwB,QAAQ,WAAU;AACnD,SAASC,wBAAwB,QAAQ,WAAU;AAEnD,OAAO,MAAMC;IAGXC,YAAYC,OAAe,CAAE;aADZC,SAAS,IAAIJ,yBAAyB;QAErD,IAAI,CAACG,SAAS;YACZ,MAAM,qBAA2C,CAA3C,IAAIE,MAAM,mCAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAA0C;QAClD;QAEA,IAAI,CAACC,MAAM,GAAG,IAAIP,yBAAyB,CAAC,YAAY,EAAEI,SAAS;IACrE;IAEOI,MAAMC,QAAgB,EAAE;QAC7B,OAAO,IAAI,CAACF,MAAM,CAACC,KAAK,CAACC,aAAa,IAAI,CAACJ,MAAM,CAACG,KAAK,CAACC;IAC1D;IAEOC,UAAUD,QAAgB,EAAEE,OAAiB,EAAU;QAC5D,uEAAuE;QACvE,IAAI,CAACA,WAAW,CAAC,IAAI,CAACH,KAAK,CAACC,WAAW,OAAOA;QAE9CA,WAAW,IAAI,CAACF,MAAM,CAACG,SAAS,CAACD,UAAU;QAC3CA,WAAW,IAAI,CAACJ,MAAM,CAACK,SAAS,CAACD,UAAU;QAE3C,OAAOV,oBAAoBU;IAC7B;AACF"}

View File

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

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/pathname-normalizer.ts"],"sourcesContent":["import type { Normalizer } from '../normalizer'\n\nexport interface PathnameNormalizer extends Normalizer {\n match(pathname: string): boolean\n normalize(pathname: string, matched?: boolean): string\n}\n"],"names":[],"mappings":"AAEA,WAGC"}

View File

@@ -0,0 +1,21 @@
import { RSC_PREFETCH_SUFFIX } from '../../../lib/constants';
import { SuffixPathnameNormalizer } from './suffix';
export class PrefetchRSCPathnameNormalizer extends SuffixPathnameNormalizer {
constructor(){
super(RSC_PREFETCH_SUFFIX);
}
match(pathname) {
if (pathname === '/__index' + RSC_PREFETCH_SUFFIX) {
return true;
}
return super.match(pathname);
}
normalize(pathname, matched) {
if (pathname === '/__index' + RSC_PREFETCH_SUFFIX) {
return '/';
}
return super.normalize(pathname, matched);
}
}
//# sourceMappingURL=prefetch-rsc.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/prefetch-rsc.ts"],"sourcesContent":["import type { PathnameNormalizer } from './pathname-normalizer'\n\nimport { RSC_PREFETCH_SUFFIX } from '../../../lib/constants'\nimport { SuffixPathnameNormalizer } from './suffix'\n\nexport class PrefetchRSCPathnameNormalizer\n extends SuffixPathnameNormalizer\n implements PathnameNormalizer\n{\n constructor() {\n super(RSC_PREFETCH_SUFFIX)\n }\n\n public match(pathname: string): boolean {\n if (pathname === '/__index' + RSC_PREFETCH_SUFFIX) {\n return true\n }\n\n return super.match(pathname)\n }\n\n public normalize(pathname: string, matched?: boolean): string {\n if (pathname === '/__index' + RSC_PREFETCH_SUFFIX) {\n return '/'\n }\n\n return super.normalize(pathname, matched)\n }\n}\n"],"names":["RSC_PREFETCH_SUFFIX","SuffixPathnameNormalizer","PrefetchRSCPathnameNormalizer","constructor","match","pathname","normalize","matched"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,yBAAwB;AAC5D,SAASC,wBAAwB,QAAQ,WAAU;AAEnD,OAAO,MAAMC,sCACHD;IAGRE,aAAc;QACZ,KAAK,CAACH;IACR;IAEOI,MAAMC,QAAgB,EAAW;QACtC,IAAIA,aAAa,aAAaL,qBAAqB;YACjD,OAAO;QACT;QAEA,OAAO,KAAK,CAACI,MAAMC;IACrB;IAEOC,UAAUD,QAAgB,EAAEE,OAAiB,EAAU;QAC5D,IAAIF,aAAa,aAAaL,qBAAqB;YACjD,OAAO;QACT;QAEA,OAAO,KAAK,CAACM,UAAUD,UAAUE;IACnC;AACF"}

View File

@@ -0,0 +1,29 @@
export class PrefixPathnameNormalizer {
constructor(prefix){
this.prefix = prefix;
if (prefix.endsWith('/')) {
throw Object.defineProperty(new Error(`PrefixPathnameNormalizer: prefix "${prefix}" should not end with a slash`), "__NEXT_ERROR_CODE", {
value: "E219",
enumerable: false,
configurable: true
});
}
}
match(pathname) {
// If the pathname doesn't start with the prefix, we don't match.
if (pathname !== this.prefix && !pathname.startsWith(this.prefix + '/')) {
return false;
}
return true;
}
normalize(pathname, matched) {
// If we're not matched and we don't match, we don't need to normalize.
if (!matched && !this.match(pathname)) return pathname;
if (pathname.length === this.prefix.length) {
return '/';
}
return pathname.substring(this.prefix.length);
}
}
//# sourceMappingURL=prefix.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/prefix.ts"],"sourcesContent":["import type { Normalizer } from '../normalizer'\n\nexport class PrefixPathnameNormalizer implements Normalizer {\n constructor(private readonly prefix: string) {\n if (prefix.endsWith('/')) {\n throw new Error(\n `PrefixPathnameNormalizer: prefix \"${prefix}\" should not end with a slash`\n )\n }\n }\n\n public match(pathname: string) {\n // If the pathname doesn't start with the prefix, we don't match.\n if (pathname !== this.prefix && !pathname.startsWith(this.prefix + '/')) {\n return false\n }\n\n return true\n }\n\n public normalize(pathname: string, matched?: boolean): string {\n // If we're not matched and we don't match, we don't need to normalize.\n if (!matched && !this.match(pathname)) return pathname\n\n if (pathname.length === this.prefix.length) {\n return '/'\n }\n\n return pathname.substring(this.prefix.length)\n }\n}\n"],"names":["PrefixPathnameNormalizer","constructor","prefix","endsWith","Error","match","pathname","startsWith","normalize","matched","length","substring"],"mappings":"AAEA,OAAO,MAAMA;IACXC,YAAY,AAAiBC,MAAc,CAAE;aAAhBA,SAAAA;QAC3B,IAAIA,OAAOC,QAAQ,CAAC,MAAM;YACxB,MAAM,qBAEL,CAFK,IAAIC,MACR,CAAC,kCAAkC,EAAEF,OAAO,6BAA6B,CAAC,GADtE,qBAAA;uBAAA;4BAAA;8BAAA;YAEN;QACF;IACF;IAEOG,MAAMC,QAAgB,EAAE;QAC7B,iEAAiE;QACjE,IAAIA,aAAa,IAAI,CAACJ,MAAM,IAAI,CAACI,SAASC,UAAU,CAAC,IAAI,CAACL,MAAM,GAAG,MAAM;YACvE,OAAO;QACT;QAEA,OAAO;IACT;IAEOM,UAAUF,QAAgB,EAAEG,OAAiB,EAAU;QAC5D,uEAAuE;QACvE,IAAI,CAACA,WAAW,CAAC,IAAI,CAACJ,KAAK,CAACC,WAAW,OAAOA;QAE9C,IAAIA,SAASI,MAAM,KAAK,IAAI,CAACR,MAAM,CAACQ,MAAM,EAAE;YAC1C,OAAO;QACT;QAEA,OAAOJ,SAASK,SAAS,CAAC,IAAI,CAACT,MAAM,CAACQ,MAAM;IAC9C;AACF"}

View File

@@ -0,0 +1,9 @@
import { RSC_SUFFIX } from '../../../lib/constants';
import { SuffixPathnameNormalizer } from './suffix';
export class RSCPathnameNormalizer extends SuffixPathnameNormalizer {
constructor(){
super(RSC_SUFFIX);
}
}
//# sourceMappingURL=rsc.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/rsc.ts"],"sourcesContent":["import type { PathnameNormalizer } from './pathname-normalizer'\n\nimport { RSC_SUFFIX } from '../../../lib/constants'\nimport { SuffixPathnameNormalizer } from './suffix'\n\nexport class RSCPathnameNormalizer\n extends SuffixPathnameNormalizer\n implements PathnameNormalizer\n{\n constructor() {\n super(RSC_SUFFIX)\n }\n}\n"],"names":["RSC_SUFFIX","SuffixPathnameNormalizer","RSCPathnameNormalizer","constructor"],"mappings":"AAEA,SAASA,UAAU,QAAQ,yBAAwB;AACnD,SAASC,wBAAwB,QAAQ,WAAU;AAEnD,OAAO,MAAMC,8BACHD;IAGRE,aAAc;QACZ,KAAK,CAACH;IACR;AACF"}

View File

@@ -0,0 +1,22 @@
import { RSC_SEGMENT_SUFFIX, RSC_SEGMENTS_DIR_SUFFIX } from '../../../lib/constants';
const PATTERN = new RegExp(`^(/.*)${RSC_SEGMENTS_DIR_SUFFIX}(/.*)${RSC_SEGMENT_SUFFIX}$`);
export class SegmentPrefixRSCPathnameNormalizer {
match(pathname) {
return PATTERN.test(pathname);
}
extract(pathname) {
const match = pathname.match(PATTERN);
if (!match) return null;
return {
originalPathname: match[1],
segmentPath: match[2]
};
}
normalize(pathname) {
const match = this.extract(pathname);
if (!match) return pathname;
return match.originalPathname;
}
}
//# sourceMappingURL=segment-prefix-rsc.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/segment-prefix-rsc.ts"],"sourcesContent":["import type { PathnameNormalizer } from './pathname-normalizer'\n\nimport {\n RSC_SEGMENT_SUFFIX,\n RSC_SEGMENTS_DIR_SUFFIX,\n} from '../../../lib/constants'\n\nconst PATTERN = new RegExp(\n `^(/.*)${RSC_SEGMENTS_DIR_SUFFIX}(/.*)${RSC_SEGMENT_SUFFIX}$`\n)\n\nexport class SegmentPrefixRSCPathnameNormalizer implements PathnameNormalizer {\n public match(pathname: string): boolean {\n return PATTERN.test(pathname)\n }\n\n public extract(pathname: string) {\n const match = pathname.match(PATTERN)\n if (!match) return null\n\n return { originalPathname: match[1], segmentPath: match[2] }\n }\n\n public normalize(pathname: string): string {\n const match = this.extract(pathname)\n if (!match) return pathname\n\n return match.originalPathname\n }\n}\n"],"names":["RSC_SEGMENT_SUFFIX","RSC_SEGMENTS_DIR_SUFFIX","PATTERN","RegExp","SegmentPrefixRSCPathnameNormalizer","match","pathname","test","extract","originalPathname","segmentPath","normalize"],"mappings":"AAEA,SACEA,kBAAkB,EAClBC,uBAAuB,QAClB,yBAAwB;AAE/B,MAAMC,UAAU,IAAIC,OAClB,CAAC,MAAM,EAAEF,wBAAwB,KAAK,EAAED,mBAAmB,CAAC,CAAC;AAG/D,OAAO,MAAMI;IACJC,MAAMC,QAAgB,EAAW;QACtC,OAAOJ,QAAQK,IAAI,CAACD;IACtB;IAEOE,QAAQF,QAAgB,EAAE;QAC/B,MAAMD,QAAQC,SAASD,KAAK,CAACH;QAC7B,IAAI,CAACG,OAAO,OAAO;QAEnB,OAAO;YAAEI,kBAAkBJ,KAAK,CAAC,EAAE;YAAEK,aAAaL,KAAK,CAAC,EAAE;QAAC;IAC7D;IAEOM,UAAUL,QAAgB,EAAU;QACzC,MAAMD,QAAQ,IAAI,CAACG,OAAO,CAACF;QAC3B,IAAI,CAACD,OAAO,OAAOC;QAEnB,OAAOD,MAAMI,gBAAgB;IAC/B;AACF"}

View File

@@ -0,0 +1,17 @@
export class SuffixPathnameNormalizer {
constructor(suffix){
this.suffix = suffix;
}
match(pathname) {
// If the pathname doesn't end in the suffix, we don't match.
if (!pathname.endsWith(this.suffix)) return false;
return true;
}
normalize(pathname, matched) {
// If we're not matched and we don't match, we don't need to normalize.
if (!matched && !this.match(pathname)) return pathname;
return pathname.substring(0, pathname.length - this.suffix.length);
}
}
//# sourceMappingURL=suffix.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/server/normalizers/request/suffix.ts"],"sourcesContent":["import type { Normalizer } from '../normalizer'\n\nexport class SuffixPathnameNormalizer implements Normalizer {\n constructor(private readonly suffix: string) {}\n\n public match(pathname: string) {\n // If the pathname doesn't end in the suffix, we don't match.\n if (!pathname.endsWith(this.suffix)) return false\n\n return true\n }\n\n public normalize(pathname: string, matched?: boolean): string {\n // If we're not matched and we don't match, we don't need to normalize.\n if (!matched && !this.match(pathname)) return pathname\n\n return pathname.substring(0, pathname.length - this.suffix.length)\n }\n}\n"],"names":["SuffixPathnameNormalizer","constructor","suffix","match","pathname","endsWith","normalize","matched","substring","length"],"mappings":"AAEA,OAAO,MAAMA;IACXC,YAAY,AAAiBC,MAAc,CAAE;aAAhBA,SAAAA;IAAiB;IAEvCC,MAAMC,QAAgB,EAAE;QAC7B,6DAA6D;QAC7D,IAAI,CAACA,SAASC,QAAQ,CAAC,IAAI,CAACH,MAAM,GAAG,OAAO;QAE5C,OAAO;IACT;IAEOI,UAAUF,QAAgB,EAAEG,OAAiB,EAAU;QAC5D,uEAAuE;QACvE,IAAI,CAACA,WAAW,CAAC,IAAI,CAACJ,KAAK,CAACC,WAAW,OAAOA;QAE9C,OAAOA,SAASI,SAAS,CAAC,GAAGJ,SAASK,MAAM,GAAG,IAAI,CAACP,MAAM,CAACO,MAAM;IACnE;AACF"}

View File

@@ -0,0 +1,9 @@
/**
* UnderscoreNormalizer replaces all instances of %5F with _.
*/ export class UnderscoreNormalizer {
normalize(pathname) {
return pathname.replace(/%5F/g, '_');
}
}
//# sourceMappingURL=underscore-normalizer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/underscore-normalizer.ts"],"sourcesContent":["import type { Normalizer } from './normalizer'\n\n/**\n * UnderscoreNormalizer replaces all instances of %5F with _.\n */\nexport class UnderscoreNormalizer implements Normalizer {\n public normalize(pathname: string): string {\n return pathname.replace(/%5F/g, '_')\n }\n}\n"],"names":["UnderscoreNormalizer","normalize","pathname","replace"],"mappings":"AAEA;;CAEC,GACD,OAAO,MAAMA;IACJC,UAAUC,QAAgB,EAAU;QACzC,OAAOA,SAASC,OAAO,CAAC,QAAQ;IAClC;AACF"}

View File

@@ -0,0 +1,7 @@
export function wrapNormalizerFn(fn) {
return {
normalize: fn
};
}
//# sourceMappingURL=wrap-normalizer-fn.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/server/normalizers/wrap-normalizer-fn.ts"],"sourcesContent":["import type { Normalizer } from './normalizer'\n\nexport function wrapNormalizerFn(fn: (pathname: string) => string): Normalizer {\n return { normalize: fn }\n}\n"],"names":["wrapNormalizerFn","fn","normalize"],"mappings":"AAEA,OAAO,SAASA,iBAAiBC,EAAgC;IAC/D,OAAO;QAAEC,WAAWD;IAAG;AACzB"}