every-plugin 0.4.14 → 0.4.15

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.
Files changed (85) hide show
  1. package/dist/build/rspack/index.cjs +3 -3
  2. package/dist/build/rspack/index.cjs.map +1 -0
  3. package/dist/build/rspack/index.d.cts +1 -1
  4. package/dist/build/rspack/index.d.cts.map +1 -0
  5. package/dist/build/rspack/index.d.mts +1 -1
  6. package/dist/build/rspack/index.d.mts.map +1 -0
  7. package/dist/build/rspack/index.mjs +3 -3
  8. package/dist/build/rspack/index.mjs.map +1 -0
  9. package/dist/errors-9sNpYLv5.d.mts +1 -1
  10. package/dist/errors-9sNpYLv5.d.mts.map +1 -0
  11. package/dist/errors-CVnoPl9v.cjs +1 -1
  12. package/dist/errors-CVnoPl9v.cjs.map +1 -0
  13. package/dist/errors-D7keKf7a.mjs +1 -1
  14. package/dist/errors-D7keKf7a.mjs.map +1 -0
  15. package/dist/errors-DKPPPYYT.d.cts +1 -1
  16. package/dist/errors-DKPPPYYT.d.cts.map +1 -0
  17. package/dist/fetch-8DauUFDh.mjs +335 -0
  18. package/dist/fetch-8DauUFDh.mjs.map +1 -0
  19. package/dist/fetch-CrBvwsZ4.cjs +336 -0
  20. package/dist/fetch-CrBvwsZ4.cjs.map +1 -0
  21. package/dist/index-Coz54d1B.d.mts +387 -0
  22. package/dist/index-Coz54d1B.d.mts.map +1 -0
  23. package/dist/index-G63gBZIY.d.cts +386 -0
  24. package/dist/index-G63gBZIY.d.cts.map +1 -0
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +1 -1
  28. package/dist/index.d.mts +1 -1
  29. package/dist/index.mjs +2 -2
  30. package/dist/index.mjs.map +1 -0
  31. package/dist/normalize-BW7kk8Lk.d.cts +1 -1
  32. package/dist/normalize-BW7kk8Lk.d.cts.map +1 -0
  33. package/dist/normalize-D4Qh0wVk.cjs +1 -1
  34. package/dist/normalize-D4Qh0wVk.cjs.map +1 -0
  35. package/dist/normalize-D7nae0Hn.mjs +1 -1
  36. package/dist/normalize-D7nae0Hn.mjs.map +1 -0
  37. package/dist/normalize-eB_j86fm.d.mts +1 -1
  38. package/dist/normalize-eB_j86fm.d.mts.map +1 -0
  39. package/dist/package-BoyftHDo.mjs +1 -1
  40. package/dist/package-BoyftHDo.mjs.map +1 -0
  41. package/dist/package-CgNIVjVe.cjs +1 -1
  42. package/dist/package-CgNIVjVe.cjs.map +1 -0
  43. package/dist/plugins-C6MGKdD-.mjs +790 -0
  44. package/dist/plugins-C6MGKdD-.mjs.map +1 -0
  45. package/dist/plugins-DNaNtkG7.cjs +791 -0
  46. package/dist/plugins-DNaNtkG7.cjs.map +1 -0
  47. package/dist/runtime/index.cjs +1 -1
  48. package/dist/runtime/index.d.cts +1 -1
  49. package/dist/runtime/index.d.mts +1 -1
  50. package/dist/runtime/index.mjs +1 -1
  51. package/dist/runtime-60AkNpI0.mjs +476 -0
  52. package/dist/runtime-60AkNpI0.mjs.map +1 -0
  53. package/dist/runtime-BcksCIA1.cjs +541 -0
  54. package/dist/runtime-BcksCIA1.cjs.map +1 -0
  55. package/dist/standard-CkH8zNkx.mjs +584 -0
  56. package/dist/standard-CkH8zNkx.mjs.map +1 -0
  57. package/dist/standard-v75BC6Z5.cjs +685 -0
  58. package/dist/standard-v75BC6Z5.cjs.map +1 -0
  59. package/dist/testing/index.cjs +2 -2
  60. package/dist/testing/index.cjs.map +1 -0
  61. package/dist/testing/index.d.cts +2 -2
  62. package/dist/testing/index.d.cts.map +1 -0
  63. package/dist/testing/index.d.mts +2 -2
  64. package/dist/testing/index.d.mts.map +1 -0
  65. package/dist/testing/index.mjs +2 -2
  66. package/dist/testing/index.mjs.map +1 -0
  67. package/dist/zod-A7Pti5IV.d.cts +1 -1
  68. package/dist/zod-A7Pti5IV.d.cts.map +1 -0
  69. package/dist/zod-BVo51kgJ.mjs +1 -1
  70. package/dist/zod-BVo51kgJ.mjs.map +1 -0
  71. package/dist/zod-DYghWCz1.cjs +1 -1
  72. package/dist/zod-DYghWCz1.cjs.map +1 -0
  73. package/dist/zod-Zw8dlP3j.d.mts +1 -1
  74. package/dist/zod-Zw8dlP3j.d.mts.map +1 -0
  75. package/package.json +1 -1
  76. package/dist/fetch-CGzn1Uf7.cjs +0 -336
  77. package/dist/fetch-ycs0raYN.mjs +0 -335
  78. package/dist/index-DM9S53Bx.d.cts +0 -382
  79. package/dist/index-DrOou1Hc.d.mts +0 -383
  80. package/dist/plugins-Cmsm3gW1.cjs +0 -791
  81. package/dist/plugins-hpi2GlaX.mjs +0 -790
  82. package/dist/runtime-BYrdNAff.cjs +0 -524
  83. package/dist/runtime-BzkHRj0E.mjs +0 -459
  84. package/dist/standard-0wBehDUp.cjs +0 -685
  85. package/dist/standard-CYaRay89.mjs +0 -584
@@ -42,8 +42,8 @@ function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
42
42
  const { createPluginRuntime } = await Promise.resolve().then(() => require("../../index.cjs"));
43
43
  const { RPCHandler } = await import("@orpc/server/fetch");
44
44
  const { onError } = await import("@orpc/server");
45
- const { OpenAPIHandler } = await Promise.resolve().then(() => require("../../fetch-CGzn1Uf7.cjs"));
46
- const { OpenAPIReferencePlugin } = await Promise.resolve().then(() => require("../../plugins-Cmsm3gW1.cjs"));
45
+ const { OpenAPIHandler } = await Promise.resolve().then(() => require("../../fetch-CrBvwsZ4.cjs"));
46
+ const { OpenAPIReferencePlugin } = await Promise.resolve().then(() => require("../../plugins-DNaNtkG7.cjs"));
47
47
  const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
48
48
  const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
49
49
  const runtime = createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } });
@@ -361,4 +361,4 @@ var EveryPluginDevServer = class {
361
361
 
362
362
  //#endregion
363
363
  exports.EveryPluginDevServer = EveryPluginDevServer;
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsiaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0iLCJjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsIiwibGluZXM6IHN0cmluZ1tdIiwicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJtb2R1bGUiLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiLCJNb2R1bGVGZWRlcmF0aW9uUGx1Z2luIiwicGF0aCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svZGV2LXNlcnZlci1taWRkbGV3YXJlLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9tb2R1bGUtZmVkZXJhdGlvbi50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svdXRpbHMudHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNoYXJlZERlcGVuZGVuY2llcyhwbHVnaW5JbmZvOiBQbHVnaW5JbmZvKSB7XG4gIC8vIEdldCBldmVyeS1wbHVnaW4gcGFja2FnZSBpbmZvIGZvciB2ZXJzaW9uIGNvbnN0cmFpbnRzXG4gIGNvbnN0IGV2ZXJ5UGx1Z2luUGtnID0gcmVxdWlyZSgnZXZlcnktcGx1Z2luL3BhY2thZ2UuanNvbicpO1xuXG4gIHJldHVybiB7XG4gICAgJ2V2ZXJ5LXBsdWdpbic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLnZlcnNpb24sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLnZlcnNpb259YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZWZmZWN0OiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXMuZWZmZWN0LFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXMuZWZmZWN0fWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIHpvZDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLnpvZCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLnpvZH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICAnQG9ycGMvY29udHJhY3QnOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvY29udHJhY3QnXX1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICAnQG9ycGMvc2VydmVyJzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9zZXJ2ZXInXSxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9zZXJ2ZXInXX1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB7IE1vZHVsZUZlZGVyYXRpb25QbHVnaW4gfSBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnNwYWNrJztcbmltcG9ydCB0eXBlIHsgQ29tcGlsZXIsIFJzcGFja1BsdWdpbkluc3RhbmNlIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBzZXR1cFBsdWdpbk1pZGRsZXdhcmUgfSBmcm9tICcuL2Rldi1zZXJ2ZXItbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSW5mbywgbG9hZERldkNvbmZpZyB9IGZyb20gJy4vdXRpbHMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7IH1cblxuICBhcHBseShjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICAvLyBMb2FkIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBwbHVnaW5JbmZvID0gZ2V0UGx1Z2luSW5mbyhjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKSk7XG4gICAgY29uc3QgZGV2Q29uZmlnID0gbG9hZERldkNvbmZpZyh0aGlzLm9wdGlvbnMuZGV2Q29uZmlnUGF0aCB8fCAnLi9wbHVnaW4uZGV2LnRzJyk7XG4gICAgY29uc3QgcG9ydCA9IHRoaXMub3B0aW9ucy5wb3J0IHx8IGRldkNvbmZpZz8ucG9ydCB8fCAzOTk5O1xuXG4gICAgLy8gQ29uZmlndXJlIGRlZmF1bHRzIGltbWVkaWF0ZWx5IChubyBob29rcyBuZWVkZWQpXG4gICAgdGhpcy5jb25maWd1cmVEZWZhdWx0cyhjb21waWxlciwgcGx1Z2luSW5mbyk7XG5cbiAgICAvLyBJbml0aWFsaXplIGRldlNlcnZlciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIgPSB7fTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2IHNlcnZlclxuICAgIHRoaXMuY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBwbHVnaW5JbmZvLCBkZXZDb25maWcsIHBvcnQpO1xuXG4gICAgLy8gQXBwbHkgTW9kdWxlIEZlZGVyYXRpb24gcGx1Z2luXG4gICAgbmV3IE1vZHVsZUZlZGVyYXRpb25QbHVnaW4oe1xuICAgICAgbmFtZTogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIGZpbGVuYW1lOiAncmVtb3RlRW50cnkuanMnLFxuICAgICAgbWFuaWZlc3Q6IHRydWUsICAvLyBFbmFibGUgTUYgMi4wIG1hbmlmZXN0IGdlbmVyYXRpb25cbiAgICAgIGR0czogZmFsc2UsXG4gICAgICBydW50aW1lUGx1Z2luczogW1xuICAgICAgICByZXF1aXJlLnJlc29sdmUoJ0Btb2R1bGUtZmVkZXJhdGlvbi9ub2RlL3J1bnRpbWVQbHVnaW4nKSxcbiAgICAgIF0sXG4gICAgICBsaWJyYXJ5OiB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH0sXG4gICAgICBleHBvc2VzOiB7XG4gICAgICAgICcuL3BsdWdpbic6ICcuL3NyYy9pbmRleC50cycsXG4gICAgICB9LFxuICAgICAgc2hhcmVkOiBidWlsZFNoYXJlZERlcGVuZGVuY2llcyhwbHVnaW5JbmZvKSxcbiAgICB9KS5hcHBseShjb21waWxlcik7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55KSB7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gQ29uZmlndXJlIG91dHB1dCBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0ID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LnVuaXF1ZU5hbWUgPSBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LnB1YmxpY1BhdGggPSAnYXV0byc7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucGF0aCA9IHBhdGgucmVzb2x2ZShjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmNsZWFuID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5saWJyYXJ5ID0geyB0eXBlOiAnY29tbW9uanMtbW9kdWxlJyB9O1xuXG4gICAgLy8gQ29uZmlndXJlIHRhcmdldCBhbmQgbW9kZSBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMudGFyZ2V0ID0gJ2FzeW5jLW5vZGUnO1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2RlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldnRvb2xcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2dG9vbCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sID0gJ3NvdXJjZS1tYXAnO1xuICAgIH1cblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgaW5mcmFzdHJ1Y3R1cmUgbG9nZ2luZ1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuaW5mcmFzdHJ1Y3R1cmVMb2dnaW5nID0ge1xuICAgICAgICBsZXZlbDogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIG1vZHVsZSBydWxlcyAtIGVuc3VyZSBUeXBlU2NyaXB0IGxvYWRlciBpcyBwcmVzZW50XG4gICAgdGhpcy5lbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyKTtcblxuICAgIC8vIENvbmZpZ3VyZSByZXNvbHZlIGV4dGVuc2lvbnNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZS5leHRlbnNpb25zID0gWycuLi4nLCAnLnRzeCcsICcudHMnXTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVHlwZVNjcmlwdExvYWRlcihjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMubW9kdWxlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZSA9IHsgcnVsZXM6IFtdIH0gYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzID0gW107XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgVHlwZVNjcmlwdCBsb2FkZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkXG4gICAgY29uc3QgaGFzVHNMb2FkZXIgPSBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5zb21lKChydWxlOiBhbnkpID0+XG4gICAgICB0eXBlb2YgcnVsZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHJ1bGUgIT09IG51bGwgJiZcbiAgICAgICd0ZXN0JyBpbiBydWxlICYmXG4gICAgICBydWxlLnRlc3QgaW5zdGFuY2VvZiBSZWdFeHAgJiZcbiAgICAgIHJ1bGUudGVzdC50ZXN0KCcudHMnKVxuICAgICk7XG5cbiAgICAvLyBBZGQgVHlwZVNjcmlwdCBsb2FkZXIgaWYgbm90IHByZXNlbnRcbiAgICBpZiAoIWhhc1RzTG9hZGVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogL1xcLnRzeD8kLyxcbiAgICAgICAgdXNlOiAnYnVpbHRpbjpzd2MtbG9hZGVyJyxcbiAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSwgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBkdWUgdG8gY2hlY2sgaW4gYXBwbHkoKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvcmlnaW5hbFNldHVwID0gY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc2V0dXBNaWRkbGV3YXJlcztcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnBvcnQgPSBwb3J0O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnN0YXRpYyA9IHBhdGguam9pbihjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhvdCA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuZGV2TWlkZGxld2FyZSA9IHsgd3JpdGVUb0Rpc2s6IHRydWUgfTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5oZWFkZXJzID0ge1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogJ1gtUmVxdWVzdGVkLVdpdGgsIGNvbnRlbnQtdHlwZSwgQXV0aG9yaXphdGlvbicsXG4gICAgfTtcblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgbG9nZ2luZ1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNsaWVudCA9IHtcbiAgICAgIGxvZ2dpbmc6ICd3YXJuJywgIC8vIE9ubHkgc2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gICAgICBvdmVybGF5OiB7XG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSwgIC8vIERvbid0IHNob3cgd2FybmluZyBvdmVybGF5XG4gICAgICAgIGVycm9yczogdHJ1ZSwgICAgIC8vIFN0aWxsIHNob3cgZXJyb3JzXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG4gICAgICByZXR1cm4gb3JpZ2luYWxTZXR1cCA/IG9yaWdpbmFsU2V0dXAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgOiBtaWRkbGV3YXJlcztcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFQSxNQUFNLGNBQWM7Q0FDbEIsK0JBQStCO0NBQy9CLGdDQUFnQztDQUNoQyxnQ0FBZ0M7Q0FDakM7QUFFRCxNQUFNLG9CQUFvQixRQUFhO0FBQ3JDLFFBQU8sUUFBUSxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVztBQUNwRCxNQUFJLFVBQVUsS0FBSyxNQUFNO0dBQ3pCOztBQUdKLE1BQU0sbUJBQW1CLFdBQTRCO0FBQ25ELEtBQUksQ0FBQyxPQUFRLFFBQU87Q0FDcEIsTUFBTSxVQUFVLE9BQU8sUUFBUSxjQUFjLEdBQUc7QUFDaEQsUUFBTyxVQUFVLElBQUksWUFBWTs7QUFHbkMsU0FBZ0Isc0JBQXNCLFdBQWdCLFlBQXdCLFdBQWdCLE1BQWM7Q0FDMUcsTUFBTSxZQUFZLGdCQUFnQixXQUFXLE9BQU87Q0FDcEQsSUFBSUEsV0FBbUM7RUFBRSxLQUFLO0VBQU0s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
364
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["handlers: { rpc: any, api: any }","cleanup: (() => Promise<void>) | null","lines: string[]","path","fs","getNormalizedRemoteName","module","options: EveryPluginOptions","ModuleFederationPlugin","path"],"sources":["../../../src/build/rspack/dev-server-middleware.ts","../../../src/build/rspack/module-federation.ts","../../../src/build/rspack/utils.ts","../../../src/build/rspack/plugin.ts"],"sourcesContent":["import type { PluginInfo } from './utils';\n\nconst corsHeaders = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization'\n};\n\nconst applyCorsHeaders = (res: any) => {\n Object.entries(corsHeaders).forEach(([key, value]) => {\n res.setHeader(key, value);\n });\n};\n\nconst normalizePrefix = (prefix?: string): string => {\n if (!prefix) return '';\n const cleaned = prefix.replace(/^\\/+|\\/+$/g, '');\n return cleaned ? `/${cleaned}` : '';\n};\n\nexport function setupPluginMiddleware(devServer: any, pluginInfo: PluginInfo, devConfig: any, port: number) {\n const rpcPrefix = normalizePrefix(devConfig?.prefix);\n let handlers: { rpc: any, api: any } = { rpc: null, api: null };\n let cleanup: (() => Promise<void>) | null = null;\n\n const performCleanup = async () => {\n if (cleanup) {\n await cleanup();\n cleanup = null;\n }\n };\n\n (async () => {\n await performCleanup();\n\n try {\n const { createPluginRuntime } = await import('every-plugin');\n const { RPCHandler } = await import('@orpc/server/fetch');\n const { onError } = await import('@orpc/server');\n const { OpenAPIHandler } = await import('@orpc/openapi/fetch');\n const { OpenAPIReferencePlugin } = await import('@orpc/openapi/plugins');\n const { ZodToJsonSchemaConverter } = await import('@orpc/zod/zod4');\n\n const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;\n\n const runtime = createPluginRuntime({\n registry: {\n [pluginId]: {\n remoteUrl: `http://localhost:${port}/remoteEntry.js`\n }\n }\n });\n\n const loaded = await runtime.usePlugin(pluginId, devConfig?.config);\n\n cleanup = async () => {\n if (loaded && typeof (loaded as any).dispose === 'function') {\n await (loaded as any).dispose();\n }\n if (runtime && typeof (runtime as any).cleanup === 'function') {\n await (runtime as any).cleanup();\n }\n handlers.rpc = null;\n handlers.api = null;\n if (devServer.app.locals.handlers) {\n devServer.app.locals.handlers = null;\n }\n };\n\n const formatError = (error: any, context: string) => {\n const lines: string[] = [`\\nšŸ”“ ${context} Error: ${error.message || 'Unknown error'}`];\n \n if (error.cause?.issues && Array.isArray(error.cause.issues)) {\n lines.push('\\nšŸ“‹ Validation Issues:');\n error.cause.issues.forEach((issue: any, index: number) => {\n lines.push(` ${index + 1}. ${issue.path?.join('.') || 'root'}`);\n lines.push(` ā”œā”€ Code: ${issue.code || 'unknown'}`);\n lines.push(` ā”œā”€ Message: ${issue.message || 'No message'}`);\n if (issue.expected !== undefined) {\n lines.push(` ā”œā”€ Expected: ${JSON.stringify(issue.expected)}`);\n }\n if (issue.received !== undefined) {\n lines.push(` └─ Received: ${JSON.stringify(issue.received)}`);\n } else {\n lines.push(` └─ (end)`);\n }\n });\n }\n \n if (error.data && typeof error.data === 'object' && Object.keys(error.data).length > 0) {\n lines.push('\\nšŸ“Š Error Data:');\n try {\n const dataStr = JSON.stringify(error.data, null, 2);\n dataStr.split('\\n').forEach(line => {\n lines.push(` ${line}`);\n });\n } catch {\n lines.push(` ${String(error.data)}`);\n }\n }\n \n if (error.cause?.data) {\n lines.push('\\nšŸ“¦ Request Data:');\n try {\n const dataStr = JSON.stringify(error.cause.data, null, 2);\n dataStr.split('\\n').forEach(line => {\n lines.push(` ${line}`);\n });\n } catch {\n lines.push(` ${String(error.cause.data)}`);\n }\n }\n \n if (error.code) {\n lines.push(`\\nāš ļø Error Code: ${error.code}`);\n }\n \n if (error.status) {\n lines.push(`šŸ“ Status: ${error.status}`);\n }\n \n lines.push('');\n console.error(lines.join('\\n'));\n };\n\n // @ts-expect-error no type\n handlers.rpc = new RPCHandler(loaded.router, {\n interceptors: [\n onError((error: any) => {\n formatError(error, 'RPC');\n }),\n ]\n });\n\n // @ts-expect-error no type\n handlers.api = new OpenAPIHandler(loaded.router, {\n plugins: [\n new OpenAPIReferencePlugin({\n schemaConverters: [new ZodToJsonSchemaConverter()],\n }),\n ],\n interceptors: [\n onError((error: any) => {\n formatError(error, 'OpenAPI');\n }),\n ]\n });\n\n console.log(`╭─────────────────────────────────────────────`);\n console.log(`│ āœ… Plugin dev server ready: `);\n console.log(`ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€`);\n console.log(`│ šŸ“” RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);\n console.log(`│ šŸ“– Docs: http://localhost:${port}/api`);\n console.log(`│ šŸ’š Health: http://localhost:${port}/`);\n console.log(`╰─────────────────────────────────────────────`);\n\n devServer.app.locals.handlers = handlers;\n\n if (devServer.server) {\n devServer.server.once('close', async () => {\n await performCleanup();\n });\n }\n } catch (error) {\n console.error('āŒ Failed to load plugin:', error);\n await performCleanup();\n }\n })();\n\n process.once('SIGINT', async () => {\n await performCleanup();\n });\n process.once('SIGTERM', async () => {\n await performCleanup();\n });\n\n devServer.app.options('*', (req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).end();\n });\n\n devServer.app.get('/', (req: any, res: any) => {\n applyCorsHeaders(res);\n res.json({\n ok: true,\n plugin: pluginInfo.normalizedName,\n version: pluginInfo.version,\n status: devServer.app.locals.handlers?.rpc ? 'ready' : 'loading',\n endpoints: {\n health: '/',\n docs: '/api',\n rpc: `/api/rpc${rpcPrefix}`\n }\n });\n });\n\n // OpenAPI documentation and REST endpoints at /api and /api/*\n const handleApiRequest = async (req: any, res: any) => {\n applyCorsHeaders(res);\n const apiHandler = devServer.app.locals.handlers?.api;\n if (!apiHandler) {\n return res.status(503).json({ error: 'Plugin still loading...' });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== 'GET' && req.method !== 'HEAD' ? req : undefined,\n duplex: req.method !== 'GET' && req.method !== 'HEAD' ? 'half' : undefined\n } as RequestInit);\n\n const result = await apiHandler.handle(webRequest, {\n prefix: '/api',\n context: {}\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send('Not Found');\n }\n } catch (error) {\n console.error('OpenAPI error:', error);\n res.status(500).json({ error: (error as Error).message });\n }\n };\n\n devServer.app.all('/api', handleApiRequest);\n devServer.app.all('/api/*', handleApiRequest);\n\n devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req: any, res: any) => {\n applyCorsHeaders(res);\n const rpcHandler = devServer.app.locals.handlers?.rpc;\n if (!rpcHandler) {\n return res.status(503).json({ error: 'Plugin still loading...' });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== 'GET' && req.method !== 'HEAD' ? req : undefined,\n duplex: req.method !== 'GET' && req.method !== 'HEAD' ? 'half' : undefined\n } as RequestInit);\n\n const result = await rpcHandler.handle(webRequest, {\n prefix: `/api/rpc${rpcPrefix}`,\n context: {}\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send('Not Found');\n }\n } catch (error) {\n console.error('RPC error:', error);\n res.status(500).json({ error: (error as Error).message });\n }\n });\n}\n","import type { PluginInfo } from './utils';\n\nexport function buildSharedDependencies(pluginInfo: PluginInfo) {\n // Get every-plugin package info for version constraints\n const everyPluginPkg = require('every-plugin/package.json');\n\n return {\n 'every-plugin': {\n version: everyPluginPkg.version,\n singleton: true,\n requiredVersion: `${everyPluginPkg.version}`,\n strictVersion: false,\n eager: false,\n },\n effect: {\n version: everyPluginPkg.dependencies.effect,\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies.effect}`,\n strictVersion: false,\n eager: false,\n },\n zod: {\n version: everyPluginPkg.dependencies.zod,\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies.zod}`,\n strictVersion: false,\n eager: false,\n },\n '@orpc/contract': {\n version: everyPluginPkg.dependencies['@orpc/contract'],\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies['@orpc/contract']}`,\n strictVersion: false,\n eager: false,\n },\n '@orpc/server': {\n version: everyPluginPkg.dependencies['@orpc/server'],\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies['@orpc/server']}`,\n strictVersion: false,\n eager: false,\n },\n };\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport { getNormalizedRemoteName } from 'every-plugin/normalize';\n\nexport interface PluginInfo {\n name: string;\n version: string;\n normalizedName: string;\n dependencies: Record<string, string>;\n peerDependencies: Record<string, string>;\n}\n\nexport function getPluginInfo(context: string): PluginInfo {\n const pkgPath = path.join(context, 'package.json');\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n\n return {\n name: pkg.name,\n version: pkg.version,\n normalizedName: getNormalizedRemoteName(pkg.name),\n dependencies: pkg.dependencies || {},\n peerDependencies: pkg.peerDependencies || {},\n };\n}\n\nconst loadedModules = new Set<string>();\n\nexport function loadDevConfig(devConfigPath: string) {\n try {\n const fullPath = path.resolve(devConfigPath);\n \n if (loadedModules.has(fullPath)) {\n delete require.cache[fullPath];\n const dirPath = path.dirname(fullPath);\n for (const key of Object.keys(require.cache)) {\n if (key.startsWith(dirPath) && key !== fullPath) {\n delete require.cache[key];\n }\n }\n }\n \n const module = require(fullPath).default;\n loadedModules.add(fullPath);\n return module;\n } catch (error) {\n console.warn(`Could not load dev config from ${devConfigPath}:`, (error as Error).message);\n return null;\n }\n}\n\nexport function cleanupDevConfig() {\n for (const modulePath of loadedModules) {\n delete require.cache[modulePath];\n }\n loadedModules.clear();\n}\n","import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';\nimport type { Compiler, RspackPluginInstance } from '@rspack/core';\nimport path from 'node:path';\nimport { setupPluginMiddleware } from './dev-server-middleware';\nimport { buildSharedDependencies } from './module-federation';\nimport { getPluginInfo, loadDevConfig } from './utils';\n\n\nexport interface EveryPluginOptions {\n devConfigPath?: string; // defaults to './plugin.dev.ts'\n port?: number; // override plugin.dev.ts port\n pluginId?: string; // override auto-detected\n}\n\nexport class EveryPluginDevServer implements RspackPluginInstance {\n name = 'EveryPluginDevServer';\n\n constructor(private options: EveryPluginOptions = {}) { }\n\n apply(compiler: Compiler) {\n // Load configuration\n const pluginInfo = getPluginInfo(compiler.options.context || process.cwd());\n const devConfig = loadDevConfig(this.options.devConfigPath || './plugin.dev.ts');\n const port = this.options.port || devConfig?.port || 3999;\n\n // Configure defaults immediately (no hooks needed)\n this.configureDefaults(compiler, pluginInfo);\n\n // Initialize devServer if it doesn't exist\n if (!compiler.options.devServer) {\n compiler.options.devServer = {};\n }\n\n // Configure dev server\n this.configureDevServer(compiler, pluginInfo, devConfig, port);\n\n // Apply Module Federation plugin\n new ModuleFederationPlugin({\n name: pluginInfo.normalizedName,\n filename: 'remoteEntry.js',\n manifest: true, // Enable MF 2.0 manifest generation\n dts: false,\n runtimePlugins: [\n require.resolve('@module-federation/node/runtimePlugin'),\n ],\n library: { type: 'commonjs-module' },\n exposes: {\n './plugin': './src/index.ts',\n },\n shared: buildSharedDependencies(pluginInfo),\n }).apply(compiler);\n }\n\n private configureDefaults(compiler: Compiler, pluginInfo: any) {\n const context = compiler.options.context || process.cwd();\n\n // Configure output defaults\n if (!compiler.options.output) {\n compiler.options.output = {};\n }\n compiler.options.output.uniqueName = pluginInfo.normalizedName;\n compiler.options.output.publicPath = 'auto';\n compiler.options.output.path = path.resolve(context, 'dist');\n compiler.options.output.clean = true;\n compiler.options.output.library = { type: 'commonjs-module' };\n\n // Configure target and mode defaults\n if (!compiler.options.target) {\n compiler.options.target = 'async-node';\n }\n\n if (!compiler.options.mode) {\n compiler.options.mode = process.env.NODE_ENV === 'development' ? 'development' : 'production';\n }\n\n // Configure devtool\n if (!compiler.options.devtool) {\n compiler.options.devtool = 'source-map';\n }\n\n // Suppress verbose infrastructure logging\n if (!compiler.options.infrastructureLogging) {\n compiler.options.infrastructureLogging = {\n level: 'warn', // Only show warnings and errors\n };\n }\n\n // Configure module rules - ensure TypeScript loader is present\n this.ensureTypeScriptLoader(compiler);\n\n // Configure resolve extensions\n if (!compiler.options.resolve) {\n compiler.options.resolve = {};\n }\n compiler.options.resolve.extensions = ['...', '.tsx', '.ts'];\n }\n\n private ensureTypeScriptLoader(compiler: Compiler) {\n if (!compiler.options.module) {\n compiler.options.module = { rules: [] } as any;\n }\n\n if (!compiler.options.module.rules) {\n compiler.options.module.rules = [];\n }\n\n // Check if TypeScript loader is already configured\n const hasTsLoader = compiler.options.module.rules.some((rule: any) =>\n typeof rule === 'object' &&\n rule !== null &&\n 'test' in rule &&\n rule.test instanceof RegExp &&\n rule.test.test('.ts')\n );\n\n // Add TypeScript loader if not present\n if (!hasTsLoader) {\n compiler.options.module.rules.push({\n test: /\\.tsx?$/,\n use: 'builtin:swc-loader',\n exclude: /node_modules/,\n });\n }\n }\n\n private configureDevServer(compiler: Compiler, pluginInfo: any, devConfig: any, port: number) {\n if (!compiler.options.devServer) {\n return; // Should never happen due to check in apply()\n }\n\n const context = compiler.options.context || process.cwd();\n const originalSetup = compiler.options.devServer.setupMiddlewares;\n\n compiler.options.devServer.port = port;\n compiler.options.devServer.static = path.join(context, 'dist');\n compiler.options.devServer.hot = true;\n compiler.options.devServer.devMiddleware = { writeToDisk: true };\n compiler.options.devServer.headers = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',\n };\n\n // Suppress verbose logging\n compiler.options.devServer.client = {\n logging: 'warn', // Only show warnings and errors\n overlay: {\n warnings: false, // Don't show warning overlay\n errors: true, // Still show errors\n },\n };\n\n compiler.options.devServer.setupMiddlewares = (middlewares, devServer) => {\n setupPluginMiddleware(devServer, pluginInfo, devConfig, port);\n return originalSetup ? originalSetup(middlewares, devServer) : middlewares;\n };\n }\n}\n"],"mappings":"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"}
@@ -17,4 +17,4 @@ declare class EveryPluginDevServer implements RspackPluginInstance {
17
17
  }
18
18
  //#endregion
19
19
  export { EveryPluginDevServer, type EveryPluginOptions };
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7O1VBUWlCLGtCQUFBOztFQUFBLElBQUEsQ0FBQSxFQUFBLE1BQUE7RUFNSixRQUFBLENBQUEsRUFBQSxNQUFBOztBQUtLLGNBTEwsb0JBQUEsWUFBZ0Msb0JBSzNCLENBQUE7RUFMMkIsUUFBQSxPQUFBO0VBQW9CLElBQUEsRUFBQSxNQUFBO3dCQUdsQztrQkFFYiJ9
20
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/build/rspack/plugin.ts"],"sourcesContent":[],"mappings":";;;UAQiB,kBAAA;;EAAA,IAAA,CAAA,EAAA,MAAA;EAMJ,QAAA,CAAA,EAAA,MAAA;;AAKK,cALL,oBAAA,YAAgC,oBAK3B,CAAA;EAL2B,QAAA,OAAA;EAAoB,IAAA,EAAA,MAAA;wBAGlC;kBAEb"}
@@ -17,4 +17,4 @@ declare class EveryPluginDevServer implements RspackPluginInstance {
17
17
  }
18
18
  //#endregion
19
19
  export { EveryPluginDevServer, type EveryPluginOptions };
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7O1VBUWlCLGtCQUFBOztFQUFBLElBQUEsQ0FBQSxFQUFBLE1BQUE7RUFNSixRQUFBLENBQUEsRUFBQSxNQUFBOztBQUtLLGNBTEwsb0JBQUEsWUFBZ0Msb0JBSzNCLENBQUE7RUFMMkIsUUFBQSxPQUFBO0VBQW9CLElBQUEsRUFBQSxNQUFBO3dCQUdsQztrQkFFYiJ9
20
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/build/rspack/plugin.ts"],"sourcesContent":[],"mappings":";;;UAQiB,kBAAA;;EAAA,IAAA,CAAA,EAAA,MAAA;EAMJ,QAAA,CAAA,EAAA,MAAA;;AAKK,cALL,oBAAA,YAAgC,oBAK3B,CAAA;EAL2B,QAAA,OAAA;EAAoB,IAAA,EAAA,MAAA;wBAGlC;kBAEb"}
@@ -40,8 +40,8 @@ function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
40
40
  const { createPluginRuntime } = await import("../../index.mjs");
41
41
  const { RPCHandler } = await import("@orpc/server/fetch");
42
42
  const { onError } = await import("@orpc/server");
43
- const { OpenAPIHandler } = await import("../../fetch-ycs0raYN.mjs");
44
- const { OpenAPIReferencePlugin } = await import("../../plugins-hpi2GlaX.mjs");
43
+ const { OpenAPIHandler } = await import("../../fetch-8DauUFDh.mjs");
44
+ const { OpenAPIReferencePlugin } = await import("../../plugins-C6MGKdD-.mjs");
45
45
  const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
46
46
  const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
47
47
  const runtime = createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } });
@@ -359,4 +359,4 @@ var EveryPluginDevServer = class {
359
359
 
360
360
  //#endregion
361
361
  export { EveryPluginDevServer };
362
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwibmFtZXMiOlsiaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0iLCJjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsIiwibGluZXM6IHN0cmluZ1tdIiwib3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9kZXYtc2VydmVyLW1pZGRsZXdhcmUudHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL21vZHVsZS1mZWRlcmF0aW9uLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBjb3JzSGVhZGVycyA9IHtcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyc6ICdYLVJlcXVlc3RlZC1XaXRoLCBjb250ZW50LXR5cGUsIEF1dGhvcml6YXRpb24nXG59O1xuXG5jb25zdCBhcHBseUNvcnNIZWFkZXJzID0gKHJlczogYW55KSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGNvcnNIZWFkZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICByZXMuc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICB9KTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVByZWZpeCA9IChwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIXByZWZpeCkgcmV0dXJuICcnO1xuICBjb25zdCBjbGVhbmVkID0gcHJlZml4LnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKTtcbiAgcmV0dXJuIGNsZWFuZWQgPyBgLyR7Y2xlYW5lZH1gIDogJyc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlcjogYW55LCBwbHVnaW5JbmZvOiBQbHVnaW5JbmZvLCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gIGNvbnN0IHJwY1ByZWZpeCA9IG5vcm1hbGl6ZVByZWZpeChkZXZDb25maWc/LnByZWZpeCk7XG4gIGxldCBoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSA9IHsgcnBjOiBudWxsLCBhcGk6IG51bGwgfTtcbiAgbGV0IGNsZWFudXA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IHBlcmZvcm1DbGVhbnVwID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChjbGVhbnVwKSB7XG4gICAgICBhd2FpdCBjbGVhbnVwKCk7XG4gICAgICBjbGVhbnVwID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgKGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBwZXJmb3JtQ2xlYW51cCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgY3JlYXRlUGx1Z2luUnVudGltZSB9ID0gYXdhaXQgaW1wb3J0KCdldmVyeS1wbHVnaW4nKTtcbiAgICAgIGNvbnN0IHsgUlBDSGFuZGxlciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9zZXJ2ZXIvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgb25FcnJvciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9zZXJ2ZXInKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSUhhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvb3BlbmFwaS9mZXRjaCcpO1xuICAgICAgY29uc3QgeyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvcGx1Z2lucycpO1xuICAgICAgY29uc3QgeyBab2RUb0pzb25TY2hlbWFDb252ZXJ0ZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvem9kL3pvZDQnKTtcblxuICAgICAgY29uc3QgcGx1Z2luSWQgPSBkZXZDb25maWc/LnBsdWdpbklkIHx8IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG5cbiAgICAgIGNvbnN0IHJ1bnRpbWUgPSBjcmVhdGVQbHVnaW5SdW50aW1lKHtcbiAgICAgICAgcmVnaXN0cnk6IHtcbiAgICAgICAgICBbcGx1Z2luSWRdOiB7XG4gICAgICAgICAgICByZW1vdGVVcmw6IGBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vcmVtb3RlRW50cnkuanNgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbG9hZGVkID0gYXdhaXQgcnVudGltZS51c2VQbHVnaW4ocGx1Z2luSWQsIGRldkNvbmZpZz8uY29uZmlnKTtcblxuICAgICAgY2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGxvYWRlZCAmJiB0eXBlb2YgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBhd2FpdCAobG9hZGVkIGFzIGFueSkuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydW50aW1lICYmIHR5cGVvZiAocnVudGltZSBhcyBhbnkpLmNsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBhd2FpdCAocnVudGltZSBhcyBhbnkpLmNsZWFudXAoKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVycy5ycGMgPSBudWxsO1xuICAgICAgICBoYW5kbGVycy5hcGkgPSBudWxsO1xuICAgICAgICBpZiAoZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMpIHtcbiAgICAgICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvcm1hdEVycm9yID0gKGVycm9yOiBhbnksIGNvbnRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbYFxcbvCflLQgJHtjb250ZXh0fSBFcnJvcjogJHtlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJ31gXTtcbiAgICAgICAgXG4gICAgICAgIGlmIChlcnJvci5jYXVzZT8uaXNzdWVzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuY2F1c2UuaXNzdWVzKSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4sgVmFsaWRhdGlvbiBJc3N1ZXM6Jyk7XG4gICAgICAgICAgZXJyb3IuY2F1c2UuaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtpbmRleCArIDF9LiAke2lzc3VlLnBhdGg/LmpvaW4oJy4nKSB8fCAncm9vdCd9YCk7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBDb2RlOiAke2lzc3VlLmNvZGUgfHwgJ3Vua25vd24nfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgTWVzc2FnZTogJHtpc3N1ZS5tZXNzYWdlIHx8ICdObyBtZXNzYWdlJ31gKTtcbiAgICAgICAgICAgIGlmIChpc3N1ZS5leHBlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIEV4cGVjdGVkOiAke0pTT04uc3RyaW5naWZ5KGlzc3VlLmV4cGVjdGVkKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc3N1ZS5yZWNlaXZlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSU4pSAIFJlY2VpdmVkOiAke0pTT04uc3RyaW5naWZ5KGlzc3VlLnJlY2VpdmVkKX1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSU4pSAIChlbmQpYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChlcnJvci5kYXRhICYmIHR5cGVvZiBlcnJvci5kYXRhID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhlcnJvci5kYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGluZXMucHVzaCgnXFxu8J+TiiBFcnJvciBEYXRhOicpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IuZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgICBkYXRhU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7bGluZX1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAke1N0cmluZyhlcnJvci5kYXRhKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChlcnJvci5jYXVzZT8uZGF0YSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk6YgUmVxdWVzdCBEYXRhOicpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IuY2F1c2UuZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgICBkYXRhU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7bGluZX1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAke1N0cmluZyhlcnJvci5jYXVzZS5kYXRhKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChlcnJvci5jb2RlKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgXFxu4pqg77iPICBFcnJvciBDb2RlOiAke2Vycm9yLmNvZGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGDwn5ONIFN0YXR1czogJHtlcnJvci5zdGF0dXN9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGxpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMucnBjID0gbmV3IFJQQ0hhbmRsZXIobG9hZGVkLnJvdXRlciwge1xuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ1JQQycpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBubyB0eXBlXG4gICAgICBoYW5kbGVycy5hcGkgPSBuZXcgT3BlbkFQSUhhbmRsZXIobG9hZGVkLnJvdXRlciwge1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgbmV3IE9wZW5BUElSZWZlcmVuY2VQbHVnaW4oe1xuICAgICAgICAgICAgc2NoZW1hQ29udmVydGVyczogW25ldyBab2RUb0pzb25TY2hlbWFDb252ZXJ0ZXIoKV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGludGVyY2VwdG9yczogW1xuICAgICAgICAgIG9uRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGZvcm1hdEVycm9yKGVycm9yLCAnT3BlbkFQSScpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coYOKVreKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg4pyFIFBsdWdpbiBkZXYgc2VydmVyIHJlYWR5OiBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk6EgUlBDOiAgICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpL3JwYyR7cnBjUHJlZml4fWApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg8J+TliBEb2NzOiAgIGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9hcGlgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfkpogSGVhbHRoOiBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pWw4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG5cbiAgICAgIGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzID0gaGFuZGxlcnM7XG5cbiAgICAgIGlmIChkZXZTZXJ2ZXIuc2VydmVyKSB7XG4gICAgICAgIGRldlNlcnZlci5zZXJ2ZXIub25jZSgnY2xvc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gbG9hZCBwbHVnaW46JywgZXJyb3IpO1xuICAgICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgcHJvY2Vzcy5vbmNlKCdTSUdJTlQnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG4gIHByb2Nlc3Mub25jZSgnU0lHVEVSTScsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBwZXJmb3JtQ2xlYW51cCgpO1xuICB9KTtcblxuICBkZXZTZXJ2ZXIuYXBwLm9wdGlvbnMoJyonLCAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIHJlcy5zdGF0dXMoMjAwKS5lbmQoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5nZXQoJy8nLCAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGx1Z2luOiBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lLFxuICAgICAgdmVyc2lvbjogcGx1Z2luSW5mby52ZXJzaW9uLFxuICAgICAgc3RhdHVzOiBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8ucnBjID8gJ3JlYWR5JyA6ICdsb2FkaW5nJyxcbiAgICAgIGVuZHBvaW50czoge1xuICAgICAgICBoZWFsdGg6ICcvJyxcbiAgICAgICAgZG9jczogJy9hcGknLFxuICAgICAgICBycGM6IGAvYXBpL3JwYyR7cnBjUHJlZml4fWBcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gT3BlbkFQSSBkb2N1bWVudGF0aW9uIGFuZCBSRVNUIGVuZHBvaW50cyBhdCAvYXBpIGFuZCAvYXBpLypcbiAgY29uc3QgaGFuZGxlQXBpUmVxdWVzdCA9IGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgYXBpSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5hcGk7XG4gICAgaWYgKCFhcGlIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogJy9hcGknLFxuICAgICAgICBjb250ZXh0OiB7fVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhyZXN1bHQucmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3VsdC5yZXNwb25zZS50ZXh0KCk7XG4gICAgICAgIHJlcy5zZW5kKHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoJ05vdCBGb3VuZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdPcGVuQVBJIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgZGV2U2VydmVyLmFwcC5hbGwoJy9hcGknLCBoYW5kbGVBcGlSZXF1ZXN0KTtcbiAgZGV2U2VydmVyLmFwcC5hbGwoJy9hcGkvKicsIGhhbmRsZUFwaVJlcXVlc3QpO1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKGAvYXBpL3JwYyR7cnBjUHJlZml4fS8qYCwgYXN5bmMgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICBjb25zdCBycGNIYW5kbGVyID0gZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYztcbiAgICBpZiAoIXJwY0hhbmRsZXIpIHtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMykuanNvbih7IGVycm9yOiAnUGx1Z2luIHN0aWxsIGxvYWRpbmcuLi4nIH0pO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBgaHR0cDovLyR7cmVxLmhlYWRlcnMuaG9zdH0ke3JlcS51cmx9YDtcbiAgICAgIGNvbnN0IHdlYlJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycyxcbiAgICAgICAgYm9keTogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gcmVxIDogdW5kZWZpbmVkLFxuICAgICAgICBkdXBsZXg6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/ICdoYWxmJyA6IHVuZGVmaW5lZFxuICAgICAgfSBhcyBSZXF1ZXN0SW5pdCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlKHdlYlJlcXVlc3QsIHtcbiAgICAgICAgcHJlZml4OiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gLFxuICAgICAgICBjb250ZXh0OiB7fVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhyZXN1bHQucmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3VsdC5yZXNwb25zZS50ZXh0KCk7XG4gICAgICAgIHJlcy5zZW5kKHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoJ05vdCBGb3VuZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oeyBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm86IFBsdWdpbkluZm8pIHtcbiAgLy8gR2V0IGV2ZXJ5LXBsdWdpbiBwYWNrYWdlIGluZm8gZm9yIHZlcnNpb24gY29uc3RyYWludHNcbiAgY29uc3QgZXZlcnlQbHVnaW5Qa2cgPSByZXF1aXJlKCdldmVyeS1wbHVnaW4vcGFja2FnZS5qc29uJyk7XG5cbiAgcmV0dXJuIHtcbiAgICAnZXZlcnktcGx1Z2luJzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cudmVyc2lvbixcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cudmVyc2lvbn1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICBlZmZlY3Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy5lZmZlY3QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy5lZmZlY3R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgem9kOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXMuem9kLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXMuem9kfWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgICdAb3JwYy9jb250cmFjdCc6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvY29udHJhY3QnXSxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddfWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgICdAb3JwYy9zZXJ2ZXInOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL3NlcnZlciddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL3NlcnZlciddfWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICB9O1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lIH0gZnJvbSAnZXZlcnktcGx1Z2luL25vcm1hbGl6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBub3JtYWxpemVkTmFtZTogc3RyaW5nO1xuICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHBlZXJEZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5JbmZvKGNvbnRleHQ6IHN0cmluZyk6IFBsdWdpbkluZm8ge1xuICBjb25zdCBwa2dQYXRoID0gcGF0aC5qb2luKGNvbnRleHQsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0Zi04JykpO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogcGtnLm5hbWUsXG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbm9ybWFsaXplZE5hbWU6IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBrZy5uYW1lKSxcbiAgICBkZXBlbmRlbmNpZXM6IHBrZy5kZXBlbmRlbmNpZXMgfHwge30sXG4gICAgcGVlckRlcGVuZGVuY2llczogcGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30sXG4gIH07XG59XG5cbmNvbnN0IGxvYWRlZE1vZHVsZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREZXZDb25maWcoZGV2Q29uZmlnUGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUoZGV2Q29uZmlnUGF0aCk7XG4gICAgXG4gICAgaWYgKGxvYWRlZE1vZHVsZXMuaGFzKGZ1bGxQYXRoKSkge1xuICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbZnVsbFBhdGhdO1xuICAgICAgY29uc3QgZGlyUGF0aCA9IHBhdGguZGlybmFtZShmdWxsUGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXF1aXJlLmNhY2hlKSkge1xuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoZGlyUGF0aCkgJiYga2V5ICE9PSBmdWxsUGF0aCkge1xuICAgICAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3QgbW9kdWxlID0gcmVxdWlyZShmdWxsUGF0aCkuZGVmYXVsdDtcbiAgICBsb2FkZWRNb2R1bGVzLmFkZChmdWxsUGF0aCk7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBsb2FkIGRldiBjb25maWcgZnJvbSAke2RldkNvbmZpZ1BhdGh9OmAsIChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBEZXZDb25maWcoKSB7XG4gIGZvciAoY29uc3QgbW9kdWxlUGF0aCBvZiBsb2FkZWRNb2R1bGVzKSB7XG4gICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbbW9kdWxlUGF0aF07XG4gIH1cbiAgbG9hZGVkTW9kdWxlcy5jbGVhcigpO1xufVxuIiwiaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvblBsdWdpbiB9IGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9yc3BhY2snO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IHNldHVwUGx1Z2luTWlkZGxld2FyZSB9IGZyb20gJy4vZGV2LXNlcnZlci1taWRkbGV3YXJlJztcbmltcG9ydCB7IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9tb2R1bGUtZmVkZXJhdGlvbic7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvLCBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFdmVyeVBsdWdpbk9wdGlvbnMge1xuICBkZXZDb25maWdQYXRoPzogc3RyaW5nOyAgLy8gZGVmYXVsdHMgdG8gJy4vcGx1Z2luLmRldi50cydcbiAgcG9ydD86IG51bWJlcjsgICAgICAgICAgIC8vIG92ZXJyaWRlIHBsdWdpbi5kZXYudHMgcG9ydFxuICBwbHVnaW5JZD86IHN0cmluZzsgICAgICAgLy8gb3ZlcnJpZGUgYXV0by1kZXRlY3RlZFxufVxuXG5leHBvcnQgY2xhc3MgRXZlcnlQbHVnaW5EZXZTZXJ2ZXIgaW1wbGVtZW50cyBSc3BhY2tQbHVnaW5JbnN0YW5jZSB7XG4gIG5hbWUgPSAnRXZlcnlQbHVnaW5EZXZTZXJ2ZXInO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zID0ge30pIHsgfVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgTW9kdWxlRmVkZXJhdGlvblBsdWdpbih7XG4gICAgICBuYW1lOiBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lLFxuICAgICAgZmlsZW5hbWU6ICdyZW1vdGVFbnRyeS5qcycsXG4gICAgICBtYW5pZmVzdDogdHJ1ZSwgIC8vIEVuYWJsZSBNRiAyLjAgbWFuaWZlc3QgZ2VuZXJhdGlvblxuICAgICAgZHRzOiBmYWxzZSxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgdGFyZ2V0IGFuZCBtb2RlIGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy50YXJnZXQgPSAnYXN5bmMtbm9kZSc7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJztcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2dG9vbFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldnRvb2wgPSAnc291cmNlLW1hcCc7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBpbmZyYXN0cnVjdHVyZSBsb2dnaW5nXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmluZnJhc3RydWN0dXJlTG9nZ2luZykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcgPSB7XG4gICAgICAgIGxldmVsOiAnd2FybicsICAvLyBPbmx5IHNob3cgd2FybmluZ3MgYW5kIGVycm9yc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgbW9kdWxlIHJ1bGVzIC0gZW5zdXJlIFR5cGVTY3JpcHQgbG9hZGVyIGlzIHByZXNlbnRcbiAgICB0aGlzLmVuc3VyZVR5cGVTY3JpcHRMb2FkZXIoY29tcGlsZXIpO1xuXG4gICAgLy8gQ29uZmlndXJlIHJlc29sdmUgZXh0ZW5zaW9uc1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLnJlc29sdmUgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlLmV4dGVuc2lvbnMgPSBbJy4uLicsICcudHN4JywgJy50cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlID0geyBydWxlczogW10gfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBUeXBlU2NyaXB0IGxvYWRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgICBjb25zdCBoYXNUc0xvYWRlciA9IGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnNvbWUoKHJ1bGU6IGFueSkgPT5cbiAgICAgIHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJlxuICAgICAgcnVsZSAhPT0gbnVsbCAmJlxuICAgICAgJ3Rlc3QnIGluIHJ1bGUgJiZcbiAgICAgIHJ1bGUudGVzdCBpbnN0YW5jZW9mIFJlZ0V4cCAmJlxuICAgICAgcnVsZS50ZXN0LnRlc3QoJy50cycpXG4gICAgKTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGxvYWRlciBpZiBub3QgcHJlc2VudFxuICAgIGlmICghaGFzVHNMb2FkZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAvXFwudHN4PyQvLFxuICAgICAgICB1c2U6ICdidWlsdGluOnN3Yy1sb2FkZXInLFxuICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55LCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgcmV0dXJuOyAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGR1ZSB0byBjaGVjayBpbiBhcHBseSgpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG9yaWdpbmFsU2V0dXAgPSBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzO1xuXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIucG9ydCA9IHBvcnQ7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc3RhdGljID0gcGF0aC5qb2luKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuaG90ID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5kZXZNaWRkbGV3YXJlID0geyB3cml0ZVRvRGlzazogdHJ1ZSB9O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhlYWRlcnMgPSB7XG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJyxcbiAgICB9O1xuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBsb2dnaW5nXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY2xpZW50ID0ge1xuICAgICAgbG9nZ2luZzogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgd2FybmluZ3M6IGZhbHNlLCAgLy8gRG9uJ3Qgc2hvdyB3YXJuaW5nIG92ZXJsYXlcbiAgICAgICAgZXJyb3JzOiB0cnVlLCAgICAgLy8gU3RpbGwgc2hvdyBlcnJvcnNcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnNldHVwTWlkZGxld2FyZXMgPSAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgPT4ge1xuICAgICAgc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbFNldHVwID8gb3JpZ2luYWxTZXR1cChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA6IG1pZGRsZXdhcmVzO1xuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxNQUFNLGNBQWM7Q0FDbEIsK0JBQStCO0NBQy9CLGdDQUFnQztDQUNoQyxnQ0FBZ0M7Q0FDakM7QUFFRCxNQUFNLG9CQUFvQixRQUFhO0FBQ3JDLFFBQU8sUUFBUSxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVztBQUNwRCxNQUFJLFVBQVUsS0FBSyxNQUFNO0dBQ3pCOztBQUdKLE1BQU0sbUJBQW1CLFdBQTRCO0FBQ25ELEtBQUksQ0FBQyxPQUFRLFFBQU87Q0FDcEIsTUFBTSxVQUFVLE9BQU8sUUFBUSxjQUFjLEdBQUc7QUFDaEQsUUFBTyxVQUFVLElBQUksWUFBWTs7QUFHbkMsU0FBZ0Isc0JBQXNCLFdBQWdCLFlBQXdCLFdBQWdCLE1BQWM7Q0FDMUcsTUFBTSxZQUFZLGdCQUFnQixXQUFXLE9BQU87Q0FDcEQsSUFBSUEsV0FBbUM7RUFBRSxLQUFLO0VBQU0sS0FBSztFQUFNO0NBQy9ELElBQUlDLFVBQXdDO0NBRTVDLE1BQU0saUJBQWlCLFlBQVk7QUFDakMsTUFBSSxTQUFTO0FBQ1gsU0FBTSxTQUFT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
362
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["handlers: { rpc: any, api: any }","cleanup: (() => Promise<void>) | null","lines: string[]","options: EveryPluginOptions"],"sources":["../../../src/build/rspack/dev-server-middleware.ts","../../../src/build/rspack/module-federation.ts","../../../src/build/rspack/utils.ts","../../../src/build/rspack/plugin.ts"],"sourcesContent":["import type { PluginInfo } from './utils';\n\nconst corsHeaders = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization'\n};\n\nconst applyCorsHeaders = (res: any) => {\n Object.entries(corsHeaders).forEach(([key, value]) => {\n res.setHeader(key, value);\n });\n};\n\nconst normalizePrefix = (prefix?: string): string => {\n if (!prefix) return '';\n const cleaned = prefix.replace(/^\\/+|\\/+$/g, '');\n return cleaned ? `/${cleaned}` : '';\n};\n\nexport function setupPluginMiddleware(devServer: any, pluginInfo: PluginInfo, devConfig: any, port: number) {\n const rpcPrefix = normalizePrefix(devConfig?.prefix);\n let handlers: { rpc: any, api: any } = { rpc: null, api: null };\n let cleanup: (() => Promise<void>) | null = null;\n\n const performCleanup = async () => {\n if (cleanup) {\n await cleanup();\n cleanup = null;\n }\n };\n\n (async () => {\n await performCleanup();\n\n try {\n const { createPluginRuntime } = await import('every-plugin');\n const { RPCHandler } = await import('@orpc/server/fetch');\n const { onError } = await import('@orpc/server');\n const { OpenAPIHandler } = await import('@orpc/openapi/fetch');\n const { OpenAPIReferencePlugin } = await import('@orpc/openapi/plugins');\n const { ZodToJsonSchemaConverter } = await import('@orpc/zod/zod4');\n\n const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;\n\n const runtime = createPluginRuntime({\n registry: {\n [pluginId]: {\n remoteUrl: `http://localhost:${port}/remoteEntry.js`\n }\n }\n });\n\n const loaded = await runtime.usePlugin(pluginId, devConfig?.config);\n\n cleanup = async () => {\n if (loaded && typeof (loaded as any).dispose === 'function') {\n await (loaded as any).dispose();\n }\n if (runtime && typeof (runtime as any).cleanup === 'function') {\n await (runtime as any).cleanup();\n }\n handlers.rpc = null;\n handlers.api = null;\n if (devServer.app.locals.handlers) {\n devServer.app.locals.handlers = null;\n }\n };\n\n const formatError = (error: any, context: string) => {\n const lines: string[] = [`\\nšŸ”“ ${context} Error: ${error.message || 'Unknown error'}`];\n \n if (error.cause?.issues && Array.isArray(error.cause.issues)) {\n lines.push('\\nšŸ“‹ Validation Issues:');\n error.cause.issues.forEach((issue: any, index: number) => {\n lines.push(` ${index + 1}. ${issue.path?.join('.') || 'root'}`);\n lines.push(` ā”œā”€ Code: ${issue.code || 'unknown'}`);\n lines.push(` ā”œā”€ Message: ${issue.message || 'No message'}`);\n if (issue.expected !== undefined) {\n lines.push(` ā”œā”€ Expected: ${JSON.stringify(issue.expected)}`);\n }\n if (issue.received !== undefined) {\n lines.push(` └─ Received: ${JSON.stringify(issue.received)}`);\n } else {\n lines.push(` └─ (end)`);\n }\n });\n }\n \n if (error.data && typeof error.data === 'object' && Object.keys(error.data).length > 0) {\n lines.push('\\nšŸ“Š Error Data:');\n try {\n const dataStr = JSON.stringify(error.data, null, 2);\n dataStr.split('\\n').forEach(line => {\n lines.push(` ${line}`);\n });\n } catch {\n lines.push(` ${String(error.data)}`);\n }\n }\n \n if (error.cause?.data) {\n lines.push('\\nšŸ“¦ Request Data:');\n try {\n const dataStr = JSON.stringify(error.cause.data, null, 2);\n dataStr.split('\\n').forEach(line => {\n lines.push(` ${line}`);\n });\n } catch {\n lines.push(` ${String(error.cause.data)}`);\n }\n }\n \n if (error.code) {\n lines.push(`\\nāš ļø Error Code: ${error.code}`);\n }\n \n if (error.status) {\n lines.push(`šŸ“ Status: ${error.status}`);\n }\n \n lines.push('');\n console.error(lines.join('\\n'));\n };\n\n // @ts-expect-error no type\n handlers.rpc = new RPCHandler(loaded.router, {\n interceptors: [\n onError((error: any) => {\n formatError(error, 'RPC');\n }),\n ]\n });\n\n // @ts-expect-error no type\n handlers.api = new OpenAPIHandler(loaded.router, {\n plugins: [\n new OpenAPIReferencePlugin({\n schemaConverters: [new ZodToJsonSchemaConverter()],\n }),\n ],\n interceptors: [\n onError((error: any) => {\n formatError(error, 'OpenAPI');\n }),\n ]\n });\n\n console.log(`╭─────────────────────────────────────────────`);\n console.log(`│ āœ… Plugin dev server ready: `);\n console.log(`ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€`);\n console.log(`│ šŸ“” RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);\n console.log(`│ šŸ“– Docs: http://localhost:${port}/api`);\n console.log(`│ šŸ’š Health: http://localhost:${port}/`);\n console.log(`╰─────────────────────────────────────────────`);\n\n devServer.app.locals.handlers = handlers;\n\n if (devServer.server) {\n devServer.server.once('close', async () => {\n await performCleanup();\n });\n }\n } catch (error) {\n console.error('āŒ Failed to load plugin:', error);\n await performCleanup();\n }\n })();\n\n process.once('SIGINT', async () => {\n await performCleanup();\n });\n process.once('SIGTERM', async () => {\n await performCleanup();\n });\n\n devServer.app.options('*', (req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).end();\n });\n\n devServer.app.get('/', (req: any, res: any) => {\n applyCorsHeaders(res);\n res.json({\n ok: true,\n plugin: pluginInfo.normalizedName,\n version: pluginInfo.version,\n status: devServer.app.locals.handlers?.rpc ? 'ready' : 'loading',\n endpoints: {\n health: '/',\n docs: '/api',\n rpc: `/api/rpc${rpcPrefix}`\n }\n });\n });\n\n // OpenAPI documentation and REST endpoints at /api and /api/*\n const handleApiRequest = async (req: any, res: any) => {\n applyCorsHeaders(res);\n const apiHandler = devServer.app.locals.handlers?.api;\n if (!apiHandler) {\n return res.status(503).json({ error: 'Plugin still loading...' });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== 'GET' && req.method !== 'HEAD' ? req : undefined,\n duplex: req.method !== 'GET' && req.method !== 'HEAD' ? 'half' : undefined\n } as RequestInit);\n\n const result = await apiHandler.handle(webRequest, {\n prefix: '/api',\n context: {}\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send('Not Found');\n }\n } catch (error) {\n console.error('OpenAPI error:', error);\n res.status(500).json({ error: (error as Error).message });\n }\n };\n\n devServer.app.all('/api', handleApiRequest);\n devServer.app.all('/api/*', handleApiRequest);\n\n devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req: any, res: any) => {\n applyCorsHeaders(res);\n const rpcHandler = devServer.app.locals.handlers?.rpc;\n if (!rpcHandler) {\n return res.status(503).json({ error: 'Plugin still loading...' });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== 'GET' && req.method !== 'HEAD' ? req : undefined,\n duplex: req.method !== 'GET' && req.method !== 'HEAD' ? 'half' : undefined\n } as RequestInit);\n\n const result = await rpcHandler.handle(webRequest, {\n prefix: `/api/rpc${rpcPrefix}`,\n context: {}\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send('Not Found');\n }\n } catch (error) {\n console.error('RPC error:', error);\n res.status(500).json({ error: (error as Error).message });\n }\n });\n}\n","import type { PluginInfo } from './utils';\n\nexport function buildSharedDependencies(pluginInfo: PluginInfo) {\n // Get every-plugin package info for version constraints\n const everyPluginPkg = require('every-plugin/package.json');\n\n return {\n 'every-plugin': {\n version: everyPluginPkg.version,\n singleton: true,\n requiredVersion: `${everyPluginPkg.version}`,\n strictVersion: false,\n eager: false,\n },\n effect: {\n version: everyPluginPkg.dependencies.effect,\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies.effect}`,\n strictVersion: false,\n eager: false,\n },\n zod: {\n version: everyPluginPkg.dependencies.zod,\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies.zod}`,\n strictVersion: false,\n eager: false,\n },\n '@orpc/contract': {\n version: everyPluginPkg.dependencies['@orpc/contract'],\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies['@orpc/contract']}`,\n strictVersion: false,\n eager: false,\n },\n '@orpc/server': {\n version: everyPluginPkg.dependencies['@orpc/server'],\n singleton: true,\n requiredVersion: `${everyPluginPkg.dependencies['@orpc/server']}`,\n strictVersion: false,\n eager: false,\n },\n };\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport { getNormalizedRemoteName } from 'every-plugin/normalize';\n\nexport interface PluginInfo {\n name: string;\n version: string;\n normalizedName: string;\n dependencies: Record<string, string>;\n peerDependencies: Record<string, string>;\n}\n\nexport function getPluginInfo(context: string): PluginInfo {\n const pkgPath = path.join(context, 'package.json');\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n\n return {\n name: pkg.name,\n version: pkg.version,\n normalizedName: getNormalizedRemoteName(pkg.name),\n dependencies: pkg.dependencies || {},\n peerDependencies: pkg.peerDependencies || {},\n };\n}\n\nconst loadedModules = new Set<string>();\n\nexport function loadDevConfig(devConfigPath: string) {\n try {\n const fullPath = path.resolve(devConfigPath);\n \n if (loadedModules.has(fullPath)) {\n delete require.cache[fullPath];\n const dirPath = path.dirname(fullPath);\n for (const key of Object.keys(require.cache)) {\n if (key.startsWith(dirPath) && key !== fullPath) {\n delete require.cache[key];\n }\n }\n }\n \n const module = require(fullPath).default;\n loadedModules.add(fullPath);\n return module;\n } catch (error) {\n console.warn(`Could not load dev config from ${devConfigPath}:`, (error as Error).message);\n return null;\n }\n}\n\nexport function cleanupDevConfig() {\n for (const modulePath of loadedModules) {\n delete require.cache[modulePath];\n }\n loadedModules.clear();\n}\n","import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';\nimport type { Compiler, RspackPluginInstance } from '@rspack/core';\nimport path from 'node:path';\nimport { setupPluginMiddleware } from './dev-server-middleware';\nimport { buildSharedDependencies } from './module-federation';\nimport { getPluginInfo, loadDevConfig } from './utils';\n\n\nexport interface EveryPluginOptions {\n devConfigPath?: string; // defaults to './plugin.dev.ts'\n port?: number; // override plugin.dev.ts port\n pluginId?: string; // override auto-detected\n}\n\nexport class EveryPluginDevServer implements RspackPluginInstance {\n name = 'EveryPluginDevServer';\n\n constructor(private options: EveryPluginOptions = {}) { }\n\n apply(compiler: Compiler) {\n // Load configuration\n const pluginInfo = getPluginInfo(compiler.options.context || process.cwd());\n const devConfig = loadDevConfig(this.options.devConfigPath || './plugin.dev.ts');\n const port = this.options.port || devConfig?.port || 3999;\n\n // Configure defaults immediately (no hooks needed)\n this.configureDefaults(compiler, pluginInfo);\n\n // Initialize devServer if it doesn't exist\n if (!compiler.options.devServer) {\n compiler.options.devServer = {};\n }\n\n // Configure dev server\n this.configureDevServer(compiler, pluginInfo, devConfig, port);\n\n // Apply Module Federation plugin\n new ModuleFederationPlugin({\n name: pluginInfo.normalizedName,\n filename: 'remoteEntry.js',\n manifest: true, // Enable MF 2.0 manifest generation\n dts: false,\n runtimePlugins: [\n require.resolve('@module-federation/node/runtimePlugin'),\n ],\n library: { type: 'commonjs-module' },\n exposes: {\n './plugin': './src/index.ts',\n },\n shared: buildSharedDependencies(pluginInfo),\n }).apply(compiler);\n }\n\n private configureDefaults(compiler: Compiler, pluginInfo: any) {\n const context = compiler.options.context || process.cwd();\n\n // Configure output defaults\n if (!compiler.options.output) {\n compiler.options.output = {};\n }\n compiler.options.output.uniqueName = pluginInfo.normalizedName;\n compiler.options.output.publicPath = 'auto';\n compiler.options.output.path = path.resolve(context, 'dist');\n compiler.options.output.clean = true;\n compiler.options.output.library = { type: 'commonjs-module' };\n\n // Configure target and mode defaults\n if (!compiler.options.target) {\n compiler.options.target = 'async-node';\n }\n\n if (!compiler.options.mode) {\n compiler.options.mode = process.env.NODE_ENV === 'development' ? 'development' : 'production';\n }\n\n // Configure devtool\n if (!compiler.options.devtool) {\n compiler.options.devtool = 'source-map';\n }\n\n // Suppress verbose infrastructure logging\n if (!compiler.options.infrastructureLogging) {\n compiler.options.infrastructureLogging = {\n level: 'warn', // Only show warnings and errors\n };\n }\n\n // Configure module rules - ensure TypeScript loader is present\n this.ensureTypeScriptLoader(compiler);\n\n // Configure resolve extensions\n if (!compiler.options.resolve) {\n compiler.options.resolve = {};\n }\n compiler.options.resolve.extensions = ['...', '.tsx', '.ts'];\n }\n\n private ensureTypeScriptLoader(compiler: Compiler) {\n if (!compiler.options.module) {\n compiler.options.module = { rules: [] } as any;\n }\n\n if (!compiler.options.module.rules) {\n compiler.options.module.rules = [];\n }\n\n // Check if TypeScript loader is already configured\n const hasTsLoader = compiler.options.module.rules.some((rule: any) =>\n typeof rule === 'object' &&\n rule !== null &&\n 'test' in rule &&\n rule.test instanceof RegExp &&\n rule.test.test('.ts')\n );\n\n // Add TypeScript loader if not present\n if (!hasTsLoader) {\n compiler.options.module.rules.push({\n test: /\\.tsx?$/,\n use: 'builtin:swc-loader',\n exclude: /node_modules/,\n });\n }\n }\n\n private configureDevServer(compiler: Compiler, pluginInfo: any, devConfig: any, port: number) {\n if (!compiler.options.devServer) {\n return; // Should never happen due to check in apply()\n }\n\n const context = compiler.options.context || process.cwd();\n const originalSetup = compiler.options.devServer.setupMiddlewares;\n\n compiler.options.devServer.port = port;\n compiler.options.devServer.static = path.join(context, 'dist');\n compiler.options.devServer.hot = true;\n compiler.options.devServer.devMiddleware = { writeToDisk: true };\n compiler.options.devServer.headers = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',\n };\n\n // Suppress verbose logging\n compiler.options.devServer.client = {\n logging: 'warn', // Only show warnings and errors\n overlay: {\n warnings: false, // Don't show warning overlay\n errors: true, // Still show errors\n },\n };\n\n compiler.options.devServer.setupMiddlewares = (middlewares, devServer) => {\n setupPluginMiddleware(devServer, pluginInfo, devConfig, port);\n return originalSetup ? originalSetup(middlewares, devServer) : middlewares;\n };\n }\n}\n"],"mappings":";;;;;;;;AAEA,MAAM,cAAc;CAClB,+BAA+B;CAC/B,gCAAgC;CAChC,gCAAgC;CACjC;AAED,MAAM,oBAAoB,QAAa;AACrC,QAAO,QAAQ,YAAY,CAAC,SAAS,CAAC,KAAK,WAAW;AACpD,MAAI,UAAU,KAAK,MAAM;GACzB;;AAGJ,MAAM,mBAAmB,WAA4B;AACnD,KAAI,CAAC,OAAQ,QAAO;CACpB,MAAM,UAAU,OAAO,QAAQ,cAAc,GAAG;AAChD,QAAO,UAAU,IAAI,YAAY;;AAGnC,SAAgB,sBAAsB,WAAgB,YAAwB,WAAgB,MAAc;CAC1G,MAAM,YAAY,gBAAgB,WAAW,OAAO;CACpD,IAAIA,WAAmC;EAAE,KAAK;EAAM,KAAK;EAAM;CAC/D,IAAIC,UAAwC;CAE5C,MAAM,iBAAiB,YAAY;AACjC,MAAI,SAAS;AACX,SAAM,SAAS;AACf,aAAU;;;AAId,EAAC,YAAY;AACX,QAAM,gBAAgB;AAEtB,MAAI;GACF,MAAM,EAAE,wBAAwB,MAAM,OAAO;GAC7C,MAAM,EAAE,eAAe,MAAM,OAAO;GACpC,MAAM,EAAE,YAAY,MAAM,OAAO;GACjC,MAAM,EAAE,mBAAmB,MAAM,OAAO;GACxC,MAAM,EAAE,2BAA2B,MAAM,OAAO;GAChD,MAAM,EAAE,6BAA6B,MAAM,OAAO;GAElD,MAAM,WAAW,WAAW,YAAY,WAAW;GAEnD,MAAM,UAAU,oBAAoB,EAClC,UAAU,GACP,WAAW,EACV,WAAW,oBAAoB,KAAK,kBACrC,EACF,EACF,CAAC;GAEF,MAAM,SAAS,MAAM,QAAQ,UAAU,UAAU,WAAW,OAAO;AAEnE,aAAU,YAAY;AACpB,QAAI,UAAU,OAAQ,OAAe,YAAY,WAC/C,OAAO,OAAe,SAAS;AAEjC,QAAI,WAAW,OAAQ,QAAgB,YAAY,WACjD,OAAO,QAAgB,SAAS;AAElC,aAAS,MAAM;AACf,aAAS,MAAM;AACf,QAAI,UAAU,IAAI,OAAO,SACvB,WAAU,IAAI,OAAO,WAAW;;GAIpC,MAAM,eAAe,OAAY,YAAoB;IACnD,MAAMC,QAAkB,CAAC,QAAQ,QAAQ,UAAU,MAAM,WAAW,kBAAkB;AAEtF,QAAI,MAAM,OAAO,UAAU,MAAM,QAAQ,MAAM,MAAM,OAAO,EAAE;AAC5D,WAAM,KAAK,0BAA0B;AACrC,WAAM,MAAM,OAAO,SAAS,OAAY,UAAkB;AACxD,YAAM,KAAK,KAAK,QAAQ,EAAE,IAAI,MAAM,MAAM,KAAK,IAAI,IAAI,SAAS;AAChE,YAAM,KAAK,iBAAiB,MAAM,QAAQ,YAAY;AACtD,YAAM,KAAK,oBAAoB,MAAM,WAAW,eAAe;AAC/D,UAAI,MAAM,aAAa,OACrB,OAAM,KAAK,qBAAqB,KAAK,UAAU,MAAM,SAAS,GAAG;AAEnE,UAAI,MAAM,aAAa,OACrB,OAAM,KAAK,qBAAqB,KAAK,UAAU,MAAM,SAAS,GAAG;UAEjE,OAAM,KAAK,gBAAgB;OAE7B;;AAGJ,QAAI,MAAM,QAAQ,OAAO,MAAM,SAAS,YAAY,OAAO,KAAK,MAAM,KAAK,CAAC,SAAS,GAAG;AACtF,WAAM,KAAK,mBAAmB;AAC9B,SAAI;AAEF,MADgB,KAAK,UAAU,MAAM,MAAM,MAAM,EAAE,CAC3C,MAAM,KAAK,CAAC,SAAQ,SAAQ;AAClC,aAAM,KAAK,KAAK,OAAO;QACvB;aACI;AACN,YAAM,KAAK,KAAK,OAAO,MAAM,KAAK,GAAG;;;AAIzC,QAAI,MAAM,OAAO,MAAM;AACrB,WAAM,KAAK,qBAAqB;AAChC,SAAI;AAEF,MADgB,KAAK,UAAU,MAAM,MAAM,MAAM,MAAM,EAAE,CACjD,MAAM,KAAK,CAAC,SAAQ,SAAQ;AAClC,aAAM,KAAK,KAAK,OAAO;QACvB;aACI;AACN,YAAM,KAAK,KAAK,OAAO,MAAM,MAAM,KAAK,GAAG;;;AAI/C,QAAI,MAAM,KACR,OAAM,KAAK,qBAAqB,MAAM,OAAO;AAG/C,QAAI,MAAM,OACR,OAAM,KAAK,cAAc,MAAM,SAAS;AAG1C,UAAM,KAAK,GAAG;AACd,YAAQ,MAAM,MAAM,KAAK,KAAK,CAAC;;AAIjC,YAAS,MAAM,IAAI,WAAW,OAAO,QAAQ,EAC3C,cAAc,CACZ,SAAS,UAAe;AACtB,gBAAY,OAAO,MAAM;KACzB,CACH,EACF,CAAC;AAGF,YAAS,MAAM,IAAI,eAAe,OAAO,QAAQ;IAC/C,SAAS,CACP,IAAI,uBAAuB,EACzB,kBAAkB,CAAC,IAAI,0BAA0B,CAAC,EACnD,CAAC,CACH;IACD,cAAc,CACZ,SAAS,UAAe;AACtB,iBAAY,OAAO,UAAU;MAC7B,CACH;IACF,CAAC;AAEF,WAAQ,IAAI,iDAAiD;AAC7D,WAAQ,IAAI,iCAAiC;AAC7C,WAAQ,IAAI,iDAAiD;AAC7D,WAAQ,IAAI,kCAAkC,KAAK,UAAU,YAAY;AACzE,WAAQ,IAAI,kCAAkC,KAAK,MAAM;AACzD,WAAQ,IAAI,kCAAkC,KAAK,GAAG;AACtD,WAAQ,IAAI,iDAAiD;AAE7D,aAAU,IAAI,OAAO,WAAW;AAEhC,OAAI,UAAU,OACZ,WAAU,OAAO,KAAK,SAAS,YAAY;AACzC,UAAM,gBAAgB;KACtB;WAEG,OAAO;AACd,WAAQ,MAAM,4BAA4B,MAAM;AAChD,SAAM,gBAAgB;;KAEtB;AAEJ,SAAQ,KAAK,UAAU,YAAY;AACjC,QAAM,gBAAgB;GACtB;AACF,SAAQ,KAAK,WAAW,YAAY;AAClC,QAAM,gBAAgB;GACtB;AAEF,WAAU,IAAI,QAAQ,MAAM,KAAU,QAAa;AACjD,mBAAiB,IAAI;AACrB,MAAI,OAAO,IAAI,CAAC,KAAK;GACrB;AAEF,WAAU,IAAI,IAAI,MAAM,KAAU,QAAa;AAC7C,mBAAiB,IAAI;AACrB,MAAI,KAAK;GACP,IAAI;GACJ,QAAQ,WAAW;GACnB,SAAS,WAAW;GACpB,QAAQ,UAAU,IAAI,OAAO,UAAU,MAAM,UAAU;GACvD,WAAW;IACT,QAAQ;IACR,MAAM;IACN,KAAK,WAAW;IACjB;GACF,CAAC;GACF;CAGF,MAAM,mBAAmB,OAAO,KAAU,QAAa;AACrD,mBAAiB,IAAI;EACrB,MAAM,aAAa,UAAU,IAAI,OAAO,UAAU;AAClD,MAAI,CAAC,WACH,QAAO,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,2BAA2B,CAAC;AAGnE,MAAI;GACF,MAAM,MAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;GAC7C,MAAM,aAAa,IAAI,QAAQ,KAAK;IAClC,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,MAAM,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,MAAM;IAC5D,QAAQ,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,SAAS;IAClE,CAAgB;GAEjB,MAAM,SAAS,MAAM,WAAW,OAAO,YAAY;IACjD,QAAQ;IACR,SAAS,EAAE;IACZ,CAAC;AAEF,OAAI,OAAO,UAAU;AACnB,QAAI,OAAO,OAAO,SAAS,OAAO;AAClC,WAAO,SAAS,QAAQ,SAAS,OAAe,QAAgB;AAC9D,SAAI,UAAU,KAAK,MAAM;MACzB;IACF,MAAM,OAAO,MAAM,OAAO,SAAS,MAAM;AACzC,QAAI,KAAK,KAAK;SAEd,KAAI,OAAO,IAAI,CAAC,KAAK,YAAY;WAE5B,OAAO;AACd,WAAQ,MAAM,kBAAkB,MAAM;AACtC,OAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAQ,MAAgB,SAAS,CAAC;;;AAI7D,WAAU,IAAI,IAAI,QAAQ,iBAAiB;AAC3C,WAAU,IAAI,IAAI,UAAU,iBAAiB;AAE7C,WAAU,IAAI,IAAI,WAAW,UAAU,KAAK,OAAO,KAAU,QAAa;AACxE,mBAAiB,IAAI;EACrB,MAAM,aAAa,UAAU,IAAI,OAAO,UAAU;AAClD,MAAI,CAAC,WACH,QAAO,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,2BAA2B,CAAC;AAGnE,MAAI;GACF,MAAM,MAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;GAC7C,MAAM,aAAa,IAAI,QAAQ,KAAK;IAClC,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,MAAM,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,MAAM;IAC5D,QAAQ,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,SAAS;IAClE,CAAgB;GAEjB,MAAM,SAAS,MAAM,WAAW,OAAO,YAAY;IACjD,QAAQ,WAAW;IACnB,SAAS,EAAE;IACZ,CAAC;AAEF,OAAI,OAAO,UAAU;AACnB,QAAI,OAAO,OAAO,SAAS,OAAO;AAClC,WAAO,SAAS,QAAQ,SAAS,OAAe,QAAgB;AAC9D,SAAI,UAAU,KAAK,MAAM;MACzB;IACF,MAAM,OAAO,MAAM,OAAO,SAAS,MAAM;AACzC,QAAI,KAAK,KAAK;SAEd,KAAI,OAAO,IAAI,CAAC,KAAK,YAAY;WAE5B,OAAO;AACd,WAAQ,MAAM,cAAc,MAAM;AAClC,OAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAQ,MAAgB,SAAS,CAAC;;GAE3D;;;;;AC9QJ,SAAgB,wBAAwB,YAAwB;CAE9D,MAAM;AAEN,QAAO;EACL,gBAAgB;GACd,SAAS,eAAe;GACxB,WAAW;GACX,iBAAiB,GAAG,eAAe;GACnC,eAAe;GACf,OAAO;GACR;EACD,QAAQ;GACN,SAAS,eAAe,aAAa;GACrC,WAAW;GACX,iBAAiB,GAAG,eAAe,aAAa;GAChD,eAAe;GACf,OAAO;GACR;EACD,KAAK;GACH,SAAS,eAAe,aAAa;GACrC,WAAW;GACX,iBAAiB,GAAG,eAAe,aAAa;GAChD,eAAe;GACf,OAAO;GACR;EACD,kBAAkB;GAChB,SAAS,eAAe,aAAa;GACrC,WAAW;GACX,iBAAiB,GAAG,eAAe,aAAa;GAChD,eAAe;GACf,OAAO;GACR;EACD,gBAAgB;GACd,SAAS,eAAe,aAAa;GACrC,WAAW;GACX,iBAAiB,GAAG,eAAe,aAAa;GAChD,eAAe;GACf,OAAO;GACR;EACF;;;;;AC9BH,SAAgB,cAAc,SAA6B;CACzD,MAAM,UAAU,KAAK,KAAK,SAAS,eAAe;CAClD,MAAM,MAAM,KAAK,MAAM,GAAG,aAAa,SAAS,QAAQ,CAAC;AAEzD,QAAO;EACL,MAAM,IAAI;EACV,SAAS,IAAI;EACb,gBAAgB,wBAAwB,IAAI,KAAK;EACjD,cAAc,IAAI,gBAAgB,EAAE;EACpC,kBAAkB,IAAI,oBAAoB,EAAE;EAC7C;;AAGH,MAAM,gCAAgB,IAAI,KAAa;AAEvC,SAAgB,cAAc,eAAuB;AACnD,KAAI;EACF,MAAM,WAAW,KAAK,QAAQ,cAAc;AAE5C,MAAI,cAAc,IAAI,SAAS,EAAE;AAC/B,oBAAe,MAAM;GACrB,MAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,QAAK,MAAM,OAAO,OAAO,eAAa,MAAM,CAC1C,KAAI,IAAI,WAAW,QAAQ,IAAI,QAAQ,SACrC,kBAAe,MAAM;;EAK3B,MAAM,mBAAiB,SAAS,CAAC;AACjC,gBAAc,IAAI,SAAS;AAC3B,SAAO;UACA,OAAO;AACd,UAAQ,KAAK,kCAAkC,cAAc,IAAK,MAAgB,QAAQ;AAC1F,SAAO;;;;;;AChCX,IAAa,uBAAb,MAAkE;CAChE,OAAO;CAEP,YAAY,AAAQC,UAA8B,EAAE,EAAE;EAAlC;;CAEpB,MAAM,UAAoB;EAExB,MAAM,aAAa,cAAc,SAAS,QAAQ,WAAW,QAAQ,KAAK,CAAC;EAC3E,MAAM,YAAY,cAAc,KAAK,QAAQ,iBAAiB,kBAAkB;EAChF,MAAM,OAAO,KAAK,QAAQ,QAAQ,WAAW,QAAQ;AAGrD,OAAK,kBAAkB,UAAU,WAAW;AAG5C,MAAI,CAAC,SAAS,QAAQ,UACpB,UAAS,QAAQ,YAAY,EAAE;AAIjC,OAAK,mBAAmB,UAAU,YAAY,WAAW,KAAK;AAG9D,MAAI,uBAAuB;GACzB,MAAM,WAAW;GACjB,UAAU;GACV,UAAU;GACV,KAAK;GACL,gBAAgB,WACN,QAAQ,wCAAwC,CACzD;GACD,SAAS,EAAE,MAAM,mBAAmB;GACpC,SAAS,EACP,YAAY,kBACb;GACD,QAAQ,wBAAwB,WAAW;GAC5C,CAAC,CAAC,MAAM,SAAS;;CAGpB,AAAQ,kBAAkB,UAAoB,YAAiB;EAC7D,MAAM,UAAU,SAAS,QAAQ,WAAW,QAAQ,KAAK;AAGzD,MAAI,CAAC,SAAS,QAAQ,OACpB,UAAS,QAAQ,SAAS,EAAE;AAE9B,WAAS,QAAQ,OAAO,aAAa,WAAW;AAChD,WAAS,QAAQ,OAAO,aAAa;AACrC,WAAS,QAAQ,OAAO,OAAO,KAAK,QAAQ,SAAS,OAAO;AAC5D,WAAS,QAAQ,OAAO,QAAQ;AAChC,WAAS,QAAQ,OAAO,UAAU,EAAE,MAAM,mBAAmB;AAG7D,MAAI,CAAC,SAAS,QAAQ,OACpB,UAAS,QAAQ,SAAS;AAG5B,MAAI,CAAC,SAAS,QAAQ,KACpB,UAAS,QAAQ,OAAO,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAInF,MAAI,CAAC,SAAS,QAAQ,QACpB,UAAS,QAAQ,UAAU;AAI7B,MAAI,CAAC,SAAS,QAAQ,sBACpB,UAAS,QAAQ,wBAAwB,EACvC,OAAO,QACR;AAIH,OAAK,uBAAuB,SAAS;AAGrC,MAAI,CAAC,SAAS,QAAQ,QACpB,UAAS,QAAQ,UAAU,EAAE;AAE/B,WAAS,QAAQ,QAAQ,aAAa;GAAC;GAAO;GAAQ;GAAM;;CAG9D,AAAQ,uBAAuB,UAAoB;AACjD,MAAI,CAAC,SAAS,QAAQ,OACpB,UAAS,QAAQ,SAAS,EAAE,OAAO,EAAE,EAAE;AAGzC,MAAI,CAAC,SAAS,QAAQ,OAAO,MAC3B,UAAS,QAAQ,OAAO,QAAQ,EAAE;AAapC,MAAI,CATgB,SAAS,QAAQ,OAAO,MAAM,MAAM,SACtD,OAAO,SAAS,YAChB,SAAS,QACT,UAAU,QACV,KAAK,gBAAgB,UACrB,KAAK,KAAK,KAAK,MAAM,CACtB,CAIC,UAAS,QAAQ,OAAO,MAAM,KAAK;GACjC,MAAM;GACN,KAAK;GACL,SAAS;GACV,CAAC;;CAIN,AAAQ,mBAAmB,UAAoB,YAAiB,WAAgB,MAAc;AAC5F,MAAI,CAAC,SAAS,QAAQ,UACpB;EAGF,MAAM,UAAU,SAAS,QAAQ,WAAW,QAAQ,KAAK;EACzD,MAAM,gBAAgB,SAAS,QAAQ,UAAU;AAEjD,WAAS,QAAQ,UAAU,OAAO;AAClC,WAAS,QAAQ,UAAU,SAAS,KAAK,KAAK,SAAS,OAAO;AAC9D,WAAS,QAAQ,UAAU,MAAM;AACjC,WAAS,QAAQ,UAAU,gBAAgB,EAAE,aAAa,MAAM;AAChE,WAAS,QAAQ,UAAU,UAAU;GACnC,+BAA+B;GAC/B,gCAAgC;GAChC,gCAAgC;GACjC;AAGD,WAAS,QAAQ,UAAU,SAAS;GAClC,SAAS;GACT,SAAS;IACP,UAAU;IACV,QAAQ;IACT;GACF;AAED,WAAS,QAAQ,UAAU,oBAAoB,aAAa,cAAc;AACxE,yBAAsB,WAAW,YAAY,WAAW,KAAK;AAC7D,UAAO,gBAAgB,cAAc,aAAa,UAAU,GAAG"}
@@ -72,4 +72,4 @@ declare const CommonPluginErrors: {
72
72
  };
73
73
  //#endregion
74
74
  export { CommonPluginErrors as t };
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLTlzTnBZTHY1LmQubXRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0JBOzs7Ozs7Ozs7Ozs7Y0FBYSJ9
75
+ //# sourceMappingURL=errors-9sNpYLv5.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-9sNpYLv5.d.mts","names":[],"sources":["../src/errors.ts"],"sourcesContent":[],"mappings":";;;;;;AAgBA;;;;;;;;;;;;cAAa"}
@@ -65,4 +65,4 @@ Object.defineProperty(exports, 'CommonPluginErrors', {
65
65
  return CommonPluginErrors;
66
66
  }
67
67
  });
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUNWbm9QbDl2LmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLDhCQUFNLEVBQUUsT0FBTztFQUNkLHdDQUFnQixFQUFFLFNBQVM7RUFDM0Isa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixrQ0FBVSxFQUFFLEtBQUs7R0FBQztHQUFVO0dBQVM7R0FBUSxDQUFDLENBQUMsVUFBVTtFQUN6RCxDQUFDLEVBQ0Y7Q0FDRCxjQUFjLEVBQ2IsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsb0NBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtFQUNuQywyQ0FBbUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVU7RUFDckQsbUNBQVcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVU7RUFDM0MsbUNBQVcsRUFBRSxLQUFLO0dBQUM7R0FBWTtHQUFVO0dBQVksQ0FBQyxDQUFDLFVBQVU7RUFDakUsQ0FBQyxFQUNGO0NBQ0QscUJBQXFCLEVBQ3BCLDhCQUFNLEVBQUUsT0FBTztFQUNkLG9DQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVO0VBQ3ZDLDJDQUFtQixFQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MseUNBQWlCLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0VBQ2pELENBQUMsRUFDRjtDQUNELGFBQWEsRUFDWiw4QkFBTSxFQUFFLE9BQU87RUFDZCx1Q0FBZSxFQUFFLDhCQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsVUFBVTtFQUM3QywwQ0FBa0IsRUFBRSw4QkFBTSxFQUFFLE9BQU87R0FDbEMsK0JBQU8sRUFBRSxRQUFRO0dBQ2pCLGlDQUFTLEVBQUUsUUFBUTtHQUNuQiw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0dBQzNCLENBQUMsQ0FBQyxDQUFDLFVBQVU7RUFDZCxDQUFDLEVBQ0Y7Q0FDRCxXQUFXLEVBQ1YsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixvQ0FBWSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQ2pDLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDViw4QkFBTSxFQUFFLE9BQU87RUFDZCw2Q0FBcUIsRUFBRSw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsZ0NBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
68
+ //# sourceMappingURL=errors-CVnoPl9v.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-CVnoPl9v.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Common error schemas for plugin contracts.\n * Import these to ensure consistent error handling across plugins.\n *\n * @example\n * ```typescript\n * import { CommonPluginErrors } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors(CommonPluginErrors)\n * });\n * ```\n */\nexport const CommonPluginErrors = {\n\tUNAUTHORIZED: {\n\t\tdata: z.object({\n\t\t\tapiKeyProvided: z.boolean(),\n\t\t\tprovider: z.string().optional(),\n\t\t\tauthType: z.enum(['apiKey', 'oauth', 'token']).optional(),\n\t\t})\n\t},\n\tRATE_LIMITED: {\n\t\tdata: z.object({\n\t\t\tretryAfter: z.number().int().min(1),\n\t\t\tremainingRequests: z.number().int().min(0).optional(),\n\t\t\tresetTime: z.string().datetime().optional(),\n\t\t\tlimitType: z.enum(['requests', 'tokens', 'bandwidth']).optional(),\n\t\t})\n\t},\n\tSERVICE_UNAVAILABLE: {\n\t\tdata: z.object({\n\t\t\tretryAfter: z.number().int().optional(),\n\t\t\tmaintenanceWindow: z.boolean().default(false),\n\t\t\testimatedUptime: z.string().datetime().optional(),\n\t\t})\n\t},\n\tBAD_REQUEST: {\n\t\tdata: z.object({\n\t\t\tinvalidFields: z.array(z.string()).optional(),\n\t\t\tvalidationErrors: z.array(z.object({\n\t\t\t\tfield: z.string(),\n\t\t\t\tmessage: z.string(),\n\t\t\t\tcode: z.string().optional(),\n\t\t\t})).optional(),\n\t\t})\n\t},\n\tNOT_FOUND: {\n\t\tdata: z.object({\n\t\t\tresource: z.string().optional(),\n\t\t\tresourceId: z.string().optional(),\n\t\t})\n\t},\n\tFORBIDDEN: {\n\t\tdata: z.object({\n\t\t\trequiredPermissions: z.array(z.string()).optional(),\n\t\t\taction: z.string().optional(),\n\t\t})\n\t}\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,MAAa,qBAAqB;CACjC,cAAc,EACb,8BAAM,EAAE,OAAO;EACd,wCAAgB,EAAE,SAAS;EAC3B,kCAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,kCAAU,EAAE,KAAK;GAAC;GAAU;GAAS;GAAQ,CAAC,CAAC,UAAU;EACzD,CAAC,EACF;CACD,cAAc,EACb,8BAAM,EAAE,OAAO;EACd,oCAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;EACnC,2CAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EACrD,mCAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAC3C,mCAAW,EAAE,KAAK;GAAC;GAAY;GAAU;GAAY,CAAC,CAAC,UAAU;EACjE,CAAC,EACF;CACD,qBAAqB,EACpB,8BAAM,EAAE,OAAO;EACd,oCAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvC,2CAAmB,EAAE,SAAS,CAAC,QAAQ,MAAM;EAC7C,yCAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EACjD,CAAC,EACF;CACD,aAAa,EACZ,8BAAM,EAAE,OAAO;EACd,uCAAe,EAAE,8BAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;EAC7C,0CAAkB,EAAE,8BAAM,EAAE,OAAO;GAClC,+BAAO,EAAE,QAAQ;GACjB,iCAAS,EAAE,QAAQ;GACnB,8BAAM,EAAE,QAAQ,CAAC,UAAU;GAC3B,CAAC,CAAC,CAAC,UAAU;EACd,CAAC,EACF;CACD,WAAW,EACV,8BAAM,EAAE,OAAO;EACd,kCAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,oCAAY,EAAE,QAAQ,CAAC,UAAU;EACjC,CAAC,EACF;CACD,WAAW,EACV,8BAAM,EAAE,OAAO;EACd,6CAAqB,EAAE,8BAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;EACnD,gCAAQ,EAAE,QAAQ,CAAC,UAAU;EAC7B,CAAC,EACF;CACD"}
@@ -60,4 +60,4 @@ const CommonPluginErrors = {
60
60
 
61
61
  //#endregion
62
62
  export { CommonPluginErrors as t };
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUQ3a2VLZjdhLm1qcyIsIm5hbWVzIjpbInoiXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLGdCQUFnQkEsY0FBRSxTQUFTO0VBQzNCLFVBQVVBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDL0IsVUFBVUEsY0FBRSxLQUFLO0dBQUM7R0FBVTtHQUFTO0dBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDekQsQ0FBQyxFQUNGO0NBQ0QsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLFlBQVlBLGNBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7RUFDbkMsbUJBQW1CQSxjQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVTtFQUNyRCxXQUFXQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUMzQyxXQUFXQSxjQUFFLEtBQUs7R0FBQztHQUFZO0dBQVU7R0FBWSxDQUFDLENBQUMsVUFBVTtFQUNqRSxDQUFDLEVBQ0Y7Q0FDRCxxQkFBcUIsRUFDcEIsTUFBTUEsY0FBRSxPQUFPO0VBQ2QsWUFBWUEsY0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVU7RUFDdkMsbUJBQW1CQSxjQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MsaUJBQWlCQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUNqRCxDQUFDLEVBQ0Y7Q0FDRCxhQUFhLEVBQ1osTUFBTUEsY0FBRSxPQUFPO0VBQ2QsZUFBZUEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDN0Msa0JBQWtCQSxjQUFFLE1BQU1BLGNBQUUsT0FBTztHQUNsQyxPQUFPQSxjQUFFLFFBQVE7R0FDakIsU0FBU0EsY0FBRSxRQUFRO0dBQ25CLE1BQU1BLGNBQUUsUUFBUSxDQUFDLFVBQVU7R0FDM0IsQ0FBQyxDQUFDLENBQUMsVUFBVTtFQUNkLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDVixNQUFNQSxjQUFFLE9BQU87RUFDZCxVQUFVQSxjQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQy9CLFlBQVlBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDakMsQ0FBQyxFQUNGO0NBQ0QsV0FBVyxFQUNWLE1BQU1BLGNBQUUsT0FBTztFQUNkLHFCQUFxQkEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsUUFBUUEsY0FBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
63
+ //# sourceMappingURL=errors-D7keKf7a.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-D7keKf7a.mjs","names":["z"],"sources":["../src/errors.ts"],"sourcesContent":["import { z } from \"./zod\";\n\n/**\n * Common error schemas for plugin contracts.\n * Import these to ensure consistent error handling across plugins.\n *\n * @example\n * ```typescript\n * import { CommonPluginErrors } from \"every-plugin/errors\";\n *\n * export const contract = oc.router({\n * getData: oc.route(...)\n * .errors(CommonPluginErrors)\n * });\n * ```\n */\nexport const CommonPluginErrors = {\n\tUNAUTHORIZED: {\n\t\tdata: z.object({\n\t\t\tapiKeyProvided: z.boolean(),\n\t\t\tprovider: z.string().optional(),\n\t\t\tauthType: z.enum(['apiKey', 'oauth', 'token']).optional(),\n\t\t})\n\t},\n\tRATE_LIMITED: {\n\t\tdata: z.object({\n\t\t\tretryAfter: z.number().int().min(1),\n\t\t\tremainingRequests: z.number().int().min(0).optional(),\n\t\t\tresetTime: z.string().datetime().optional(),\n\t\t\tlimitType: z.enum(['requests', 'tokens', 'bandwidth']).optional(),\n\t\t})\n\t},\n\tSERVICE_UNAVAILABLE: {\n\t\tdata: z.object({\n\t\t\tretryAfter: z.number().int().optional(),\n\t\t\tmaintenanceWindow: z.boolean().default(false),\n\t\t\testimatedUptime: z.string().datetime().optional(),\n\t\t})\n\t},\n\tBAD_REQUEST: {\n\t\tdata: z.object({\n\t\t\tinvalidFields: z.array(z.string()).optional(),\n\t\t\tvalidationErrors: z.array(z.object({\n\t\t\t\tfield: z.string(),\n\t\t\t\tmessage: z.string(),\n\t\t\t\tcode: z.string().optional(),\n\t\t\t})).optional(),\n\t\t})\n\t},\n\tNOT_FOUND: {\n\t\tdata: z.object({\n\t\t\tresource: z.string().optional(),\n\t\t\tresourceId: z.string().optional(),\n\t\t})\n\t},\n\tFORBIDDEN: {\n\t\tdata: z.object({\n\t\t\trequiredPermissions: z.array(z.string()).optional(),\n\t\t\taction: z.string().optional(),\n\t\t})\n\t}\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,MAAa,qBAAqB;CACjC,cAAc,EACb,MAAMA,cAAE,OAAO;EACd,gBAAgBA,cAAE,SAAS;EAC3B,UAAUA,cAAE,QAAQ,CAAC,UAAU;EAC/B,UAAUA,cAAE,KAAK;GAAC;GAAU;GAAS;GAAQ,CAAC,CAAC,UAAU;EACzD,CAAC,EACF;CACD,cAAc,EACb,MAAMA,cAAE,OAAO;EACd,YAAYA,cAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;EACnC,mBAAmBA,cAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;EACrD,WAAWA,cAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EAC3C,WAAWA,cAAE,KAAK;GAAC;GAAY;GAAU;GAAY,CAAC,CAAC,UAAU;EACjE,CAAC,EACF;CACD,qBAAqB,EACpB,MAAMA,cAAE,OAAO;EACd,YAAYA,cAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvC,mBAAmBA,cAAE,SAAS,CAAC,QAAQ,MAAM;EAC7C,iBAAiBA,cAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EACjD,CAAC,EACF;CACD,aAAa,EACZ,MAAMA,cAAE,OAAO;EACd,eAAeA,cAAE,MAAMA,cAAE,QAAQ,CAAC,CAAC,UAAU;EAC7C,kBAAkBA,cAAE,MAAMA,cAAE,OAAO;GAClC,OAAOA,cAAE,QAAQ;GACjB,SAASA,cAAE,QAAQ;GACnB,MAAMA,cAAE,QAAQ,CAAC,UAAU;GAC3B,CAAC,CAAC,CAAC,UAAU;EACd,CAAC,EACF;CACD,WAAW,EACV,MAAMA,cAAE,OAAO;EACd,UAAUA,cAAE,QAAQ,CAAC,UAAU;EAC/B,YAAYA,cAAE,QAAQ,CAAC,UAAU;EACjC,CAAC,EACF;CACD,WAAW,EACV,MAAMA,cAAE,OAAO;EACd,qBAAqBA,cAAE,MAAMA,cAAE,QAAQ,CAAC,CAAC,UAAU;EACnD,QAAQA,cAAE,QAAQ,CAAC,UAAU;EAC7B,CAAC,EACF;CACD"}
@@ -72,4 +72,4 @@ declare const CommonPluginErrors: {
72
72
  };
73
73
  //#endregion
74
74
  export { CommonPluginErrors as t };
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLURLUFBQWVlULmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0JBOzs7Ozs7Ozs7Ozs7Y0FBYSJ9
75
+ //# sourceMappingURL=errors-DKPPPYYT.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-DKPPPYYT.d.cts","names":[],"sources":["../src/errors.ts"],"sourcesContent":[],"mappings":";;;;;;AAgBA;;;;;;;;;;;;cAAa"}