@edgeone/opennextjs-pages 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3497,8 +3497,67 @@ var module = (function() {
3497
3497
  // Middleware \u8BF7\u6C42\u5904\u7406
3498
3498
  // ============================================================
3499
3499
 
3500
- // \u5B58\u50A8 middleware \u51FD\u6570
3500
+ // \u5B58\u50A8 middleware \u51FD\u6570\u548C\u914D\u7F6E
3501
3501
  let __middleware_fn__ = null;
3502
+ let __middleware_config__ = null;
3503
+
3504
+ /**
3505
+ * \u68C0\u67E5 URL \u662F\u5426\u5339\u914D matcher \u89C4\u5219
3506
+ * Next.js matcher \u652F\u6301\u8DEF\u5F84\u6A21\u5F0F\u548C\u6B63\u5219\u8868\u8FBE\u5F0F
3507
+ */
3508
+ function matchesPath(pathname, matcher) {
3509
+ if (!matcher) return true;
3510
+
3511
+ const matchers = Array.isArray(matcher) ? matcher : [matcher];
3512
+
3513
+ for (const pattern of matchers) {
3514
+ if (typeof pattern === 'string') {
3515
+ let regex;
3516
+
3517
+ // \u68C0\u6D4B\u662F\u5426\u662F\u6B63\u5219\u8868\u8FBE\u5F0F\u683C\u5F0F
3518
+ const isRegexPattern = pattern.includes('(?') || pattern.includes('[^') || pattern.includes('.*') || pattern.endsWith('$');
3519
+
3520
+ if (isRegexPattern) {
3521
+ try {
3522
+ regex = new RegExp('^' + pattern + '$');
3523
+ } catch (e) {
3524
+ console.warn('[Middleware] Invalid regex pattern:', pattern, e);
3525
+ continue;
3526
+ }
3527
+ } else {
3528
+ // \u8DEF\u5F84\u6A21\u5F0F\uFF0C\u9700\u8981\u8F6C\u6362
3529
+ let regexPattern = pattern;
3530
+ regexPattern = regexPattern.split('/').join('\\\\/');
3531
+
3532
+ const parts = regexPattern.split(':');
3533
+ regexPattern = parts[0];
3534
+ for (let i = 1; i < parts.length; i++) {
3535
+ const part = parts[i];
3536
+ let j = 0;
3537
+ while (j < part.length && /[a-zA-Z0-9_]/.test(part[j])) {
3538
+ j++;
3539
+ }
3540
+ if (j < part.length && part[j] === '*') {
3541
+ regexPattern += '.*' + part.slice(j + 1);
3542
+ } else {
3543
+ regexPattern += '[^/]+' + part.slice(j);
3544
+ }
3545
+ }
3546
+
3547
+ regexPattern = regexPattern.split('**').join('.*');
3548
+ regexPattern = regexPattern.split('\\\\*').join('[^/]*');
3549
+
3550
+ regex = new RegExp('^' + regexPattern + '$');
3551
+ }
3552
+
3553
+ if (regex.test(pathname)) {
3554
+ return true;
3555
+ }
3556
+ }
3557
+ }
3558
+
3559
+ return false;
3560
+ }
3502
3561
 
3503
3562
  /**
3504
3563
  * \u8FD0\u884C\u4E2D\u95F4\u4EF6\u7684\u4E3B\u51FD\u6570
@@ -3508,6 +3567,7 @@ let __middleware_fn__ = null;
3508
3567
  async function executeMiddleware({request}) {
3509
3568
  try {
3510
3569
  const url = new URL(request.url);
3570
+ const pathname = url.pathname;
3511
3571
 
3512
3572
  // \u5982\u679C\u8FD8\u6CA1\u6709\u52A0\u8F7D middleware\uFF0C\u5C1D\u8BD5\u52A0\u8F7D
3513
3573
  if (!__middleware_fn__) {
@@ -3518,6 +3578,12 @@ async function executeMiddleware({request}) {
3518
3578
  // Turbopack \u5BFC\u51FA\u7684 default \u53EF\u80FD\u662F\u4E00\u4E2A\u5305\u88C5\u51FD\u6570
3519
3579
  let exportedFn = entryModule.exports.default || entryModule.exports.middleware || entryModule.exports.proxy;
3520
3580
 
3581
+ // \u83B7\u53D6 middleware \u914D\u7F6E\uFF08\u5305\u542B matcher\uFF09
3582
+ // \u6CE8\u610F\uFF1ATurbopack \u53EF\u80FD\u5C06 config \u5BFC\u51FA\u5230\u5165\u53E3\u6A21\u5757\uFF0C\u4E5F\u53EF\u80FD\u5BFC\u51FA\u5230\u5176\u4ED6\u6A21\u5757
3583
+ if (entryModule.exports.config) {
3584
+ __middleware_config__ = entryModule.exports.config;
3585
+ }
3586
+
3521
3587
  // \u5982\u679C\u5BFC\u51FA\u7684\u662F\u4E00\u4E2A\u5BF9\u8C61\uFF0C\u5C1D\u8BD5\u83B7\u53D6\u5176\u4E2D\u7684 handler \u6216 default
3522
3588
  if (exportedFn && typeof exportedFn === 'object') {
3523
3589
  exportedFn = exportedFn.handler || exportedFn.default || exportedFn.middleware || exportedFn.proxy;
@@ -3528,6 +3594,17 @@ async function executeMiddleware({request}) {
3528
3594
  __middleware_fn__ = exportedFn;
3529
3595
  }
3530
3596
  }
3597
+
3598
+ // \u5982\u679C\u6CA1\u6709\u627E\u5230 config\uFF0C\u904D\u5386\u6240\u6709\u5DF2\u52A0\u8F7D\u7684\u6A21\u5757\u67E5\u627E
3599
+ // Turbopack \u6709\u65F6\u4F1A\u5C06 config \u5BFC\u51FA\u5230\u5355\u72EC\u7684\u6A21\u5757\u4E2D
3600
+ if (!__middleware_config__) {
3601
+ for (const [moduleId, mod] of Object.entries(moduleCache)) {
3602
+ if (mod && mod.exports && mod.exports.config && mod.exports.config.matcher) {
3603
+ __middleware_config__ = mod.exports.config;
3604
+ break;
3605
+ }
3606
+ }
3607
+ }
3531
3608
  }
3532
3609
 
3533
3610
  if (!__middleware_fn__ || typeof __middleware_fn__ !== 'function') {
@@ -3535,6 +3612,14 @@ async function executeMiddleware({request}) {
3535
3612
  return fetch(request);
3536
3613
  }
3537
3614
 
3615
+ // \u68C0\u67E5\u8DEF\u5F84\u662F\u5426\u5339\u914D matcher \u914D\u7F6E
3616
+ if (__middleware_config__ && __middleware_config__.matcher) {
3617
+ if (!matchesPath(pathname, __middleware_config__.matcher)) {
3618
+ // \u8DEF\u5F84\u4E0D\u5339\u914D\uFF0C\u8DF3\u8FC7\u4E2D\u95F4\u4EF6
3619
+ return null;
3620
+ }
3621
+ }
3622
+
3538
3623
  // \u5C1D\u8BD5\u83B7\u53D6 NextRequest \u7C7B\uFF08\u4ECE\u5DF2\u52A0\u8F7D\u7684\u6A21\u5757\u4E2D\uFF09
3539
3624
  let NextRequestClass = null;
3540
3625
  let NextResponseClass = null;
@@ -200,7 +200,20 @@ var createRouteMeta = async (ctx) => {
200
200
  fs.mkdirSync(serverHandlerDir, { recursive: true });
201
201
  }
202
202
  const metaFilePath = path.join(serverHandlerDir, "meta.json");
203
+ const updatedRedirects = [];
204
+ if (imagesManifest?.images?.path) {
205
+ const imagePath = imagesManifest.images.path;
206
+ const nextImageRedirect = {
207
+ source: `${imagePath}\\?url=*`,
208
+ destination: ":splat",
209
+ statusCode: 302
210
+ };
211
+ updatedRedirects.push(nextImageRedirect);
212
+ }
203
213
  const metaData = {
214
+ conf: {
215
+ redirects: updatedRedirects
216
+ },
204
217
  nextRoutes: routesArray
205
218
  };
206
219
  fs.writeFileSync(
@@ -28,7 +28,7 @@ module.exports = __toCommonJS(tags_handler_exports);
28
28
 
29
29
  // package.json
30
30
  var name = "@edgeone/opennextjs-pages";
31
- var version = "0.1.2";
31
+ var version = "0.1.4";
32
32
 
33
33
  // src/run/handlers/tags-handler.cts
34
34
  var import_request_context = require("./request-context.cjs");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgeone/opennextjs-pages",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",