{
  "version": 3,
  "sources": ["../index.ts", "../src/workflow.ts", "../src/dual-object.ts", "../src/workflow-dispatcher.ts", "../src/round-robin.ts", "../src/abortable.ts", "../src/middleware-dispatcher/dynamic-middleware-dispatcher.ts", "../src/middleware-dispatcher/middleware-dispatcher.ts", "../src/middleware-dispatcher/proto-middleware-dispatcher.ts", "../src/utility/parse-i18n.ts", "../src/patch-string-in-object.ts", "../src/i18n/i18n.ts", "../src/i18n/middlewares/lookup.ts", "../src/observe-diff.ts", "../src/memorize.ts", "../src/may-be-array.ts", "../src/app-context/app-context.ts", "../src/app-context/app-service-base.ts", "../src/configurer/configurer.ts"],
  "sourcesContent": ["export * from './src/workflow';\nexport * from './src/dual-object';\nexport * from './src/workflow-dispatcher';\nexport * from './src/round-robin';\nexport * from './src/abortable';\nexport * from './src/types';\nexport * from './src/middleware-dispatcher';\nexport * from './src/i18n';\nexport * from './src/patch-string-in-object';\nexport * from './src/observe-diff';\nexport * from './src/memorize';\nexport * from './src/may-be-array';\nexport * from './src/app-context';\n\nexport * from './src/configurer';\n", "// ========== \u7C7B\u578B\u5DE5\u5177 ==========\ntype AwaitedLike<T> = T extends Promise<infer R> ? R : T;\ntype AnyFn = (...args: any[]) => any;\n\ntype Chain<T> = Promise<AwaitedLike<T>> &\n  (T extends AnyFn\n    ? (...a: Parameters<T>) => Chain<AwaitedLike<ReturnType<T>>>\n    : {}) & {\n    [K in keyof T]: T[K] extends (...a: infer A) => infer R\n      ? (...a: A) => Chain<AwaitedLike<R>>\n      : Chain<AwaitedLike<T[K]>>;\n  };\n\n// ========== \u6838\u5FC3\uFF1A\u4E0D\u53EF\u53D8\u8282\u70B9 ==========\nclass Node {\n  private memo?: Promise<any>;\n  constructor(\n    private readonly source: any, // \u53EA\u6709\u6839\u8282\u70B9\u6709\u610F\u4E49\uFF1B\u5B50\u8282\u70B9\u53EF\u590D\u7528\u6839\u7684 source\n    private readonly parent: Node | null, // \u524D\u7F00\n    private readonly op: ((x: any) => any) | null, // \u4ECE parent \u7ED3\u679C\u5230\u672C\u8282\u70B9\u7ED3\u679C\u7684\u53D8\u6362\n  ) {}\n\n  run(): Promise<any> {\n    if (!this.memo) {\n      this.memo = (async () => {\n        if (!this.parent) {\n          // \u6839\uFF1A\u628A source \u89E3\u4E00\u6B21\u5373\u53EF\n          return await this.source;\n        }\n        // \u5148\u62FF\u5230\u7236\u8282\u70B9\u7ED3\u679C\uFF08\u4F1A\u8BB0\u5FC6\u5316\uFF09\n        const base = await this.parent.run();\n        // \u5E94\u7528\u672C\u8282\u70B9\u7684\u53D8\u6362\uFF08\u5141\u8BB8\u8FD4\u56DE\u540C\u6B65\u6216\u5F02\u6B65\uFF09\n        return this.op ? this.op(base) : base;\n      })();\n    }\n    return this.memo;\n  }\n\n  // \u5DE5\u5382\uFF1A\u884D\u751F\u5B50\u8282\u70B9\uFF08\u5206\u53C9 = \u590D\u7528\u540C\u4E00\u4E2A parent\uFF09\n  child(op: (x: any) => any): Node {\n    return new Node(this.source, this, op);\n  }\n\n  // \u62FF\u5230\u201C\u76F8\u540C\u8282\u70B9\u201D\u7684\u53E5\u67C4\uFF08\u663E\u5F0F fork\uFF09\n  fork(): Node {\n    return new Node(this.source, this.parent, this.op);\n  }\n}\n\nexport const WF_NODE = Symbol('@@workflow/node');\n\nfunction isWorkflowChain(x: any): x is Chain<any> {\n  return !!x && typeof x === 'function' && x[WF_NODE] instanceof Node;\n}\n\n// ========== \u5BF9\u5916 API\uFF1Aworkflow ==========\nexport function workflow<T>(source: T | Promise<T>): Chain<T> {\n  if (isWorkflowChain(source)) {\n    return source as unknown as Chain<T>;\n  }\n  const root = new Node(source, null, null);\n  return makeProxy<T>(root) as any;\n}\n\n// ========== \u4EE3\u7406\u5C42\uFF1A\u628A Node \u66B4\u9732\u6210\u94FE\u5F0F API ==========\nfunction makeProxy<T>(node: Node): Chain<T> {\n  const runOnce = () => node.run(); // \u8BB0\u5FC6\u5316\u5728 Node \u5185\u90E8\n\n  const rootHandler: ProxyHandler<any> = {\n    get(_t, prop) {\n      if (prop === WF_NODE) return node;\n      // \u7ED3\u675F\u4FE1\u53F7\uFF1A\u6240\u6709 then/catch/finally \u590D\u7528\u540C\u4E00\u4E2A Promise\n      if (prop === 'then')\n        return (res: any, rej?: any) => runOnce().then(res, rej);\n      if (prop === 'catch') return (rej: any) => runOnce().catch(rej);\n      if (prop === 'finally') return (fin: any) => runOnce().finally(fin);\n\n      // \u8BBF\u95EE\u4E00\u4E2A\u5C5E\u6027\uFF1A\u751F\u6210\u4E00\u4E2A\u201CGet\u201D\u5B50\u8282\u70B9\uFF0C\u4F46\u4E0D\u6267\u884C\n      return linkProxy(prop);\n    },\n    // \u652F\u6301\u5BF9\u201C\u5F53\u524D\u503C\u201D\u76F4\u63A5\u4E8C\u6B21\u8C03\u7528\uFF1A foo()()\n    apply(_t, _this, argArray) {\n      const child = node.child((cur: any) => {\n        if (typeof cur !== 'function')\n          throw new TypeError('Current value is not callable');\n        return cur(...argArray);\n      });\n      return makeProxy<any>(child);\n    },\n  };\n\n  const linkProxy = (prop: PropertyKey) =>\n    new Proxy(function () {}, {\n      // \u628A \u201C.foo(\u2026args)\u201D \u8BB0\u5F55\u4E3A Call\n      apply(_t, _this, argArray) {\n        const child = node.child((cur: any) => {\n          const fn = (cur as any)[prop];\n          if (typeof fn !== 'function') {\n            throw new TypeError(`${String(prop)} is not a function`);\n          }\n          return fn.apply(cur, argArray);\n        });\n        return makeProxy<any>(child);\n      },\n      // \u628A \u201C.bar\u201D \u8BB0\u5F55\u4E3A Get\uFF1B\u7EE7\u7EED\u6DF1\u5165\u65F6\u5728\u8FD9\u4E2A Get \u7684\u7ED3\u679C\u4E0A\u518D\u5904\u7406\n      get(_t, next) {\n        if (next === WF_NODE) return node;\n        if (next === 'then')\n          return (r: any, j?: any) =>\n            node\n              .child((cur: any) => (cur as any)[prop])\n              .run()\n              .then(r, j);\n        if (next === 'catch')\n          return (rej: any) =>\n            node\n              .child((cur: any) => (cur as any)[prop])\n              .run()\n              .catch(rej);\n        if (next === 'finally')\n          return (fin: any) =>\n            node\n              .child((cur: any) => (cur as any)[prop])\n              .run()\n              .finally(fin);\n\n        const child = node.child((cur: any) => (cur as any)[prop]);\n        return (makeProxy as any)(child)[next];\n      },\n    });\n\n  return new Proxy(function () {}, rootHandler) as any;\n}\n", "// dual-unified.ts\nexport type Dual<T> = T & PromiseLike<T>;\nexport const DUAL_PENDING = Symbol('dual.pending');\nexport const throwDualPending = (): never => {\n  throw DUAL_PENDING;\n};\n\ntype ThenKey = 'then' | 'catch' | 'finally';\nconst isThenKey = (k: PropertyKey): k is ThenKey =>\n  k === 'then' || k === 'catch' || k === 'finally';\n\ntype State = 'undecided' | 'pending' | 'fulfilled' | 'rejected';\n\nexport type AsyncMethodKeys<T> = {\n  [K in keyof T]-?: T[K] extends (...args: any[]) => Promise<any> ? K : never;\n}[keyof T];\n\nexport interface DualizeOptions<T> {\n  /** \u8FD9\u4E9B\u65B9\u6CD5\u5728 undecided/pending \u65F6\u4F1A\u8FD4\u56DE\u5EF6\u8FDF\u6267\u884C\u51FD\u6570\uFF0C\u7B49\u5F85\u5BF9\u8C61 Promise \u5B8C\u6210\u540E\u518D\u8C03\u7528 */\n  asyncMethods?: readonly (keyof T)[];\n}\n\nexport function dualizeAny<T>(\n  sync: () => T, // \u540C\u6B65\u6784\u9020\uFF1B\u82E5\u629B\u9519\u5219\u89C6\u4E3A rejected\n  asyncFn: () => Promise<T>, // \u5F02\u6B65\u6784\u9020\n  options?: DualizeOptions<T>,\n): Dual<T> {\n  let state: State = 'undecided';\n\n  let value!: T; // fulfilled \u65F6\u7684\u503C\uFF08\u542B\u6765\u81EA sync \u6216 async\uFF09\n  let reason: any; // rejected \u7684\u9519\u8BEF\n  let p!: Promise<T>; // \u7F13\u5B58 Promise\uFF08resolved/rejected/\u8FDB\u884C\u4E2D\uFF09\n\n  const asyncMethodSet = new Set<PropertyKey>(\n    (options?.asyncMethods ?? []) as readonly PropertyKey[],\n  );\n\n  const startAsync = () => {\n    if (!p || state === 'undecided') {\n      state = 'pending';\n      p = Promise.resolve()\n        .then(asyncFn)\n        .then(\n          (v) => {\n            value = v;\n            state = 'fulfilled';\n            return v;\n          },\n          (e) => {\n            reason = e;\n            state = 'rejected';\n            throw e;\n          },\n        );\n    }\n    return p;\n  };\n\n  const ensureSync = () => {\n    if (state === 'undecided') {\n      try {\n        value = sync();\n        state = 'fulfilled';\n      } catch (e) {\n        if (e === DUAL_PENDING) {\n          startAsync();\n          return;\n        }\n        reason = e;\n        state = 'rejected';\n      }\n    }\n  };\n\n  /** \u5728\u201C\u5BF9\u8C61\u53EF\u7528\u201D\u540E\u8C03\u7528\u67D0\u4E2A\u5F02\u6B65\u65B9\u6CD5\uFF08\u7531 asyncMethods \u58F0\u660E\uFF09 */\n  const makeDeferredAsyncMethod =\n    (prop: PropertyKey) =>\n    (...args: any[]) =>\n      startAsync().then((obj) => {\n        const fn = (obj as any)[prop];\n        return fn.apply(obj, args);\n      });\n\n  // \u4ECE\u67D0\u4E2A\u503C\u4E0A\u53D6\u5C5E\u6027\uFF08\u539F\u59CB\u503C\u4F1A\u88C5\u7BB1\uFF09\uFF0C\u5E76\u7ED1\u5B9A this\n  const getFrom = (v: unknown, prop: PropertyKey) => {\n    if (prop === Symbol.toPrimitive) {\n      return (hint: 'default' | 'number' | 'string') => {\n        const x: any = v;\n        if (hint === 'number') return Number(x);\n        if (hint === 'string') return String(x);\n        if (typeof x === 'string') return x;\n        const n = Number(x);\n        return Number.isNaN(n) ? String(x) : n;\n      };\n    }\n    if (prop === 'valueOf') return () => v as any;\n    if (prop === 'toString') return () => String(v);\n\n    const boxed: any =\n      v !== null && (typeof v === 'object' || typeof v === 'function')\n        ? v\n        : Object(v as any);\n    const out = boxed[prop];\n    return typeof out === 'function' ? out.bind(boxed) : out;\n  };\n\n  const proxy = new Proxy(Object.create(null) as any, {\n    get(_t, prop) {\n      // then/catch/finally\uFF1A\u8D70 Promise \u901A\u9053\n      if (isThenKey(prop)) {\n        if (state === 'undecided') {\n          startAsync();\n        } else if (state === 'fulfilled') {\n          // \u82E5\u5DF2 fulfilled\uFF08\u6765\u81EA sync \u6216 async\uFF09\uFF0C\u8865\u4E00\u4E2A\u5DF2\u5B8C\u6210\u7684 Promise\n          p ||= Promise.resolve(value);\n        } else if (state === 'rejected') {\n          p ||= Promise.reject(reason);\n        } else {\n          // pending\uFF1A\u5DF2\u6709 p\n          startAsync();\n        }\n        const anyP: any = p;\n        const m = anyP[prop];\n        return typeof m === 'function' ? m.bind(anyP) : m;\n      }\n\n      // \u58F0\u660E\u4E3A\u5F02\u6B65\u65B9\u6CD5\u7684\u952E\uFF1A\u5728 undecided/pending \u65F6\u8FD4\u56DE\u201C\u5EF6\u8FDF\u51FD\u6570\u201D\n      if (asyncMethodSet.has(prop)) {\n        if (state === 'undecided' || state === 'pending') {\n          startAsync();\n          return makeDeferredAsyncMethod(prop);\n        }\n        if (state === 'fulfilled') {\n          return getFrom(value, prop); // \u540C\u6B65\u53EF\u76F4\u63A5\u53D6\u5230\u65B9\u6CD5\uFF08\u5176\u672C\u8EAB\u8FD4\u56DE Promise\uFF09\n        }\n        if (state === 'rejected') {\n          // \u8BBF\u95EE\u5373\u629B\uFF1B\u4E5F\u53EF\u4EE5\u9009\u62E9\u8FD4\u56DE () => Promise.reject(reason)\n          throw reason;\n        }\n      }\n\n      // \u5176\u5B83\u5C5E\u6027\u8BBF\u95EE\uFF1A\u9075\u5FAA\u72B6\u6001\u673A\n      switch (state) {\n        case 'undecided': {\n          ensureSync();\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-expect-error\n          if (state === 'fulfilled') return getFrom(value, prop);\n          if ((state as State) === 'pending') {\n            throw new TypeError('Value is not ready yet. Please await it first.');\n          }\n          // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n          // @ts-expect-error\n          if (state === 'rejected') throw reason;\n          // \u7406\u8BBA\u4E0A\u4E0D\u4F1A\u5230\u8FD9\u91CC\n          throw new TypeError('Invalid state transition');\n        }\n        case 'pending': {\n          // \u975E asyncMethods \u7684\u5C5E\u6027\u5728 pending \u65F6\u4E0D\u53EF\u540C\u6B65\u8BFB\u53D6\n          throw new TypeError('Value is not ready yet. Please await it first.');\n        }\n        case 'fulfilled': {\n          return getFrom(value, prop);\n        }\n        case 'rejected': {\n          throw reason;\n        }\n      }\n    },\n\n    has(_t, key) {\n      if (state === 'undecided') {\n        ensureSync();\n      }\n      if (state === 'fulfilled') return key in Object(value as any);\n      return false; // pending/rejected\uFF1A\u4FDD\u5B88\u5904\u7406\n    },\n\n    ownKeys() {\n      if (state === 'undecided') ensureSync();\n      if (state === 'fulfilled') return Reflect.ownKeys(Object(value as any));\n      return [];\n    },\n\n    getOwnPropertyDescriptor(_t, key) {\n      if (state === 'undecided') ensureSync();\n      if (state === 'fulfilled')\n        return Object.getOwnPropertyDescriptor(Object(value as any), key);\n      return undefined;\n    },\n  });\n\n  return proxy as Dual<T>;\n}\n", "export interface DispatcherOptions {\n  /** Max attempts per task. Default 3. */\n  maxAttempts?: number;\n  /** Backoff base in ms. backoff = base * 2^failCount. Default 1000. */\n  backoffBaseMs?: number;\n}\n\n// Internal task record\ntype Task<F extends (...args: any[]) => Promise<any>> = {\n  args: Parameters<F>;\n  resolve: (v: Awaited<ReturnType<F>>) => void;\n  reject: (e: any) => void;\n  attempts: number;\n  lastError?: any;\n  triedWorkers: Set<number>; // for global dispatch\n  specificWorkerIndex?: number; // for dispatchSpecific only\n};\n\ntype WorkerState = {\n  running: boolean;\n  failCount: number;\n  nextAvailableAt: number;\n  totalRuns: number;\n};\n\ntype RemovalWaiter = () => void;\n\ntype ActiveSlot<F extends (...args: any[]) => Promise<any>> = {\n  kind: 'active';\n  fn: F;\n  state: WorkerState;\n  queue: Task<F>[];\n  removalWaiters: RemovalWaiter[];\n  removed?: boolean; // marker when removed while running; retained for completion callback\n};\n\ntype PendingSlot<F extends (...args: any[]) => Promise<any>> = {\n  kind: 'pending';\n  promise: Promise<F>;\n  queue: Task<F>[];\n  removalWaiters: RemovalWaiter[];\n  error?: any;\n  removed?: boolean; // if removed before resolved\n};\n\ntype RejectedSlot<F extends (...args: any[]) => Promise<any>> = {\n  kind: 'rejected';\n  error: any;\n  queue: Task<F>[];\n  removalWaiters: RemovalWaiter[];\n  removed?: boolean;\n};\n\ntype Slot<F extends (...args: any[]) => Promise<any>> =\n  | ActiveSlot<F>\n  | PendingSlot<F>\n  | RejectedSlot<F>;\n\nexport type WorkerSnapshot<F extends (...args: any[]) => Promise<any>> =\n  | {\n      index: number;\n      status: 'active';\n      fn: F;\n      running: boolean;\n      failCount: number;\n      totalRuns: number;\n      blockedMs: number;\n      specificQueue: number;\n    }\n  | {\n      index: number;\n      status: 'pending';\n      promise: Promise<F>;\n      specificQueue: number;\n    }\n  | {\n      index: number;\n      status: 'rejected';\n      error: string;\n      specificQueue: number;\n    };\n\nexport class WorkflowDispatcher<F extends (...args: any[]) => Promise<any>> {\n  private readonly maxAttempts: number;\n  private readonly backoffBaseMs: number;\n\n  private readonly slots: Slot<F>[] = [];\n  private readonly globalQueue: Task<F>[] = [];\n\n  private pendingInits = 0;\n  private everActivated = false;\n  private drainScheduled = false;\n\n  constructor(\n    workersOrPromises: Array<F | Promise<F>>,\n    options: DispatcherOptions = {},\n  ) {\n    // if (!workersOrPromises?.length) throw new Error('workers cannot be empty');\n\n    this.maxAttempts = options.maxAttempts ?? 3;\n    this.backoffBaseMs = options.backoffBaseMs ?? 1000;\n\n    for (let i = 0; i < workersOrPromises.length; i++) {\n      const w = workersOrPromises[i];\n      if (typeof w === 'function') {\n        const slot: ActiveSlot<F> = {\n          kind: 'active',\n          fn: w,\n          state: {\n            running: false,\n            failCount: 0,\n            nextAvailableAt: 0,\n            totalRuns: 0,\n          },\n          queue: [],\n          removalWaiters: [],\n        };\n        this.slots.push(slot);\n        this.everActivated = true;\n      } else {\n        // Create a stable slot object and mutate it in-place on resolve/reject.\n        this.pendingInits++;\n        const slot: PendingSlot<F> = {\n          kind: 'pending',\n          promise: Promise.resolve(w),\n          queue: [],\n          removalWaiters: [],\n        };\n        this.slots.push(slot);\n\n        slot.promise\n          .then((fn) => {\n            if (slot.removed) return; // was removed; ignore resolution\n            // mutate in-place to active\n            (slot as any).kind = 'active';\n            (slot as any).fn = fn;\n            (slot as any).state = {\n              running: false,\n              failCount: 0,\n              nextAvailableAt: 0,\n              totalRuns: 0,\n            };\n            this.everActivated = true;\n            // keep queue & removalWaiters arrays as-is\n          })\n          .catch((err) => {\n            if (slot.removed) return; // was removed; ignore\n            // mutate in-place to rejected (keep queue/waiters)\n            (slot as any).kind = 'rejected';\n            (slot as any).error = err;\n          })\n          .finally(() => {\n            this.pendingInits--;\n            this.drain();\n            if (this.pendingInits === 0 && !this.hasAnyActive()) {\n              const err = new Error(\n                'No workers available (all failed to initialize).',\n              );\n              setTimeout(() => this.rejectAllQueued(err), 0);\n            }\n          });\n      }\n    }\n\n    if (this.everActivated) this.drain();\n  }\n\n  /** Dispatch: choose eligible active with least totalRuns; retry across workers on failure. */\n  dispatch(...args: Parameters<F>): Promise<Awaited<ReturnType<F>>> {\n    return new Promise((resolve, reject) => {\n      const task: Task<F> = {\n        args,\n        resolve,\n        reject,\n        attempts: 0,\n        triedWorkers: new Set(),\n      };\n      this.globalQueue.push(task);\n      this.drain();\n    });\n  }\n\n  /** Dispatch to a specific worker (ignore backoff), wait until it is free; retry on the same worker. */\n  dispatchSpecific(\n    index: number,\n    ...args: Parameters<F>\n  ): Promise<Awaited<ReturnType<F>>> {\n    if (index < 0 || index >= this.slots.length) {\n      return Promise.reject(new Error(`worker index out of range: ${index}`));\n    }\n    return new Promise((resolve, reject) => {\n      const task: Task<F> = {\n        args,\n        resolve,\n        reject,\n        attempts: 0,\n        triedWorkers: new Set(),\n        specificWorkerIndex: index,\n      };\n      const slot = this.slots[index];\n      slot.queue.push(task);\n      this.drain();\n    });\n  }\n\n  /** Replace a worker at index with a new active worker function. */\n  public replaceWorker(index: number, fn: F): void {\n    if (index < 0 || index >= this.slots.length) {\n      throw new Error(`worker index out of range: ${index}`);\n    }\n    const prevHadActive = this.hasAnyActive();\n    const slot = this.slots[index];\n\n    // Preserve queue & removal waiters; reset failure/backoff; keep totalRuns to avoid skew.\n    const preservedQueue = slot.queue;\n    const preservedWaiters = slot.removalWaiters ?? [];\n\n    const next: ActiveSlot<F> = {\n      kind: 'active',\n      fn,\n      state: {\n        running: false,\n        failCount: 0,\n        nextAvailableAt: 0,\n        totalRuns: (slot as any).state?.totalRuns ?? 0,\n      },\n      queue: preservedQueue,\n      removalWaiters: preservedWaiters,\n    };\n\n    // Mutate in-place if possible (keeps references stable), else replace array entry.\n    Object.assign(slot as any, next);\n    (slot as any).kind = 'active';\n    (slot as any).fn = fn;\n    (slot as any).state.failCount = 0;\n    (slot as any).state.nextAvailableAt = 0;\n\n    this.everActivated = true;\n    if (!prevHadActive && this.hasAnyActive()) {\n      this.drain();\n    } else {\n      this.drain();\n    }\n  }\n\n  /** Add a new active worker at the tail; return its index. */\n  public addWorker(fn: F): number {\n    const slot: ActiveSlot<F> = {\n      kind: 'active',\n      fn,\n      state: { running: false, failCount: 0, nextAvailableAt: 0, totalRuns: 0 },\n      queue: [],\n      removalWaiters: [],\n    };\n    const index = this.slots.length;\n    this.slots.push(slot);\n    this.everActivated = true;\n    this.drain();\n    return index;\n  }\n\n  /**\n   * Remove a worker completely (splice). It becomes unavailable immediately.\n   * Returns a Promise that resolves when its last running task (if any) finishes.\n   */\n  public removeWorker(index: number): Promise<void> {\n    if (index < 0 || index >= this.slots.length) {\n      return Promise.reject(new Error(`worker index out of range: ${index}`));\n    }\n\n    const slot = this.slots[index];\n\n    // Reject all queued specific tasks on this worker (macro-task to avoid unhandled)\n    const queued = slot.queue.splice(0);\n    const removalErr = new Error(`Worker[${index}] removed`);\n    setTimeout(() => {\n      for (const t of queued) t.reject(removalErr);\n    }, 0);\n\n    // Decide completion promise:\n    let completion: Promise<void>;\n    const isRunning = slot.kind === 'active' && slot.state.running;\n    if (!isRunning) {\n      completion = Promise.resolve();\n    } else {\n      completion = new Promise<void>((resolve) => {\n        slot.removalWaiters.push(resolve);\n      });\n    }\n\n    // Mark as removed (so any pending init resolution is ignored)\n    (slot as any).removed = true;\n\n    // Physically remove the slot\n    this.slots.splice(index, 1);\n\n    // Re-map indices in all remaining tasks:\n    // 1) Fix specificWorkerIndex in every remaining slot.queue\n    for (let i = 0; i < this.slots.length; i++) {\n      const s = this.slots[i];\n      for (const t of s.queue) {\n        if (typeof t.specificWorkerIndex === 'number') {\n          if (t.specificWorkerIndex === index) {\n            // This should not happen because we just removed and flushed its queue,\n            // but guard anyway.\n            t.reject(new Error(`Worker[${index}] no longer exists`));\n          } else if (t.specificWorkerIndex > index) {\n            t.specificWorkerIndex -= 1;\n          }\n        }\n      }\n    }\n    // 2) Fix triedWorkers sets in globalQueue\n    for (const t of this.globalQueue) {\n      if (t.triedWorkers.has(index)) t.triedWorkers.delete(index);\n      const next = new Set<number>();\n      for (const w of t.triedWorkers) {\n        next.add(w > index ? w - 1 : w);\n      }\n      t.triedWorkers = next;\n    }\n\n    // Trigger scheduling for the remaining system\n    this.drain();\n\n    return completion;\n  }\n\n  snapshot(): WorkerSnapshot<F>[] {\n    const now = Date.now();\n\n    return this.slots.map((slot, i) => {\n      switch (slot.kind) {\n        case 'active': {\n          const s = slot.state;\n          return {\n            index: i,\n            status: 'active' as const,\n            fn: slot.fn,\n            running: s.running,\n            failCount: s.failCount,\n            totalRuns: s.totalRuns,\n            blockedMs: Math.max(0, s.nextAvailableAt - now),\n            specificQueue: slot.queue.length,\n          };\n        }\n\n        case 'pending':\n          return {\n            index: i,\n            status: 'pending' as const,\n            promise: slot.promise,\n            specificQueue: slot.queue.length,\n          };\n\n        case 'rejected':\n          return {\n            index: i,\n            status: 'rejected' as const,\n            error: String(slot.error ?? 'unknown error'),\n            specificQueue: slot.queue.length,\n          };\n      }\n    });\n  }\n\n  get pending(): number {\n    return this.globalQueue.length;\n  }\n\n  // ---------------- scheduling ----------------\n\n  private drain() {\n    if (this.drainScheduled) return;\n    this.drainScheduled = true;\n    queueMicrotask(() => {\n      this.drainScheduled = false;\n      this._drainLoop();\n    });\n  }\n\n  private _drainLoop() {\n    // If no active workers and still initializing, wait; if all inited and none active, constructor already rejects all.\n    if (!this.hasAnyActive()) {\n      if (this.pendingInits > 0) return;\n      return;\n    }\n\n    // First: flush rejected workers' specific queues (macro-task rejection)\n    for (let i = 0; i < this.slots.length; i++) {\n      const slot = this.slots[i];\n      if (slot.kind === 'rejected' && slot.queue.length > 0) {\n        const q = slot.queue.splice(0);\n        const err = new Error(\n          `Worker[${i}] failed to initialize: ${String(slot.error ?? 'unknown error')}`,\n        );\n        setTimeout(() => {\n          for (const t of q) t.reject(err);\n        }, 0);\n      }\n    }\n\n    let progressed = true;\n    while (progressed) {\n      progressed = false;\n\n      // 1) Run specific queues for active workers (ignore backoff)\n      for (let i = 0; i < this.slots.length; i++) {\n        const slot = this.slots[i];\n        if (slot.kind !== 'active') continue;\n        const st = slot.state;\n        if (!st.running && slot.queue.length > 0) {\n          const task = slot.queue.shift()!;\n          this.startTaskOnActiveSlot(i, slot, task, /*fromSpecific*/ true);\n          progressed = true;\n        }\n      }\n\n      // 2) Run global queue (choose eligible active with least totalRuns)\n      if (this.globalQueue.length > 0) {\n        const idx = this.pickBestActiveForGlobal();\n        if (idx !== -1) {\n          const slot = this.slots[idx] as ActiveSlot<F>;\n          const task = this.globalQueue.shift()!;\n          this.startTaskOnActiveSlot(idx, slot, task, /*fromSpecific*/ false);\n          progressed = true;\n        }\n      }\n    }\n  }\n\n  private hasAnyActive() {\n    return this.slots.some((s) => s.kind === 'active');\n  }\n\n  private rejectAllQueued(err: any) {\n    while (this.globalQueue.length) this.globalQueue.shift()!.reject(err);\n    for (const slot of this.slots) {\n      while (slot.queue.length) slot.queue.shift()!.reject(err);\n    }\n  }\n\n  private isEligibleActive(i: number, now: number) {\n    const slot = this.slots[i] as ActiveSlot<F>;\n    const slotGood = (s: ActiveSlot<F>) =>\n      s.kind === 'active' && !s.state?.running;\n    if (!slotGood(slot)) return false;\n    if (now >= slot.state.nextAvailableAt) return true;\n    return !this.slots.some((other: ActiveSlot<F>, j) => {\n      if (j === i) return false;\n      if (!slotGood(other)) return false;\n      return now >= other.state.nextAvailableAt;\n    });\n  }\n\n  private pickBestActiveForGlobal(): number {\n    const now = Date.now();\n    const task = this.globalQueue[0];\n\n    // Prefer actives not tried yet\n    let best = -1,\n      bestRuns = Infinity;\n    for (let i = 0; i < this.slots.length; i++) {\n      if (!this.isEligibleActive(i, now)) continue;\n      if (task?.triedWorkers.has(i)) continue;\n      const slot = this.slots[i] as ActiveSlot<F>;\n      if (slot.state.totalRuns < bestRuns) {\n        bestRuns = slot.state.totalRuns;\n        best = i;\n      }\n    }\n    if (best !== -1) return best;\n\n    // Allow already-tried actives\n    best = -1;\n    bestRuns = Infinity;\n    for (let i = 0; i < this.slots.length; i++) {\n      if (!this.isEligibleActive(i, now)) continue;\n      const slot = this.slots[i] as ActiveSlot<F>;\n      if (slot.state.totalRuns < bestRuns) {\n        bestRuns = slot.state.totalRuns;\n        best = i;\n      }\n    }\n    return best;\n  }\n\n  private startTaskOnActiveSlot(\n    index: number,\n    slot: ActiveSlot<F>,\n    task: Task<F>,\n    fromSpecific: boolean,\n  ) {\n    const st = slot.state;\n    st.running = true;\n    st.totalRuns += 1;\n\n    const finalize = () => {\n      st.running = false;\n      // If someone is waiting for this worker to finish (removeWorker), resolve them when idle.\n      if (\n        slot.removalWaiters.length > 0 &&\n        !st.running &&\n        slot.queue.length === 0\n      ) {\n        const list = slot.removalWaiters.splice(0);\n        for (const w of list) w();\n      }\n      this.drain();\n    };\n\n    (async () => {\n      try {\n        const result = await slot.fn(...task.args);\n        st.failCount = Math.max(0, st.failCount - 1);\n        task.resolve(result as Awaited<ReturnType<F>>);\n      } catch (err) {\n        task.lastError = err;\n        st.failCount += 1;\n        st.nextAvailableAt =\n          Date.now() + this.backoffBaseMs * Math.pow(2, st.failCount);\n\n        if (fromSpecific) {\n          task.attempts += 1;\n          if (task.attempts >= this.maxAttempts) {\n            task.reject(task.lastError);\n          } else {\n            // retry on the same worker (ignore backoff)\n            slot.queue.push(task);\n          }\n        } else {\n          task.attempts += 1;\n          task.triedWorkers.add(index);\n          const activeCount = this.slots.filter(\n            (s) => s.kind === 'active',\n          ).length;\n          const allActiveTriedOnce = task.triedWorkers.size >= activeCount;\n          const attemptsLimitReached = task.attempts >= this.maxAttempts;\n\n          if (allActiveTriedOnce || attemptsLimitReached) {\n            task.reject(task.lastError);\n          } else {\n            this.globalQueue.push(task);\n          }\n        }\n      } finally {\n        finalize();\n      }\n    })();\n  }\n}\n", "export class RoundRobin<T> {\n  private index = 0;\n\n  constructor(public items: T[]) {\n    if (items.length === 0) {\n      throw new Error('RoundRobin requires at least one item');\n    }\n  }\n\n  next(): T {\n    const nextIndex = this.index % this.items.length;\n    this.index = (this.index + 1) % this.items.length;\n    return this.items[nextIndex];\n  }\n}\n", "export class AbortedError extends Error {\n  name = 'AbortError';\n  constructor(\n    msg = 'Operation aborted',\n    public cause?: unknown,\n  ) {\n    super(msg);\n  }\n}\n\ntype AnyFunc = (...args: any[]) => any;\nconst isObjectLike = (v: unknown): v is object | AnyFunc =>\n  (typeof v === 'object' && v !== null) || typeof v === 'function';\n\nfunction boxPrimitive(v: unknown): object {\n  return Object(v as any);\n}\n\nexport interface AbortableOpts {\n  /** \u662F\u5426\u628A\u539F\u59CB\u503C\u88C5\u7BB1\u540E\u518D\u4EE3\u7406\uFF08\u4F1A\u6539\u53D8 typeof/=== \u8BED\u4E49\uFF0C\u9ED8\u8BA4 false\uFF09 */\n  boxPrimitives?: boolean;\n  /** \u4E0D\u9012\u5F52\u4EE3\u7406\u5B50\u5BF9\u8C61\uFF08\u4EC5\u4EE3\u7406\u9876\u5C42\u5BF9\u8C61/\u51FD\u6570\uFF0C\u9ED8\u8BA4 false\uFF09 */\n  noRecursive?: boolean;\n}\n\nexport function abortable<T>(\n  obj: T,\n  signal: AbortSignal,\n  opts?: AbortableOpts,\n): T {\n  const { boxPrimitives = false, noRecursive = false } = opts ?? {};\n\n  const throwIfAborted = () => {\n    if (signal.aborted) {\n      const r = (signal as any).reason;\n      if (r instanceof Error) throw r;\n      throw new AbortedError('Operation aborted', r);\n    }\n  };\n\n  throwIfAborted();\n\n  const targetToProxy = new WeakMap<object, any>();\n  const proxyToTarget = new WeakMap<object, any>();\n\n  const wrapNativePromise = <V>(pLike: PromiseLike<V>): Promise<V> => {\n    const base = pLike instanceof Promise ? pLike : Promise.resolve(pLike);\n    return base.then(\n      async (v) => {\n        throwIfAborted();\n        return proxify(v);\n      },\n      async (e) => {\n        throwIfAborted();\n        throw e;\n      },\n    );\n  };\n\n  let shortCircuit = false;\n\n  const proxify = <V>(value: V): V => {\n    if (noRecursive) {\n      if (shortCircuit) {\n        return value;\n      } else {\n        shortCircuit = true;\n      }\n    }\n\n    // Promise\uFF1A\u6309\u201C\u771F Promise + \u4EE3\u7406\u201D\u7684\u65B9\u6848\u5904\u7406\n    if (typeof (value as any)?.then === 'function') {\n      return wrapNativePromise(value as any) as unknown as V;\n    }\n\n    // \u539F\u59CB\u503C\n    if (!isObjectLike(value)) {\n      if (!boxPrimitives) return value;\n      return proxify(boxPrimitive(value) as unknown as V);\n    }\n\n    // \u590D\u7528\n    const cached = targetToProxy.get(value as object);\n    if (cached) return cached;\n\n    const handler: ProxyHandler<any> = {\n      get(target, p, receiver) {\n        throwIfAborted();\n        const out = Reflect.get(target, p, receiver);\n        return proxify(out);\n      },\n      set(target, p, val, receiver) {\n        throwIfAborted();\n        return Reflect.set(target, p, val, receiver);\n      },\n      apply(target, thisArg, argArray) {\n        throwIfAborted();\n        const unwrappedThis =\n          (isObjectLike(thisArg) && proxyToTarget.get(thisArg as any)) ||\n          thisArg;\n        const ret = Reflect.apply(target as AnyFunc, unwrappedThis, argArray);\n        return proxify(ret);\n      },\n      construct(target, argArray, newTarget) {\n        throwIfAborted();\n        const instance = Reflect.construct(\n          target as AnyFunc,\n          argArray,\n          newTarget,\n        );\n        return proxify(instance);\n      },\n      defineProperty(t, p, attrs) {\n        throwIfAborted();\n        return Reflect.defineProperty(t, p, attrs);\n      },\n      deleteProperty(t, p) {\n        throwIfAborted();\n        return Reflect.deleteProperty(t, p);\n      },\n      getOwnPropertyDescriptor(t, p) {\n        throwIfAborted();\n        return Reflect.getOwnPropertyDescriptor(t, p);\n      },\n      getPrototypeOf(t) {\n        throwIfAborted();\n        return Reflect.getPrototypeOf(t);\n      },\n      setPrototypeOf(t, proto) {\n        throwIfAborted();\n        return Reflect.setPrototypeOf(t, proto);\n      },\n      has(t, p) {\n        throwIfAborted();\n        return Reflect.has(t, p);\n      },\n      isExtensible(t) {\n        throwIfAborted();\n        return Reflect.isExtensible(t);\n      },\n      ownKeys(t) {\n        throwIfAborted();\n        return Reflect.ownKeys(t);\n      },\n      preventExtensions(t) {\n        throwIfAborted();\n        return Reflect.preventExtensions(t);\n      },\n    };\n\n    const proxy = new Proxy(value as any, handler);\n    targetToProxy.set(value as object, proxy);\n    proxyToTarget.set(proxy, value);\n    return proxy;\n  };\n\n  return proxify(obj);\n}\n", "import {\n  AnyFunc,\n  MiddlewareDispatcherOptions,\n  Middleware,\n  MiddlewareResult,\n  MiddlewareAcceptResult,\n  MiddlewareErrorHandler,\n  MiddlewareReturn,\n  MiddlewareNextArgs,\n} from './types';\n\nexport class DynamicMiddlewareDispatcher<F extends AnyFunc> {\n  constructor(protected options: MiddlewareDispatcherOptions<F> = {}) {}\n\n  async buildMiddlewares(...args: Parameters<F>): Promise<Middleware<F>[]> {\n    return [];\n  }\n\n  async dispatch(...args: Parameters<F>): MiddlewareResult<F> {\n    const mws = await this.buildMiddlewares(...args);\n    const acceptResult: MiddlewareAcceptResult<F> =\n      this.options.acceptResult || ((res) => res != null);\n    const errorHandler: MiddlewareErrorHandler<F> =\n      this.options.errorHandler || ((e, args, next) => next());\n    const dispatch = async (\n      i: number,\n      useArgs: Parameters<F>,\n    ): MiddlewareResult<F> => {\n      if (i >= mws.length) return undefined;\n\n      const mw = mws[i];\n      let nextCalled = false;\n\n      const next = async (\n        ...passedArgs: MiddlewareNextArgs<F>\n      ): MiddlewareResult<F> => {\n        if (nextCalled) {\n          return undefined;\n        }\n        nextCalled = true;\n        return dispatch(i + 1, [\n          ...passedArgs,\n          ...useArgs.slice(passedArgs.length),\n        ] as Parameters<F>);\n      };\n\n      const runMw = async (cb: () => MiddlewareReturn<F>) => {\n        const res = await cb();\n        if (!nextCalled && !(await acceptResult(res))) {\n          return dispatch(i + 1, useArgs);\n        }\n        return res;\n      };\n\n      try {\n        return await runMw(() => mw(...useArgs, next));\n      } catch (e) {\n        return await runMw(() => errorHandler(e, useArgs, next));\n      }\n    };\n    return dispatch(0, args);\n  }\n}\n", "import { AnyFunc, Middleware } from './types';\nimport { DynamicMiddlewareDispatcher } from './dynamic-middleware-dispatcher';\n\nexport class MiddlewareDispatcher<\n  F extends AnyFunc,\n> extends DynamicMiddlewareDispatcher<F> {\n  middlewares: Middleware<F>[] = [];\n\n  middleware(mw: Middleware<F>, prior = false) {\n    if (prior) {\n      this.middlewares.unshift(mw);\n    } else {\n      this.middlewares.push(mw);\n    }\n    return this;\n  }\n\n  removeMiddleware(mw: Middleware<F>) {\n    const index = this.middlewares.indexOf(mw);\n    if (index >= 0) {\n      this.middlewares.splice(index, 1);\n    }\n    return this;\n  }\n\n  async buildMiddlewares(...args: Parameters<F>): Promise<Middleware<F>[]> {\n    return this.middlewares;\n  }\n}\n", "import { Middleware, MiddlewareResult } from './types';\nimport { AnyClass, ClassType } from '../types';\nimport { DynamicMiddlewareDispatcher } from './dynamic-middleware-dispatcher';\n\nexport type ProtoMiddlewareArgs<A extends any[] = [], T = any> = [\n  inst: T,\n  ...args: A,\n];\nexport type ProtoMiddlewareFunc<A extends any[] = [], T = any> = (\n  ...args: ProtoMiddlewareArgs<A, T>\n) => T | undefined;\n\nexport class ProtoMiddlewareDispatcher<\n  A extends any[] = [],\n> extends DynamicMiddlewareDispatcher<ProtoMiddlewareFunc<A>> {\n  private middlewareProtoMap = new Map<\n    AnyClass,\n    Middleware<ProtoMiddlewareFunc<A>>[]\n  >();\n  private middlewareProtoMapPrior = new Map<\n    AnyClass,\n    Middleware<ProtoMiddlewareFunc<A>>[]\n  >();\n\n  middleware<T>(\n    cls: ClassType<T>,\n    mw: Middleware<ProtoMiddlewareFunc<A, T>>,\n    prior = false,\n  ) {\n    const map = prior ? this.middlewareProtoMapPrior : this.middlewareProtoMap;\n    const mws = map.get(cls) || [];\n    mws.push(mw);\n    map.set(cls, mws);\n    return this;\n  }\n\n  removeMiddleware<T>(\n    cls: ClassType<T>,\n    mw: Middleware<ProtoMiddlewareFunc<A, T>>,\n  ) {\n    for (const map of [this.middlewareProtoMap, this.middlewareProtoMapPrior]) {\n      const mws = map.get(cls);\n      if (mws) {\n        const index = mws.indexOf(mw);\n        if (index >= 0) {\n          mws.splice(index, 1);\n        }\n      }\n    }\n    return this;\n  }\n\n  async dispatch<T>(\n    ...args: ProtoMiddlewareArgs<A, T>\n  ): MiddlewareResult<ProtoMiddlewareFunc<A, T>> {\n    return super.dispatch(...args);\n  }\n\n  async buildMiddlewares(...args: ProtoMiddlewareArgs<A>) {\n    // buildMiddlewares \u53EA\u9700\u8981\u77E5\u9053 inst\n    if (args.length === 0) return [];\n\n    const inst = args[0];\n    if (!inst || typeof inst !== 'object') return [];\n\n    // 1. \u6536\u96C6\u539F\u578B\u94FE\uFF08Base \u2192 Sub\uFF09\n    const chain: AnyClass[] = [];\n    let cur: any = inst.constructor;\n\n    while (cur && cur !== Object) {\n      chain.push(cur);\n      cur = Object.getPrototypeOf(cur.prototype)?.constructor;\n    }\n\n    chain.reverse();\n\n    const result: Middleware<ProtoMiddlewareFunc<A>>[] = [];\n\n    // 2. prior\uFF1ABase \u2192 Sub\n    for (const cls of chain) {\n      const mws = this.middlewareProtoMapPrior.get(cls);\n      if (mws) {\n        result.push(...[...mws].reverse());\n      }\n    }\n\n    // 3. normal\uFF1ASub \u2192 Base\n    for (let i = chain.length - 1; i >= 0; i--) {\n      const cls = chain[i];\n      const mws = this.middlewareProtoMap.get(cls);\n      if (mws) {\n        result.push(...mws);\n      }\n    }\n\n    result.push((inst, ...args) => {\n      return inst;\n    });\n\n    return result;\n  }\n}\n", "// \u2014\u2014 \u89E3\u6790\u7ED3\u679C\u7ED3\u6784 \u2014\u2014 //\nexport type I18nPiece =\n  | { type: 'raw'; value: string }\n  | { type: 'ph'; rawInner: string; key: string };\n\n/**\n * \u6808\u5F0F\u89E3\u6790 #{ ... } \u5360\u4F4D\u3002\u652F\u6301\u5185\u90E8\u6210\u5BF9\u82B1\u62EC\u53F7\uFF0C\u5982 #{ foo {{ bar }} }\u3002\n * - \u672A\u95ED\u5408\u65F6\uFF1A\u628A\u4ECE\u4E0A\u6B21\u4F4D\u7F6E i \u5230\u7ED3\u5C3E\u6574\u4F53\u4F5C\u4E3A raw \u653E\u56DE\uFF08\u907F\u514D\u88AB\u62C6\u6210\u4E24\u6BB5\uFF09\n * - key = trim(rawInner)\n */\nexport const parseI18n = (text: string): I18nPiece[] => {\n  const pieces: I18nPiece[] = [];\n  if (!text) return pieces;\n\n  let i = 0;\n  const n = text.length;\n\n  while (i < n) {\n    const start = text.indexOf('#{', i);\n    if (start === -1) {\n      // \u6CA1\u6709\u66F4\u591A\u5360\u4F4D\u7B26\n      if (i < n) pieces.push({ type: 'raw', value: text.slice(i) });\n      break;\n    }\n\n    // \u5148\u5C1D\u8BD5\u5339\u914D\u8FD9\u4E2A\u5360\u4F4D\u7B26\u662F\u5426\u95ED\u5408\uFF08\u6B64\u65F6\u4E0D\u7ACB\u5373\u63A8\u5165\u524D\u5BFC raw\uFF09\n    let j = start + 2; // \u6307\u5411 '#{' \u540E\u7B2C\u4E00\u4E2A\u5B57\u7B26\n    let depth = 1;\n    while (j < n && depth > 0) {\n      const ch = text.charCodeAt(j);\n      if (ch === 123 /* '{' */) depth++;\n      else if (ch === 125 /* '}' */) depth--;\n      j++;\n    }\n\n    if (depth !== 0) {\n      // \u672A\u95ED\u5408\uFF1A\u628A\u4ECE i \u5230\u672B\u5C3E\u6574\u4F53\u5F53\u4F5C raw\uFF08\u5305\u542B\u524D\u5BFC + '#{' \u5C3E\u5DF4\uFF09\n      pieces.push({ type: 'raw', value: text.slice(i) });\n      break;\n    }\n\n    // \u5230\u8FD9\u91CC\u8BF4\u660E\u5360\u4F4D\u95ED\u5408\uFF1A\u5148\u63A8\u5165\u524D\u5BFC raw\uFF0C\u518D\u63A8\u5360\u4F4D\u7247\u6BB5\n    if (start > i) {\n      pieces.push({ type: 'raw', value: text.slice(i, start) });\n    }\n\n    const rawInner = text.slice(start + 2, j - 1);\n    const key = rawInner.trim();\n    pieces.push({ type: 'ph', rawInner, key });\n\n    i = j; // \u7EE7\u7EED\u5411\u540E\u626B\u63CF\n  }\n\n  return pieces;\n};\n", "import { Awaitable } from './types';\n\nexport const patchStringInObject = async <T>(\n  obj: T,\n  cb: (s: string) => Awaitable<string>,\n): Promise<T> => {\n  const visited = new WeakSet<object>();\n\n  const isSpecialObject = (v: any): boolean => {\n    if (v == null || typeof v !== 'object') return false;\n    if (\n      v instanceof Date ||\n      v instanceof RegExp ||\n      v instanceof Map ||\n      v instanceof Set ||\n      v instanceof WeakMap ||\n      v instanceof WeakSet ||\n      v instanceof ArrayBuffer ||\n      v instanceof DataView ||\n      ArrayBuffer.isView(v)\n    ) {\n      return true;\n    }\n\n    const tag = Object.prototype.toString.call(v);\n    switch (tag) {\n      case '[object URL]':\n      case '[object URLSearchParams]':\n      case '[object Error]':\n      case '[object Blob]':\n      case '[object File]':\n      case '[object FormData]':\n        return true;\n      default:\n        return false;\n    }\n  };\n\n  const checkValue = (\n    v: any,\n  ): { ok: false } | { ok: true; kind: 'string' | 'object' } => {\n    if (!v) return { ok: false };\n\n    const t = typeof v;\n    if (\n      t === 'number' ||\n      t === 'bigint' ||\n      t === 'symbol' ||\n      t === 'function'\n    ) {\n      return { ok: false };\n    }\n    if (t === 'string') return { ok: true, kind: 'string' };\n    if (t === 'object') return { ok: true, kind: 'object' };\n\n    return { ok: false };\n  };\n\n  const rebuildObject = async (value: any): Promise<any> => {\n    const proto = Object.getPrototypeOf(value);\n    const out = Object.create(proto);\n\n    const keys = Reflect.ownKeys(value);\n\n    await Promise.all(\n      keys.map(async (key) => {\n        const desc = Object.getOwnPropertyDescriptor(value, key as any);\n        if (!desc) return;\n\n        if ('value' in desc) {\n          const newVal = await walk(desc.value);\n          Object.defineProperty(out, key, { ...desc, value: newVal });\n          return;\n        }\n\n        Object.defineProperty(out, key, desc);\n\n        let current: any = undefined;\n        if (typeof desc.get === 'function') {\n          try {\n            current = desc.get.call(value);\n          } catch {}\n        }\n        if (current === undefined) return;\n\n        try {\n          const newVal = await walk(current);\n          if (typeof desc.set === 'function') {\n            try {\n              desc.set.call(out, newVal);\n            } catch {}\n          }\n        } catch {}\n      }),\n    );\n\n    return out;\n  };\n\n  const walk = async (value: any): Promise<any> => {\n    const check = checkValue(value);\n\n    if (!check.ok) return value;\n\n    if (check.kind === 'string') {\n      return cb(value);\n    }\n\n    if (value instanceof Promise) {\n      return value.then((resolved) => walk(resolved));\n    }\n\n    if (typeof value === 'object') {\n      if (!Array.isArray(value) && isSpecialObject(value)) return value;\n\n      if (visited.has(value)) return value;\n      visited.add(value);\n\n      if (Array.isArray(value)) {\n        const out = await Promise.all(value.map((v) => walk(v)));\n        return out as any;\n      }\n\n      return rebuildObject(value);\n    }\n\n    return value;\n  };\n\n  return walk(obj);\n};\n", "import { parseI18n } from '../utility/parse-i18n';\nimport {\n  I18nMiddleware,\n  I18nMiddlewareFunc,\n  I18nMiddlewareNext,\n  I18nOptions,\n} from './types';\nimport { patchStringInObject } from '../patch-string-in-object';\nimport { DynamicMiddlewareDispatcher } from '../middleware-dispatcher';\n\nclass I18nMiddlewareDispatcher<\n  Ex extends any[],\n> extends DynamicMiddlewareDispatcher<I18nMiddlewareFunc<Ex>> {\n  constructor() {\n    super({\n      acceptResult: (res) => res != null,\n      errorHandler: (e) => {\n        throw e;\n      },\n    });\n  }\n\n  middlewares: I18nMiddleware<Ex>[] = [];\n\n  async buildMiddlewares() {\n    return this.middlewares.map(\n      (mw) =>\n        (locale: string, text: string, ...args: any[]) => {\n          const ex = args.slice(0, -1) as Ex;\n          const next = args[args.length - 1] as I18nMiddlewareNext<Ex>;\n          return mw(locale, text, next, ...ex);\n        },\n    );\n  }\n}\n\nexport class I18n<Ex extends any[] = []> {\n  constructor(private options: I18nOptions) {}\n\n  locales = new Set(this.options.locales);\n  defaultLocale = this.options.defaultLocale ?? this.options.locales[0];\n\n  private mw = new I18nMiddlewareDispatcher();\n\n  middleware(mw: I18nMiddleware<Ex>, prior = false) {\n    if (prior) {\n      this.mw.middlewares.unshift(mw);\n    } else {\n      this.mw.middlewares.push(mw);\n    }\n    return this;\n  }\n\n  removeMiddleware(mw: I18nMiddleware<Ex>) {\n    const idx = this.mw.middlewares.indexOf(mw);\n    if (idx >= 0) {\n      this.mw.middlewares.splice(idx, 1);\n    }\n    return this;\n  }\n\n  getExactLocale(locale: string) {\n    const input = (locale ?? '').trim();\n    if (!input) return this.defaultLocale;\n\n    if (this.locales.has(input)) return input;\n\n    // \u5C0F\u5199\u5316\u6BD4\u8F83\uFF0C\u4FDD\u7559\u539F\u5927\u5C0F\u5199\n    const entries = Array.from(this.locales).map((l) => ({\n      orig: l,\n      lower: l.toLowerCase(),\n    }));\n    const lower = input.toLowerCase();\n\n    // 1) \u7CBE\u786E\u5339\u914D\uFF08\u5927\u5C0F\u5199\u4E0D\u654F\u611F\uFF09\n    const exact = entries.find((e) => e.lower === lower);\n    if (exact) return exact.orig;\n\n    // 2) \u6309 '-' \u62C6\u5206\uFF0C\u4F9D\u6B21\u5C1D\u8BD5\u53BB\u6389\u6700\u53F3\u8FB9\u7684\u6BB5\n    //    zh-Hans-CN \u2192 zh-Hans \u2192 zh\n    const parts = lower.split('-');\n    while (parts.length > 1) {\n      parts.pop();\n      const candidate = parts.join('-');\n      const hit = entries.find((e) => e.lower === candidate);\n      if (hit) return hit.orig;\n    }\n\n    // 3) \u515C\u5E95\n    return this.defaultLocale;\n  }\n\n  private buildFallbackChain(locale: string): string[] {\n    const best = this.getExactLocale(locale); // \u4F60\u7684\u201C\u6700\u957F\u5339\u914D\u201D\u51FD\u6570\n    // \u62C6\u5206 zh-Hans-CN -> ['zh-Hans-CN','zh-Hans','zh']\n    const parts: string[] = [];\n    const segs = best.split('-');\n    for (let i = segs.length; i > 1; i--)\n      parts.push(segs.slice(0, i).join('-'));\n    parts.push(segs[0]); // 'zh'\n    // \u9644\u52A0\u9ED8\u8BA4\u8BED\u8A00\n    if (!parts.includes(this.defaultLocale)) parts.push(this.defaultLocale);\n    // \u53BB\u91CD\n    return Array.from(new Set(parts)).filter((p) => this.locales.has(p));\n  }\n\n  private async applyMiddlewares(\n    locale: string,\n    text: string,\n    ...ex: Ex\n  ): Promise<string | undefined> {\n    const tryLocale = (locale: string) => this.mw.dispatch(locale, text, ...ex);\n\n    for (const loc of this.buildFallbackChain(locale)) {\n      const result = await tryLocale(loc);\n      if (result != null) {\n        return result;\n      }\n    }\n    return undefined;\n  }\n\n  async translateString(\n    locale: string,\n    text: string,\n    ...ex: Ex\n  ): Promise<string> {\n    if (!text) return text;\n\n    locale = this.getExactLocale(locale);\n\n    const pieces = parseI18n(text);\n    if (!pieces.some((p) => p.type === 'ph')) {\n      return pieces\n        .map((p) => (p.type === 'raw' ? p.value : `#{${p.rawInner}}`))\n        .join('');\n    }\n\n    const promises: Array<Promise<string | undefined | null>> = [];\n\n    for (const p of pieces) {\n      if (p.type === 'ph') {\n        promises.push(this.applyMiddlewares(locale, p.key, ...ex));\n      }\n    }\n\n    const results = await Promise.all(promises);\n\n    let out = '';\n    let k = 0;\n    for (const p of pieces) {\n      if (p.type === 'raw') {\n        out += p.value;\n      } else {\n        const r = results[k++];\n        out += r == null ? `#{${p.rawInner}}` : r;\n      }\n    }\n    return out;\n  }\n\n  async translate<T>(locale: string, obj: T, ...ex: Ex): Promise<T> {\n    return patchStringInObject(obj, (s) =>\n      this.translateString(locale, s, ...ex),\n    );\n  }\n}\n", "import { I18nMiddleware } from '../types';\nimport { Awaitable } from '../../types';\n\nexport type I18nDictionary = Record<string, Record<string, string>>;\n\ntype MatchType = 'exact' | 'hierarchy' | 'startsWith';\n\nexport const I18nLookupMiddleware = <Ex extends any[] = []>(\n  dict:\n    | I18nDictionary\n    | ((locale: string, key: string, ...ex: Ex) => Awaitable<I18nDictionary>),\n  options?: { matchType?: MatchType },\n): I18nMiddleware<Ex> => {\n  const matchType: MatchType = options?.matchType ?? 'exact';\n  const dictFactory = typeof dict === 'function' ? dict : () => dict;\n\n  // \u57FA\u4E8E locales \u5217\u8868\u505A\u201C\u7CBE\u786E\u2192\u5C42\u7EA7\u56DE\u9000(zh-Hans-CN\u2192zh-Hans\u2192zh)\u201D\u7684\u6700\u957F\u5339\u914D\n  const pickBestByHierarchy = (\n    input: string,\n    locales: string[],\n  ): string | undefined => {\n    if (!input) return undefined;\n    const entries = locales.map((l) => ({ orig: l, lower: l.toLowerCase() }));\n    const lower = input.toLowerCase();\n\n    // \u7CBE\u786E\u5339\u914D\uFF08\u5927\u5C0F\u5199\u4E0D\u654F\u611F\uFF09\n    const exact = entries.find((e) => e.lower === lower);\n    if (exact) return exact.orig;\n\n    // \u9010\u7EA7\u56DE\u9000\uFF1Azh-Hans-CN -> zh-Hans -> zh\n    const parts = lower.split('-');\n    while (parts.length > 1) {\n      parts.pop();\n      const candidate = parts.join('-');\n      const hit = entries.find((e) => e.lower === candidate);\n      if (hit) return hit.orig;\n    }\n    return undefined;\n  };\n\n  return async (locale, key, next, ...ex) => {\n    const dictResolved = await dictFactory(locale, key, ...ex);\n\n    let dictionary = dictResolved[locale];\n\n    if (!dictionary) {\n      if (matchType === 'hierarchy') {\n        const best = pickBestByHierarchy(locale, Object.keys(dictResolved));\n        if (best) dictionary = dictResolved[best];\n      } else if (matchType === 'startsWith') {\n        const keys = Object.keys(dictResolved).filter((k) =>\n          locale.startsWith(k),\n        );\n        if (keys.length) {\n          const best = keys.reduce((a, b) => (b.length > a.length ? b : a));\n          dictionary = dictResolved[best];\n        }\n      }\n    }\n\n    // \u547D\u4E2D\u5224\u65AD\uFF1A\u5141\u8BB8\u7A7A\u5B57\u7B26\u4E32 ''\uFF1B\u4EC5 null/undefined \u89C6\u4E3A\u672A\u547D\u4E2D\n    if (dictionary && Object.prototype.hasOwnProperty.call(dictionary, key)) {\n      const val = dictionary[key];\n      if (val != null) {\n        return val;\n      }\n    }\n\n    return next();\n  };\n};\n\nexport const createI18nLookupMiddleware = <Ex extends any[]>() =>\n  I18nLookupMiddleware as typeof I18nLookupMiddleware<Ex>;\n", "export const observeDiff = <T>(\n  obj: T,\n  cb: <K extends keyof T>(change: {\n    type: 'add' | 'update' | 'delete';\n    key: K;\n    oldValue: T[K] | undefined;\n    newValue: T[K] | undefined;\n  }) => any,\n): T => {\n  return new Proxy(obj as any, {\n    set(target, key: string | symbol, value) {\n      const oldValue = target[key];\n      const type = Object.prototype.hasOwnProperty.call(target, key)\n        ? 'update'\n        : 'add';\n      target[key] = value;\n      cb({ type, key: key as any, oldValue, newValue: value });\n      return true;\n    },\n    deleteProperty(target, key: string | symbol) {\n      if (Object.prototype.hasOwnProperty.call(target, key)) {\n        const oldValue = target[key];\n        delete target[key];\n        cb({ type: 'delete', key: key as any, oldValue, newValue: undefined });\n        return true;\n      }\n      return false;\n    },\n  });\n};\n", "export const Memorize = () => {\n  const cache = new WeakMap<object, any>();\n\n  const isPromiseLike = (v: any): v is Promise<unknown> =>\n    v != null && typeof v.then === 'function' && typeof v.catch === 'function';\n\n  const getOrSet = (instance: object, compute: () => any) => {\n    if (cache.has(instance)) return cache.get(instance);\n\n    const result = compute();\n\n    if (isPromiseLike(result)) {\n      const wrapped = result.catch((err) => {\n        cache.delete(instance); // \u4E0B\u6B21\u8FD8\u80FD\u91CD\u65B0\u7B97\n        throw err;\n      });\n      cache.set(instance, wrapped);\n      return wrapped;\n    }\n\n    cache.set(instance, result);\n    return result;\n  };\n\n  return function (\n    _target: any,\n    _propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    // getter\n    if (typeof descriptor.get === 'function') {\n      const originalGetter = descriptor.get;\n      descriptor.get = function () {\n        return getOrSet(this, () => originalGetter.call(this));\n      };\n      return;\n    }\n\n    // method\n    if (typeof descriptor.value === 'function') {\n      const originalMethod = descriptor.value;\n      descriptor.value = function (...args: any[]) {\n        return getOrSet(this, () => originalMethod.apply(this, args));\n      };\n      return;\n    }\n  };\n};\n", "export type MayBeArray<T> = T | T[];\n\nexport const makeArray = <T>(value: MayBeArray<T>): T[] => {\n  return Array.isArray(value) ? value : [value];\n};\n", "import { AnyClass, Awaitable, Empty } from '../types';\nimport {\n  AppContext,\n  AppServiceClass,\n  AppProvideArgs,\n  AppProvidedMerged,\n  AppProvideOptions,\n  AppContextUsed,\n  AppContextState,\n} from './types';\n\nconst ProvidePrefix = 'provide:';\n\nconst getMethodDescriptor = (cls: AnyClass, key: PropertyKey) => {\n  let proto = cls.prototype;\n  while (proto && proto !== Object.prototype) {\n    const desc = Object.getOwnPropertyDescriptor(proto, key as any);\n    if (desc) return desc;\n    proto = Object.getPrototypeOf(proto);\n  }\n  return undefined;\n};\n\ntype ProvideRecord = {\n  classRef: AnyClass;\n  factory: (ctx: AppContextCore<any, any>) => any;\n};\n\ntype LoadEntry = {\n  classRef: AnyClass;\n  inst: any;\n};\n\ntype ObjectStep = (ctx: AppContextCore<any, any>) => void;\n\nconst isPromiseLike = (value: any): value is Promise<any> =>\n  !!value && typeof value.then === 'function';\n\nexport class AppContextCore<Cur = Empty, Req = Empty> {\n  private __current: Cur;\n  private __required: Req;\n\n  private provideRecords: ProvideRecord[] = [];\n  private registry = new Map<string | AnyClass, LoadEntry>();\n  private objectSteps: ObjectStep[] = [];\n  started = false;\n  private starting = false;\n  private settleCursor = 0;\n  private recordEntries = new Map<ProvideRecord, LoadEntry>();\n  private pendingInitQueue: LoadEntry[] = [];\n  private pendingInitSet = new Set<LoadEntry>();\n  private initializedEntries = new Set<LoadEntry>();\n  private loadingRecords = new Set<ProvideRecord>();\n  private settlementChain: Promise<void> = Promise.resolve();\n  private settlementError: unknown = null;\n  private settling = false;\n\n  private assertSettlementHealthy() {\n    if (this.settlementError) {\n      throw this.settlementError;\n    }\n  }\n\n  private enqueueInit(entry: LoadEntry) {\n    if (this.initializedEntries.has(entry) || this.pendingInitSet.has(entry)) {\n      return;\n    }\n    this.pendingInitSet.add(entry);\n    this.pendingInitQueue.push(entry);\n  }\n\n  private sortInitQueueByDeclarationOrder() {\n    if (this.pendingInitQueue.length <= 1) return;\n    const order = new Map<LoadEntry, number>();\n    let idx = 0;\n    for (const record of this.provideRecords) {\n      const entry = this.recordEntries.get(record);\n      if (entry) order.set(entry, idx++);\n    }\n    this.pendingInitQueue.sort(\n      (a, b) => (order.get(a) ?? Infinity) - (order.get(b) ?? Infinity),\n    );\n  }\n\n  private async constructPendingRecords() {\n    while (this.settleCursor < this.provideRecords.length) {\n      const record = this.provideRecords[this.settleCursor];\n      this.settleCursor += 1;\n      await this.createEntryFromRecord(record);\n    }\n    // Re-sort the init queue to match declaration order.\n    // On-demand creation triggered by get() inside a factory constructor\n    // can enqueue a dependency before the service that requested it,\n    // which would invert the intended init order.\n    this.sortInitQueueByDeclarationOrder();\n  }\n\n  private async settlePending() {\n    await this.constructPendingRecords();\n\n    while (this.pendingInitQueue.length > 0) {\n      const entry = this.pendingInitQueue.shift()!;\n      this.pendingInitSet.delete(entry);\n      if (this.initializedEntries.has(entry)) {\n        continue;\n      }\n\n      const inst = await entry.inst;\n      entry.inst = inst;\n      if (inst && typeof inst.init === 'function') {\n        await inst.init();\n      }\n      this.initializedEntries.add(entry);\n\n      // Providers added during this init must settle and init immediately\n      // after current init, before previous remaining init queue items.\n      const remaining = this.pendingInitQueue.splice(0);\n      await this.constructPendingRecords();\n      this.pendingInitQueue.push(...remaining);\n    }\n  }\n\n  private scheduleSettlement() {\n    const run = async () => {\n      this.assertSettlementHealthy();\n      this.settling = true;\n      try {\n        await this.settlePending();\n      } catch (error) {\n        this.settlementError = error;\n        throw error;\n      } finally {\n        this.settling = false;\n      }\n    };\n\n    const task = this.settlementChain.then(run, run);\n    this.settlementChain = task.catch(() => undefined);\n    return task;\n  }\n\n  private triggerSettlement() {\n    void this.scheduleSettlement();\n  }\n\n  private findProvideRecord(key: AnyClass): ProvideRecord | undefined {\n    for (let i = 0; i < this.provideRecords.length; i += 1) {\n      const record = this.provideRecords[i];\n      if (record.classRef === key && !this.recordEntries.has(record)) {\n        return record;\n      }\n    }\n    return undefined;\n  }\n\n  private createEntryFromRecord(record: ProvideRecord): Awaitable<LoadEntry> {\n    const existing = this.recordEntries.get(record);\n    if (existing) {\n      return existing;\n    }\n\n    if (this.loadingRecords.has(record)) {\n      throw new Error(\n        `Circular dependency detected while providing: ${record.classRef?.name ?? 'UnknownService'}`,\n      );\n    }\n\n    this.loadingRecords.add(record);\n    try {\n      const entry: LoadEntry = {\n        classRef: record.classRef,\n        inst: record.factory(this),\n      };\n      this.recordEntries.set(record, entry);\n      this.registry.set(record.classRef, entry);\n      this.enqueueInit(entry);\n      if (isPromiseLike(entry.inst)) {\n        return entry.inst.then((resolvedInst: any) => {\n          entry.inst = resolvedInst;\n          return entry;\n        });\n      }\n      return entry;\n    } finally {\n      this.loadingRecords.delete(record);\n    }\n  }\n\n  provide<\n    C extends AppServiceClass<Cur, Req>,\n    const P extends string = '',\n    const M extends (keyof InstanceType<C>)[] = [],\n  >(\n    cls: C,\n    ...args: AppProvideArgs<Cur, Req, C, P, M>\n  ): AppProvidedMerged<Cur, Req, C, P, M> {\n    this.assertSettlementHealthy();\n\n    const last = args[args.length - 1] as any;\n    const hasOptions =\n      !!last &&\n      typeof last === 'object' &&\n      ('provide' in last ||\n        'merge' in last ||\n        'useValue' in last ||\n        'useFactory' in last ||\n        'useClass' in last);\n\n    const options = (hasOptions ? last : undefined) as\n      | AppProvideOptions<Cur, Req, C, P, M>\n      | undefined;\n\n    const _args = (\n      hasOptions ? args.slice(0, -1) : args\n    ) as ConstructorParameters<C>;\n\n    const classRef = cls as unknown as AnyClass;\n\n    // Create factory function that will be called during start() with the target ctx.\n    const factory = (ctx: AppContextCore<any, any>) =>\n      options?.useValue ??\n      (options?.useFactory\n        ? options.useFactory(ctx as any, ..._args)\n        : new (options?.useClass ?? cls)(ctx as any, ..._args));\n\n    // Record the provide configuration\n    this.provideRecords.push({\n      classRef,\n      factory,\n    });\n\n    // Set up property accessors if needed\n    if (options?.provide) {\n      const prop = options.provide;\n      const step: ObjectStep = (ctx) => {\n        Object.defineProperty(ctx, prop, {\n          enumerable: true,\n          configurable: true,\n          get: () => {\n            const currentEntry = ctx.registry.get(classRef);\n            return currentEntry?.inst;\n          },\n        });\n      };\n      step(this);\n      this.objectSteps.push(step);\n    }\n\n    if (options?.merge?.length) {\n      for (const key of options.merge) {\n        const desc = getMethodDescriptor(cls, key);\n        const isMethod = !!desc && typeof desc.value === 'function';\n\n        const step: ObjectStep = (ctx) => {\n          if (isMethod) {\n            Object.defineProperty(ctx, key, {\n              enumerable: true,\n              configurable: true,\n              get: () => {\n                const currentEntry = ctx.registry.get(classRef);\n                const currentInst = currentEntry?.inst;\n                const fn = (currentInst as any)?.[key];\n                return typeof fn === 'function' ? fn.bind(currentInst) : fn;\n              },\n            });\n            return;\n          }\n\n          Object.defineProperty(ctx, key, {\n            enumerable: true,\n            configurable: true,\n            get: () => {\n              const currentEntry = ctx.registry.get(classRef);\n              return (currentEntry?.inst as any)?.[key];\n            },\n            set: (value: any) => {\n              const currentEntry = ctx.registry.get(classRef);\n              if (!currentEntry) return;\n              (currentEntry.inst as any)[key] = value;\n            },\n          });\n        };\n        step(this);\n        this.objectSteps.push(step);\n      }\n    }\n\n    return this as any;\n  }\n\n  get<R>(\n    cls:\n      | AppServiceClass<Cur, Req, any, R>\n      | (() => AppServiceClass<Cur, Req, any, R>),\n  ): R {\n    this.assertSettlementHealthy();\n\n    let key = cls as unknown as AnyClass;\n    if (\n      !this.registry.has(key) &&\n      typeof cls === 'function' &&\n      !(cls as any).prototype\n    ) {\n      key = (cls as () => AppServiceClass<Cur, Req, any, R>)() as AnyClass;\n    }\n\n    if (!this.registry.has(key) && (this.starting || this.settling)) {\n      const record = this.findProvideRecord(key);\n      if (record) {\n        this.createEntryFromRecord(record);\n      }\n    }\n\n    if (!this.registry.has(key)) {\n      throw new Error(`Service not provided: ${key?.name ?? cls.name}`);\n    }\n\n    const entry = this.registry.get(key)!;\n    return entry.inst as any;\n  }\n\n  async getAsync<R>(\n    cls:\n      | AppServiceClass<Cur, Req, any, R>\n      | (() => AppServiceClass<Cur, Req, any, R>),\n  ): Promise<R> {\n    return await this.get(cls);\n  }\n\n  use<const Ctxes extends AppContext<any, any>[]>(\n    ...ctxes: Ctxes\n  ): AppContextUsed<Cur, Req, Ctxes> {\n    this.assertSettlementHealthy();\n\n    for (const ctx of ctxes) {\n      const other = ctx as any as AppContextCore<any, any>;\n\n      // Started contexts are merged by instance directly (registry copy),\n      // and should not queue reconstruction/re-init on target context.\n      if (Array.isArray(other?.provideRecords) && !other?.started) {\n        this.provideRecords.push(...other.provideRecords);\n      }\n\n      // Copy and apply object steps\n      if (Array.isArray(other?.objectSteps)) {\n        this.objectSteps.push(...other.objectSteps);\n        for (const step of other.objectSteps) {\n          step(this);\n        }\n      }\n\n      // If the other context has already started, copy loaded entries only.\n      // They should remain initialized by the source context and must not be re-initialized.\n      if (other?.started) {\n        if (other?.registry instanceof Map) {\n          for (const [key, value] of other.registry.entries()) {\n            this.registry.set(key, value);\n          }\n        }\n      }\n    }\n\n    return this as any;\n  }\n\n  define(): AppContext<Cur, Req> {\n    this.assertSettlementHealthy();\n    if (this.started && !this.starting) {\n      this.triggerSettlement();\n    }\n    return this as any;\n  }\n\n  async start(): Promise<Empty extends Req ? AppContext<Cur, Req> : never> {\n    if (this.started) {\n      return this as any;\n    }\n\n    this.assertSettlementHealthy();\n    this.starting = true;\n    try {\n      await this.scheduleSettlement();\n      this.started = true;\n      return this as any;\n    } finally {\n      this.starting = false;\n    }\n  }\n}\n\nexport const createAppContext = <Req = Empty>() =>\n  new AppContextCore<Empty, Req>() as AppContext<Empty, Req>;\n", "import { Empty } from '../types';\nimport { AppContext } from './types';\n\nexport class AppServiceBase<Cur = Empty, Config extends any[] = []> {\n  constructor(\n    public ctx: AppContext<Cur>,\n    ...args: Config\n  ) {}\n\n  async init() {}\n}\n", "export class ConfigurerInstance<T extends Record<string, string>> {\n  constructor(\n    public config: T,\n    private readonly defaultConfig: T,\n  ) {}\n\n  getString<K extends keyof T>(key: K): string {\n    return (this.config[key] || this.defaultConfig[key]) as string;\n  }\n\n  getInt<K extends keyof T>(key: K): number {\n    return parseInt(this.getString(key));\n  }\n\n  getFloat<K extends keyof T>(key: K): number {\n    return parseFloat(this.getString(key));\n  }\n\n  getBoolean<K extends keyof T>(key: K): boolean {\n    const defaultBoolean = parseConfigBoolean(this.defaultConfig[key], false);\n    return parseConfigBoolean(this.getString(key), defaultBoolean);\n  }\n\n  getStringArray<K extends keyof T>(key: K): string[] {\n    return convertStringArray(this.getString(key));\n  }\n\n  getIntArray<K extends keyof T>(key: K): number[] {\n    return convertIntArray(this.getString(key));\n  }\n\n  getFloatArray<K extends keyof T>(key: K): number[] {\n    return convertFloatArray(this.getString(key));\n  }\n\n  getBooleanArray<K extends keyof T>(key: K): boolean[] {\n    const defaultBoolean = parseConfigBoolean(this.defaultConfig[key], false);\n    return convertBooleanArray(this.getString(key), defaultBoolean);\n  }\n\n  getJSON<R = unknown, K extends keyof T = keyof T>(key: K): R {\n    const value = this.getString(key);\n    const jsonString =\n      typeof value === 'string' && !value.trim()\n        ? (this.defaultConfig[key] as string)\n        : value;\n    try {\n      return JSON.parse(jsonString) as R;\n    } catch (error) {\n      const message =\n        error instanceof Error ? `: ${error.message}` : '';\n      throw new Error(\n        `Failed to parse JSON config \"${String(key)}\"${message}`,\n      );\n    }\n  }\n}\n\nexport class Configurer<T extends Record<string, string>> {\n  constructor(public defaultConfig: T) {}\n\n  loadConfig(\n    options: { env?: Record<string, string | undefined>; obj?: any } = {},\n  ): ConfigurerInstance<T> {\n    const readConfig =\n      options?.obj && typeof options.obj === 'object' ? options.obj : {};\n    const normalizedConfig = normalizeConfigByDefaultKeys(\n      readConfig,\n      this.defaultConfig,\n    );\n\n    return new ConfigurerInstance<T>(\n      {\n        ...this.defaultConfig,\n        ...normalizedConfig,\n        ...(options?.env || {}),\n      } as T,\n      this.defaultConfig,\n    );\n  }\n\n  generateExampleObject(): Record<string, unknown> {\n    return Object.fromEntries(\n      Object.entries(this.defaultConfig).map(([key, value]) => {\n        const typedValue = toTypedValue(value);\n        if (\n          typedValue &&\n          typeof typedValue === 'object' &&\n          !Array.isArray(typedValue)\n        ) {\n          return [toCamelCaseKey(key), typedValue];\n        }\n        if (value.includes(',')) {\n          return [\n            toCamelCaseKey(key),\n            value.split(',').map((v) => toTypedValue(v)),\n          ];\n        }\n        return [toCamelCaseKey(key), typedValue];\n      }),\n    );\n  }\n}\n\nexport type TypeFromConfigurer<C extends ConfigurerInstance<any>> =\n  C extends ConfigurerInstance<infer T> ? T : never;\n\nfunction toCamelCaseKey(key: string): string {\n  const lower = key.toLowerCase();\n  return lower.replace(/_([a-z0-9])/g, (_, ch: string) => ch.toUpperCase());\n}\n\nfunction normalizeConfigValue(value: unknown): string | undefined {\n  if (value == null) {\n    return undefined;\n  }\n  if (typeof value === 'string') {\n    return value;\n  }\n  if (typeof value === 'number') {\n    return value.toString();\n  }\n  if (typeof value === 'boolean') {\n    return value ? '1' : '0';\n  }\n  if (Array.isArray(value)) {\n    return value.map((item) => normalizeArrayItem(item)).join(',');\n  }\n  if (typeof value === 'object') {\n    return JSON.stringify(value);\n  }\n  return String(value);\n}\n\nfunction normalizeArrayItem(value: unknown): string {\n  if (typeof value === 'string') {\n    return value;\n  }\n  if (typeof value === 'number') {\n    return value.toString();\n  }\n  if (typeof value === 'boolean') {\n    return value ? '1' : '0';\n  }\n  return String(value);\n}\n\nfunction normalizeConfigByDefaultKeys<T extends Record<string, string>>(\n  readConfig: Record<string, unknown>,\n  defaultConfig: T,\n): Partial<T> {\n  const normalizedConfig: Partial<T> = {};\n  for (const key of Object.keys(defaultConfig) as Array<keyof T>) {\n    const rawKey = key as string;\n    const camelKey = toCamelCaseKey(rawKey);\n    const value =\n      readConfig[camelKey] !== undefined\n        ? readConfig[camelKey]\n        : readConfig[rawKey];\n    const normalized = normalizeConfigValue(value);\n    if (normalized !== undefined) {\n      normalizedConfig[key] = normalized as T[typeof key];\n    }\n  }\n  return normalizedConfig;\n}\n\nfunction parseConfigBoolean(value: unknown, defaultValue = false): boolean {\n  if (typeof value === 'boolean') {\n    return value;\n  }\n  if (typeof value === 'number') {\n    return value !== 0;\n  }\n  if (typeof value === 'string') {\n    const normalized = value.trim().toLowerCase();\n    if (defaultValue) {\n      return !(\n        normalized === '0' ||\n        normalized === 'false' ||\n        normalized === 'null'\n      );\n    }\n    return !(\n      normalized === '' ||\n      normalized === '0' ||\n      normalized === 'false' ||\n      normalized === 'null'\n    );\n  }\n  if (value == null) {\n    return defaultValue;\n  }\n  return Boolean(value);\n}\n\nfunction convertStringArray(str: string): string[] {\n  return (\n    str\n      ?.split(',')\n      .map((s) => s.trim())\n      .filter((s) => s) || []\n  );\n}\n\nfunction convertIntArray(str: string): number[] {\n  return (\n    str\n      ?.split(',')\n      .map((s) => parseInt(s.trim()))\n      .filter((n) => !isNaN(n)) || []\n  );\n}\n\nfunction convertFloatArray(str: string): number[] {\n  return (\n    str\n      ?.split(',')\n      .map((s) => parseFloat(s.trim()))\n      .filter((n) => !isNaN(n)) || []\n  );\n}\n\nfunction convertBooleanArray(str: string, defaultValue = false): boolean[] {\n  return (\n    str\n      ?.split(',')\n      .map((s) => parseConfigBoolean(s.trim(), defaultValue))\n      .filter((item) => typeof item === 'boolean') || []\n  );\n}\n\nfunction toTypedValue(value: string): string | number | Record<string, unknown> {\n  const trimmed = value.trim();\n  if (/^\\d+$/.test(trimmed)) {\n    return Number.parseInt(trimmed, 10);\n  }\n  const jsonObject = parseJsonObjectString(trimmed);\n  if (jsonObject !== undefined) {\n    return jsonObject;\n  }\n  return trimmed;\n}\n\nfunction parseJsonObjectString(\n  value: string,\n): Record<string, unknown> | undefined {\n  if (!value.startsWith('{') || !value.endsWith('}')) {\n    return undefined;\n  }\n  try {\n    const parsed = JSON.parse(value);\n    if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n      return parsed as Record<string, unknown>;\n    }\n  } catch {\n    return undefined;\n  }\n  return undefined;\n}\n"],
  "mappings": "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",
  "names": ["args", "inst", "args", "locale", "isPromiseLike"]
}
