@lakphy/local-router 0.4.1 → 0.4.2

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.
package/dist/entry.js CHANGED
@@ -4934,7 +4934,7 @@ var require_compile = __commonJS((exports) => {
4934
4934
  const schOrFunc = root2.refs[ref];
4935
4935
  if (schOrFunc)
4936
4936
  return schOrFunc;
4937
- let _sch = resolve6.call(this, root2, ref);
4937
+ let _sch = resolve4.call(this, root2, ref);
4938
4938
  if (_sch === undefined) {
4939
4939
  const schema = (_a21 = root2.localRefs) === null || _a21 === undefined ? undefined : _a21[ref];
4940
4940
  const { schemaId } = this.opts;
@@ -4961,7 +4961,7 @@ var require_compile = __commonJS((exports) => {
4961
4961
  function sameSchemaEnv(s1, s2) {
4962
4962
  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
4963
4963
  }
4964
- function resolve6(root2, ref) {
4964
+ function resolve4(root2, ref) {
4965
4965
  let sch;
4966
4966
  while (typeof (sch = this.refs[ref]) == "string")
4967
4967
  ref = sch;
@@ -5491,7 +5491,7 @@ var require_fast_uri = __commonJS((exports, module) => {
5491
5491
  }
5492
5492
  return uri;
5493
5493
  }
5494
- function resolve6(baseURI, relativeURI, options) {
5494
+ function resolve4(baseURI, relativeURI, options) {
5495
5495
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
5496
5496
  const resolved = resolveComponent(parse7(baseURI, schemelessOptions), parse7(relativeURI, schemelessOptions), schemelessOptions, true);
5497
5497
  schemelessOptions.skipEscape = true;
@@ -5719,7 +5719,7 @@ var require_fast_uri = __commonJS((exports, module) => {
5719
5719
  var fastUri = {
5720
5720
  SCHEMES,
5721
5721
  normalize,
5722
- resolve: resolve6,
5722
+ resolve: resolve4,
5723
5723
  resolveComponent,
5724
5724
  equal,
5725
5725
  serialize,
@@ -5856,7 +5856,7 @@ var require_core = __commonJS((exports) => {
5856
5856
  opts = this.opts = { ...opts, ...requiredOptions(opts) };
5857
5857
  const { es5, lines } = this.opts.code;
5858
5858
  this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });
5859
- this.logger = getLogger2(opts.logger);
5859
+ this.logger = getLogger(opts.logger);
5860
5860
  const formatOpt = opts.validateFormats;
5861
5861
  opts.validateFormats = false;
5862
5862
  this.RULES = (0, rules_1.getRules)();
@@ -6253,7 +6253,7 @@ var require_core = __commonJS((exports) => {
6253
6253
  return metaOpts;
6254
6254
  }
6255
6255
  var noLogs = { log() {}, warn() {}, error() {} };
6256
- function getLogger2(logger) {
6256
+ function getLogger(logger) {
6257
6257
  if (logger === false)
6258
6258
  return noLogs;
6259
6259
  if (logger === undefined)
@@ -40602,6 +40602,267 @@ function createOpenAICompatible(options) {
40602
40602
  provider.imageModel = createImageModel;
40603
40603
  return provider;
40604
40604
  }
40605
+
40606
+ // node_modules/.bun/hono@4.12.5/node_modules/hono/dist/utils/html.js
40607
+ var HtmlEscapedCallbackPhase = {
40608
+ Stringify: 1,
40609
+ BeforeStream: 2,
40610
+ Stream: 3
40611
+ };
40612
+ var raw = (value, callbacks) => {
40613
+ const escapedString = new String(value);
40614
+ escapedString.isEscaped = true;
40615
+ escapedString.callbacks = callbacks;
40616
+ return escapedString;
40617
+ };
40618
+ var escapeRe = /[&<>'"]/;
40619
+ var stringBufferToString = async (buffer, callbacks) => {
40620
+ let str = "";
40621
+ callbacks ||= [];
40622
+ const resolvedBuffer = await Promise.all(buffer);
40623
+ for (let i = resolvedBuffer.length - 1;; i--) {
40624
+ str += resolvedBuffer[i];
40625
+ i--;
40626
+ if (i < 0) {
40627
+ break;
40628
+ }
40629
+ let r = resolvedBuffer[i];
40630
+ if (typeof r === "object") {
40631
+ callbacks.push(...r.callbacks || []);
40632
+ }
40633
+ const isEscaped = r.isEscaped;
40634
+ r = await (typeof r === "object" ? r.toString() : r);
40635
+ if (typeof r === "object") {
40636
+ callbacks.push(...r.callbacks || []);
40637
+ }
40638
+ if (r.isEscaped ?? isEscaped) {
40639
+ str += r;
40640
+ } else {
40641
+ const buf = [str];
40642
+ escapeToBuffer(r, buf);
40643
+ str = buf[0];
40644
+ }
40645
+ }
40646
+ return raw(str, callbacks);
40647
+ };
40648
+ var escapeToBuffer = (str, buffer) => {
40649
+ const match = str.search(escapeRe);
40650
+ if (match === -1) {
40651
+ buffer[0] += str;
40652
+ return;
40653
+ }
40654
+ let escape2;
40655
+ let index;
40656
+ let lastIndex = 0;
40657
+ for (index = match;index < str.length; index++) {
40658
+ switch (str.charCodeAt(index)) {
40659
+ case 34:
40660
+ escape2 = "&quot;";
40661
+ break;
40662
+ case 39:
40663
+ escape2 = "&#39;";
40664
+ break;
40665
+ case 38:
40666
+ escape2 = "&amp;";
40667
+ break;
40668
+ case 60:
40669
+ escape2 = "&lt;";
40670
+ break;
40671
+ case 62:
40672
+ escape2 = "&gt;";
40673
+ break;
40674
+ default:
40675
+ continue;
40676
+ }
40677
+ buffer[0] += str.substring(lastIndex, index) + escape2;
40678
+ lastIndex = index + 1;
40679
+ }
40680
+ buffer[0] += str.substring(lastIndex, index);
40681
+ };
40682
+ var resolveCallbackSync = (str) => {
40683
+ const callbacks = str.callbacks;
40684
+ if (!callbacks?.length) {
40685
+ return str;
40686
+ }
40687
+ const buffer = [str];
40688
+ const context = {};
40689
+ callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));
40690
+ return buffer[0];
40691
+ };
40692
+ var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {
40693
+ if (typeof str === "object" && !(str instanceof String)) {
40694
+ if (!(str instanceof Promise)) {
40695
+ str = str.toString();
40696
+ }
40697
+ if (str instanceof Promise) {
40698
+ str = await str;
40699
+ }
40700
+ }
40701
+ const callbacks = str.callbacks;
40702
+ if (!callbacks?.length) {
40703
+ return Promise.resolve(str);
40704
+ }
40705
+ if (buffer) {
40706
+ buffer[0] += str;
40707
+ } else {
40708
+ buffer = [str];
40709
+ }
40710
+ const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then((res) => Promise.all(res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))).then(() => buffer[0]));
40711
+ if (preserveCallbacks) {
40712
+ return raw(await resStr, callbacks);
40713
+ } else {
40714
+ return resStr;
40715
+ }
40716
+ };
40717
+
40718
+ // node_modules/.bun/hono@4.12.5/node_modules/hono/dist/helper/html/index.js
40719
+ var html = (strings, ...values) => {
40720
+ const buffer = [""];
40721
+ for (let i = 0, len = strings.length - 1;i < len; i++) {
40722
+ buffer[0] += strings[i];
40723
+ const children = Array.isArray(values[i]) ? values[i].flat(Infinity) : [values[i]];
40724
+ for (let i2 = 0, len2 = children.length;i2 < len2; i2++) {
40725
+ const child = children[i2];
40726
+ if (typeof child === "string") {
40727
+ escapeToBuffer(child, buffer);
40728
+ } else if (typeof child === "number") {
40729
+ buffer[0] += child;
40730
+ } else if (typeof child === "boolean" || child === null || child === undefined) {
40731
+ continue;
40732
+ } else if (typeof child === "object" && child.isEscaped) {
40733
+ if (child.callbacks) {
40734
+ buffer.unshift("", child);
40735
+ } else {
40736
+ const tmp = child.toString();
40737
+ if (tmp instanceof Promise) {
40738
+ buffer.unshift("", tmp);
40739
+ } else {
40740
+ buffer[0] += tmp;
40741
+ }
40742
+ }
40743
+ } else if (child instanceof Promise) {
40744
+ buffer.unshift("", child);
40745
+ } else {
40746
+ escapeToBuffer(child.toString(), buffer);
40747
+ }
40748
+ }
40749
+ }
40750
+ buffer[0] += strings.at(-1);
40751
+ return buffer.length === 1 ? "callbacks" in buffer ? raw(resolveCallbackSync(raw(buffer[0], buffer.callbacks))) : raw(buffer[0]) : stringBufferToString(buffer, buffer.callbacks);
40752
+ };
40753
+
40754
+ // node_modules/.bun/@hono+swagger-ui@0.5.3+bac6debbfb5ded19/node_modules/@hono/swagger-ui/dist/index.js
40755
+ var RENDER_TYPE = {
40756
+ STRING_ARRAY: "string_array",
40757
+ STRING: "string",
40758
+ JSON_STRING: "json_string",
40759
+ RAW: "raw"
40760
+ };
40761
+ var RENDER_TYPE_MAP = {
40762
+ configUrl: RENDER_TYPE.STRING,
40763
+ deepLinking: RENDER_TYPE.RAW,
40764
+ presets: RENDER_TYPE.STRING_ARRAY,
40765
+ plugins: RENDER_TYPE.STRING_ARRAY,
40766
+ spec: RENDER_TYPE.JSON_STRING,
40767
+ url: RENDER_TYPE.STRING,
40768
+ urls: RENDER_TYPE.JSON_STRING,
40769
+ layout: RENDER_TYPE.STRING,
40770
+ docExpansion: RENDER_TYPE.STRING,
40771
+ maxDisplayedTags: RENDER_TYPE.RAW,
40772
+ operationsSorter: RENDER_TYPE.RAW,
40773
+ requestInterceptor: RENDER_TYPE.RAW,
40774
+ responseInterceptor: RENDER_TYPE.RAW,
40775
+ persistAuthorization: RENDER_TYPE.RAW,
40776
+ defaultModelsExpandDepth: RENDER_TYPE.RAW,
40777
+ defaultModelExpandDepth: RENDER_TYPE.RAW,
40778
+ defaultModelRendering: RENDER_TYPE.STRING,
40779
+ displayRequestDuration: RENDER_TYPE.RAW,
40780
+ filter: RENDER_TYPE.RAW,
40781
+ showExtensions: RENDER_TYPE.RAW,
40782
+ showCommonExtensions: RENDER_TYPE.RAW,
40783
+ queryConfigEnabled: RENDER_TYPE.RAW,
40784
+ displayOperationId: RENDER_TYPE.RAW,
40785
+ tagsSorter: RENDER_TYPE.RAW,
40786
+ onComplete: RENDER_TYPE.RAW,
40787
+ syntaxHighlight: RENDER_TYPE.JSON_STRING,
40788
+ tryItOutEnabled: RENDER_TYPE.RAW,
40789
+ requestSnippetsEnabled: RENDER_TYPE.RAW,
40790
+ requestSnippets: RENDER_TYPE.JSON_STRING,
40791
+ oauth2RedirectUrl: RENDER_TYPE.STRING,
40792
+ showMutabledRequest: RENDER_TYPE.RAW,
40793
+ request: RENDER_TYPE.JSON_STRING,
40794
+ supportedSubmitMethods: RENDER_TYPE.JSON_STRING,
40795
+ validatorUrl: RENDER_TYPE.STRING,
40796
+ withCredentials: RENDER_TYPE.RAW,
40797
+ modelPropertyMacro: RENDER_TYPE.RAW,
40798
+ parameterMacro: RENDER_TYPE.RAW
40799
+ };
40800
+ var renderSwaggerUIOptions = (options) => {
40801
+ return Object.entries(options).map(([k, v]) => {
40802
+ const key = k;
40803
+ if (!RENDER_TYPE_MAP[key] || v === undefined)
40804
+ return "";
40805
+ switch (RENDER_TYPE_MAP[key]) {
40806
+ case RENDER_TYPE.STRING:
40807
+ return `${key}: '${v}'`;
40808
+ case RENDER_TYPE.STRING_ARRAY:
40809
+ if (!Array.isArray(v))
40810
+ return "";
40811
+ return `${key}: [${v.map((ve) => `${ve}`).join(",")}]`;
40812
+ case RENDER_TYPE.JSON_STRING:
40813
+ return `${key}: ${JSON.stringify(v)}`;
40814
+ case RENDER_TYPE.RAW:
40815
+ return `${key}: ${v}`;
40816
+ default:
40817
+ return "";
40818
+ }
40819
+ }).filter((item) => item !== "").join(",");
40820
+ };
40821
+ var remoteAssets = ({ version: version2 }) => {
40822
+ const url2 = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version2 !== undefined ? `@${version2}` : ""}`;
40823
+ return {
40824
+ css: [`${url2}/swagger-ui.css`],
40825
+ js: [`${url2}/swagger-ui-bundle.js`]
40826
+ };
40827
+ };
40828
+ var SwaggerUI = (options) => {
40829
+ const asset = remoteAssets({ version: options?.version });
40830
+ delete options.version;
40831
+ if (options.manuallySwaggerUIHtml)
40832
+ return options.manuallySwaggerUIHtml(asset);
40833
+ const optionsStrings = renderSwaggerUIOptions(options);
40834
+ return `
40835
+ <div>
40836
+ <div id="swagger-ui"></div>
40837
+ ${asset.css.map((url2) => html`<link rel="stylesheet" href="${url2}" />`)}
40838
+ ${asset.js.map((url2) => html`<script src="${url2}" crossorigin="anonymous"><\/script>`)}
40839
+ <script>
40840
+ window.onload = () => {
40841
+ window.ui = SwaggerUIBundle({
40842
+ dom_id: '#swagger-ui',${optionsStrings},
40843
+ })
40844
+ }
40845
+ </script>
40846
+ </div>
40847
+ `;
40848
+ };
40849
+ var middleware = (options) => async (c) => {
40850
+ const title = options?.title ?? "SwaggerUI";
40851
+ return c.html(`
40852
+ <!doctype html>
40853
+ <html lang="en">
40854
+ <head>
40855
+ <meta charset="utf-8" />
40856
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
40857
+ <meta name="description" content="SwaggerUI" />
40858
+ <title>${title}</title>
40859
+ </head>
40860
+ <body>
40861
+ ${SwaggerUI(options)}
40862
+ </body>
40863
+ </html>
40864
+ `);
40865
+ };
40605
40866
  // node_modules/.bun/@ai-sdk+gateway@3.0.66+3c5d820c62823f0b/node_modules/@ai-sdk/gateway/dist/index.mjs
40606
40867
  var import_oidc = __toESM(require_dist(), 1);
40607
40868
  var import_oidc2 = __toESM(require_dist(), 1);
@@ -48100,267 +48361,6 @@ var _a20;
48100
48361
  _a20 = symbol20;
48101
48362
  var defaultDownload2 = createDownload();
48102
48363
 
48103
- // node_modules/.bun/hono@4.12.5/node_modules/hono/dist/utils/html.js
48104
- var HtmlEscapedCallbackPhase = {
48105
- Stringify: 1,
48106
- BeforeStream: 2,
48107
- Stream: 3
48108
- };
48109
- var raw = (value, callbacks) => {
48110
- const escapedString = new String(value);
48111
- escapedString.isEscaped = true;
48112
- escapedString.callbacks = callbacks;
48113
- return escapedString;
48114
- };
48115
- var escapeRe = /[&<>'"]/;
48116
- var stringBufferToString = async (buffer, callbacks) => {
48117
- let str = "";
48118
- callbacks ||= [];
48119
- const resolvedBuffer = await Promise.all(buffer);
48120
- for (let i = resolvedBuffer.length - 1;; i--) {
48121
- str += resolvedBuffer[i];
48122
- i--;
48123
- if (i < 0) {
48124
- break;
48125
- }
48126
- let r = resolvedBuffer[i];
48127
- if (typeof r === "object") {
48128
- callbacks.push(...r.callbacks || []);
48129
- }
48130
- const isEscaped = r.isEscaped;
48131
- r = await (typeof r === "object" ? r.toString() : r);
48132
- if (typeof r === "object") {
48133
- callbacks.push(...r.callbacks || []);
48134
- }
48135
- if (r.isEscaped ?? isEscaped) {
48136
- str += r;
48137
- } else {
48138
- const buf = [str];
48139
- escapeToBuffer(r, buf);
48140
- str = buf[0];
48141
- }
48142
- }
48143
- return raw(str, callbacks);
48144
- };
48145
- var escapeToBuffer = (str, buffer) => {
48146
- const match = str.search(escapeRe);
48147
- if (match === -1) {
48148
- buffer[0] += str;
48149
- return;
48150
- }
48151
- let escape2;
48152
- let index;
48153
- let lastIndex = 0;
48154
- for (index = match;index < str.length; index++) {
48155
- switch (str.charCodeAt(index)) {
48156
- case 34:
48157
- escape2 = "&quot;";
48158
- break;
48159
- case 39:
48160
- escape2 = "&#39;";
48161
- break;
48162
- case 38:
48163
- escape2 = "&amp;";
48164
- break;
48165
- case 60:
48166
- escape2 = "&lt;";
48167
- break;
48168
- case 62:
48169
- escape2 = "&gt;";
48170
- break;
48171
- default:
48172
- continue;
48173
- }
48174
- buffer[0] += str.substring(lastIndex, index) + escape2;
48175
- lastIndex = index + 1;
48176
- }
48177
- buffer[0] += str.substring(lastIndex, index);
48178
- };
48179
- var resolveCallbackSync = (str) => {
48180
- const callbacks = str.callbacks;
48181
- if (!callbacks?.length) {
48182
- return str;
48183
- }
48184
- const buffer = [str];
48185
- const context2 = {};
48186
- callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context: context2 }));
48187
- return buffer[0];
48188
- };
48189
- var resolveCallback = async (str, phase, preserveCallbacks, context2, buffer) => {
48190
- if (typeof str === "object" && !(str instanceof String)) {
48191
- if (!(str instanceof Promise)) {
48192
- str = str.toString();
48193
- }
48194
- if (str instanceof Promise) {
48195
- str = await str;
48196
- }
48197
- }
48198
- const callbacks = str.callbacks;
48199
- if (!callbacks?.length) {
48200
- return Promise.resolve(str);
48201
- }
48202
- if (buffer) {
48203
- buffer[0] += str;
48204
- } else {
48205
- buffer = [str];
48206
- }
48207
- const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context: context2 }))).then((res) => Promise.all(res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context2, buffer))).then(() => buffer[0]));
48208
- if (preserveCallbacks) {
48209
- return raw(await resStr, callbacks);
48210
- } else {
48211
- return resStr;
48212
- }
48213
- };
48214
-
48215
- // node_modules/.bun/hono@4.12.5/node_modules/hono/dist/helper/html/index.js
48216
- var html = (strings, ...values) => {
48217
- const buffer = [""];
48218
- for (let i = 0, len = strings.length - 1;i < len; i++) {
48219
- buffer[0] += strings[i];
48220
- const children = Array.isArray(values[i]) ? values[i].flat(Infinity) : [values[i]];
48221
- for (let i2 = 0, len2 = children.length;i2 < len2; i2++) {
48222
- const child = children[i2];
48223
- if (typeof child === "string") {
48224
- escapeToBuffer(child, buffer);
48225
- } else if (typeof child === "number") {
48226
- buffer[0] += child;
48227
- } else if (typeof child === "boolean" || child === null || child === undefined) {
48228
- continue;
48229
- } else if (typeof child === "object" && child.isEscaped) {
48230
- if (child.callbacks) {
48231
- buffer.unshift("", child);
48232
- } else {
48233
- const tmp = child.toString();
48234
- if (tmp instanceof Promise) {
48235
- buffer.unshift("", tmp);
48236
- } else {
48237
- buffer[0] += tmp;
48238
- }
48239
- }
48240
- } else if (child instanceof Promise) {
48241
- buffer.unshift("", child);
48242
- } else {
48243
- escapeToBuffer(child.toString(), buffer);
48244
- }
48245
- }
48246
- }
48247
- buffer[0] += strings.at(-1);
48248
- return buffer.length === 1 ? "callbacks" in buffer ? raw(resolveCallbackSync(raw(buffer[0], buffer.callbacks))) : raw(buffer[0]) : stringBufferToString(buffer, buffer.callbacks);
48249
- };
48250
-
48251
- // node_modules/.bun/@hono+swagger-ui@0.5.3+bac6debbfb5ded19/node_modules/@hono/swagger-ui/dist/index.js
48252
- var RENDER_TYPE = {
48253
- STRING_ARRAY: "string_array",
48254
- STRING: "string",
48255
- JSON_STRING: "json_string",
48256
- RAW: "raw"
48257
- };
48258
- var RENDER_TYPE_MAP = {
48259
- configUrl: RENDER_TYPE.STRING,
48260
- deepLinking: RENDER_TYPE.RAW,
48261
- presets: RENDER_TYPE.STRING_ARRAY,
48262
- plugins: RENDER_TYPE.STRING_ARRAY,
48263
- spec: RENDER_TYPE.JSON_STRING,
48264
- url: RENDER_TYPE.STRING,
48265
- urls: RENDER_TYPE.JSON_STRING,
48266
- layout: RENDER_TYPE.STRING,
48267
- docExpansion: RENDER_TYPE.STRING,
48268
- maxDisplayedTags: RENDER_TYPE.RAW,
48269
- operationsSorter: RENDER_TYPE.RAW,
48270
- requestInterceptor: RENDER_TYPE.RAW,
48271
- responseInterceptor: RENDER_TYPE.RAW,
48272
- persistAuthorization: RENDER_TYPE.RAW,
48273
- defaultModelsExpandDepth: RENDER_TYPE.RAW,
48274
- defaultModelExpandDepth: RENDER_TYPE.RAW,
48275
- defaultModelRendering: RENDER_TYPE.STRING,
48276
- displayRequestDuration: RENDER_TYPE.RAW,
48277
- filter: RENDER_TYPE.RAW,
48278
- showExtensions: RENDER_TYPE.RAW,
48279
- showCommonExtensions: RENDER_TYPE.RAW,
48280
- queryConfigEnabled: RENDER_TYPE.RAW,
48281
- displayOperationId: RENDER_TYPE.RAW,
48282
- tagsSorter: RENDER_TYPE.RAW,
48283
- onComplete: RENDER_TYPE.RAW,
48284
- syntaxHighlight: RENDER_TYPE.JSON_STRING,
48285
- tryItOutEnabled: RENDER_TYPE.RAW,
48286
- requestSnippetsEnabled: RENDER_TYPE.RAW,
48287
- requestSnippets: RENDER_TYPE.JSON_STRING,
48288
- oauth2RedirectUrl: RENDER_TYPE.STRING,
48289
- showMutabledRequest: RENDER_TYPE.RAW,
48290
- request: RENDER_TYPE.JSON_STRING,
48291
- supportedSubmitMethods: RENDER_TYPE.JSON_STRING,
48292
- validatorUrl: RENDER_TYPE.STRING,
48293
- withCredentials: RENDER_TYPE.RAW,
48294
- modelPropertyMacro: RENDER_TYPE.RAW,
48295
- parameterMacro: RENDER_TYPE.RAW
48296
- };
48297
- var renderSwaggerUIOptions = (options) => {
48298
- return Object.entries(options).map(([k, v]) => {
48299
- const key = k;
48300
- if (!RENDER_TYPE_MAP[key] || v === undefined)
48301
- return "";
48302
- switch (RENDER_TYPE_MAP[key]) {
48303
- case RENDER_TYPE.STRING:
48304
- return `${key}: '${v}'`;
48305
- case RENDER_TYPE.STRING_ARRAY:
48306
- if (!Array.isArray(v))
48307
- return "";
48308
- return `${key}: [${v.map((ve) => `${ve}`).join(",")}]`;
48309
- case RENDER_TYPE.JSON_STRING:
48310
- return `${key}: ${JSON.stringify(v)}`;
48311
- case RENDER_TYPE.RAW:
48312
- return `${key}: ${v}`;
48313
- default:
48314
- return "";
48315
- }
48316
- }).filter((item) => item !== "").join(",");
48317
- };
48318
- var remoteAssets = ({ version: version2 }) => {
48319
- const url2 = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version2 !== undefined ? `@${version2}` : ""}`;
48320
- return {
48321
- css: [`${url2}/swagger-ui.css`],
48322
- js: [`${url2}/swagger-ui-bundle.js`]
48323
- };
48324
- };
48325
- var SwaggerUI = (options) => {
48326
- const asset = remoteAssets({ version: options?.version });
48327
- delete options.version;
48328
- if (options.manuallySwaggerUIHtml)
48329
- return options.manuallySwaggerUIHtml(asset);
48330
- const optionsStrings = renderSwaggerUIOptions(options);
48331
- return `
48332
- <div>
48333
- <div id="swagger-ui"></div>
48334
- ${asset.css.map((url2) => html`<link rel="stylesheet" href="${url2}" />`)}
48335
- ${asset.js.map((url2) => html`<script src="${url2}" crossorigin="anonymous"><\/script>`)}
48336
- <script>
48337
- window.onload = () => {
48338
- window.ui = SwaggerUIBundle({
48339
- dom_id: '#swagger-ui',${optionsStrings},
48340
- })
48341
- }
48342
- </script>
48343
- </div>
48344
- `;
48345
- };
48346
- var middleware = (options) => async (c) => {
48347
- const title = options?.title ?? "SwaggerUI";
48348
- return c.html(`
48349
- <!doctype html>
48350
- <html lang="en">
48351
- <head>
48352
- <meta charset="utf-8" />
48353
- <meta name="viewport" content="width=device-width, initial-scale=1" />
48354
- <meta name="description" content="SwaggerUI" />
48355
- <title>${title}</title>
48356
- </head>
48357
- <body>
48358
- ${SwaggerUI(options)}
48359
- </body>
48360
- </html>
48361
- `);
48362
- };
48363
-
48364
48364
  // node_modules/.bun/hono@4.12.5/node_modules/hono/dist/compose.js
48365
48365
  var compose = (middleware2, onError, onNotFound) => {
48366
48366
  return (context2, next) => {
@@ -51277,6 +51277,14 @@ var DEFAULT_CONFIG = `{
51277
51277
  // },
51278
51278
  },
51279
51279
 
51280
+ // \u901A\u7528\u670D\u52A1\u8BBE\u7F6E
51281
+ server: {
51282
+ // \u9ED8\u8BA4\u5173\u95ED\u5C40\u57DF\u7F51\u8BBF\u95EE\u3002\u5F00\u542F\u540E\uFF0C\u5C40\u57DF\u7F51\u5185\u5176\u4ED6\u8BBE\u5907\u53EF\u8BBF\u95EE\u672C\u670D\u52A1\u3002
51283
+ lanAccess: {
51284
+ enabled: false,
51285
+ },
51286
+ },
51287
+
51280
51288
  // \u65E5\u5FD7\u914D\u7F6E\uFF08\u53EF\u9009\uFF0C\u4E0D\u914D\u7F6E\u5219\u4E0D\u542F\u7528\u65E5\u5FD7\u8BB0\u5F55\uFF09
51281
51289
  // log: {
51282
51290
  // enabled: true,
@@ -51347,8 +51355,8 @@ function resolveLogBaseDir(logConfig) {
51347
51355
  }
51348
51356
 
51349
51357
  // src/config-store.ts
51350
- import { resolve as resolve3 } from "path";
51351
51358
  import { writeFileSync as writeFileSync2 } from "fs";
51359
+ import { resolve as resolve3 } from "path";
51352
51360
  class ConfigStore {
51353
51361
  config;
51354
51362
  absolutePath;
@@ -51384,6 +51392,51 @@ class ConfigStore {
51384
51392
  }
51385
51393
  }
51386
51394
 
51395
+ // src/config-validate.ts
51396
+ var import__2020 = __toESM(require_2020(), 1);
51397
+ var import_ajv_formats = __toESM(require_dist2(), 1);
51398
+ import { readFileSync as readFileSync2 } from "fs";
51399
+
51400
+ // src/runtime-assets.ts
51401
+ import { fileURLToPath } from "url";
51402
+ function resolveBundledAssetPath(relativePath) {
51403
+ return fileURLToPath(new URL(relativePath, import.meta.url));
51404
+ }
51405
+ function getBundledSchemaPath() {
51406
+ return resolveBundledAssetPath("../config.schema.json");
51407
+ }
51408
+ function getBundledWebRoot() {
51409
+ return resolveBundledAssetPath("../dist/web/");
51410
+ }
51411
+
51412
+ // src/config-validate.ts
51413
+ function validateBusinessRules(config2) {
51414
+ for (const [routeType, modelMap] of Object.entries(config2.routes)) {
51415
+ if (!modelMap["*"]) {
51416
+ throw new Error(`\u8DEF\u7531 "${routeType}" \u7F3A\u5C11 "*" \u515C\u5E95\u89C4\u5219`);
51417
+ }
51418
+ for (const target of Object.values(modelMap)) {
51419
+ if (!config2.providers[target.provider]) {
51420
+ throw new Error(`\u8DEF\u7531 "${routeType}" \u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684 provider "${target.provider}"`);
51421
+ }
51422
+ }
51423
+ }
51424
+ }
51425
+ function validateConfigOrThrow(config2) {
51426
+ validateBusinessRules(config2);
51427
+ const ajv = new import__2020.default({ allErrors: true, strict: false });
51428
+ import_ajv_formats.default(ajv);
51429
+ const schemaJson = JSON.parse(readFileSync2(getBundledSchemaPath(), "utf-8"));
51430
+ const validateBySchema = ajv.compile(schemaJson);
51431
+ const valid = validateBySchema(config2);
51432
+ if (!valid) {
51433
+ const firstError = validateBySchema.errors?.[0];
51434
+ const path = firstError?.instancePath || "(root)";
51435
+ const message = firstError?.message ?? "unknown schema validation error";
51436
+ throw new Error(`Schema \u6821\u9A8C\u5931\u8D25: ${path} ${message}`);
51437
+ }
51438
+ }
51439
+
51387
51440
  // src/crypto.ts
51388
51441
  var ECDH_PARAMS = { name: "ECDH", namedCurve: "P-256" };
51389
51442
  function base64Encode(buf) {
@@ -51736,7 +51789,7 @@ async function getLogMetrics(options) {
51736
51789
  }
51737
51790
 
51738
51791
  // src/log-query.ts
51739
- import { createReadStream as createReadStream2, existsSync as existsSync3, readFileSync as readFileSync2 } from "fs";
51792
+ import { createReadStream as createReadStream2, existsSync as existsSync3, readFileSync as readFileSync3 } from "fs";
51740
51793
  import { join as join4, resolve as resolve4 } from "path";
51741
51794
  import { createInterface as createInterface2 } from "readline";
51742
51795
 
@@ -52096,7 +52149,7 @@ function readStreamContent(baseDir, streamFile) {
52096
52149
  return { content: null, warning: "stream_file \u4E0D\u662F .sse.raw \u6587\u4EF6\uFF0C\u5DF2\u8DF3\u8FC7\u8BFB\u53D6\u3002" };
52097
52150
  }
52098
52151
  if (existsSync3(resolvedFromFile)) {
52099
- return { content: readFileSync2(resolvedFromFile, "utf-8"), warning: null };
52152
+ return { content: readFileSync3(resolvedFromFile, "utf-8"), warning: null };
52100
52153
  }
52101
52154
  const fallbackPath = resolve4(resolvedBase, streamFile);
52102
52155
  if (!fallbackPath.startsWith(`${resolvedBase}/`) && fallbackPath !== resolvedBase) {
@@ -52105,7 +52158,7 @@ function readStreamContent(baseDir, streamFile) {
52105
52158
  if (!existsSync3(fallbackPath)) {
52106
52159
  return { content: null, warning: "stream_file \u4E0D\u5B58\u5728\uFF0C\u53EF\u80FD\u5DF2\u88AB\u6E05\u7406\u3002" };
52107
52160
  }
52108
- return { content: readFileSync2(fallbackPath, "utf-8"), warning: null };
52161
+ return { content: readFileSync3(fallbackPath, "utf-8"), warning: null };
52109
52162
  } catch (err) {
52110
52163
  return {
52111
52164
  content: null,
@@ -52994,6 +53047,85 @@ function normalizeUrl(rawUrl) {
52994
53047
  return rawUrl;
52995
53048
  }
52996
53049
 
53050
+ // src/network-access.ts
53051
+ var REMOTE_ADDRESS_ENV_KEY = "LOCAL_ROUTER_REMOTE_ADDRESS";
53052
+ function parseIpv4(address) {
53053
+ const parts = address.split(".");
53054
+ if (parts.length !== 4)
53055
+ return null;
53056
+ const octets = parts.map((part) => {
53057
+ if (!/^\d{1,3}$/.test(part))
53058
+ return Number.NaN;
53059
+ const value = Number.parseInt(part, 10);
53060
+ return value >= 0 && value <= 255 ? value : Number.NaN;
53061
+ });
53062
+ return octets.every(Number.isFinite) ? octets : null;
53063
+ }
53064
+ function normalizeIpAddress(raw2) {
53065
+ let address = raw2.trim().toLowerCase();
53066
+ if (address.startsWith("[")) {
53067
+ const end = address.indexOf("]");
53068
+ if (end !== -1)
53069
+ address = address.slice(1, end);
53070
+ }
53071
+ const mappedIpv4 = address.match(/^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/);
53072
+ if (mappedIpv4) {
53073
+ return mappedIpv4[1];
53074
+ }
53075
+ return address;
53076
+ }
53077
+ function isLoopbackAddress(raw2) {
53078
+ if (!raw2)
53079
+ return false;
53080
+ const address = normalizeIpAddress(raw2);
53081
+ const ipv43 = parseIpv4(address);
53082
+ if (ipv43)
53083
+ return ipv43[0] === 127;
53084
+ return address === "::1";
53085
+ }
53086
+ function isLanAddress(raw2) {
53087
+ if (!raw2)
53088
+ return false;
53089
+ const address = normalizeIpAddress(raw2);
53090
+ const ipv43 = parseIpv4(address);
53091
+ if (ipv43) {
53092
+ const [a, b] = ipv43;
53093
+ return a === 10 || a === 172 && b >= 16 && b <= 31 || a === 192 && b === 168 || a === 169 && b === 254;
53094
+ }
53095
+ return address.startsWith("fc") || address.startsWith("fd") || /^fe[89ab]/.test(address);
53096
+ }
53097
+ function decideNetworkAccess(serverConfig, rawRemoteAddress) {
53098
+ const remoteAddress = rawRemoteAddress ? normalizeIpAddress(rawRemoteAddress) : null;
53099
+ if (!remoteAddress || isLoopbackAddress(remoteAddress)) {
53100
+ return { allowed: true, remoteAddress };
53101
+ }
53102
+ const lanEnabled = serverConfig?.lanAccess?.enabled === true;
53103
+ if (!lanEnabled) {
53104
+ return { allowed: false, remoteAddress, reason: "lan-disabled" };
53105
+ }
53106
+ if (!isLanAddress(remoteAddress)) {
53107
+ return { allowed: false, remoteAddress, reason: "non-lan-address" };
53108
+ }
53109
+ return { allowed: true, remoteAddress };
53110
+ }
53111
+ function getRemoteAddressFromContext(c2) {
53112
+ const env = c2.env;
53113
+ const value = env?.[REMOTE_ADDRESS_ENV_KEY];
53114
+ return typeof value === "string" && value.trim() ? value : null;
53115
+ }
53116
+ function createNetworkAccessMiddleware(store) {
53117
+ return async (c2, next) => {
53118
+ const decision = decideNetworkAccess(store.get().server, getRemoteAddressFromContext(c2));
53119
+ if (!decision.allowed) {
53120
+ return c2.json({
53121
+ error: decision.reason === "lan-disabled" ? "\u5C40\u57DF\u7F51\u670D\u52A1\u672A\u5F00\u542F\uFF0C\u5DF2\u62D2\u7EDD\u975E\u672C\u673A\u8BF7\u6C42" : "\u4EC5\u5141\u8BB8\u672C\u673A\u6216\u5C40\u57DF\u7F51\u6765\u6E90\u8BBF\u95EE",
53122
+ remoteAddress: decision.remoteAddress
53123
+ }, 403);
53124
+ }
53125
+ await next();
53126
+ };
53127
+ }
53128
+
52997
53129
  // src/openapi.ts
52998
53130
  var openAPISpec = {
52999
53131
  openapi: "3.0.0",
@@ -53442,7 +53574,9 @@ var openAPISpec = {
53442
53574
  type: "object",
53443
53575
  additionalProperties: { type: "string" }
53444
53576
  },
53445
- requestBody: { type: ["object", "array", "string", "number", "boolean", "null"] }
53577
+ requestBody: {
53578
+ type: ["object", "array", "string", "number", "boolean", "null"]
53579
+ }
53446
53580
  }
53447
53581
  },
53448
53582
  response: {
@@ -54096,9 +54230,9 @@ var openAPISpec = {
54096
54230
  };
54097
54231
 
54098
54232
  // src/plugin-loader.ts
54099
- import { resolve as resolve5, join as join8 } from "path";
54233
+ import { mkdtemp, rm, writeFile } from "fs/promises";
54100
54234
  import { tmpdir } from "os";
54101
- import { mkdtemp, writeFile, rm } from "fs/promises";
54235
+ import { join as join8, resolve as resolve5 } from "path";
54102
54236
  function isLocalPath(pkg) {
54103
54237
  return pkg.startsWith("./") || pkg.startsWith("../") || pkg.startsWith("/") || /^[A-Za-z]:[\\/]/.test(pkg);
54104
54238
  }
@@ -54173,13 +54307,17 @@ class PluginManager {
54173
54307
  constructor(configDir) {
54174
54308
  this.configDir = configDir;
54175
54309
  }
54176
- async loadPluginsForProvider(providerName, pluginConfigs) {
54310
+ async loadPluginsForProvider(providerName, providerConfig, pluginConfigs) {
54177
54311
  const loaded = [];
54178
54312
  const failures = [];
54179
54313
  for (const config2 of pluginConfigs) {
54180
54314
  try {
54181
54315
  const definition = await importPlugin(config2.package, this.configDir);
54182
- const instance2 = await definition.create(config2.params ?? {});
54316
+ const params = { ...config2.params ?? {} };
54317
+ if (definition.name === "protocol-adapter" && params.targetFormat === undefined) {
54318
+ params.targetFormat = providerConfig.type;
54319
+ }
54320
+ const instance2 = await definition.create(params);
54183
54321
  loaded.push({ config: config2, definition, instance: instance2 });
54184
54322
  } catch (err) {
54185
54323
  const errorMsg = err instanceof Error ? err.message : String(err);
@@ -54195,7 +54333,7 @@ class PluginManager {
54195
54333
  const oldPluginsToDispose = [];
54196
54334
  for (const [providerName, providerConfig] of Object.entries(providers)) {
54197
54335
  if (providerConfig.plugins && providerConfig.plugins.length > 0) {
54198
- const { loaded, failures } = await this.loadPluginsForProvider(providerName, providerConfig.plugins);
54336
+ const { loaded, failures } = await this.loadPluginsForProvider(providerName, providerConfig, providerConfig.plugins);
54199
54337
  allFailures.push(...failures);
54200
54338
  if (failures.length > 0) {
54201
54339
  console.warn(`[plugin] provider "${providerName}" \u6709\u63D2\u4EF6\u52A0\u8F7D\u5931\u8D25\uFF0C\u4FDD\u7559\u65E7\u63D2\u4EF6\u94FE`);
@@ -54264,19 +54402,12 @@ class PluginManager {
54264
54402
  }
54265
54403
  }
54266
54404
  }
54267
- async disposePluginMap(pluginMap) {
54268
- const allPlugins = [];
54269
- for (const [, loadedPlugins] of pluginMap) {
54270
- allPlugins.push(...loadedPlugins);
54271
- }
54272
- await this.disposePluginList(allPlugins);
54273
- }
54274
54405
  }
54275
54406
 
54276
54407
  // src/proxy.ts
54277
54408
  import { appendFile, readFile, unlink } from "fs/promises";
54278
- import { join as join9 } from "path";
54279
54409
  import { tmpdir as tmpdir2 } from "os";
54410
+ import { join as join9 } from "path";
54280
54411
 
54281
54412
  // src/plugin-engine.ts
54282
54413
  async function executeRequestPlugins(plugins, ctx, url2, headers, body) {
@@ -54787,47 +54918,34 @@ function createOpenaiResponsesRoutes(routeType, store, pluginManager) {
54787
54918
  return routes;
54788
54919
  }
54789
54920
 
54790
- // src/runtime-assets.ts
54791
- import { fileURLToPath } from "url";
54792
- function resolveBundledAssetPath(relativePath) {
54793
- return fileURLToPath(new URL(relativePath, import.meta.url));
54794
- }
54795
- function getBundledSchemaPath() {
54796
- return resolveBundledAssetPath("../config.schema.json");
54797
- }
54798
- function getBundledWebRoot() {
54799
- return resolveBundledAssetPath("../dist/web/");
54800
- }
54801
-
54802
- // src/config-validate.ts
54803
- var import__2020 = __toESM(require_2020(), 1);
54804
- var import_ajv_formats = __toESM(require_dist2(), 1);
54805
- import { readFileSync as readFileSync3 } from "fs";
54806
- function validateBusinessRules(config2) {
54807
- for (const [routeType, modelMap] of Object.entries(config2.routes)) {
54808
- if (!modelMap["*"]) {
54809
- throw new Error(`\u8DEF\u7531 "${routeType}" \u7F3A\u5C11 "*" \u515C\u5E95\u89C4\u5219`);
54810
- }
54811
- for (const target of Object.values(modelMap)) {
54812
- if (!config2.providers[target.provider]) {
54813
- throw new Error(`\u8DEF\u7531 "${routeType}" \u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684 provider "${target.provider}"`);
54814
- }
54815
- }
54921
+ // src/server-address.ts
54922
+ function formatUrlHost(host) {
54923
+ const trimmed = host.trim();
54924
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
54925
+ return trimmed;
54816
54926
  }
54927
+ return trimmed.includes(":") ? `[${trimmed}]` : trimmed;
54817
54928
  }
54818
- function validateConfigOrThrow(config2) {
54819
- validateBusinessRules(config2);
54820
- const ajv = new import__2020.default({ allErrors: true, strict: false });
54821
- import_ajv_formats.default(ajv);
54822
- const schemaJson = JSON.parse(readFileSync3(getBundledSchemaPath(), "utf-8"));
54823
- const validateBySchema = ajv.compile(schemaJson);
54824
- const valid = validateBySchema(config2);
54825
- if (!valid) {
54826
- const firstError = validateBySchema.errors?.[0];
54827
- const path = firstError?.instancePath || "(root)";
54828
- const message = firstError?.message ?? "unknown schema validation error";
54829
- throw new Error(`Schema \u6821\u9A8C\u5931\u8D25: ${path} ${message}`);
54929
+ function resolveLocalAccessHost(listenHost) {
54930
+ const host = listenHost.trim().toLowerCase();
54931
+ if (host === "0.0.0.0" || host === "") {
54932
+ return "127.0.0.1";
54933
+ }
54934
+ if (host === "::" || host === "[::]") {
54935
+ return "::1";
54830
54936
  }
54937
+ return listenHost.trim();
54938
+ }
54939
+ function createServerAddressInfo(listenHost, port) {
54940
+ const normalizedListenHost = listenHost.trim() || "0.0.0.0";
54941
+ const localHost = resolveLocalAccessHost(normalizedListenHost);
54942
+ return {
54943
+ listenHost: normalizedListenHost,
54944
+ localHost,
54945
+ port,
54946
+ listenUrl: `http://${formatUrlHost(normalizedListenHost)}:${port}`,
54947
+ localUrl: `http://${formatUrlHost(localHost)}:${port}`
54948
+ };
54831
54949
  }
54832
54950
 
54833
54951
  // src/index.ts
@@ -54869,13 +54987,18 @@ var ROUTE_REGISTRY = {
54869
54987
  create: createAnthropicMessagesRoutes
54870
54988
  }
54871
54989
  };
54872
- function printIntegrationGuide(config2) {
54873
- const host = process.env.HOST ?? "127.0.0.1";
54874
- const port = process.env.PORT ?? "4099";
54875
- const baseUrl = `http://${host}:${port}`;
54990
+ function printIntegrationGuide(config2, listen = {}) {
54991
+ const host = listen.host ?? process.env.HOST ?? "0.0.0.0";
54992
+ const parsedPort = listen.port ?? Number.parseInt(process.env.PORT ?? "4099", 10);
54993
+ const address = createServerAddressInfo(host, Number.isFinite(parsedPort) ? parsedPort : 4099);
54994
+ const baseUrl = address.localUrl;
54876
54995
  console.log(`
54877
54996
  ================ local-router \u63A5\u5165\u6307\u5357 ================`);
54878
- console.log(`\u672C\u5730\u670D\u52A1\u5730\u5740: ${baseUrl}`);
54997
+ console.log(`\u670D\u52A1\u76D1\u542C\u5730\u5740: ${address.listenUrl}`);
54998
+ console.log(`\u672C\u673A\u8BBF\u95EE\u5730\u5740: ${address.localUrl}`);
54999
+ if (address.listenHost === "0.0.0.0" || address.listenHost === "::" || address.listenHost === "[::]") {
55000
+ console.log("\u5C40\u57DF\u7F51\u8BBF\u95EE: \u5F00\u542F\u5C40\u57DF\u7F51\u670D\u52A1\u540E\uFF0C\u4F7F\u7528\u672C\u673A\u5C40\u57DF\u7F51 IP \u66FF\u6362\u4E0A\u9762\u7684\u672C\u673A\u5730\u5740\u3002");
55001
+ }
54879
55002
  console.log("\u5065\u5EB7\u68C0\u67E5: GET /");
54880
55003
  console.log(`API \u6587\u6863: ${baseUrl}/api/docs`);
54881
55004
  console.log(`\u7BA1\u7406\u9762\u677F: ${baseUrl}/admin`);
@@ -55514,8 +55637,9 @@ async function createApp(store, options) {
55514
55637
  options?.registerCleanup?.(() => {
55515
55638
  pluginManager.disposeAll().catch(() => {});
55516
55639
  });
55517
- printIntegrationGuide(config2);
55640
+ printIntegrationGuide(config2, options?.listen);
55518
55641
  const app = new Hono2;
55642
+ app.use("*", createNetworkAccessMiddleware(store));
55519
55643
  app.get("/", (c2) => c2.text("local-router is running"));
55520
55644
  for (const [routeType, entry] of Object.entries(ROUTE_REGISTRY)) {
55521
55645
  const subApp = entry.create(routeType, store, pluginManager);
@@ -55554,12 +55678,26 @@ async function createApp(store, options) {
55554
55678
  async function createDefaultAppFromProcessArgs() {
55555
55679
  const configPath = parseConfigPath();
55556
55680
  const store = new ConfigStore(configPath);
55557
- return createApp(store);
55681
+ return createApp(store, {
55682
+ listen: {
55683
+ host: process.env.HOST ?? "0.0.0.0",
55684
+ port: Number.parseInt(process.env.PORT ?? "4099", 10)
55685
+ }
55686
+ });
55558
55687
  }
55559
55688
 
55560
55689
  // src/entry.ts
55561
55690
  var app = await createDefaultAppFromProcessArgs();
55562
- var entry_default = app;
55691
+ var entry_default = {
55692
+ hostname: process.env.HOST ?? "0.0.0.0",
55693
+ port: Number.parseInt(process.env.PORT ?? "4099", 10),
55694
+ fetch(request, server) {
55695
+ const remoteAddress = server.requestIP(request)?.address ?? null;
55696
+ return app.fetch(request, {
55697
+ [REMOTE_ADDRESS_ENV_KEY]: remoteAddress
55698
+ });
55699
+ }
55700
+ };
55563
55701
  export {
55564
55702
  entry_default as default
55565
55703
  };