@mx-space/cli 0.13.0 → 0.13.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.
Files changed (55) hide show
  1. package/README.md +23 -1
  2. package/dist/{Lexical.dev-By5dOKBN.mjs → Lexical.dev-BsbWMhb3.mjs} +2265 -429
  3. package/dist/{Lexical.node-fXM8Jp7p.mjs → Lexical.node-DnR_u_Ke.mjs} +47 -10
  4. package/dist/Lexical.prod-B7L8eVsO.mjs +6816 -0
  5. package/dist/{LexicalClipboard.dev--HxGoSkO.mjs → LexicalClipboard.dev-BGSFbuTA.mjs} +131 -39
  6. package/dist/{LexicalClipboard.node-C3mRbrmW.mjs → LexicalClipboard.node-CUD_tpWb.mjs} +2 -2
  7. package/dist/LexicalClipboard.prod-DQXfRt3h.mjs +429 -0
  8. package/dist/{LexicalCodeCore.dev-DjSrd4A4.mjs → LexicalCodeCore.dev-B9lK_GSN.mjs} +81 -67
  9. package/dist/LexicalCodeCore.prod-CNWMPXhg.mjs +651 -0
  10. package/dist/LexicalDragon.dev-DRm2bGZ1.mjs +186 -0
  11. package/dist/{LexicalDragon.node-BVhw4C7s.mjs → LexicalDragon.node-d8gPruly.mjs} +3 -2
  12. package/dist/LexicalDragon.prod-ey3uKDJF.mjs +121 -0
  13. package/dist/{LexicalExtension.dev-BPNyvGqe.mjs → LexicalExtension.dev-CXtOJb83.mjs} +349 -35
  14. package/dist/{LexicalExtension.node-BVlcrgOx.mjs → LexicalExtension.node-CMsupJZs.mjs} +9 -4
  15. package/dist/{LexicalExtension.prod-DFKbiNt-.mjs → LexicalExtension.prod-BCLGhzcg.mjs} +477 -328
  16. package/dist/{LexicalHeadless.dev-B-cj7Pr5.mjs → LexicalHeadless.dev-yVDOBd64.mjs} +2 -2
  17. package/dist/{LexicalHeadless.prod-Byp1vNzT.mjs → LexicalHeadless.prod-B8qauuEA.mjs} +2 -2
  18. package/dist/{LexicalHtml.dev-prBAwszN.mjs → LexicalHtml.dev-3rdckXIU.mjs} +323 -265
  19. package/dist/{LexicalHtml.node-BvNF96jZ.mjs → LexicalHtml.node-DagZUjQ_.mjs} +6 -4
  20. package/dist/{LexicalHtml.prod-Sz3CW1ht.mjs → LexicalHtml.prod-B5AQaJDb.mjs} +354 -352
  21. package/dist/{LexicalLink.dev-NySTYhVR.mjs → LexicalLink.dev-CspSwLNB.mjs} +69 -58
  22. package/dist/{LexicalLink.prod-BuCM8gts.mjs → LexicalLink.prod-Da-ZW6H5.mjs} +210 -211
  23. package/dist/{LexicalList.dev-DIMOvSFD.mjs → LexicalList.dev-CNXmV6v8.mjs} +246 -198
  24. package/dist/LexicalList.prod-DgQzj4v9.mjs +944 -0
  25. package/dist/{LexicalMarkdown.dev-C7aylvCG.mjs → LexicalMarkdown.dev-0XURdo96.mjs} +129 -37
  26. package/dist/LexicalMarkdown.prod-qUsIQfJx.mjs +932 -0
  27. package/dist/{LexicalRichText.dev-DfICq6lU.mjs → LexicalRichText.dev-BqsEA7I9.mjs} +151 -122
  28. package/dist/{LexicalRichText.node-Bg9jND3Q.mjs → LexicalRichText.node-D73RR0Ck.mjs} +8 -11
  29. package/dist/LexicalRichText.prod-4Atyd7OR.mjs +538 -0
  30. package/dist/{LexicalSelection.dev-DGjj12wW.mjs → LexicalSelection.dev-DK5xfxKP.mjs} +10 -9
  31. package/dist/{LexicalSelection.node-BU5L4193.mjs → LexicalSelection.node-pyZyrANz.mjs} +4 -4
  32. package/dist/{LexicalSelection.prod-D-PwRbyK.mjs → LexicalSelection.prod-C5GrCbDC.mjs} +144 -146
  33. package/dist/{LexicalTable.dev-ChP7cugd.mjs → LexicalTable.dev-DiR_4rdI.mjs} +184 -119
  34. package/dist/LexicalTable.prod-Cbc5EasT.mjs +2336 -0
  35. package/dist/{LexicalUtils.dev-BiFU3789.mjs → LexicalUtils.dev-jhPjn1vQ.mjs} +375 -35
  36. package/dist/{LexicalUtils.node-j3Llm7Y3.mjs → LexicalUtils.node-Ck74ludK.mjs} +24 -12
  37. package/dist/LexicalUtils.prod-nuTBxnk_.mjs +504 -0
  38. package/dist/bin/mxs.mjs +1 -1
  39. package/dist/esm-BumPuCXw.mjs +2 -0
  40. package/dist/{esm-lpolVSUJ.mjs → esm-DupC6TTP.mjs} +172 -172
  41. package/dist/index.d.mts +16 -16
  42. package/dist/index.mjs +1 -1
  43. package/dist/{mxs-PFV8OJ-M.mjs → mxs-BgAyMQdq.mjs} +1595 -314
  44. package/package.json +17 -17
  45. package/dist/Lexical.prod-BlCvXPGa.mjs +0 -6088
  46. package/dist/LexicalClipboard.prod-DNJzFMcT.mjs +0 -371
  47. package/dist/LexicalCodeCore.prod-DTDShkR3.mjs +0 -642
  48. package/dist/LexicalDragon.dev-DwprRH0z.mjs +0 -88
  49. package/dist/LexicalDragon.prod-nh4J-8vn.mjs +0 -59
  50. package/dist/LexicalList.prod-MVqfA6Vo.mjs +0 -925
  51. package/dist/LexicalMarkdown.prod-CfQSM406.mjs +0 -868
  52. package/dist/LexicalRichText.prod-GsFzCK-o.mjs +0 -550
  53. package/dist/LexicalTable.prod-Bpr9YRXp.mjs +0 -2311
  54. package/dist/LexicalUtils.prod-DCvrA78p.mjs +0 -373
  55. package/dist/esm-DGvoYR6n.mjs +0 -2
@@ -1,7 +1,7 @@
1
- import { $ as drain, $a as identity, $i as reduce$1, $n as try_, $r as get$16, $t as either, A as compose, Aa as pipeArguments, Ai as empty$11, An as orElse$3, Ar as Scope, At as encodeSync, B as ensuring$2, Ba as cached, Bi as head$2, Bn as scoped, Br as set$3, Bt as async, C as Number$, Ca as some, Ci as isConfigError, Cn as match$2, Ct as currentContext, D as String$, Da as left, Di as appendAll, Dn as onError, Dr as taggedEnum, Dt as unsafeMake, Ea as string$1, Ei as append$2, En as negate, Er as tagged, Et as get$20, Fa as redact$1, Fi as findFirstIndex, Fn as retry, Fr as isFailure, Ft as addFinalizer, G as mapError$1, Gi as join, Gn as suspend, Gr as updateAs, Gt as catchIf, H as fromChannel, Ha as hash, Hi as isArray$1, Hn as serviceOption, Hr as updateAndGet, Ht as catchAll, I as make$22, Ia as symbolRedactable, Ii as findLast, In as runFork$1, Ir as void_$1, It as all$5, J as splitLines, Ja as globalValue, Ji as match$1, Jn as tapError, Jr as cons$1, Jt as catchTags, K as run$6, Ka as isObject, Ki as make$23, Kn as sync, Kr as CommitPrototype, Kt as catchSome, L as isConfig, La as toStringUnknown, Li as flatMap$4, Ln as runSync, Lr as ParentSpan, Lt as annotateLogs, M as decodeUnknown, Ma as Class, Mi as filter$2, Mn as provide$1, Mr as isInterrupted, Mt as _void, N as int, Na as NodeInspectSymbol, Ni as filterMap, Nn as provideService, Nr as isInterruptedOnly, Nt as acquireRelease, O as TaggedError, Oa as merge$2, Oi as contains, On as onInterrupt, Or as error$1, Ot as nominal, P as optional$9, Pa as format$3, Pi as findFirst, Pn as repeatN, Pr as fail$3, Pt as acquireUseRelease, Q as unwrapScoped, Qa as dual, Qi as prepend$1, Qn as tryPromise, Qr as fromIterable$2, Qt as dieMessage, R as asyncScoped, Ra as equals, Ri as fromIterable$1, Rn as runtime, Rr as get$15, Rt as as, S as Literal, Sa as orElse$2, Si as omit, Sn as mapInputContext, Sr as unsafeDone, St as succeed$2, Ta as mapInput, Ti as allocate, Tn as matchEffect, Tr as TaggedError$1, Tt as currentTracerEnabled, Ua as string, Ui as isEmptyReadonlyArray, Un as sleep$1, Ur as allLevels, Ut as catchAllCause, Va as combine$2, Vi as headNonEmpty, Vn as serviceFunctions, Vr as update$8, Vt as cached$1, W as mapChunks, Wa as symbol$1, Wi as isNonEmptyReadonlyArray, Wn as succeed$1, Wr as getOrDefault, Wt as catchAllDefect, X as transduce, Xa as constUndefined, Xi as matchRight, Xn as timeout, Xr as of$3, Xt as contextWithEffect, Y as suspend$2, Ya as constFalse, Yi as matchLeft, Yn as tapErrorCause, Yr as isNil, Yt as context, Z as unwrap$16, Za as constVoid, Zi as of$2, Zn as tryMap, Zr as empty$12, Zt as die, _ as fromString, _a as isOption, _i as Reference, _n as logError, _r as failCause, _t as effect, a as make$30, aa as tailNonEmpty, ai as add$1, an as filterOrDieMessage, ar as useSpan, at as embedInput, b as Defect, ba as match, bi as getOption, bn as mapBoth, br as make$28, bt as provideMerge, c as defaultLogger, ci as remove$4, cn as fnUntraced, cr as withParentSpan, ct as fromEffect, d as get$17, da as flatMap$3, di as map$9, dn as forkScoped, dr as zipRight, dt as write, ea as reduceRight, ei as has, en as ensuring, eo as pipe, er as uninterruptible, et as foldLeftChunks, f as make$26, fa as fromNullable, fi as of$1, fn as gen, fr as zipWith, ft as spaced, g as when, ga as isNone, gi as GenericTag, gn as locally, gr as fail$4, gt as make$29, h as value$1, ha as getOrUndefined, hi as unsafeFromArray, hn as isEffect, hr as complete, ht as get$18, i as isMailbox, ia as splitAt, ii as make$27, in as filter$1, io as __toESM, ir as unsafeMakeSemaphore, it as acquireUseRelease$1, ja as BaseProto, ji as every, jn as orElseFail, jr as addFinalizer$1, jt as is$2, k as Union, ka as right, ki as drop, kn as orDie, kr as log, kt as decodeSync, l as prettyLoggerDefault, la as map$10, li as seconds, ln as forEach$1, lr as zip, lt as suspend$1, m as orElse$1, ma as getOrThrow, mi as toArray, mn as interruptible, mr as _await, mt as updateContext, n as make$31, na as sort$2, ni as make$25, nn as failCause$1, no as __exportAll, nr as unlessEffect, nt as fromChannel$1, o as toChannel, oa as take, oi as fromIterable$3, on as flatMap$1, or as when$1, ot as ensuring$1, p as updateEffect, pa as getOrElse, pi as reduce$2, pn as ignore, pr as DeferredTypeId, pt as runFork, q as runCollect, qa as isTagged, qi as map$7, qn as tap, qr as round, qt as catchTag, r as unsafeAdd, ra as span, ri as set$2, rn as failSync, ro as __require, rr as unsafeMakeLatch, rt as unwrapScoped$1, s as unify, sa as unsafeGet, si as has$1, sn as flatten$3, sr as withFiberRuntime, st as flatMap$2, t as join$1, ta as some$1, ti as isEmpty$5, tn as fail$2, to as __commonJSMin, tr as uninterruptibleMask, tt as forEach, u as withMinimumLogLevel, ua as filter$3, ui as appendAll$1, un as forkDaemon, ur as zipLeft, ut as void_, v as Cause, va as isSome, vi as Tag$2, vn as logWarning, vr as interrupt, vt as mergeAll, w as NumberFromString, wa as boolean$3, wi as isMissingDataOnly, wn as matchCauseEffect, wr as Error$1, wt as currentLoggers, x as Int, xa as none$3, xi as merge$3, xn as mapError, xr as succeed$3, xt as scoped$1, y as Date$, ya as map$8, yi as get$19, yn as map$6, yr as isDone, yt as provide, z as bufferChunks, za as symbol$2, zi as getSomes, zn as scope, zr as make$24, zt as asVoid } from "./esm-lpolVSUJ.mjs";
2
- import { _ as LinkNode, a as HeadingNode, b as CodeHighlightNode, d as ListItemNode, f as ListNode, g as AutoLinkNode, o as QuoteNode, x as CodeNode } from "./LexicalRichText.node-Bg9jND3Q.mjs";
3
- import { a as HorizontalRuleNode } from "./LexicalExtension.node-BVlcrgOx.mjs";
4
- import { $t as ElementNode, Qt as DecoratorNode } from "./Lexical.node-fXM8Jp7p.mjs";
1
+ import { $ as drain, $a as identity, $i as reduce$1, $n as try_, $r as get$16, $t as either, A as compose, Aa as pipeArguments, Ai as empty$11, An as orElse$3, Ar as Scope, At as encodeSync, B as ensuring$2, Ba as cached, Bi as head$2, Bn as scoped, Br as set$3, Bt as async, C as Number$, Ca as some, Ci as isConfigError, Cn as match$2, Ct as currentContext, D as String$, Da as left, Di as appendAll, Dn as onError, Dr as taggedEnum, Dt as unsafeMake, Ea as string$1, Ei as append$2, En as negate, Er as tagged, Et as get$20, Fa as redact$1, Fi as findFirstIndex, Fn as retry, Fr as isFailure, Ft as addFinalizer, G as mapError$1, Gi as join, Gn as suspend, Gr as updateAs, Gt as catchIf, H as fromChannel, Ha as hash, Hi as isArray$1, Hn as serviceOption, Hr as updateAndGet, Ht as catchAll, I as make$22, Ia as symbolRedactable, Ii as findLast, In as runFork$1, Ir as void_$1, It as all$5, J as splitLines, Ja as globalValue, Ji as match$1, Jn as tapError, Jr as cons$1, Jt as catchTags, K as run$6, Ka as isObject, Ki as make$23, Kn as sync, Kr as CommitPrototype, Kt as catchSome, L as isConfig, La as toStringUnknown, Li as flatMap$4, Ln as runSync, Lr as ParentSpan, Lt as annotateLogs, M as decodeUnknown, Ma as Class, Mi as filter$2, Mn as provide$1, Mr as isInterrupted, Mt as _void, N as int, Na as NodeInspectSymbol, Ni as filterMap, Nn as provideService, Nr as isInterruptedOnly, Nt as acquireRelease, O as TaggedError, Oa as merge$2, Oi as contains, On as onInterrupt, Or as error$1, Ot as nominal, P as optional$9, Pa as format$3, Pi as findFirst, Pn as repeatN, Pr as fail$3, Pt as acquireUseRelease, Q as unwrapScoped, Qa as dual, Qi as prepend$1, Qn as tryPromise, Qr as fromIterable$2, Qt as dieMessage, R as asyncScoped, Ra as equals, Ri as fromIterable$1, Rn as runtime, Rr as get$15, Rt as as, S as Literal, Sa as orElse$2, Si as omit, Sn as mapInputContext, Sr as unsafeDone, St as succeed$2, Ta as mapInput, Ti as allocate, Tn as matchEffect, Tr as TaggedError$1, Tt as currentTracerEnabled, Ua as string, Ui as isEmptyReadonlyArray, Un as sleep$1, Ur as allLevels, Ut as catchAllCause, Va as combine$2, Vi as headNonEmpty, Vn as serviceFunctions, Vr as update$8, Vt as cached$1, W as mapChunks, Wa as symbol$1, Wi as isNonEmptyReadonlyArray, Wn as succeed$1, Wr as getOrDefault, Wt as catchAllDefect, X as transduce, Xa as constUndefined, Xi as matchRight, Xn as timeout, Xr as of$3, Xt as contextWithEffect, Y as suspend$2, Ya as constFalse, Yi as matchLeft, Yn as tapErrorCause, Yr as isNil, Yt as context, Z as unwrap$16, Za as constVoid, Zi as of$2, Zn as tryMap, Zr as empty$12, Zt as die, _ as fromString, _a as isOption, _i as Reference, _n as logError, _r as failCause, _t as effect, a as make$30, aa as tailNonEmpty, ai as add$1, an as filterOrDieMessage, ar as useSpan, at as embedInput, b as Defect, ba as match, bi as getOption, bn as mapBoth, br as make$28, bt as provideMerge, c as defaultLogger, ci as remove$4, cn as fnUntraced, cr as withParentSpan, ct as fromEffect, d as get$17, da as flatMap$3, di as map$9, dn as forkScoped, dr as zipRight, dt as write, ea as reduceRight, ei as has, en as ensuring, eo as pipe, er as uninterruptible, et as foldLeftChunks, f as make$26, fa as fromNullable, fi as of$1, fn as gen, fr as zipWith, ft as spaced, g as when, ga as isNone, gi as GenericTag, gn as locally, gr as fail$4, gt as make$29, h as value$1, ha as getOrUndefined, hi as unsafeFromArray, hn as isEffect, hr as complete, ht as get$18, i as isMailbox, ia as splitAt, ii as make$27, in as filter$1, io as __toESM, ir as unsafeMakeSemaphore, it as acquireUseRelease$1, ja as BaseProto, ji as every, jn as orElseFail, jr as addFinalizer$1, jt as is$2, k as Union, ka as right, ki as drop, kn as orDie, kr as log, kt as decodeSync, l as prettyLoggerDefault, la as map$10, li as seconds, ln as forEach$1, lr as zip, lt as suspend$1, m as orElse$1, ma as getOrThrow, mi as toArray, mn as interruptible, mr as _await, mt as updateContext, n as make$31, na as sort$2, ni as make$25, nn as failCause$1, no as __exportAll, nr as unlessEffect, nt as fromChannel$1, o as toChannel, oa as take, oi as fromIterable$3, on as flatMap$1, or as when$1, ot as ensuring$1, p as updateEffect, pa as getOrElse, pi as reduce$2, pn as ignore, pr as DeferredTypeId, pt as runFork, q as runCollect, qa as isTagged, qi as map$7, qn as tap, qr as round, qt as catchTag, r as unsafeAdd, ra as span, ri as set$2, rn as failSync, ro as __require, rr as unsafeMakeLatch, rt as unwrapScoped$1, s as unify, sa as unsafeGet, si as has$1, sn as flatten$3, sr as withFiberRuntime, st as flatMap$2, t as join$1, ta as some$1, ti as isEmpty$5, tn as fail$2, to as __commonJSMin, tr as uninterruptibleMask, tt as forEach, u as withMinimumLogLevel, ua as filter$3, ui as appendAll$1, un as forkDaemon, ur as zipLeft, ut as void_, v as Cause, va as isSome, vi as Tag$2, vn as logWarning, vr as interrupt, vt as mergeAll, w as NumberFromString, wa as boolean$3, wi as isMissingDataOnly, wn as matchCauseEffect, wr as Error$1, wt as currentLoggers, x as Int, xa as none$3, xi as merge$3, xn as mapError, xr as succeed$3, xt as scoped$1, y as Date$, ya as map$8, yi as get$19, yn as map$6, yr as isDone, yt as provide, z as bufferChunks, za as symbol$2, zi as getSomes, zn as scope, zr as make$24, zt as asVoid } from "./esm-DupC6TTP.mjs";
2
+ import { _ as LinkNode, a as HeadingNode, b as CodeHighlightNode, d as ListItemNode, f as ListNode, g as AutoLinkNode, o as QuoteNode, x as CodeNode } from "./LexicalRichText.node-D73RR0Ck.mjs";
3
+ import { a as HorizontalRuleNode } from "./LexicalExtension.node-CMsupJZs.mjs";
4
+ import { dn as ElementNode, un as DecoratorNode } from "./Lexical.node-DnR_u_Ke.mjs";
5
5
  import { createRequire } from "node:module";
6
6
  import * as ChildProcess from "node:child_process";
7
7
  import childProcess, { execFile, spawn } from "node:child_process";
@@ -25,7 +25,7 @@ import { promisify, styleText } from "node:util";
25
25
  import { Buffer as Buffer$1 } from "node:buffer";
26
26
  import fs$1, { constants, readFile } from "node:fs/promises";
27
27
  import process$1, { stdin, stdout } from "node:process";
28
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Error.js
28
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Error.js
29
29
  /**
30
30
  * @since 1.0.0
31
31
  * @category type id
@@ -99,7 +99,7 @@ var SystemError = class extends TaggedError("@effect/platform/Error/SystemError"
99
99
  }
100
100
  };
101
101
  //#endregion
102
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/fileSystem.js
102
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/fileSystem.js
103
103
  /** @internal */
104
104
  const tag$2 = /*#__PURE__*/ GenericTag("@effect/platform/FileSystem");
105
105
  /** @internal */
@@ -151,7 +151,7 @@ const stream = (file, { bufferSize = 16, bytesToRead: bytesToRead_, chunkSize: c
151
151
  return bufferChunks(fromChannel(loop(BigInt(0))), { capacity: bufferSize });
152
152
  };
153
153
  //#endregion
154
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/FileSystem.js
154
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/FileSystem.js
155
155
  /**
156
156
  * @since 1.0.0
157
157
  */
@@ -201,7 +201,7 @@ const WatchEventRemove = /*#__PURE__*/ tagged("Remove");
201
201
  */
202
202
  var WatchBackend = class extends Tag$2("@effect/platform/FileSystem/WatchBackend")() {};
203
203
  //#endregion
204
- //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.3/node_modules/@effect/typeclass/dist/esm/internal/Iterable.js
204
+ //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.4/node_modules/@effect/typeclass/dist/esm/internal/Iterable.js
205
205
  /** @internal */
206
206
  function reduce(b, f) {
207
207
  return function(iterable) {
@@ -221,7 +221,7 @@ function map$5(f) {
221
221
  };
222
222
  }
223
223
  //#endregion
224
- //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.3/node_modules/@effect/typeclass/dist/esm/Product.js
224
+ //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.4/node_modules/@effect/typeclass/dist/esm/Product.js
225
225
  /**
226
226
  * @since 0.24.0
227
227
  */
@@ -234,7 +234,7 @@ const struct$2 = (F) => (fields) => {
234
234
  }, (r) => keys.map((k) => r[k]));
235
235
  };
236
236
  //#endregion
237
- //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.3/node_modules/@effect/typeclass/dist/esm/Semigroup.js
237
+ //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.4/node_modules/@effect/typeclass/dist/esm/Semigroup.js
238
238
  /**
239
239
  * @since 0.24.0
240
240
  */
@@ -314,7 +314,7 @@ const array$1 = () => make$19((self, that) => self.concat(that));
314
314
  */
315
315
  const struct$1 = /*#__PURE__*/ struct$2(Product);
316
316
  //#endregion
317
- //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.3/node_modules/@effect/typeclass/dist/esm/Monoid.js
317
+ //#region ../../node_modules/.pnpm/@effect+typeclass@0.40.0_effect@3.21.4/node_modules/@effect/typeclass/dist/esm/Monoid.js
318
318
  /**
319
319
  * @category constructors
320
320
  * @since 0.24.0
@@ -351,7 +351,7 @@ const struct = (fields) => {
351
351
  return fromSemigroup(struct$1(fields), empty);
352
352
  };
353
353
  //#endregion
354
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/internal/color.js
354
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/internal/color.js
355
355
  /** @internal */
356
356
  const black = { _tag: "Black" };
357
357
  /** @internal */
@@ -378,7 +378,7 @@ const toCode$1 = (color) => {
378
378
  }
379
379
  };
380
380
  //#endregion
381
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/internal/sgr.js
381
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/internal/sgr.js
382
382
  /** @internal */
383
383
  const reset = { _tag: "Reset" };
384
384
  /** @internal */
@@ -540,7 +540,7 @@ const stringifyInternal = (self) => {
540
540
  ]))}${join(self.commands, "")}`;
541
541
  };
542
542
  //#endregion
543
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/Ansi.js
543
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/Ansi.js
544
544
  /**
545
545
  * @since 1.0.0
546
546
  * @category constructors
@@ -597,7 +597,7 @@ const cyanBright = cyanBright$1;
597
597
  */
598
598
  const combine = combine$1;
599
599
  //#endregion
600
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/flatten.js
600
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/flatten.js
601
601
  const FlattenSymbolKey = "@effect/printer/Flatten";
602
602
  /** @internal */
603
603
  const FlattenTypeId = /*#__PURE__*/ Symbol.for(FlattenSymbolKey);
@@ -656,7 +656,7 @@ const map$4 = /*#__PURE__*/ dual(2, (self, f) => {
656
656
  }
657
657
  });
658
658
  //#endregion
659
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/doc.js
659
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/doc.js
660
660
  const DocSymbolKey = "@effect/printer/Doc";
661
661
  /** @internal */
662
662
  const DocTypeId = /*#__PURE__*/ Symbol.for(DocSymbolKey);
@@ -916,7 +916,7 @@ const textSpaces = (n) => {
916
916
  return s;
917
917
  };
918
918
  //#endregion
919
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/docStream.js
919
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/docStream.js
920
920
  const DocStreamSymbolKey = "@effect/printer/DocStream";
921
921
  /** @internal */
922
922
  const DocStreamTypeId = /*#__PURE__*/ Symbol.for(DocStreamSymbolKey);
@@ -1005,7 +1005,7 @@ const popAnnotation = (stream) => {
1005
1005
  return op;
1006
1006
  };
1007
1007
  //#endregion
1008
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/layoutPipeline.js
1008
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/layoutPipeline.js
1009
1009
  /** @internal */
1010
1010
  const nil = { _tag: "Nil" };
1011
1011
  /** @internal */
@@ -1021,7 +1021,7 @@ const undoAnnotation = (pipeline) => ({
1021
1021
  pipeline
1022
1022
  });
1023
1023
  //#endregion
1024
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/pageWidth.js
1024
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/pageWidth.js
1025
1025
  const PageWidthSymbolKey = "@effect/printer/PageWidth";
1026
1026
  /** @internal */
1027
1027
  const PageWidthTypeId = /*#__PURE__*/ Symbol.for(PageWidthSymbolKey);
@@ -1067,7 +1067,7 @@ const remainingWidth = (pageWidth, ribbonFraction, indentation, currentColumn) =
1067
1067
  return Math.min(columnsLeftInLine, columnsLeftInRibbon);
1068
1068
  };
1069
1069
  //#endregion
1070
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/layout.js
1070
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/layout.js
1071
1071
  /** @internal */
1072
1072
  const options$3 = (pageWidth) => ({ pageWidth });
1073
1073
  /** @internal */
@@ -1256,7 +1256,7 @@ const failsOnFirstLine = (self) => {
1256
1256
  throw new Error("bug");
1257
1257
  };
1258
1258
  //#endregion
1259
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/Doc.js
1259
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/Doc.js
1260
1260
  /**
1261
1261
  * The abstract data type `Doc<A>` represents prettified documents that have
1262
1262
  * been annotated with data of type `A`.
@@ -1643,7 +1643,7 @@ const indent$1 = indent$2;
1643
1643
  */
1644
1644
  const annotate = annotate$1;
1645
1645
  //#endregion
1646
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/internal/ansiDoc.js
1646
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/internal/ansiDoc.js
1647
1647
  /** @internal */
1648
1648
  const beep$1 = /*#__PURE__*/ annotate(empty$8, beep$2);
1649
1649
  /** @internal */
@@ -1667,7 +1667,7 @@ const eraseLines$1 = (rows) => annotate(empty$8, eraseLines$2(rows));
1667
1667
  /** @internal */
1668
1668
  const eraseLine$1 = /*#__PURE__*/ annotate(empty$8, eraseLine$2);
1669
1669
  //#endregion
1670
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/PageWidth.js
1670
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/PageWidth.js
1671
1671
  /**
1672
1672
  * @since 1.0.0
1673
1673
  */
@@ -1677,7 +1677,7 @@ const eraseLine$1 = /*#__PURE__*/ annotate(empty$8, eraseLine$2);
1677
1677
  */
1678
1678
  const defaultPageWidth = defaultPageWidth$1;
1679
1679
  //#endregion
1680
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/Layout.js
1680
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/Layout.js
1681
1681
  /**
1682
1682
  * @since 1.0.0
1683
1683
  */
@@ -1852,7 +1852,7 @@ const pretty = pretty$1;
1852
1852
  */
1853
1853
  const smart = smart$1;
1854
1854
  //#endregion
1855
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/internal/ansiRender.js
1855
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/internal/ansiRender.js
1856
1856
  /** @internal */
1857
1857
  const render$3 = /*#__PURE__*/ dual(2, (self, config) => {
1858
1858
  switch (config.style) {
@@ -1895,7 +1895,7 @@ const renderSafe = (self, stack) => {
1895
1895
  }
1896
1896
  };
1897
1897
  //#endregion
1898
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/AnsiDoc.js
1898
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/AnsiDoc.js
1899
1899
  /**
1900
1900
  * Play a beeping sound.
1901
1901
  *
@@ -1993,7 +1993,7 @@ const eraseLine = eraseLine$1;
1993
1993
  */
1994
1994
  const render$2 = render$3;
1995
1995
  //#endregion
1996
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/internal/optimize.js
1996
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/internal/optimize.js
1997
1997
  /** @internal */
1998
1998
  const optimize$1 = /*#__PURE__*/ dual(2, (self, depth) => runSync(optimizeSafe(self, depth)));
1999
1999
  const optimizeSafe = (self, depth) => {
@@ -2036,7 +2036,7 @@ const optimizeSafe = (self, depth) => {
2036
2036
  return optimize(self);
2037
2037
  };
2038
2038
  //#endregion
2039
- //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer/dist/esm/Optimize.js
2039
+ //#region ../../node_modules/.pnpm/@effect+printer@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer/dist/esm/Optimize.js
2040
2040
  /**
2041
2041
  * @since 1.0.0
2042
2042
  */
@@ -2084,7 +2084,7 @@ const Deep = { _tag: "Deep" };
2084
2084
  */
2085
2085
  const optimize = optimize$1;
2086
2086
  //#endregion
2087
- //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.3__effect@3.21.3/node_modules/@effect/printer-ansi/dist/esm/Color.js
2087
+ //#region ../../node_modules/.pnpm/@effect+printer-ansi@0.49.0_@effect+typeclass@0.40.0_effect@3.21.4__effect@3.21.4/node_modules/@effect/printer-ansi/dist/esm/Color.js
2088
2088
  /**
2089
2089
  * @since 1.0.0
2090
2090
  */
@@ -2109,7 +2109,7 @@ const cyan = cyan$1;
2109
2109
  */
2110
2110
  const white = white$3;
2111
2111
  //#endregion
2112
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/helpDoc/span.js
2112
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/helpDoc/span.js
2113
2113
  /** @internal */
2114
2114
  const text$10 = (value) => ({
2115
2115
  _tag: "Text",
@@ -2164,16 +2164,16 @@ const spans = (spans) => {
2164
2164
  return empty$7;
2165
2165
  };
2166
2166
  /** @internal */
2167
- const isEmpty$3 = (self) => size$10(self) === 0;
2167
+ const isEmpty$3 = (self) => size$9(self) === 0;
2168
2168
  /** @internal */
2169
- const size$10 = (self) => {
2169
+ const size$9 = (self) => {
2170
2170
  switch (self._tag) {
2171
2171
  case "Text":
2172
2172
  case "URI": return self.value.length;
2173
2173
  case "Highlight":
2174
2174
  case "Strong":
2175
- case "Weak": return size$10(self.value);
2176
- case "Sequence": return size$10(self.left) + size$10(self.right);
2175
+ case "Weak": return size$9(self.value);
2176
+ case "Sequence": return size$9(self.left) + size$9(self.right);
2177
2177
  }
2178
2178
  };
2179
2179
  /** @internal */
@@ -2188,7 +2188,7 @@ const toAnsiDoc$1 = (self) => {
2188
2188
  }
2189
2189
  };
2190
2190
  //#endregion
2191
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/helpDoc.js
2191
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/helpDoc.js
2192
2192
  /** @internal */
2193
2193
  const isEmpty$2 = (helpDoc) => helpDoc._tag === "Empty";
2194
2194
  /** @internal */
@@ -2259,7 +2259,7 @@ const toAnsiDocInternal = (self) => {
2259
2259
  }
2260
2260
  };
2261
2261
  //#endregion
2262
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/cliConfig.js
2262
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/cliConfig.js
2263
2263
  /** @internal */
2264
2264
  const Tag$1 = /*#__PURE__*/ GenericTag("@effect/cli/CliConfig");
2265
2265
  /** @internal */
@@ -2274,11 +2274,11 @@ const defaultConfig = {
2274
2274
  /** @internal */
2275
2275
  const normalizeCase = /*#__PURE__*/ dual(2, (self, text) => self.isCaseSensitive ? text : text.toLowerCase());
2276
2276
  //#endregion
2277
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/terminal.js
2277
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/terminal.js
2278
2278
  /** @internal */
2279
2279
  const tag$1 = /*#__PURE__*/ GenericTag("@effect/platform/Terminal");
2280
2280
  //#endregion
2281
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Terminal.js
2281
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Terminal.js
2282
2282
  /**
2283
2283
  * A `QuitException` represents an exception that occurs when a user attempts to
2284
2284
  * quit out of a `Terminal` prompt for input (usually by entering `ctrl`+`c`).
@@ -2298,7 +2298,7 @@ const isQuitException = (u) => typeof u === "object" && u != null && "_tag" in u
2298
2298
  */
2299
2299
  const Terminal = tag$1;
2300
2300
  //#endregion
2301
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/action.js
2301
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/action.js
2302
2302
  /** @internal */
2303
2303
  const Action = /*#__PURE__*/ taggedEnum();
2304
2304
  /** @internal */
@@ -2380,7 +2380,7 @@ const succeed = (value) => {
2380
2380
  return op;
2381
2381
  };
2382
2382
  //#endregion
2383
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/ansi-utils.js
2383
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/ansi-utils.js
2384
2384
  const defaultFigures = {
2385
2385
  arrowUp: /*#__PURE__*/ text$11("↑"),
2386
2386
  arrowDown: /*#__PURE__*/ text$11("↓"),
@@ -2433,7 +2433,7 @@ function lines(prompt, columns) {
2433
2433
  return columns === 0 ? lines.length : pipe(map$7(lines, (line) => Math.ceil(line.length / columns)), reduce$1(0, (left, right) => left + right));
2434
2434
  }
2435
2435
  //#endregion
2436
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/date.js
2436
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/date.js
2437
2437
  const renderBeep$5 = /*#__PURE__*/ render$2(beep, { style: "pretty" });
2438
2438
  function handleClear$5(options) {
2439
2439
  return (state, _) => {
@@ -2885,13 +2885,13 @@ var Meridiem = class extends DatePart {
2885
2885
  }
2886
2886
  };
2887
2887
  //#endregion
2888
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/path.js
2888
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/path.js
2889
2889
  /** @internal */
2890
2890
  const TypeId$13 = /*#__PURE__*/ Symbol.for("@effect/platform/Path");
2891
2891
  /** @internal */
2892
2892
  const Path$2 = /*#__PURE__*/ GenericTag("@effect/platform/Path");
2893
2893
  //#endregion
2894
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Path.js
2894
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Path.js
2895
2895
  /**
2896
2896
  * @since 1.0.0
2897
2897
  */
@@ -2906,7 +2906,7 @@ const TypeId$12 = TypeId$13;
2906
2906
  */
2907
2907
  const Path$1 = Path$2;
2908
2908
  //#endregion
2909
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/utils.js
2909
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/utils.js
2910
2910
  /** @internal */
2911
2911
  const entriesToDisplay = (cursor, total, maxVisible) => {
2912
2912
  const max = maxVisible === void 0 ? total : maxVisible;
@@ -2919,7 +2919,7 @@ const entriesToDisplay = (cursor, total, maxVisible) => {
2919
2919
  };
2920
2920
  };
2921
2921
  //#endregion
2922
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/file.js
2922
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/file.js
2923
2923
  const CONFIRM_MESSAGE = "The selected directory contains files. Would you like to traverse the selected directory?";
2924
2924
  const Confirm = /*#__PURE__*/ taggedEnum();
2925
2925
  const showConfirmation = /*#__PURE__*/ Confirm.$is("Show");
@@ -3146,7 +3146,7 @@ const file$5 = (options = {}) => {
3146
3146
  });
3147
3147
  };
3148
3148
  //#endregion
3149
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/number.js
3149
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/number.js
3150
3150
  const parseInt$1 = /*#__PURE__*/ NumberFromString.pipe(/*#__PURE__*/ int(), decodeUnknown);
3151
3151
  const parseFloat$1 = /*#__PURE__*/ decodeUnknown(NumberFromString);
3152
3152
  const renderBeep$3 = /*#__PURE__*/ render$2(beep, { style: "pretty" });
@@ -3401,7 +3401,7 @@ const float = (options) => {
3401
3401
  });
3402
3402
  };
3403
3403
  //#endregion
3404
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/select.js
3404
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/select.js
3405
3405
  const renderBeep$2 = /*#__PURE__*/ render$2(beep, { style: "pretty" });
3406
3406
  const NEWLINE_REGEX = /\r?\n/;
3407
3407
  function renderOutput$2(leadingSymbol, trailingSymbol, options) {
@@ -3539,7 +3539,7 @@ const select = (options) => {
3539
3539
  });
3540
3540
  };
3541
3541
  //#endregion
3542
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/text.js
3542
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/text.js
3543
3543
  function getValue(state, options) {
3544
3544
  return state.value.length > 0 ? state.value : options.default;
3545
3545
  }
@@ -3739,7 +3739,7 @@ const hidden = (options) => basePrompt(options, "hidden").pipe(map$3(make$22));
3739
3739
  /** @internal */
3740
3740
  const text$9 = (options) => basePrompt(options, "text");
3741
3741
  //#endregion
3742
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/toggle.js
3742
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/toggle.js
3743
3743
  const renderBeep = /*#__PURE__*/ render$2(beep, { style: "pretty" });
3744
3744
  function handleClear(options) {
3745
3745
  return gen(function* () {
@@ -4085,7 +4085,7 @@ const getZshCompletions$3 = (self) => {
4085
4085
  }
4086
4086
  };
4087
4087
  //#endregion
4088
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/usage.js
4088
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/usage.js
4089
4089
  /** @internal */
4090
4090
  const empty$5 = { _tag: "Empty" };
4091
4091
  /** @internal */
@@ -4587,7 +4587,7 @@ const getZshCompletions$2 = (self, state = {
4587
4587
  }
4588
4588
  };
4589
4589
  //#endregion
4590
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/Args.js
4590
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/Args.js
4591
4591
  /**
4592
4592
  * @since 1.0.0
4593
4593
  * @category combinators
@@ -4608,14 +4608,14 @@ const repeated$2 = repeated$3;
4608
4608
  */
4609
4609
  const text$6 = text$7;
4610
4610
  //#endregion
4611
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/HelpDoc.js
4611
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/HelpDoc.js
4612
4612
  /**
4613
4613
  * @since 1.0.0
4614
4614
  * @category constructors
4615
4615
  */
4616
4616
  const p = p$1;
4617
4617
  //#endregion
4618
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/autoCorrect.js
4618
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/autoCorrect.js
4619
4619
  /** @internal */
4620
4620
  const levensteinDistance = (first, second, config) => {
4621
4621
  if (first.length === 0 && second.length === 0) return 0;
@@ -4638,7 +4638,7 @@ const levensteinDistance = (first, second, config) => {
4638
4638
  return matrix[rowCount][columnCount];
4639
4639
  };
4640
4640
  //#endregion
4641
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/prompt/list.js
4641
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/prompt/list.js
4642
4642
  /** @internal */
4643
4643
  const list$15 = (options) => text$9(options).pipe(map$3((output) => output.split(options.delimiter || ",")));
4644
4644
  /** @internal */
@@ -5594,7 +5594,7 @@ const getZshCompletions$1 = (self, state = {
5594
5594
  }
5595
5595
  };
5596
5596
  //#endregion
5597
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/Options.js
5597
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/Options.js
5598
5598
  /**
5599
5599
  * @since 1.0.0
5600
5600
  * @category constructors
@@ -5661,7 +5661,7 @@ const withDefault = withDefault$1;
5661
5661
  */
5662
5662
  const withDescription$3 = withDescription$4;
5663
5663
  //#endregion
5664
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/builtInOptions.js
5664
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/builtInOptions.js
5665
5665
  /** @internal */
5666
5666
  const setLogLevel = (level) => ({
5667
5667
  _tag: "SetLogLevel",
@@ -5720,7 +5720,7 @@ const builtInOptions = (command, usage, helpDoc) => map$1(builtIns, (builtIn) =>
5720
5720
  return none$3();
5721
5721
  });
5722
5722
  //#endregion
5723
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/commandDirective.js
5723
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/commandDirective.js
5724
5724
  /** @internal */
5725
5725
  const builtIn = (option) => ({
5726
5726
  _tag: "BuiltIn",
@@ -5829,10 +5829,10 @@ const getHelpInternal = (self, config) => {
5829
5829
  }
5830
5830
  };
5831
5831
  const printSubcommands = (subcommands) => {
5832
- const maxUsageLength = reduceRight(subcommands, 0, (max, [usage]) => Math.max(size$10(usage), max));
5832
+ const maxUsageLength = reduceRight(subcommands, 0, (max, [usage]) => Math.max(size$9(usage), max));
5833
5833
  const documents = map$7(subcommands, ([usage, desc]) => p$1(spans([
5834
5834
  usage,
5835
- text$10(" ".repeat(maxUsageLength - size$10(usage) + 2)),
5835
+ text$10(" ".repeat(maxUsageLength - size$9(usage) + 2)),
5836
5836
  desc
5837
5837
  ])));
5838
5838
  if (isNonEmptyReadonlyArray(documents)) return enumeration(documents);
@@ -6318,14 +6318,14 @@ const helpRequestedError = (command) => {
6318
6318
  return op;
6319
6319
  };
6320
6320
  //#endregion
6321
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/ValidationError.js
6321
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/ValidationError.js
6322
6322
  /**
6323
6323
  * @since 1.0.0
6324
6324
  * @category constructors
6325
6325
  */
6326
6326
  const helpRequested = helpRequestedError;
6327
6327
  //#endregion
6328
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/internal/cliApp.js
6328
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/internal/cliApp.js
6329
6329
  const proto = { pipe() {
6330
6330
  return pipeArguments(this, arguments);
6331
6331
  } };
@@ -6604,7 +6604,7 @@ const run$3 = /*#__PURE__*/ dual(2, (self, config) => {
6604
6604
  return (args) => run$4(app, args, handler);
6605
6605
  });
6606
6606
  //#endregion
6607
- //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.1_effect@3.21.3__@effect+printer-ansi@0.49.0_@_7f3f53a68d4dca55cb6daaa18dc6a25c/node_modules/@effect/cli/dist/esm/Command.js
6607
+ //#region ../../node_modules/.pnpm/@effect+cli@0.75.2_@effect+platform@0.96.2_effect@3.21.4__@effect+printer-ansi@0.49.0_@_01a8c4d9bc0f75ad9760cebe2a3dffeb/node_modules/@effect/cli/dist/esm/Command.js
6608
6608
  /**
6609
6609
  * @since 1.0.0
6610
6610
  * @category constructors
@@ -6626,7 +6626,7 @@ const withSubcommands = withSubcommands$1;
6626
6626
  */
6627
6627
  const run$2 = run$3;
6628
6628
  //#endregion
6629
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/commandExecutor.js
6629
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/commandExecutor.js
6630
6630
  /** @internal */
6631
6631
  const TypeId$9 = /*#__PURE__*/ Symbol.for("@effect/platform/CommandExecutor");
6632
6632
  /** @internal */
@@ -6666,7 +6666,7 @@ const collectUint8Array = /*#__PURE__*/ foldLeftChunks(/*#__PURE__*/ new Uint8Ar
6666
6666
  return newArray;
6667
6667
  }));
6668
6668
  //#endregion
6669
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/command.js
6669
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/command.js
6670
6670
  /** @internal */
6671
6671
  const CommandTypeId = /*#__PURE__*/ Symbol.for("@effect/platform/Command");
6672
6672
  /** @internal */
@@ -6730,7 +6730,7 @@ const stdin$2 = /*#__PURE__*/ dual(2, (self, input) => {
6730
6730
  }
6731
6731
  });
6732
6732
  //#endregion
6733
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Command.js
6733
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Command.js
6734
6734
  /**
6735
6735
  * Flatten this command to a non-empty array of standard commands.
6736
6736
  *
@@ -6750,7 +6750,7 @@ const flatten = flatten$1;
6750
6750
  */
6751
6751
  const stdin$1 = stdin$2;
6752
6752
  //#endregion
6753
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/CommandExecutor.js
6753
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/CommandExecutor.js
6754
6754
  /**
6755
6755
  * @since 1.0.0
6756
6756
  * @category tags
@@ -6777,7 +6777,7 @@ const ProcessId = ProcessId$1;
6777
6777
  */
6778
6778
  const makeExecutor = makeExecutor$1;
6779
6779
  //#endregion
6780
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/error.js
6780
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/error.js
6781
6781
  /** @internal */
6782
6782
  const handleErrnoException = (module, method) => (err, [path]) => {
6783
6783
  let reason = "Unknown";
@@ -6815,7 +6815,7 @@ const handleErrnoException = (module, method) => (err, [path]) => {
6815
6815
  });
6816
6816
  };
6817
6817
  //#endregion
6818
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/stream.js
6818
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/stream.js
6819
6819
  /** @internal */
6820
6820
  const fromReadable$1 = (evaluate, onError, options) => fromChannel(fromReadableChannel(evaluate, onError, options));
6821
6821
  /** @internal */
@@ -6936,7 +6936,7 @@ const unsafeReadableRead = (readable, onError, exit, options) => {
6936
6936
  }));
6937
6937
  };
6938
6938
  //#endregion
6939
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/sink.js
6939
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/sink.js
6940
6940
  /** @internal */
6941
6941
  const fromWritable$1 = (evaluate, onError, options) => fromChannel$1(fromWritableChannel(evaluate, onError, options));
6942
6942
  /** @internal */
@@ -6951,7 +6951,7 @@ const writableOutput = (writable, deferred, onError) => suspend(() => {
6951
6951
  }));
6952
6952
  });
6953
6953
  //#endregion
6954
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/commandExecutor.js
6954
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/commandExecutor.js
6955
6955
  const inputToStdioOption = (stdin) => typeof stdin === "string" ? stdin : "pipe";
6956
6956
  const outputToStdioOption = (output) => typeof output === "string" ? output : "pipe";
6957
6957
  const toError = (err) => err instanceof globalThis.Error ? err : new globalThis.Error(String(err));
@@ -7058,14 +7058,14 @@ const runCommand = (fileSystem) => (command) => {
7058
7058
  }
7059
7059
  };
7060
7060
  //#endregion
7061
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodeCommandExecutor.js
7061
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodeCommandExecutor.js
7062
7062
  /**
7063
7063
  * @since 1.0.0
7064
7064
  * @category layer
7065
7065
  */
7066
7066
  const layer$9 = /* @__PURE__ */ effect(CommandExecutor, /*#__PURE__*/ pipe(FileSystem, /*#__PURE__*/ map$6((fileSystem) => makeExecutor(runCommand(fileSystem)))));
7067
7067
  //#endregion
7068
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/effectify.js
7068
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/effectify.js
7069
7069
  /** @internal */
7070
7070
  const effectify$1 = (fn, onError, onSyncError) => (...args) => async((resume) => {
7071
7071
  try {
@@ -7078,13 +7078,13 @@ const effectify$1 = (fn, onError, onSyncError) => (...args) => async((resume) =>
7078
7078
  }
7079
7079
  });
7080
7080
  //#endregion
7081
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Effectify.js
7081
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Effectify.js
7082
7082
  /**
7083
7083
  * @since 1.0.0
7084
7084
  */
7085
7085
  const effectify = effectify$1;
7086
7086
  //#endregion
7087
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/fileSystem.js
7087
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/fileSystem.js
7088
7088
  const handleBadArgument = (method) => (cause) => new BadArgument({
7089
7089
  module: "FileSystem",
7090
7090
  method,
@@ -7366,7 +7366,7 @@ const writeFile = (path, data, options) => async((resume, signal) => {
7366
7366
  }
7367
7367
  });
7368
7368
  //#endregion
7369
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodeFileSystem.js
7369
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodeFileSystem.js
7370
7370
  /**
7371
7371
  * @since 1.0.0
7372
7372
  */
@@ -7403,7 +7403,7 @@ const layer$7 = /* @__PURE__ */ effect(FileSystem, /* @__PURE__ */ map$6(/*#__PU
7403
7403
  writeFile
7404
7404
  })));
7405
7405
  //#endregion
7406
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/path.js
7406
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/path.js
7407
7407
  const fromFileUrl = (url) => try_({
7408
7408
  try: () => NodeUrl.fileURLToPath(url),
7409
7409
  catch: (error) => new BadArgument({
@@ -7425,7 +7425,7 @@ const toFileUrl = (path) => try_({
7425
7425
  ({ ...Path.posix });
7426
7426
  ({ ...Path.win32 });
7427
7427
  //#endregion
7428
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodePath.js
7428
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodePath.js
7429
7429
  /**
7430
7430
  * @since 1.0.0
7431
7431
  */
@@ -7440,10 +7440,10 @@ const layer$5 = /* @__PURE__ */ succeed$2(Path$1, /*#__PURE__*/ Path$1.of({
7440
7440
  toFileUrl
7441
7441
  }));
7442
7442
  //#endregion
7443
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/internal/terminal.js
7443
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/internal/terminal.js
7444
7444
  const defaultShouldQuit = (input) => input.key.ctrl && (input.key.name === "c" || input.key.name === "d");
7445
7445
  //#endregion
7446
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodeTerminal.js
7446
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodeTerminal.js
7447
7447
  /**
7448
7448
  * @since 1.0.0
7449
7449
  * @category layer
@@ -7509,7 +7509,7 @@ const layer$3 = /* @__PURE__ */ scoped$1(Terminal, /*#__PURE__*/ (/* @__PURE__ *
7509
7509
  });
7510
7510
  }))(defaultShouldQuit));
7511
7511
  //#endregion
7512
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Transferable.js
7512
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Transferable.js
7513
7513
  /**
7514
7514
  * @since 1.0.0
7515
7515
  */
@@ -7543,7 +7543,7 @@ const unsafeMakeCollector = () => {
7543
7543
  });
7544
7544
  };
7545
7545
  //#endregion
7546
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/WorkerError.js
7546
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/WorkerError.js
7547
7547
  /**
7548
7548
  * @since 1.0.0
7549
7549
  * @category type ids
@@ -7590,7 +7590,7 @@ var WorkerError = class extends TaggedError()("WorkerError", {
7590
7590
  }
7591
7591
  };
7592
7592
  //#endregion
7593
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/worker.js
7593
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/worker.js
7594
7594
  /** @internal */
7595
7595
  const PlatformWorkerTypeId = /*#__PURE__*/ Symbol.for("@effect/platform/Worker/PlatformWorker");
7596
7596
  /** @internal */
@@ -7733,7 +7733,7 @@ const makePlatform$1 = () => (options) => PlatformWorker$1.of({
7733
7733
  }
7734
7734
  });
7735
7735
  //#endregion
7736
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/NodeContext.js
7736
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/NodeContext.js
7737
7737
  /**
7738
7738
  * @since 1.0.0
7739
7739
  */
@@ -7792,7 +7792,7 @@ const layer$2 = /*#__PURE__*/ pipe(/*#__PURE__*/ mergeAll(layer$5, layer$9, laye
7792
7792
  }
7793
7793
  })))), /*#__PURE__*/ provideMerge(layer$7));
7794
7794
  //#endregion
7795
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Cookies.js
7795
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Cookies.js
7796
7796
  /**
7797
7797
  * @since 1.0.0
7798
7798
  */
@@ -7974,7 +7974,7 @@ const tryDecodeURIComponent = (str) => {
7974
7974
  }
7975
7975
  };
7976
7976
  //#endregion
7977
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Headers.js
7977
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Headers.js
7978
7978
  /**
7979
7979
  * @since 1.0.0
7980
7980
  */
@@ -8076,7 +8076,7 @@ const currentRedactedNames = /*#__PURE__*/ globalValue("@effect/platform/Headers
8076
8076
  "x-api-key"
8077
8077
  ]));
8078
8078
  //#endregion
8079
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpClientError.js
8079
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpClientError.js
8080
8080
  /**
8081
8081
  * @since 1.0.0
8082
8082
  * @category type id
@@ -8108,7 +8108,7 @@ var ResponseError = class extends TypeIdError(TypeId$6, "ResponseError") {
8108
8108
  }
8109
8109
  };
8110
8110
  //#endregion
8111
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/UrlParams.js
8111
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/UrlParams.js
8112
8112
  /**
8113
8113
  * @since 1.0.0
8114
8114
  */
@@ -8176,7 +8176,7 @@ const baseUrl = () => {
8176
8176
  if ("location" in globalThis && globalThis.location !== void 0 && globalThis.location.origin !== void 0 && globalThis.location.pathname !== void 0) return location.origin + location.pathname;
8177
8177
  };
8178
8178
  //#endregion
8179
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpIncomingMessage.js
8179
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpIncomingMessage.js
8180
8180
  /**
8181
8181
  * @since 1.0.0
8182
8182
  */
@@ -8211,7 +8211,7 @@ const inspect = (self, that) => {
8211
8211
  return obj;
8212
8212
  };
8213
8213
  //#endregion
8214
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpTraceContext.js
8214
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpTraceContext.js
8215
8215
  /**
8216
8216
  * @since 1.0.0
8217
8217
  * @category encoding
@@ -8221,7 +8221,7 @@ const toHeaders = (span) => unsafeFromRecord({
8221
8221
  traceparent: `00-${span.traceId}-${span.spanId}-${span.sampled ? "01" : "00"}`
8222
8222
  });
8223
8223
  //#endregion
8224
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/httpBody.js
8224
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/httpBody.js
8225
8225
  /** @internal */
8226
8226
  const TypeId$4 = /*#__PURE__*/ Symbol.for("@effect/platform/HttpBody");
8227
8227
  /** @internal */
@@ -8310,7 +8310,7 @@ var FormDataImpl = class extends BodyBase {
8310
8310
  /** @internal */
8311
8311
  const formData = (body) => new FormDataImpl(body);
8312
8312
  //#endregion
8313
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/httpClientRequest.js
8313
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/httpClientRequest.js
8314
8314
  /** @internal */
8315
8315
  const TypeId$3 = /*#__PURE__*/ Symbol.for("@effect/platform/HttpClientRequest");
8316
8316
  const Proto = {
@@ -8417,11 +8417,11 @@ const bodyJson$1 = /*#__PURE__*/ dual(2, (self, body) => map$6(json(body), (body
8417
8417
  /** @internal */
8418
8418
  const bodyFormData$1 = /*#__PURE__*/ dual(2, (self, body) => setBody(self, formData(body)));
8419
8419
  //#endregion
8420
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/httpClientResponse.js
8420
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/httpClientResponse.js
8421
8421
  /** @internal */
8422
8422
  const TypeId$2 = /*#__PURE__*/ Symbol.for("@effect/platform/HttpClientResponse");
8423
8423
  //#endregion
8424
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/internal/httpClient.js
8424
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/internal/httpClient.js
8425
8425
  const ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`;
8426
8426
  const ATTR_HTTP_REQUEST_METHOD = "http.request.method";
8427
8427
  const ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`;
@@ -8639,7 +8639,7 @@ const transformResponse = /*#__PURE__*/ dual(2, (self, f) => {
8639
8639
  /** @internal */
8640
8640
  const layerMergedContext$1 = (effect$1) => effect(tag, flatMap$1(context(), (context) => map$6(effect$1, (client) => transformResponse(client, mapInputContext((input) => merge$3(context, input))))));
8641
8641
  //#endregion
8642
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpClient.js
8642
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpClient.js
8643
8643
  /**
8644
8644
  * @since 1.0.0
8645
8645
  * @category tags
@@ -8655,21 +8655,21 @@ const make$9 = make$10;
8655
8655
  */
8656
8656
  const layerMergedContext = layerMergedContext$1;
8657
8657
  //#endregion
8658
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpClientResponse.js
8658
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpClientResponse.js
8659
8659
  /**
8660
8660
  * @since 1.0.0
8661
8661
  * @category type ids
8662
8662
  */
8663
8663
  const TypeId = TypeId$2;
8664
8664
  //#endregion
8665
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodeSink.js
8665
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodeSink.js
8666
8666
  /**
8667
8667
  * @category constructor
8668
8668
  * @since 1.0.0
8669
8669
  */
8670
8670
  const fromWritable = fromWritable$1;
8671
8671
  //#endregion
8672
- //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effe_3f7432e28658a8d68e8638816a6c2527/node_modules/@effect/platform-node-shared/dist/esm/NodeStream.js
8672
+ //#region ../../node_modules/.pnpm/@effect+platform-node-shared@0.60.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effe_6f676239777f0c28233e14563d81e402/node_modules/@effect/platform-node-shared/dist/esm/NodeStream.js
8673
8673
  /**
8674
8674
  * @category constructors
8675
8675
  * @since 1.0.0
@@ -8686,7 +8686,7 @@ const toString$1 = toString$2;
8686
8686
  */
8687
8687
  const toUint8Array = toUint8Array$1;
8688
8688
  //#endregion
8689
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/internal/httpIncomingMessage.js
8689
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/internal/httpIncomingMessage.js
8690
8690
  /** @internal */
8691
8691
  var HttpIncomingMessageImpl = class extends Class {
8692
8692
  source;
@@ -8744,7 +8744,7 @@ var HttpIncomingMessageImpl = class extends Class {
8744
8744
  }
8745
8745
  };
8746
8746
  //#endregion
8747
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/internal/httpClient.js
8747
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/internal/httpClient.js
8748
8748
  /** @internal */
8749
8749
  const HttpAgentTypeId = /*#__PURE__*/ Symbol.for("@effect/platform-node/Http/NodeClient/HttpAgent");
8750
8750
  /** @internal */
@@ -8892,11 +8892,11 @@ var ClientResponseImpl$1 = class extends HttpIncomingMessageImpl {
8892
8892
  /** @internal */
8893
8893
  const layer$1 = /*#__PURE__*/ provide(/* @__PURE__ */ layerMergedContext(/* @__PURE__ */ map$6(HttpAgent, fromAgent)), agentLayer);
8894
8894
  //#endregion
8895
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/internal/httpClientUndici.js
8895
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/internal/httpClientUndici.js
8896
8896
  /** @internal */
8897
8897
  const undiciOptionsTagKey = "@effect/platform-node/NodeHttpClient/undiciOptions";
8898
8898
  //#endregion
8899
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/NodeHttpClient.js
8899
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/NodeHttpClient.js
8900
8900
  /**
8901
8901
  * @since 1.0.0
8902
8902
  * @category layers
@@ -8904,7 +8904,7 @@ const undiciOptionsTagKey = "@effect/platform-node/NodeHttpClient/undiciOptions"
8904
8904
  const layer = layer$1;
8905
8905
  Tag$2(undiciOptionsTagKey)();
8906
8906
  //#endregion
8907
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/Runtime.js
8907
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/Runtime.js
8908
8908
  /**
8909
8909
  * @since 1.0.0
8910
8910
  */
@@ -8938,7 +8938,7 @@ const makeRunMain = (f) => dual((args) => isEffect(args[0]), (effect, options) =
8938
8938
  });
8939
8939
  });
8940
8940
  //#endregion
8941
- //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.1_effect@3.2_b63ddfed36e9feb8e8fc66f1925dcf42/node_modules/@effect/platform-node/dist/esm/NodeRuntime.js
8941
+ //#region ../../node_modules/.pnpm/@effect+platform-node@0.107.0_@effect+cluster@0.58.2_@effect+platform@0.96.2_effect@3.2_22637108d931dc137f32f11c72691ffa/node_modules/@effect/platform-node/dist/esm/NodeRuntime.js
8942
8942
  /**
8943
8943
  * @since 1.0.0
8944
8944
  */
@@ -9133,7 +9133,7 @@ const toErrorEnvelope = (err) => {
9133
9133
  return envelope;
9134
9134
  };
9135
9135
  //#endregion
9136
- //#region ../../node_modules/.pnpm/@effect+platform@0.96.1_effect@3.21.3/node_modules/@effect/platform/dist/esm/HttpClientRequest.js
9136
+ //#region ../../node_modules/.pnpm/@effect+platform@0.96.2_effect@3.21.4/node_modules/@effect/platform/dist/esm/HttpClientRequest.js
9137
9137
  /**
9138
9138
  * @since 1.0.0
9139
9139
  * @category constructors
@@ -10048,7 +10048,7 @@ function parseBody(res) {
10048
10048
  function decodeWithSchema(schema, body) {
10049
10049
  return tryPromise({
10050
10050
  try: async () => {
10051
- const { Schema: SchemaMod } = await import("./esm-DGvoYR6n.mjs");
10051
+ const { Schema: SchemaMod } = await import("./esm-BumPuCXw.mjs");
10052
10052
  return SchemaMod.decodeUnknownPromise(schema)(body);
10053
10053
  },
10054
10054
  catch: (err) => new ServerError({
@@ -11605,18 +11605,23 @@ var UnknownEditorNodeError = class extends EditorProjectionError {
11605
11605
  }
11606
11606
  };
11607
11607
  //#endregion
11608
- //#region ../../node_modules/.pnpm/nanoid@5.1.11/node_modules/nanoid/index.js
11608
+ //#region ../../node_modules/.pnpm/nanoid@5.1.16/node_modules/nanoid/index.js
11609
11609
  const POOL_SIZE_MULTIPLIER = 128;
11610
11610
  let pool, poolOffset;
11611
11611
  function fillPool(bytes) {
11612
- if (bytes < 0 || bytes > 1024) throw new RangeError("Wrong ID size");
11613
- if (!pool || pool.length < bytes) {
11614
- pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);
11615
- webcrypto.getRandomValues(pool);
11616
- poolOffset = 0;
11617
- } else if (poolOffset + bytes > pool.length) {
11618
- webcrypto.getRandomValues(pool);
11619
- poolOffset = 0;
11612
+ if (bytes < 0) throw new RangeError("Wrong ID size");
11613
+ try {
11614
+ if (!pool || pool.length < bytes) {
11615
+ pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);
11616
+ webcrypto.getRandomValues(pool);
11617
+ poolOffset = 0;
11618
+ } else if (poolOffset + bytes > pool.length) {
11619
+ webcrypto.getRandomValues(pool);
11620
+ poolOffset = 0;
11621
+ }
11622
+ } catch (e) {
11623
+ pool = void 0;
11624
+ throw e;
11620
11625
  }
11621
11626
  poolOffset += bytes;
11622
11627
  }
@@ -11659,7 +11664,7 @@ function customAlphabet(alphabet, size = 21) {
11659
11664
  return customRandom(alphabet, size, random);
11660
11665
  }
11661
11666
  //#endregion
11662
- //#region ../../node_modules/.pnpm/@haklex+rich-litexml@0.27.0/node_modules/@haklex/rich-litexml/dist/src-1idECb05.js
11667
+ //#region ../../node_modules/.pnpm/@haklex+rich-litexml@0.29.0_typescript@6.0.3/node_modules/@haklex/rich-litexml/dist/src-B0q3dIvF.js
11663
11668
  var impl = null;
11664
11669
  function registerParseHTML(fn) {
11665
11670
  impl = fn;
@@ -11814,7 +11819,7 @@ function numAttr(el, name) {
11814
11819
  const v = el.getAttribute(name);
11815
11820
  return v !== null ? Number(v) : void 0;
11816
11821
  }
11817
- var IMAGE_LAYOUTS = new Set([
11822
+ var IMAGE_LAYOUTS = /* @__PURE__ */ new Set([
11818
11823
  "align-left",
11819
11824
  "align-right",
11820
11825
  "float-left",
@@ -12734,7 +12739,7 @@ function getFormatBit(tagName) {
12734
12739
  * end of document) is found. We expand those into explicit `<tag …></tag>`
12735
12740
  * before handing the string to linkedom / DOMParser.
12736
12741
  */
12737
- var HTML_VOID_ELEMENTS = new Set([
12742
+ var HTML_VOID_ELEMENTS = /* @__PURE__ */ new Set([
12738
12743
  "area",
12739
12744
  "base",
12740
12745
  "br",
@@ -12800,7 +12805,7 @@ function deserializeFromXml(xml, registry) {
12800
12805
  } };
12801
12806
  }
12802
12807
  /** Structural containers whose whitespace-only text nodes are layout artifacts, not content */
12803
- var BLOCK_TAGS = new Set([
12808
+ var BLOCK_TAGS = /* @__PURE__ */ new Set([
12804
12809
  "doc",
12805
12810
  "fragment",
12806
12811
  "root",
@@ -12977,7 +12982,7 @@ function renderInline(el) {
12977
12982
  return `<${el.tag}${attrs}>${inner}</${el.tag}>`;
12978
12983
  }
12979
12984
  function isInlineElement(el) {
12980
- return new Set([
12985
+ return (/* @__PURE__ */ new Set([
12981
12986
  "b",
12982
12987
  "i",
12983
12988
  "u",
@@ -12997,7 +13002,7 @@ function isInlineElement(el) {
12997
13002
  "math",
12998
13003
  "footnote",
12999
13004
  "comment"
13000
- ]).has(el.tag);
13005
+ ])).has(el.tag);
13001
13006
  }
13002
13007
  function pad(indent) {
13003
13008
  return " ".repeat(indent);
@@ -19497,12 +19502,12 @@ var CSSStyleDeclaration = class extends Map {
19497
19502
  const self = this[PRIVATE];
19498
19503
  updateKeys(self);
19499
19504
  const cssText = [];
19500
- self.forEach(push, cssText);
19505
+ self.forEach(push$1, cssText);
19501
19506
  return cssText.join(";");
19502
19507
  }
19503
19508
  };
19504
19509
  const { prototype } = CSSStyleDeclaration;
19505
- function push(value, key) {
19510
+ function push$1(value, key) {
19506
19511
  if (key !== PRIVATE) this.push(`${key}:${value}`);
19507
19512
  }
19508
19513
  //#endregion
@@ -24054,7 +24059,7 @@ function Document() {
24054
24059
  }
24055
24060
  setPrototypeOf(Document, Document$1).prototype = Document$1.prototype;
24056
24061
  //#endregion
24057
- //#region ../../node_modules/.pnpm/@haklex+rich-litexml@0.27.0/node_modules/@haklex/rich-litexml/dist/node.mjs
24062
+ //#region ../../node_modules/.pnpm/@haklex+rich-litexml@0.29.0_typescript@6.0.3/node_modules/@haklex/rich-litexml/dist/node.mjs
24058
24063
  registerParseHTML((html) => parseHTML(html).document);
24059
24064
  //#endregion
24060
24065
  //#region ../editor/src/core/litexml.ts
@@ -24090,7 +24095,7 @@ function stripMxLitexmlDocWrapper(xml) {
24090
24095
  return trimmed;
24091
24096
  }
24092
24097
  //#endregion
24093
- //#region ../../node_modules/.pnpm/@lexical+table@0.45.0/node_modules/@lexical/table/dist/LexicalTable.node.mjs
24098
+ //#region ../../node_modules/.pnpm/@lexical+table@0.46.0_typescript@6.0.3/node_modules/@lexical/table/dist/LexicalTable.node.mjs
24094
24099
  /**
24095
24100
  * Copyright (c) Meta Platforms, Inc. and affiliates.
24096
24101
  *
@@ -24098,7 +24103,7 @@ function stripMxLitexmlDocWrapper(xml) {
24098
24103
  * LICENSE file in the root directory of this source tree.
24099
24104
  *
24100
24105
  */
24101
- const mod$2 = await (process.env.NODE_ENV !== "production" ? import("./LexicalTable.dev-ChP7cugd.mjs") : import("./LexicalTable.prod-Bpr9YRXp.mjs"));
24106
+ const mod$2 = await (process.env.NODE_ENV !== "production" ? import("./LexicalTable.dev-DiR_4rdI.mjs") : import("./LexicalTable.prod-Cbc5EasT.mjs"));
24102
24107
  mod$2.$computeTableMap;
24103
24108
  mod$2.$computeTableMapSkipCellCheck;
24104
24109
  mod$2.$createTableCellNode;
@@ -24159,7 +24164,7 @@ mod$2.registerTablePlugin;
24159
24164
  mod$2.registerTableSelectionObserver;
24160
24165
  mod$2.setScrollableTablesActive;
24161
24166
  //#endregion
24162
- //#region ../../node_modules/.pnpm/@lexical+markdown@0.45.0/node_modules/@lexical/markdown/dist/LexicalMarkdown.node.mjs
24167
+ //#region ../../node_modules/.pnpm/@lexical+markdown@0.46.0_typescript@6.0.3/node_modules/@lexical/markdown/dist/LexicalMarkdown.node.mjs
24163
24168
  /**
24164
24169
  * Copyright (c) Meta Platforms, Inc. and affiliates.
24165
24170
  *
@@ -24167,7 +24172,7 @@ mod$2.setScrollableTablesActive;
24167
24172
  * LICENSE file in the root directory of this source tree.
24168
24173
  *
24169
24174
  */
24170
- const mod$1 = await (process.env.NODE_ENV !== "production" ? import("./LexicalMarkdown.dev-C7aylvCG.mjs") : import("./LexicalMarkdown.prod-CfQSM406.mjs"));
24175
+ const mod$1 = await (process.env.NODE_ENV !== "production" ? import("./LexicalMarkdown.dev-0XURdo96.mjs") : import("./LexicalMarkdown.prod-qUsIQfJx.mjs"));
24171
24176
  mod$1.$convertFromMarkdownString;
24172
24177
  mod$1.$convertSelectionToMarkdownString;
24173
24178
  const $convertToMarkdownString = mod$1.$convertToMarkdownString;
@@ -24192,9 +24197,10 @@ mod$1.TEXT_FORMAT_TRANSFORMERS;
24192
24197
  mod$1.TEXT_MATCH_TRANSFORMERS;
24193
24198
  const TRANSFORMERS = mod$1.TRANSFORMERS;
24194
24199
  mod$1.UNORDERED_LIST;
24200
+ mod$1.isTableRowDivider;
24195
24201
  mod$1.registerMarkdownShortcuts;
24196
24202
  //#endregion
24197
- //#region ../../node_modules/.pnpm/@haklex+rich-headless@0.27.0_lexical@0.45.0/node_modules/@haklex/rich-headless/dist/transformers.mjs
24203
+ //#region ../../node_modules/.pnpm/@haklex+rich-headless@0.29.1_lexical@0.46.0_typescript@6.0.3__typescript@6.0.3/node_modules/@haklex/rich-headless/dist/transformers.mjs
24198
24204
  /**
24199
24205
  * Headless Markdown transformers — export-only (Lexical → Markdown).
24200
24206
  * Import stubs are no-ops; used only for $convertToMarkdownString.
@@ -24621,7 +24627,7 @@ function $toMarkdown() {
24621
24627
  return $convertToMarkdownString(allHeadlessTransformers);
24622
24628
  }
24623
24629
  //#endregion
24624
- //#region ../../node_modules/.pnpm/@haklex+rich-headless@0.27.0_lexical@0.45.0/node_modules/@haklex/rich-headless/dist/index.mjs
24630
+ //#region ../../node_modules/.pnpm/@haklex+rich-headless@0.29.1_lexical@0.46.0_typescript@6.0.3__typescript@6.0.3/node_modules/@haklex/rich-headless/dist/index.mjs
24625
24631
  var INTRINSIC_TYPES = [
24626
24632
  "root",
24627
24633
  "paragraph",
@@ -24775,7 +24781,8 @@ var RubyNode = class RubyNode extends ElementNode {
24775
24781
  super(key);
24776
24782
  this.__reading = "";
24777
24783
  }
24778
- static importJSON(json) {
24784
+ static importJSON(_json) {
24785
+ const json = _json;
24779
24786
  const node = new RubyNode();
24780
24787
  node.__reading = json.reading ?? "";
24781
24788
  return node;
@@ -24813,7 +24820,8 @@ var DetailsNode = class DetailsNode extends ElementNode {
24813
24820
  this.__summary = "";
24814
24821
  this.__open = false;
24815
24822
  }
24816
- static importJSON(json) {
24823
+ static importJSON(_json) {
24824
+ const json = _json;
24817
24825
  const node = new DetailsNode();
24818
24826
  node.__summary = json.summary ?? "";
24819
24827
  node.__open = json.open ?? false;
@@ -24847,7 +24855,8 @@ var RichQuoteNode = class RichQuoteNode extends QuoteNode {
24847
24855
  super(key);
24848
24856
  this.__attribution = null;
24849
24857
  }
24850
- static importJSON(json) {
24858
+ static importJSON(_json) {
24859
+ const json = _json;
24851
24860
  const node = new RichQuoteNode();
24852
24861
  node.__attribution = json.attribution ?? null;
24853
24862
  return node;
@@ -24880,7 +24889,8 @@ function headlessDecorator(type, propKeys, defaults, inline = false) {
24880
24889
  for (const k of propKeys) n[`__${k}`] = node[`__${k}`];
24881
24890
  return n;
24882
24891
  }
24883
- static importJSON(json) {
24892
+ static importJSON(_json) {
24893
+ const json = _json;
24884
24894
  const node = new Node();
24885
24895
  for (const k of propKeys) node[`__${k}`] = json[k] ?? defaults[k];
24886
24896
  return node;
@@ -25053,7 +25063,8 @@ var customHeadlessNodes = [
25053
25063
  n.__contentState = node.__contentState;
25054
25064
  return n;
25055
25065
  }
25056
- static importJSON(json) {
25066
+ static importJSON(_json) {
25067
+ const json = _json;
25057
25068
  const node = new BannerNode();
25058
25069
  node.__bannerType = json.bannerType ?? "note";
25059
25070
  node.__contentState = json.content ?? null;
@@ -25076,6 +25087,9 @@ var customHeadlessNodes = [
25076
25087
  decorate() {
25077
25088
  return null;
25078
25089
  }
25090
+ isInline() {
25091
+ return false;
25092
+ }
25079
25093
  getTextContent() {
25080
25094
  return extractText(this.__contentState);
25081
25095
  }
@@ -25095,7 +25109,8 @@ var customHeadlessNodes = [
25095
25109
  n.__contentState = node.__contentState;
25096
25110
  return n;
25097
25111
  }
25098
- static importJSON(json) {
25112
+ static importJSON(_json) {
25113
+ const json = _json;
25099
25114
  const node = new AlertQuoteNode();
25100
25115
  node.__alertType = json.alertType ?? "note";
25101
25116
  node.__contentState = json.content ?? null;
@@ -25118,6 +25133,9 @@ var customHeadlessNodes = [
25118
25133
  decorate() {
25119
25134
  return null;
25120
25135
  }
25136
+ isInline() {
25137
+ return false;
25138
+ }
25121
25139
  getTextContent() {
25122
25140
  return extractText(this.__contentState);
25123
25141
  }
@@ -25135,7 +25153,8 @@ var customHeadlessNodes = [
25135
25153
  n.__contentState = node.__contentState;
25136
25154
  return n;
25137
25155
  }
25138
- static importJSON(json) {
25156
+ static importJSON(_json) {
25157
+ const json = _json;
25139
25158
  const node = new NestedDocNode();
25140
25159
  node.__contentState = json.content ?? null;
25141
25160
  return node;
@@ -25156,6 +25175,9 @@ var customHeadlessNodes = [
25156
25175
  decorate() {
25157
25176
  return null;
25158
25177
  }
25178
+ isInline() {
25179
+ return false;
25180
+ }
25159
25181
  getTextContent() {
25160
25182
  return extractText(this.__contentState);
25161
25183
  }
@@ -25177,7 +25199,8 @@ var customHeadlessNodes = [
25177
25199
  n.__cells = node.__cells;
25178
25200
  return n;
25179
25201
  }
25180
- static importJSON(json) {
25202
+ static importJSON(_json) {
25203
+ const json = _json;
25181
25204
  const node = new GridContainerNode();
25182
25205
  node.__cols = json.cols ?? 2;
25183
25206
  const rawGap = json.gap;
@@ -25203,6 +25226,9 @@ var customHeadlessNodes = [
25203
25226
  decorate() {
25204
25227
  return null;
25205
25228
  }
25229
+ isInline() {
25230
+ return false;
25231
+ }
25206
25232
  getTextContent() {
25207
25233
  return this.__cells.map((cell) => extractText(cell)).join("\n");
25208
25234
  }
@@ -25211,7 +25237,7 @@ var customHeadlessNodes = [
25211
25237
  ChatNode
25212
25238
  ];
25213
25239
  var allHeadlessNodes = [...builtinNodes, ...customHeadlessNodes];
25214
- const createHeadlessEditor = (await (process.env.NODE_ENV !== "production" ? import("./LexicalHeadless.dev-B-cj7Pr5.mjs") : import("./LexicalHeadless.prod-Byp1vNzT.mjs"))).createHeadlessEditor;
25240
+ const createHeadlessEditor = (await (process.env.NODE_ENV !== "production" ? import("./LexicalHeadless.dev-yVDOBd64.mjs") : import("./LexicalHeadless.prod-B8qauuEA.mjs"))).createHeadlessEditor;
25215
25241
  //#endregion
25216
25242
  //#region ../editor/src/core/nodes/litexml.ts
25217
25243
  const XML_ESCAPE_MAP = {
@@ -25252,10 +25278,19 @@ const mapBlockProjection = {
25252
25278
  }
25253
25279
  };
25254
25280
  //#endregion
25281
+ //#region ../editor/src/core/nodes/stock.ts
25282
+ const stockBlockProjection = {
25283
+ type: "stock",
25284
+ toMarkdown(node) {
25285
+ return serializeLiteXmlFallbackNode(node);
25286
+ }
25287
+ };
25288
+ //#endregion
25255
25289
  //#region ../editor/src/core/nodes/registry.ts
25256
25290
  const mxBlockRegistry = {
25257
25291
  [mapBlockProjection.type]: mapBlockProjection,
25258
- [afilmoryBlockProjection.type]: afilmoryBlockProjection
25292
+ [afilmoryBlockProjection.type]: afilmoryBlockProjection,
25293
+ [stockBlockProjection.type]: stockBlockProjection
25259
25294
  };
25260
25295
  //#endregion
25261
25296
  //#region ../editor/src/core/markdown.ts
@@ -25759,7 +25794,7 @@ const inlineRendererEntries = [
25759
25794
  ["ruby", rubyRenderer]
25760
25795
  ];
25761
25796
  //#endregion
25762
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/util.js
25797
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/util.js
25763
25798
  const regexName = /* @__PURE__ */ new RegExp("^[:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");
25764
25799
  function getAllMatches(string, regex) {
25765
25800
  const matches = [];
@@ -25799,7 +25834,7 @@ const criticalProperties = [
25799
25834
  "prototype"
25800
25835
  ];
25801
25836
  //#endregion
25802
- //#region ../../node_modules/.pnpm/@nodable+entities@2.1.1/node_modules/@nodable/entities/src/entities.js
25837
+ //#region ../../node_modules/.pnpm/@nodable+entities@2.2.0/node_modules/@nodable/entities/src/entities.js
25803
25838
  /**
25804
25839
  * Basic Latin & Special Characters
25805
25840
  * @type {Record<string, string>}
@@ -26933,7 +26968,26 @@ const COMMON_HTML = {
26933
26968
  frac34: "¾"
26934
26969
  };
26935
26970
  //#endregion
26936
- //#region ../../node_modules/.pnpm/@nodable+entities@2.1.1/node_modules/@nodable/entities/src/EntityDecoder.js
26971
+ //#region ../../node_modules/.pnpm/@nodable+entities@2.2.0/node_modules/@nodable/entities/src/EntityDecoder.js
26972
+ /**
26973
+ * Action constants for `onExternalEntity` and `onInputEntity` hooks.
26974
+ *
26975
+ * Use these instead of raw strings to avoid typos:
26976
+ *
26977
+ * @example
26978
+ * import EntityDecoder, { ENTITY_ACTION } from './EntityDecoder.js';
26979
+ * const dec = new EntityDecoder({
26980
+ * onInputEntity: (name, value) => ENTITY_ACTION.BLOCK,
26981
+ * });
26982
+ */
26983
+ const ENTITY_ACTION = Object.freeze({
26984
+ /** Resolve and expand the entity normally. */
26985
+ ALLOW: "allow",
26986
+ /** Silently skip this entity — it will not be registered. */
26987
+ BLOCK: "block",
26988
+ /** Throw an error, aborting entity registration entirely. */
26989
+ THROW: "throw"
26990
+ });
26937
26991
  const SPECIAL_CHARS = /* @__PURE__ */ new Set("!?\\\\/[]$%{}^&*()<>|+");
26938
26992
  /**
26939
26993
  * Validate that an entity name contains no dangerous characters.
@@ -27072,6 +27126,14 @@ var EntityDecoder = class {
27072
27126
  * the effective action is max(onNCR, rangeMinimum).
27073
27127
  * @param {'remove'|'throw'} [options.ncr.nullNCR='remove']
27074
27128
  * Action for U+0000 (null). 'allow' and 'leave' are clamped to 'remove' since null is never safe.
27129
+ * @param {((name: string, value: string) => 'allow'|'block'|'throw')|null} [options.onExternalEntity=null]
27130
+ * Hook called when an external entity is registered via `setExternalEntities()` or
27131
+ * `addExternalEntity()`. Return `ENTITY_ACTION.ALLOW` to accept the entity,
27132
+ * `ENTITY_ACTION.BLOCK` to silently skip it, or `ENTITY_ACTION.THROW` to abort with an error.
27133
+ * @param {((name: string, value: string) => 'allow'|'block'|'throw')|null} [options.onInputEntity=null]
27134
+ * Hook called when an input entity is registered via `addInputEntities()`. Return
27135
+ * `ENTITY_ACTION.ALLOW` to accept, `ENTITY_ACTION.BLOCK` to silently skip, or
27136
+ * `ENTITY_ACTION.THROW` to abort with an error.
27075
27137
  */
27076
27138
  constructor(options = {}) {
27077
27139
  this._limit = options.limit || {};
@@ -27095,34 +27157,79 @@ var EntityDecoder = class {
27095
27157
  this._ncrXmlVersion = ncrCfg.xmlVersion;
27096
27158
  this._ncrOnLevel = ncrCfg.onLevel;
27097
27159
  this._ncrNullLevel = ncrCfg.nullLevel;
27160
+ /** @type {((name: string, value: string) => 'allow'|'block'|'throw')|null} */
27161
+ this._onExternalEntity = typeof options.onExternalEntity === "function" ? options.onExternalEntity : null;
27162
+ /** @type {((name: string, value: string) => 'allow'|'block'|'throw')|null} */
27163
+ this._onInputEntity = typeof options.onInputEntity === "function" ? options.onInputEntity : null;
27164
+ }
27165
+ /**
27166
+ * Invoke a registration hook for a single entity name/value pair.
27167
+ * Returns true when the entity should be accepted, false when it should be
27168
+ * silently skipped (BLOCK), and throws when the hook returns THROW.
27169
+ *
27170
+ * @param {((name: string, value: string) => 'allow'|'block'|'throw')|null} hook
27171
+ * @param {string} name
27172
+ * @param {string} value
27173
+ * @param {string} context — used in error messages ('external' | 'input')
27174
+ * @returns {boolean} true = accept, false = skip
27175
+ */
27176
+ _applyRegistrationHook(hook, name, value, context) {
27177
+ if (!hook) return true;
27178
+ const action = hook(name, value);
27179
+ if (action === ENTITY_ACTION.BLOCK) return false;
27180
+ if (action === ENTITY_ACTION.THROW) throw new Error(`[EntityDecoder] Registration of ${context} entity "&${name};" was rejected by hook`);
27181
+ return true;
27098
27182
  }
27099
27183
  /**
27100
27184
  * Replace the full set of persistent external entities.
27101
27185
  * All keys are validated — throws on invalid characters.
27186
+ * If `onExternalEntity` is set, it is called once per entry; entries that
27187
+ * return `ENTITY_ACTION.BLOCK` are silently omitted, `ENTITY_ACTION.THROW`
27188
+ * aborts the whole call.
27102
27189
  * @param {Record<string, string | { regex?: RegExp, val: string }>} map
27103
27190
  */
27104
27191
  setExternalEntities(map) {
27105
27192
  if (map) for (const key of Object.keys(map)) validateEntityName$1(key);
27106
- this._externalMap = mergeEntityMaps(map);
27193
+ if (!this._onExternalEntity) {
27194
+ this._externalMap = mergeEntityMaps(map);
27195
+ return;
27196
+ }
27197
+ const flat = mergeEntityMaps(map);
27198
+ const filtered = Object.create(null);
27199
+ for (const [name, value] of Object.entries(flat)) if (this._applyRegistrationHook(this._onExternalEntity, name, value, "external")) filtered[name] = value;
27200
+ this._externalMap = filtered;
27107
27201
  }
27108
27202
  /**
27109
27203
  * Add a single persistent external entity.
27204
+ * If `onExternalEntity` is set it is called before the entity is stored;
27205
+ * `ENTITY_ACTION.BLOCK` silently skips storage, `ENTITY_ACTION.THROW` raises.
27110
27206
  * @param {string} key
27111
27207
  * @param {string} value
27112
27208
  */
27113
27209
  addExternalEntity(key, value) {
27114
27210
  validateEntityName$1(key);
27115
- if (typeof value === "string" && value.indexOf("&") === -1) this._externalMap[key] = value;
27211
+ if (typeof value === "string" && value.indexOf("&") === -1) {
27212
+ if (this._applyRegistrationHook(this._onExternalEntity, key, value, "external")) this._externalMap[key] = value;
27213
+ }
27116
27214
  }
27117
27215
  /**
27118
27216
  * Inject DOCTYPE entities for the current document.
27119
27217
  * Also resets per-document expansion counters.
27218
+ * If `onInputEntity` is set it is called once per entry; entries returning
27219
+ * `ENTITY_ACTION.BLOCK` are silently omitted, `ENTITY_ACTION.THROW` aborts.
27120
27220
  * @param {Record<string, string | { regx?: RegExp, regex?: RegExp, val: string }>} map
27121
27221
  */
27122
27222
  addInputEntities(map) {
27123
27223
  this._totalExpansions = 0;
27124
27224
  this._expandedLength = 0;
27125
- this._inputMap = mergeEntityMaps(map);
27225
+ if (!this._onInputEntity) {
27226
+ this._inputMap = mergeEntityMaps(map);
27227
+ return;
27228
+ }
27229
+ const flat = mergeEntityMaps(map);
27230
+ const filtered = Object.create(null);
27231
+ for (const [name, value] of Object.entries(flat)) if (this._applyRegistrationHook(this._onInputEntity, name, value, "input")) filtered[name] = value;
27232
+ this._inputMap = filtered;
27126
27233
  }
27127
27234
  /**
27128
27235
  * Wipe input/runtime entities and reset counters.
@@ -27326,7 +27433,7 @@ var EntityDecoder = class {
27326
27433
  }
27327
27434
  };
27328
27435
  //#endregion
27329
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js
27436
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js
27330
27437
  const defaultOnDangerousProperty = (name) => {
27331
27438
  if (DANGEROUS_PROPERTY_NAMES.includes(name)) return "__" + name;
27332
27439
  return name;
@@ -27346,7 +27453,8 @@ const defaultOptions$2 = {
27346
27453
  numberParseOptions: {
27347
27454
  hex: true,
27348
27455
  leadingZeros: true,
27349
- eNotation: true
27456
+ eNotation: true,
27457
+ unicode: false
27350
27458
  },
27351
27459
  tagValueProcessor: function(tagName, val) {
27352
27460
  return val;
@@ -27452,7 +27560,7 @@ const buildOptions = function(options) {
27452
27560
  return built;
27453
27561
  };
27454
27562
  //#endregion
27455
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js
27563
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js
27456
27564
  let METADATA_SYMBOL$1;
27457
27565
  if (typeof Symbol !== "function") METADATA_SYMBOL$1 = "@@xmlMetadata";
27458
27566
  else METADATA_SYMBOL$1 = Symbol("XML Node Metadata");
@@ -27515,7 +27623,7 @@ const getRegexes = (xmlVersion = "1.0") => xmlVersion === "1.1" ? regexes11 : re
27515
27623
  */
27516
27624
  const qName = (str, { xmlVersion = "1.0" } = {}) => getRegexes(xmlVersion).qName.test(str);
27517
27625
  //#endregion
27518
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
27626
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
27519
27627
  var DocTypeReader = class {
27520
27628
  constructor(options, xmlVersion) {
27521
27629
  this.suppressValidationErr = !options;
@@ -27738,7 +27846,189 @@ function validateEntityName(name, xmlVersion) {
27738
27846
  else throw new Error(`Invalid entity name ${name}`);
27739
27847
  }
27740
27848
  //#endregion
27741
- //#region ../../node_modules/.pnpm/strnum@2.3.0/node_modules/strnum/strnum.js
27849
+ //#region ../../node_modules/.pnpm/anynum@1.0.1/node_modules/anynum/digitTable.js
27850
+ /**
27851
+ * Flat lookup table: maps Unicode code point → ASCII digit (0-9).
27852
+ * Only decimal digit characters (Unicode category Nd) are included.
27853
+ *
27854
+ * Strategy: Int32Array of size (maxCodePoint - minCodePoint + 1).
27855
+ * Value 0xFF means "not a digit". Value 0-9 is the ASCII digit value.
27856
+ * This gives O(1) lookup with no branching, no bisect, no loop.
27857
+ *
27858
+ * Memory: range is 0x0660 to 0x1FBF0 → ~129,936 entries × 1 byte = ~127 KB.
27859
+ * Acceptable for a one-time init; lookup is a single array index.
27860
+ */
27861
+ const SCRIPT_ZEROS = [
27862
+ 48,
27863
+ 1632,
27864
+ 1776,
27865
+ 2406,
27866
+ 2534,
27867
+ 2662,
27868
+ 2790,
27869
+ 2918,
27870
+ 3046,
27871
+ 3174,
27872
+ 3302,
27873
+ 3430,
27874
+ 3558,
27875
+ 3664,
27876
+ 3792,
27877
+ 3872,
27878
+ 4160,
27879
+ 4240,
27880
+ 6112,
27881
+ 6160,
27882
+ 6470,
27883
+ 6608,
27884
+ 6784,
27885
+ 6800,
27886
+ 6992,
27887
+ 7088,
27888
+ 7232,
27889
+ 7248,
27890
+ 65296,
27891
+ 120782,
27892
+ 120792,
27893
+ 120802,
27894
+ 120812,
27895
+ 120822,
27896
+ 66720,
27897
+ 68912,
27898
+ 69734,
27899
+ 69872,
27900
+ 69942,
27901
+ 70096,
27902
+ 70384,
27903
+ 70736,
27904
+ 70864,
27905
+ 71248,
27906
+ 71360,
27907
+ 71472,
27908
+ 71904,
27909
+ 72016,
27910
+ 72688,
27911
+ 72784,
27912
+ 73040,
27913
+ 73120,
27914
+ 73552,
27915
+ 92768,
27916
+ 92864,
27917
+ 93008,
27918
+ 123200,
27919
+ 123632,
27920
+ 124144,
27921
+ 125264,
27922
+ 130032
27923
+ ];
27924
+ const HIGH_MAP = /* @__PURE__ */ new Map();
27925
+ const LOW_MAX = 65535;
27926
+ const TABLE_OFFSET = 1632;
27927
+ const TABLE = new Uint8Array(63904).fill(255);
27928
+ for (const zero of SCRIPT_ZEROS) for (let d = 0; d < 10; d++) {
27929
+ const cp = zero + d;
27930
+ if (cp <= LOW_MAX) TABLE[cp - TABLE_OFFSET] = d;
27931
+ else HIGH_MAP.set(cp, d);
27932
+ }
27933
+ //#endregion
27934
+ //#region ../../node_modules/.pnpm/anynum@1.0.1/node_modules/anynum/anynum.js
27935
+ const CHAR_0 = 48;
27936
+ const CHAR_9 = 57;
27937
+ const CHAR_MINUS = 45;
27938
+ const MINUS_SET = new Set([
27939
+ 8722,
27940
+ 65293,
27941
+ 65123
27942
+ ]);
27943
+ /**
27944
+ * Normalize all Unicode decimal digit characters in a string to ASCII (0-9),
27945
+ * and normalize Unicode minus variants to ASCII '-' (U+002D).
27946
+ *
27947
+ * Non-digit, non-minus characters are passed through unchanged.
27948
+ *
27949
+ * Performance design:
27950
+ * - Fast path: if the string has no convertible characters, return it unchanged
27951
+ * (zero allocation).
27952
+ * - BMP digits (0x0660..0xFFFF excl. surrogates): flat Uint8Array lookup (O(1)).
27953
+ * - Supplementary plane digits (> 0xFFFF, encoded as surrogate pairs): Map lookup.
27954
+ * - Minus variants: checked inline with a small fixed Set.
27955
+ *
27956
+ * @param {string} str
27957
+ * @returns {string}
27958
+ */
27959
+ function anynum(str) {
27960
+ if (typeof str !== "string") return str;
27961
+ const len = str.length;
27962
+ if (len === 0) return str;
27963
+ let firstHit = -1;
27964
+ for (let i = 0; i < len; i++) {
27965
+ const cc = str.charCodeAt(i);
27966
+ if (cc >= CHAR_0 && cc <= CHAR_9 || cc === CHAR_MINUS) continue;
27967
+ if (cc < 1632) {
27968
+ if (MINUS_SET.has(cc)) {
27969
+ firstHit = i;
27970
+ break;
27971
+ }
27972
+ continue;
27973
+ }
27974
+ if (cc >= 55296 && cc <= 56319) {
27975
+ if (i + 1 < len) {
27976
+ const low = str.charCodeAt(i + 1);
27977
+ if (low >= 56320 && low <= 57343) {
27978
+ const cp = 65536 + (cc - 55296 << 10) + (low - 56320);
27979
+ if (HIGH_MAP.has(cp)) {
27980
+ firstHit = i;
27981
+ break;
27982
+ }
27983
+ }
27984
+ }
27985
+ continue;
27986
+ }
27987
+ if (TABLE[cc - 1632] !== 255 || MINUS_SET.has(cc)) {
27988
+ firstHit = i;
27989
+ break;
27990
+ }
27991
+ }
27992
+ if (firstHit === -1) return str;
27993
+ const chars = [];
27994
+ if (firstHit > 0) chars.push(str.slice(0, firstHit));
27995
+ for (let i = firstHit; i < len; i++) {
27996
+ const cc = str.charCodeAt(i);
27997
+ if (cc >= CHAR_0 && cc <= CHAR_9 || cc === CHAR_MINUS) {
27998
+ chars.push(str[i]);
27999
+ continue;
28000
+ }
28001
+ if (cc < 1632) {
28002
+ chars.push(MINUS_SET.has(cc) ? "-" : str[i]);
28003
+ continue;
28004
+ }
28005
+ if (cc >= 55296 && cc <= 56319) {
28006
+ if (i + 1 < len) {
28007
+ const low = str.charCodeAt(i + 1);
28008
+ if (low >= 56320 && low <= 57343) {
28009
+ const cp = 65536 + (cc - 55296 << 10) + (low - 56320);
28010
+ const d = HIGH_MAP.get(cp);
28011
+ if (d !== void 0) {
28012
+ chars.push(String.fromCharCode(d + 48));
28013
+ i++;
28014
+ continue;
28015
+ }
28016
+ }
28017
+ }
28018
+ chars.push(str[i]);
28019
+ continue;
28020
+ }
28021
+ if (MINUS_SET.has(cc)) {
28022
+ chars.push("-");
28023
+ continue;
28024
+ }
28025
+ const d = TABLE[cc - TABLE_OFFSET];
28026
+ chars.push(d !== 255 ? String.fromCharCode(d + 48) : str[i]);
28027
+ }
28028
+ return chars.join("");
28029
+ }
28030
+ //#endregion
28031
+ //#region ../../node_modules/.pnpm/strnum@2.4.1/node_modules/strnum/strnum.js
27742
28032
  const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;
27743
28033
  const binRegex = /^0b[01]+$/;
27744
28034
  const octRegex = /^0o[0-7]+$/;
@@ -27750,7 +28040,8 @@ const consider = {
27750
28040
  leadingZeros: true,
27751
28041
  decimalPoint: ".",
27752
28042
  eNotation: true,
27753
- infinity: "original"
28043
+ infinity: "original",
28044
+ unicode: false
27754
28045
  };
27755
28046
  function toNumber(str, options = {}) {
27756
28047
  options = Object.assign({}, consider, options);
@@ -27759,7 +28050,11 @@ function toNumber(str, options = {}) {
27759
28050
  if (trimmedStr.length === 0) return str;
27760
28051
  else if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;
27761
28052
  else if (trimmedStr === "0") return 0;
27762
- else if (options.hex && hexRegex.test(trimmedStr)) return parse_int(trimmedStr, 16);
28053
+ if (options.unicode) {
28054
+ trimmedStr = anynum(trimmedStr);
28055
+ if (trimmedStr === "0") return 0;
28056
+ }
28057
+ if (options.hex && hexRegex.test(trimmedStr)) return parse_int(trimmedStr, 16);
27763
28058
  else if (options.binary && binRegex.test(trimmedStr)) return parse_int(trimmedStr, 2);
27764
28059
  else if (options.octal && octRegex.test(trimmedStr)) return parse_int(trimmedStr, 8);
27765
28060
  else if (!isFinite(trimmedStr)) return handleInfinity(str, Number(trimmedStr), options);
@@ -27847,7 +28142,7 @@ function handleInfinity(str, num, options) {
27847
28142
  }
27848
28143
  }
27849
28144
  //#endregion
27850
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/ignoreAttributes.js
28145
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/ignoreAttributes.js
27851
28146
  function getIgnoreAttributesFn(ignoreAttributes) {
27852
28147
  if (typeof ignoreAttributes === "function") return ignoreAttributes;
27853
28148
  if (Array.isArray(ignoreAttributes)) return (attrName) => {
@@ -27859,7 +28154,7 @@ function getIgnoreAttributesFn(ignoreAttributes) {
27859
28154
  return () => false;
27860
28155
  }
27861
28156
  //#endregion
27862
- //#region ../../node_modules/.pnpm/path-expression-matcher@1.5.0/node_modules/path-expression-matcher/src/Expression.js
28157
+ //#region ../../node_modules/.pnpm/path-expression-matcher@1.6.0/node_modules/path-expression-matcher/src/Expression.js
27863
28158
  /**
27864
28159
  * Expression - Parses and stores a tag pattern expression
27865
28160
  *
@@ -28011,7 +28306,7 @@ var Expression = class {
28011
28306
  }
28012
28307
  };
28013
28308
  //#endregion
28014
- //#region ../../node_modules/.pnpm/path-expression-matcher@1.5.0/node_modules/path-expression-matcher/src/ExpressionSet.js
28309
+ //#region ../../node_modules/.pnpm/path-expression-matcher@1.6.0/node_modules/path-expression-matcher/src/ExpressionSet.js
28015
28310
  /**
28016
28311
  * ExpressionSet - An indexed collection of Expressions for efficient bulk matching
28017
28312
  *
@@ -28045,6 +28340,8 @@ var ExpressionSet = class {
28045
28340
  this._wildcardByDepth = /* @__PURE__ */ new Map();
28046
28341
  /** @type {import('./Expression.js').default[]} expressions containing deep wildcard (..) */
28047
28342
  this._deepWildcards = [];
28343
+ /** @type {Map<string, import('./Expression.js').default[]>} terminalTag → deep wildcard expressions */
28344
+ this._deepByTerminalTag = /* @__PURE__ */ new Map();
28048
28345
  /** @type {Set<string>} pattern strings already added — used for deduplication */
28049
28346
  this._patterns = /* @__PURE__ */ new Set();
28050
28347
  /** @type {boolean} whether the set is sealed against further additions */
@@ -28067,7 +28364,12 @@ var ExpressionSet = class {
28067
28364
  if (this._patterns.has(expression.pattern)) return this;
28068
28365
  this._patterns.add(expression.pattern);
28069
28366
  if (expression.hasDeepWildcard()) {
28070
- this._deepWildcards.push(expression);
28367
+ const lastSeg = expression.segments[expression.segments.length - 1];
28368
+ if (lastSeg && lastSeg.type !== "deep-wildcard" && lastSeg.tag !== "*") {
28369
+ const tag = lastSeg.tag;
28370
+ if (!this._deepByTerminalTag.has(tag)) this._deepByTerminalTag.set(tag, []);
28371
+ this._deepByTerminalTag.get(tag).push(expression);
28372
+ } else this._deepWildcards.push(expression);
28071
28373
  return this;
28072
28374
  }
28073
28375
  const depth = expression.length;
@@ -28170,7 +28472,8 @@ var ExpressionSet = class {
28170
28472
  */
28171
28473
  findMatch(matcher) {
28172
28474
  const depth = matcher.getDepth();
28173
- const exactKey = `${depth}:${matcher.getCurrentTag()}`;
28475
+ const tag = matcher.getCurrentTag();
28476
+ const exactKey = `${depth}:${tag}`;
28174
28477
  const exactBucket = this._byDepthAndTag.get(exactKey);
28175
28478
  if (exactBucket) {
28176
28479
  for (let i = 0; i < exactBucket.length; i++) if (matcher.matches(exactBucket[i])) return exactBucket[i];
@@ -28179,12 +28482,16 @@ var ExpressionSet = class {
28179
28482
  if (wildcardBucket) {
28180
28483
  for (let i = 0; i < wildcardBucket.length; i++) if (matcher.matches(wildcardBucket[i])) return wildcardBucket[i];
28181
28484
  }
28485
+ const deepBucket = this._deepByTerminalTag.get(tag);
28486
+ if (deepBucket) {
28487
+ for (let i = 0; i < deepBucket.length; i++) if (matcher.matches(deepBucket[i])) return deepBucket[i];
28488
+ }
28182
28489
  for (let i = 0; i < this._deepWildcards.length; i++) if (matcher.matches(this._deepWildcards[i])) return this._deepWildcards[i];
28183
28490
  return null;
28184
28491
  }
28185
28492
  };
28186
28493
  //#endregion
28187
- //#region ../../node_modules/.pnpm/path-expression-matcher@1.5.0/node_modules/path-expression-matcher/src/Matcher.js
28494
+ //#region ../../node_modules/.pnpm/path-expression-matcher@1.6.0/node_modules/path-expression-matcher/src/Matcher.js
28188
28495
  /**
28189
28496
  * MatcherView - A lightweight read-only view over a Matcher's internal state.
28190
28497
  *
@@ -28256,6 +28563,24 @@ var MatcherView = class {
28256
28563
  return current.values !== void 0 && attrName in current.values;
28257
28564
  }
28258
28565
  /**
28566
+ * Get the value of a "kept" attribute from the nearest ancestor (or
28567
+ * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
28568
+ * @param {string} attrName
28569
+ * @returns {*}
28570
+ */
28571
+ getAnyParentAttr(attrName) {
28572
+ return this._matcher.getAnyParentAttr(attrName);
28573
+ }
28574
+ /**
28575
+ * Check whether any ancestor (or the current node) kept the given
28576
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
28577
+ * @param {string} attrName
28578
+ * @returns {boolean}
28579
+ */
28580
+ hasAnyParentAttr(attrName) {
28581
+ return this._matcher.hasAnyParentAttr(attrName);
28582
+ }
28583
+ /**
28259
28584
  * Get current node's sibling position (child index in parent).
28260
28585
  * @returns {number}
28261
28586
  */
@@ -28352,14 +28677,17 @@ var Matcher = class {
28352
28677
  this.siblingStacks = [];
28353
28678
  this._pathStringCache = null;
28354
28679
  this._view = new MatcherView(this);
28680
+ this._keptAttrs = [];
28355
28681
  }
28356
28682
  /**
28357
28683
  * Push a new tag onto the path.
28358
28684
  * @param {string} tagName
28359
28685
  * @param {Object|null} [attrValues=null]
28360
28686
  * @param {string|null} [namespace=null]
28687
+ * @param {Object|null} [options=null]
28688
+ * @param {string[]} [options.keep] - Names of attributes (from attrValues)
28361
28689
  */
28362
- push(tagName, attrValues = null, namespace = null) {
28690
+ push(tagName, attrValues = null, namespace = null, options = null) {
28363
28691
  this._pathStringCache = null;
28364
28692
  if (this.path.length > 0) this.path[this.path.length - 1].values = void 0;
28365
28693
  const currentLevel = this.path.length;
@@ -28378,6 +28706,16 @@ var Matcher = class {
28378
28706
  if (namespace !== null && namespace !== void 0) node.namespace = namespace;
28379
28707
  if (attrValues !== null && attrValues !== void 0) node.values = attrValues;
28380
28708
  this.path.push(node);
28709
+ const depth = this.path.length;
28710
+ const keep = options !== null ? options.keep : null;
28711
+ if (keep !== null && keep !== void 0 && keep.length > 0 && attrValues) for (let i = 0; i < keep.length; i++) {
28712
+ const name = keep[i];
28713
+ if (attrValues[name] !== void 0) this._keptAttrs.push({
28714
+ depth,
28715
+ name,
28716
+ value: attrValues[name]
28717
+ });
28718
+ }
28381
28719
  }
28382
28720
  /**
28383
28721
  * Pop the last tag from the path.
@@ -28388,6 +28726,8 @@ var Matcher = class {
28388
28726
  this._pathStringCache = null;
28389
28727
  const node = this.path.pop();
28390
28728
  if (this.siblingStacks.length > this.path.length + 1) this.siblingStacks.length = this.path.length + 1;
28729
+ const poppedDepth = this.path.length + 1;
28730
+ while (this._keptAttrs.length > 0 && this._keptAttrs[this._keptAttrs.length - 1].depth >= poppedDepth) this._keptAttrs.pop();
28391
28731
  return node;
28392
28732
  }
28393
28733
  /**
@@ -28435,6 +28775,31 @@ var Matcher = class {
28435
28775
  return current.values !== void 0 && attrName in current.values;
28436
28776
  }
28437
28777
  /**
28778
+ * Get the value of a "kept" attribute from the nearest ancestor (or
28779
+ * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
28780
+ * Unlike getAttrValue(), this works regardless of how deep the path has
28781
+ * gone since the attribute was pushed — but only for attribute names that
28782
+ * were explicitly marked with `keep` at push time. Cost is proportional to
28783
+ * the number of currently-kept attributes (typically 0-3), not path depth.
28784
+ * @param {string} attrName
28785
+ * @returns {*} the value, or undefined if no ancestor kept this attribute
28786
+ */
28787
+ getAnyParentAttr(attrName) {
28788
+ const kept = this._keptAttrs;
28789
+ for (let i = kept.length - 1; i >= 0; i--) if (kept[i].name === attrName) return kept[i].value;
28790
+ }
28791
+ /**
28792
+ * Check whether any ancestor (or the current node) kept the given
28793
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
28794
+ * @param {string} attrName
28795
+ * @returns {boolean}
28796
+ */
28797
+ hasAnyParentAttr(attrName) {
28798
+ const kept = this._keptAttrs;
28799
+ for (let i = kept.length - 1; i >= 0; i--) if (kept[i].name === attrName) return true;
28800
+ return false;
28801
+ }
28802
+ /**
28438
28803
  * Get current node's sibling position (child index in parent).
28439
28804
  * @returns {number}
28440
28805
  */
@@ -28495,6 +28860,7 @@ var Matcher = class {
28495
28860
  this._pathStringCache = null;
28496
28861
  this.path = [];
28497
28862
  this.siblingStacks = [];
28863
+ this._keptAttrs = [];
28498
28864
  }
28499
28865
  /**
28500
28866
  * Match current path against an Expression.
@@ -28583,7 +28949,8 @@ var Matcher = class {
28583
28949
  snapshot() {
28584
28950
  return {
28585
28951
  path: this.path.map((node) => ({ ...node })),
28586
- siblingStacks: this.siblingStacks.map((map) => new Map(map))
28952
+ siblingStacks: this.siblingStacks.map((map) => new Map(map)),
28953
+ keptAttrs: this._keptAttrs.map((entry) => ({ ...entry }))
28587
28954
  };
28588
28955
  }
28589
28956
  /**
@@ -28594,6 +28961,7 @@ var Matcher = class {
28594
28961
  this._pathStringCache = null;
28595
28962
  this.path = snapshot.path.map((node) => ({ ...node }));
28596
28963
  this.siblingStacks = snapshot.siblingStacks.map((map) => new Map(map));
28964
+ this._keptAttrs = (snapshot.keptAttrs || []).map((entry) => ({ ...entry }));
28597
28965
  }
28598
28966
  /**
28599
28967
  * Return the read-only {@link MatcherView} for this matcher.
@@ -28616,7 +28984,811 @@ var Matcher = class {
28616
28984
  }
28617
28985
  };
28618
28986
  //#endregion
28619
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js
28987
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/html.js
28988
+ /**
28989
+ * HTML context patterns.
28990
+ *
28991
+ * Detects XSS vectors that are dangerous when a string ends up rendered as HTML.
28992
+ * All patterns use bounded quantifiers to ensure linear-time matching (ReDoS-safe).
28993
+ *
28994
+ * Each entry is { pattern: RegExp, id: string, description: string }
28995
+ * so callers can inspect which rule fired if they need to.
28996
+ */
28997
+ const HTML_PATTERNS = [
28998
+ {
28999
+ id: "html-script-open",
29000
+ description: "<script opening tag",
29001
+ pattern: /<script[\s>/]/i
29002
+ },
29003
+ {
29004
+ id: "html-script-close",
29005
+ description: "<\/script closing tag",
29006
+ pattern: /<\/script[\s>]/i
29007
+ },
29008
+ {
29009
+ id: "html-javascript-protocol",
29010
+ description: "javascript: URI scheme (with optional whitespace/encoding)",
29011
+ pattern: /j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i
29012
+ },
29013
+ {
29014
+ id: "html-vbscript-protocol",
29015
+ description: "vbscript: URI scheme",
29016
+ pattern: /vbscript[\t\n\r ]*:/i
29017
+ },
29018
+ {
29019
+ id: "html-data-html",
29020
+ description: "data:text/html URI — can execute scripts in browsers",
29021
+ pattern: /data[\t\n\r ]*:[\t\n\r ]*text\/html/i
29022
+ },
29023
+ {
29024
+ id: "html-data-xhtml",
29025
+ description: "data:application/xhtml+xml URI",
29026
+ pattern: /data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i
29027
+ },
29028
+ {
29029
+ id: "html-data-svg",
29030
+ description: "data:image/svg+xml URI — can execute scripts",
29031
+ pattern: /data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i
29032
+ },
29033
+ {
29034
+ id: "html-inline-event-handler",
29035
+ description: "Inline event handler attributes: onclick=, onerror=, onload=, etc.",
29036
+ pattern: /\bon\w{1,30}\s*=/i
29037
+ },
29038
+ {
29039
+ id: "html-entity-obfuscated-script",
29040
+ description: "HTML-entity-encoded <script (e.g. &#x3C;script or &lt;script)",
29041
+ pattern: /(?:&#x0*3[Cc];?|&#0*60;?|&lt;)\s*script/i
29042
+ },
29043
+ {
29044
+ id: "html-entity-obfuscated-javascript",
29045
+ description: "HTML-entity-encoded javascript: (partial — catches common &#106; or &#x6a; for \"j\")",
29046
+ pattern: /(?:&#x0*6[Aa];?|&#0*106;?)\s*(?:&#x0*61;?|a)[\s\S]{0,80}script\s*:/i
29047
+ },
29048
+ {
29049
+ id: "html-style-expression",
29050
+ description: "CSS expression() — IE-era code execution in style attributes",
29051
+ pattern: /style[\s\S]{0,20}expression\s*\(/i
29052
+ },
29053
+ {
29054
+ id: "html-object-embed",
29055
+ description: "<object or <embed tags that can load active content",
29056
+ pattern: /<(?:object|embed)[\s>/]/i
29057
+ },
29058
+ {
29059
+ id: "html-base-tag",
29060
+ description: "<base href= — can hijack all relative URLs on a page",
29061
+ pattern: /<base[\s>]/i
29062
+ },
29063
+ {
29064
+ id: "html-meta-refresh",
29065
+ description: "<meta http-equiv=\"refresh\" — can redirect users",
29066
+ pattern: /<meta[\s\S]{0,40}http-equiv[\s\S]{0,20}refresh/i
29067
+ },
29068
+ {
29069
+ id: "html-srcdoc",
29070
+ description: "srcdoc= attribute on iframes — embeds HTML that can run scripts",
29071
+ pattern: /srcdoc\s*=/i
29072
+ },
29073
+ {
29074
+ id: "html-iframe",
29075
+ description: "<iframe tag",
29076
+ pattern: /<iframe[\s>/]/i
29077
+ },
29078
+ {
29079
+ id: "html-form",
29080
+ description: "<form tag — can be used for phishing / credential harvesting injection",
29081
+ pattern: /<form[\s>/]/i
29082
+ }
29083
+ ];
29084
+ //#endregion
29085
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/xml.js
29086
+ /**
29087
+ * XML context patterns.
29088
+ *
29089
+ * Detects injection vectors that are specifically dangerous when a string
29090
+ * is inserted into an XML document (not HTML rendering context).
29091
+ *
29092
+ * Key distinction from HTML: these patterns target parser-level attacks —
29093
+ * things that can confuse or subvert an XML parser, trigger external entity
29094
+ * resolution, or inject DTD content. HTML rendering concerns (XSS) belong
29095
+ * in the HTML context.
29096
+ */
29097
+ const XML_PATTERNS = [
29098
+ {
29099
+ id: "xml-cdata-injection",
29100
+ description: "CDATA section injection: <![CDATA[ breaks out of text node context",
29101
+ pattern: /<!\[CDATA\[/i
29102
+ },
29103
+ {
29104
+ id: "xml-cdata-close",
29105
+ description: "CDATA close sequence: ]]> can terminate an enclosing CDATA section",
29106
+ pattern: /\]\]>/
29107
+ },
29108
+ {
29109
+ id: "xml-processing-instruction",
29110
+ description: "XML processing instruction: <?xml-stylesheet or <?php etc.",
29111
+ pattern: /<\?(?:xml[\- ]|php|asp)/i
29112
+ },
29113
+ {
29114
+ id: "xml-doctype-injection",
29115
+ description: "DOCTYPE declaration embedded in content — can define entities",
29116
+ pattern: /<!DOCTYPE(?:[\s[]|$)/i
29117
+ },
29118
+ {
29119
+ id: "xml-entity-system",
29120
+ description: "SYSTEM keyword — used in external entity declarations (XXE)",
29121
+ pattern: /\bSYSTEM\s+["']/i
29122
+ },
29123
+ {
29124
+ id: "xml-entity-public",
29125
+ description: "PUBLIC keyword — used in external entity declarations (XXE)",
29126
+ pattern: /\bPUBLIC\s+["']/i
29127
+ },
29128
+ {
29129
+ id: "xml-entity-declaration",
29130
+ description: "<!ENTITY declaration — defines entities, potential XXE or entity expansion",
29131
+ pattern: /<!ENTITY[\s%]/i
29132
+ },
29133
+ {
29134
+ id: "xml-billion-laughs",
29135
+ description: "Entity reference chaining / billion laughs: repeated &eX; style references",
29136
+ pattern: /(?:&\w{1,20};){3,}/
29137
+ },
29138
+ {
29139
+ id: "xml-namespace-confusion",
29140
+ description: "xmlns: attribute injection — can redefine namespaces to confuse parsers",
29141
+ pattern: /\bxmlns\s*(?::\w{1,40})?\s*=/i
29142
+ },
29143
+ {
29144
+ id: "xml-comment-injection",
29145
+ description: "<!-- comment injection — can hide content from some parsers",
29146
+ pattern: /<!--/
29147
+ },
29148
+ {
29149
+ id: "xml-comment-close",
29150
+ description: "--> closes an enclosing XML comment",
29151
+ pattern: /-->/
29152
+ },
29153
+ {
29154
+ id: "xml-pi-close",
29155
+ description: "?> closes an enclosing processing instruction",
29156
+ pattern: /\?>/
29157
+ }
29158
+ ];
29159
+ //#endregion
29160
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/svg.js
29161
+ /**
29162
+ * SVG context patterns.
29163
+ *
29164
+ * SVG is XML-based but renders in browsers, giving it a unique attack surface
29165
+ * that combines XML parser behaviour with browser rendering and JavaScript execution.
29166
+ *
29167
+ * Many of these vectors bypass HTML sanitizers that don't understand SVG semantics
29168
+ * (DOMPurify has documented bypass vulnerabilities specifically in SVG/XML context).
29169
+ */
29170
+ const SVG_PATTERNS = [
29171
+ {
29172
+ id: "svg-script-element",
29173
+ description: "<script element inside SVG executes JavaScript",
29174
+ pattern: /<script[\s>/]/i
29175
+ },
29176
+ {
29177
+ id: "svg-xlink-href-javascript",
29178
+ description: "xlink:href with javascript: — classic SVG XSS via <a> or <use>",
29179
+ pattern: /xlink\s*:\s*href\s*=\s*["']?\s*javascript\s*:/i
29180
+ },
29181
+ {
29182
+ id: "svg-href-javascript",
29183
+ description: "href= with javascript: in SVG context (<a>, <animate>, etc.)",
29184
+ pattern: /href\s*=\s*["']?\s*javascript\s*:/i
29185
+ },
29186
+ {
29187
+ id: "svg-foreignobject",
29188
+ description: "<foreignObject embeds HTML inside SVG — can execute scripts",
29189
+ pattern: /<foreignObject[\s>/]/i
29190
+ },
29191
+ {
29192
+ id: "svg-use-external",
29193
+ description: "<use xlink:href or href pointing to external resource (non-fragment URL)",
29194
+ pattern: /<use[\s\S]{0,60}(?:xlink\s*:\s*)?href\s*=\s*(?:["'][^#]|[^"'#\s>])/i
29195
+ },
29196
+ {
29197
+ id: "svg-animate-href",
29198
+ description: "<animate attributeName=\"href\" — can dynamically change href to javascript:",
29199
+ pattern: /<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*href["']/i
29200
+ },
29201
+ {
29202
+ id: "svg-animate-xlinkhref",
29203
+ description: "<animate attributeName=\"xlink:href\"",
29204
+ pattern: /<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*xlink\s*:\s*href["']/i
29205
+ },
29206
+ {
29207
+ id: "svg-set-javascript",
29208
+ description: "<set to=\"javascript:...\" — sets an attribute to a javascript: URI",
29209
+ pattern: /<set[\s\S]{0,80}to\s*=\s*["']?\s*javascript\s*:/i
29210
+ },
29211
+ {
29212
+ id: "svg-event-handler",
29213
+ description: "SVG-specific event handler attributes: onload=, onerror=, onactivate=, etc.",
29214
+ pattern: /\bon(?:load|error|activate|begin|end|repeat|focus|blur|click|mouse\w{1,20}|key\w{1,20})\s*=/i
29215
+ },
29216
+ {
29217
+ id: "svg-handler-generic",
29218
+ description: "Generic on* handler catch-all for SVG attributes",
29219
+ pattern: /\bon\w{1,30}\s*=/i
29220
+ },
29221
+ {
29222
+ id: "svg-filter-feimage",
29223
+ description: "<feImage href= — filter primitive that can load external resources",
29224
+ pattern: /<feImage[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=/i
29225
+ },
29226
+ {
29227
+ id: "svg-image-external",
29228
+ description: "<image xlink:href with http/https or javascript protocol",
29229
+ pattern: /<image[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=\s*["']?\s*(?:https?|javascript)\s*:/i
29230
+ },
29231
+ {
29232
+ id: "svg-style-javascript",
29233
+ description: "style= attribute containing javascript: (e.g. background:url(javascript:...))",
29234
+ pattern: /style\s*=[\s\S]{0,60}javascript\s*:/i
29235
+ }
29236
+ ];
29237
+ //#endregion
29238
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/sql.js
29239
+ /**
29240
+ * SQL context patterns — high-precision rules only.
29241
+ *
29242
+ * These rules have very low false-positive risk and are safe to apply to
29243
+ * general user text (names, descriptions, search queries, etc.).
29244
+ * All patterns are ReDoS-safe — unlike the `sql-injection` npm package
29245
+ * which has an active CVE on its own detection regexes.
29246
+ *
29247
+ * For exhaustive coverage including noisier heuristics (comment sequences,
29248
+ * hex literals, stacked queries with semicolons), use 'SQL-STRICT' instead.
29249
+ * Apply 'SQL-STRICT' only to strings that are specifically SQL fragments,
29250
+ * not to general free-text fields.
29251
+ */
29252
+ const SQL_PATTERNS = [
29253
+ {
29254
+ id: "sql-block-comment-open",
29255
+ description: "SQL block comment open: /* ... */ — unusual in legitimate user text",
29256
+ pattern: /\/\*/
29257
+ },
29258
+ {
29259
+ id: "sql-union-select",
29260
+ description: "UNION SELECT — most common SQL injection aggregation attack",
29261
+ pattern: /\bUNION\s{1,20}(?:ALL\s{1,20})?SELECT\b/i
29262
+ },
29263
+ {
29264
+ id: "sql-drop-table",
29265
+ description: "DROP TABLE — destructive DDL injection",
29266
+ pattern: /\bDROP\s{1,20}TABLE\b/i
29267
+ },
29268
+ {
29269
+ id: "sql-drop-database",
29270
+ description: "DROP DATABASE — destructive DDL injection",
29271
+ pattern: /\bDROP\s{1,20}DATABASE\b/i
29272
+ },
29273
+ {
29274
+ id: "sql-insert-into",
29275
+ description: "INSERT INTO — data injection",
29276
+ pattern: /\bINSERT\s{1,20}INTO\b/i
29277
+ },
29278
+ {
29279
+ id: "sql-delete-from",
29280
+ description: "DELETE FROM — data deletion injection",
29281
+ pattern: /\bDELETE\s{1,20}FROM\b/i
29282
+ },
29283
+ {
29284
+ id: "sql-update-set",
29285
+ description: "UPDATE ... SET — data modification injection",
29286
+ pattern: /\bUPDATE\b[\s\S]{1,60}\bSET\b/i
29287
+ },
29288
+ {
29289
+ id: "sql-exec-xp",
29290
+ description: "EXEC xp_ — MSSQL extended stored procedure execution",
29291
+ pattern: /\bEXEC(?:UTE)?\s{1,20}xp_/i
29292
+ },
29293
+ {
29294
+ id: "sql-tautology-string",
29295
+ description: "Classic string tautology: ' OR '1'='1 or \" OR \"1\"=\"1\"",
29296
+ pattern: /'\s{0,10}OR\s{0,10}'[^']{0,20}'\s*=\s*'[^']{0,20}/i
29297
+ },
29298
+ {
29299
+ id: "sql-tautology-numeric",
29300
+ description: "Numeric tautology: OR 1=1",
29301
+ pattern: /\bOR\s{1,10}1\s*=\s*1\b/i
29302
+ },
29303
+ {
29304
+ id: "sql-always-true-zero",
29305
+ description: "Numeric tautology: OR 0=0",
29306
+ pattern: /\bOR\s{1,10}0\s*=\s*0\b/i
29307
+ },
29308
+ {
29309
+ id: "sql-sleep-benchmark",
29310
+ description: "Time-based blind injection: SLEEP() or BENCHMARK()",
29311
+ pattern: /\b(?:SLEEP|BENCHMARK)\s*\(/i
29312
+ },
29313
+ {
29314
+ id: "sql-waitfor-delay",
29315
+ description: "MSSQL time-based blind injection: WAITFOR DELAY",
29316
+ pattern: /\bWAITFOR\s{1,20}DELAY\b/i
29317
+ },
29318
+ {
29319
+ id: "sql-char-function",
29320
+ description: "CHAR() function — used to obfuscate injected strings",
29321
+ pattern: /\bCHAR\s*\(\s*\d{1,3}/i
29322
+ },
29323
+ {
29324
+ id: "sql-information-schema",
29325
+ description: "INFORMATION_SCHEMA — reconnaissance query for table/column enumeration",
29326
+ pattern: /\bINFORMATION_SCHEMA\b/i
29327
+ }
29328
+ ];
29329
+ //#endregion
29330
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/sql-strict.js
29331
+ /**
29332
+ * SQL-STRICT context patterns.
29333
+ *
29334
+ * Extends the base 'SQL' context with three additional rules that are
29335
+ * effective at detecting real injections but carry a higher false-positive
29336
+ * risk on general free-text input.
29337
+ *
29338
+ * Use 'SQL-STRICT' when:
29339
+ * - The string is specifically a SQL fragment or database identifier
29340
+ * - You control the input domain (e.g. a dedicated SQL search field)
29341
+ * - You can tolerate occasional false positives in exchange for broader coverage
29342
+ *
29343
+ * Use 'SQL' (not STRICT) when:
29344
+ * - The field is general user text (names, descriptions, comments)
29345
+ * - False positives would block legitimate content (e.g. "see note -- above")
29346
+ *
29347
+ * Rules moved here from 'SQL' due to false-positive risk:
29348
+ *
29349
+ * sql-line-comment — "--" fires on "see note -- above", "value--", CSS var(--primary)
29350
+ * sql-stacked-query — "; SELECT" fires on legitimate prose with semicolons + SQL words
29351
+ * sql-hex-encoding — "0xDEAD" fires on hex values in technical docs and log output
29352
+ */
29353
+ const SQL_STRICT_EXTRA = [
29354
+ {
29355
+ id: "sql-line-comment",
29356
+ description: "SQL line comment: -- followed by whitespace or end of string",
29357
+ pattern: /--(?:\s|$)/
29358
+ },
29359
+ {
29360
+ id: "sql-stacked-query",
29361
+ description: "Stacked queries: semicolon immediately followed by a SQL keyword",
29362
+ pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
29363
+ },
29364
+ {
29365
+ id: "sql-hex-encoding",
29366
+ description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
29367
+ pattern: /\b0x[0-9a-f]{4,}/i
29368
+ }
29369
+ ];
29370
+ const SQL_STRICT_PATTERNS = [...SQL_PATTERNS, ...SQL_STRICT_EXTRA];
29371
+ //#endregion
29372
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/shell.js
29373
+ /**
29374
+ * SHELL context patterns.
29375
+ *
29376
+ * Detects shell injection vectors and path traversal patterns.
29377
+ * Designed for use when a string will be passed to a shell command,
29378
+ * used as a file path, or interpolated into OS-level operations.
29379
+ */
29380
+ const SHELL_PATTERNS = [
29381
+ {
29382
+ id: "shell-path-traversal-unix",
29383
+ description: "Unix path traversal: ../ — climbing the directory tree",
29384
+ pattern: /\.\.\//
29385
+ },
29386
+ {
29387
+ id: "shell-path-traversal-windows",
29388
+ description: "Windows path traversal: ..\\ — climbing the directory tree",
29389
+ pattern: /\.\.\\/
29390
+ },
29391
+ {
29392
+ id: "shell-path-traversal-encoded",
29393
+ description: "URL-encoded path traversal: %2e%2e or %2f variants",
29394
+ pattern: /%2e%2e|%2f\.\.|\.\.%2f/i
29395
+ },
29396
+ {
29397
+ id: "shell-null-byte",
29398
+ description: "Null byte injection: \\x00 or %00 — truncates strings in C-backed functions",
29399
+ pattern: /\x00|%00/
29400
+ },
29401
+ {
29402
+ id: "shell-semicolon",
29403
+ description: "Semicolon command separator: cmd1; cmd2",
29404
+ pattern: /;/
29405
+ },
29406
+ {
29407
+ id: "shell-pipe",
29408
+ description: "Pipe operator: cmd1 | cmd2",
29409
+ pattern: /\|/
29410
+ },
29411
+ {
29412
+ id: "shell-and-operator",
29413
+ description: "AND operator: cmd1 && cmd2",
29414
+ pattern: /&&/
29415
+ },
29416
+ {
29417
+ id: "shell-or-operator",
29418
+ description: "OR operator: cmd1 || cmd2",
29419
+ pattern: /\|\|/
29420
+ },
29421
+ {
29422
+ id: "shell-backtick",
29423
+ description: "Backtick command substitution: `cmd`",
29424
+ pattern: /`/
29425
+ },
29426
+ {
29427
+ id: "shell-dollar-paren",
29428
+ description: "Dollar-paren command substitution: $(cmd)",
29429
+ pattern: /\$\(/
29430
+ },
29431
+ {
29432
+ id: "shell-dollar-brace",
29433
+ description: "Dollar-brace variable expansion: ${var} — can be abused for injection",
29434
+ pattern: /\$\{/
29435
+ },
29436
+ {
29437
+ id: "shell-redirect-out",
29438
+ description: "Output redirection: cmd > file or cmd >> file",
29439
+ pattern: />{1,2}/
29440
+ },
29441
+ {
29442
+ id: "shell-redirect-in",
29443
+ description: "Input redirection: cmd < file",
29444
+ pattern: /</
29445
+ },
29446
+ {
29447
+ id: "shell-newline-injection",
29448
+ description: "Newline injection: \\n or \\r — can inject new shell commands",
29449
+ pattern: /[\n\r]/
29450
+ },
29451
+ {
29452
+ id: "shell-glob-star",
29453
+ description: "Glob expansion: * or ? — can expand to unintended files",
29454
+ pattern: /[/\\][*?]/
29455
+ },
29456
+ {
29457
+ id: "shell-absolute-root",
29458
+ description: "Absolute root path injection: string starting with / or \\ (Windows UNC)",
29459
+ pattern: /^(?:\/|\\\\)/
29460
+ },
29461
+ {
29462
+ id: "shell-windows-drive",
29463
+ description: "Windows drive letter path injection: C:\\ or D:/",
29464
+ pattern: /^[a-zA-Z]:[/\\]/
29465
+ },
29466
+ {
29467
+ id: "shell-curl-wget",
29468
+ description: "curl/wget with URL or flags — can exfiltrate data or download payloads",
29469
+ pattern: /\b(?:curl|wget)\s+(?:https?:\/\/|ftp:\/\/|-)/i
29470
+ }
29471
+ ];
29472
+ //#endregion
29473
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/redos.js
29474
+ /**
29475
+ * REDOS context patterns.
29476
+ *
29477
+ * Detects strings that, if used as regular expressions, could cause
29478
+ * catastrophic backtracking (ReDoS — Regular Expression Denial of Service).
29479
+ *
29480
+ * These patterns detect the structural forms that lead to exponential or
29481
+ * polynomial backtracking in NFA-based regex engines (V8, PCRE, Java, etc.).
29482
+ *
29483
+ * Use this context when user-supplied strings will be compiled into RegExp objects.
29484
+ */
29485
+ const REDOS_PATTERNS = [
29486
+ {
29487
+ id: "redos-nested-quantifier-plus",
29488
+ description: "Nested + quantifier inside a group with outer quantifier: (a+)+, (.+b)*, etc.",
29489
+ pattern: /\([^)]*\+[^)]*\)[+*]/
29490
+ },
29491
+ {
29492
+ id: "redos-nested-quantifier-star",
29493
+ description: "Nested * quantifier: (a*)* or (a*)+ — catastrophic backtracking",
29494
+ pattern: /\([^)]*\*[^)]*\)[*+]/
29495
+ },
29496
+ {
29497
+ id: "redos-nested-groups",
29498
+ description: "Doubly nested quantified groups: ((a+)+) — guaranteed catastrophic",
29499
+ pattern: /\(\([^)]{0,40}\)[+*]\)[+*]/
29500
+ },
29501
+ {
29502
+ id: "redos-alternation-overlap",
29503
+ description: "Overlapping alternation under quantifier: (a|a)+ — ambiguous NFA paths",
29504
+ pattern: /\(([^|()]{1,20})\|(?:\1)(?:\|[^|()]{1,20}){0,5}\)[+*?]{1,2}/
29505
+ },
29506
+ {
29507
+ id: "redos-star-plus-concat",
29508
+ description: "(x*x)+ pattern — triggers super-linear backtracking",
29509
+ pattern: /\([^)]{0,10}\*[^)]{0,10}\)[+*]/
29510
+ },
29511
+ {
29512
+ id: "redos-dot-star-greedy",
29513
+ description: "(.*){n,} or (.+){n,} — repeated greedy dot quantifiers",
29514
+ pattern: /\(\.[*+]\)\{?\d/
29515
+ },
29516
+ {
29517
+ id: "redos-large-repetition",
29518
+ description: "Very large fixed or range repetition count {1000,} or {1000,n} — denial of service via backtracking",
29519
+ pattern: /\{\d{4,}(?:,\d*)?\}/
29520
+ },
29521
+ {
29522
+ id: "redos-catastrophic-alternation",
29523
+ description: "Long alternation with many similar branches — polynomial backtracking risk",
29524
+ pattern: /\([^)]{0,200}(?:\|[^|)]{0,50}){9,}\)/
29525
+ }
29526
+ ];
29527
+ //#endregion
29528
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/contexts/nosql.js
29529
+ const sep = "[\"'\\s]*:";
29530
+ //#endregion
29531
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/registry.js
29532
+ /**
29533
+ * Context registry — maps context name strings to their pattern arrays.
29534
+ *
29535
+ * Adding a new context: create a file in ./contexts/, export a default array
29536
+ * of pattern objects, and register it here.
29537
+ *
29538
+ * Context name guide:
29539
+ * SQL — high-precision rules; safe for general text fields
29540
+ * SQL-STRICT — SQL + three noisier rules (line comments, stacked queries, hex);
29541
+ * use only for SQL-specific inputs
29542
+ * REDOS — detects ReDoS-prone patterns when string will be compiled as RegExp
29543
+ */
29544
+ /** @type {Record<string, Array<{id: string, description: string, pattern: RegExp}>>} */
29545
+ const CONTEXT_REGISTRY = {
29546
+ HTML: HTML_PATTERNS,
29547
+ XML: XML_PATTERNS,
29548
+ SVG: SVG_PATTERNS,
29549
+ SQL: SQL_PATTERNS,
29550
+ "SQL-STRICT": SQL_STRICT_PATTERNS,
29551
+ SHELL: SHELL_PATTERNS,
29552
+ REDOS: REDOS_PATTERNS,
29553
+ NOSQL: [
29554
+ {
29555
+ id: "nosql-where-operator",
29556
+ description: "$where — executes arbitrary JavaScript server-side in MongoDB",
29557
+ pattern: new RegExp(`\\$where${sep}`, "i")
29558
+ },
29559
+ {
29560
+ id: "nosql-ne-operator",
29561
+ description: "$ne — \"not equal\" operator used to bypass equality checks",
29562
+ pattern: new RegExp(`\\$ne${sep}`, "i")
29563
+ },
29564
+ {
29565
+ id: "nosql-gt-operator",
29566
+ description: "$gt — \"greater than\" used to bypass password/value checks",
29567
+ pattern: new RegExp(`\\$gte?${sep}`, "i")
29568
+ },
29569
+ {
29570
+ id: "nosql-lt-operator",
29571
+ description: "$lt / $lte — \"less than\" bypass variants",
29572
+ pattern: new RegExp(`\\$lte?${sep}`, "i")
29573
+ },
29574
+ {
29575
+ id: "nosql-regex-operator",
29576
+ description: "$regex — can be used to extract data character by character (blind injection)",
29577
+ pattern: new RegExp(`\\$regex${sep}`, "i")
29578
+ },
29579
+ {
29580
+ id: "nosql-or-operator",
29581
+ description: "$or — logical OR; used to create always-true conditions",
29582
+ pattern: new RegExp(`\\$or${sep}\\s*\\[`, "i")
29583
+ },
29584
+ {
29585
+ id: "nosql-and-operator",
29586
+ description: "$and — logical AND operator injection",
29587
+ pattern: new RegExp(`\\$and${sep}\\s*\\[`, "i")
29588
+ },
29589
+ {
29590
+ id: "nosql-nor-operator",
29591
+ description: "$nor — logical NOR operator injection",
29592
+ pattern: new RegExp(`\\$nor${sep}\\s*\\[`, "i")
29593
+ },
29594
+ {
29595
+ id: "nosql-exists-operator",
29596
+ description: "$exists — can enumerate fields to determine schema",
29597
+ pattern: new RegExp(`\\$exists${sep}`, "i")
29598
+ },
29599
+ {
29600
+ id: "nosql-in-operator",
29601
+ description: "$in — matches any value in a list; can enumerate values",
29602
+ pattern: new RegExp(`\\$in${sep}\\s*\\[`, "i")
29603
+ },
29604
+ {
29605
+ id: "nosql-expr-operator",
29606
+ description: "$expr — allows aggregation expressions in queries (MongoDB 3.6+)",
29607
+ pattern: new RegExp(`\\$expr${sep}`, "i")
29608
+ },
29609
+ {
29610
+ id: "nosql-function-operator",
29611
+ description: "$function — executes arbitrary JavaScript in MongoDB 4.4+",
29612
+ pattern: new RegExp(`\\$function${sep}`, "i")
29613
+ },
29614
+ {
29615
+ id: "nosql-accumulator-operator",
29616
+ description: "$accumulator — custom aggregation with arbitrary JS execution",
29617
+ pattern: new RegExp(`\\$accumulator${sep}`, "i")
29618
+ },
29619
+ {
29620
+ id: "nosql-proto-pollution",
29621
+ description: "__proto__ — prototype pollution via object key injection",
29622
+ pattern: /__proto__/
29623
+ },
29624
+ {
29625
+ id: "nosql-constructor-prototype",
29626
+ description: "constructor.prototype — alternative prototype pollution vector (dot notation or JSON key)",
29627
+ pattern: /constructor[\s"':.,{\[]*prototype/i
29628
+ },
29629
+ {
29630
+ id: "nosql-proto-bracket",
29631
+ description: "[\"__proto__\"] — bracket-notation prototype pollution",
29632
+ pattern: /\[["']__proto__["']\]/
29633
+ }
29634
+ ],
29635
+ LOG: [
29636
+ {
29637
+ id: "log-crlf-injection",
29638
+ description: "CRLF injection: literal \\r or \\n embeds fake log lines",
29639
+ pattern: /[\r\n]/
29640
+ },
29641
+ {
29642
+ id: "log-url-encoded-crlf",
29643
+ description: "URL-encoded CRLF: %0d, %0a, %0D, %0A — decoded by some log parsers",
29644
+ pattern: /%0[dDaA]/
29645
+ },
29646
+ {
29647
+ id: "log-unicode-newline",
29648
+ description: "Unicode newline variants: U+2028 (line separator), U+2029 (paragraph separator)",
29649
+ pattern: /[\u2028\u2029]/
29650
+ },
29651
+ {
29652
+ id: "log-log4shell-jndi",
29653
+ description: "Log4Shell: ${jndi:...} triggers remote code execution in Apache Log4j",
29654
+ pattern: /\$\{jndi\s*:/i
29655
+ },
29656
+ {
29657
+ id: "log-log4shell-obfuscated",
29658
+ description: "Obfuscated Log4Shell: ${::-j}... lookup-bypass prefix used to evade WAF detection",
29659
+ pattern: /\$\{::-/
29660
+ },
29661
+ {
29662
+ id: "log-log4j-lookup",
29663
+ description: "Log4j lookup syntax: ${env:...}, ${sys:...}, ${ctx:...} — data exfiltration",
29664
+ pattern: /\$\{(?:env|sys|ctx|main|map|sd|web|docker|k8s|spring)\s*:/i
29665
+ },
29666
+ {
29667
+ id: "log-ssti-double-brace",
29668
+ description: "SSTI double-brace: {{expression}} — Jinja2, Twig, Handlebars, etc.",
29669
+ pattern: /\{\{[\s\S]{0,80}\}\}/
29670
+ },
29671
+ {
29672
+ id: "log-ssti-hash-brace",
29673
+ description: "SSTI hash-brace: #{expression} — Thymeleaf, Velocity, Ruby ERB",
29674
+ pattern: /#\{[\s\S]{0,80}\}/
29675
+ },
29676
+ {
29677
+ id: "log-ssti-dollar-brace",
29678
+ description: "SSTI/EL injection: ${expression with operators or method calls} — JSP EL, Freemarker, SpEL",
29679
+ pattern: /\$\{[^}]*(?:\.|\(|\*|\+|\bclass\b|\bruntime\b|\bprocess\b|\bexec\b)[^}]{0,80}\}/i
29680
+ },
29681
+ {
29682
+ id: "log-ssti-percent-tag",
29683
+ description: "SSTI ERB/ASP tag: <%= expression %> — Ruby ERB, ASP",
29684
+ pattern: /<%=[\s\S]{0,80}%>/
29685
+ },
29686
+ {
29687
+ id: "log-null-byte",
29688
+ description: "Null byte: \\x00 or %00 — can truncate log entries in C-backed loggers",
29689
+ pattern: /\x00|%00/
29690
+ },
29691
+ {
29692
+ id: "log-ansi-escape",
29693
+ description: "ANSI escape sequence: ESC[ — can manipulate terminal output when logs are tailed",
29694
+ pattern: /\x1b\[/
29695
+ }
29696
+ ]
29697
+ };
29698
+ /**
29699
+ * Enum of valid context names — e.g. `VALID_CONTEXTS.HTML === 'HTML'`.
29700
+ * @type {Record<string, string>}
29701
+ */
29702
+ const VALID_CONTEXTS = Object.freeze(Object.fromEntries(Object.keys(CONTEXT_REGISTRY).map((k) => [k, k])));
29703
+ //#endregion
29704
+ //#region ../../node_modules/.pnpm/is-unsafe@1.0.1/node_modules/is-unsafe/src/index.js
29705
+ /**
29706
+ * is-unsafe
29707
+ *
29708
+ * Zero-dependency, DOM-free, pure predicate for detecting unsafe strings
29709
+ * across HTML, XML, SVG, SQL, SQL-STRICT, SHELL, REDOS, NOSQL, and LOG contexts.
29710
+ *
29711
+ * @module is-unsafe
29712
+ */
29713
+ /**
29714
+ * @typedef {'HTML'|'XML'|'SVG'|'SQL'|'SQL-STRICT'|'SHELL'|'REDOS'|'NOSQL'|'LOG'} ContextName
29715
+ */
29716
+ /**
29717
+ * @typedef {Object} MatchResult
29718
+ * @property {string} context - The context in which the match was found
29719
+ * @property {string} id - Rule identifier
29720
+ * @property {string} description - Human-readable description of what was matched
29721
+ * @property {RegExp} pattern - The pattern that matched
29722
+ */
29723
+ /**
29724
+ * Validate that `value` is a string. Throws TypeError if not.
29725
+ * @param {unknown} value
29726
+ */
29727
+ function assertString(value) {
29728
+ if (typeof value !== "string") throw new TypeError(`is-unsafe: first argument must be a string, got ${typeof value}`);
29729
+ }
29730
+ /**
29731
+ * Validate that `context` is a recognised context name, an array of them,
29732
+ * or a RegExp instance. Throws TypeError if not.
29733
+ * @param {ContextName|ContextName[]|RegExp} context
29734
+ */
29735
+ function assertContext(context) {
29736
+ if (context instanceof RegExp) return;
29737
+ if (typeof context === "string") {
29738
+ if (!CONTEXT_REGISTRY[context]) throw new TypeError(`is-unsafe: unknown context "${context}". Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`);
29739
+ return;
29740
+ }
29741
+ if (Array.isArray(context)) {
29742
+ if (context.length === 0) throw new TypeError("is-unsafe: context array must not be empty");
29743
+ for (const c of context) if (typeof c !== "string" || !CONTEXT_REGISTRY[c]) throw new TypeError(`is-unsafe: unknown context "${c}" in array. Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`);
29744
+ return;
29745
+ }
29746
+ throw new TypeError(`is-unsafe: second argument must be a context string, array of context strings, or RegExp. Got: ${typeof context}`);
29747
+ }
29748
+ /**
29749
+ * Test a single value against one named context's patterns.
29750
+ * Returns the first matching MatchResult, or null if nothing matched.
29751
+ *
29752
+ * @param {string} value
29753
+ * @param {string} contextName
29754
+ * @returns {MatchResult|null}
29755
+ */
29756
+ function matchContext(value, contextName) {
29757
+ const patterns = CONTEXT_REGISTRY[contextName];
29758
+ for (const rule of patterns) if (rule.pattern.test(value)) return {
29759
+ context: contextName,
29760
+ id: rule.id,
29761
+ description: rule.description,
29762
+ pattern: rule.pattern
29763
+ };
29764
+ return null;
29765
+ }
29766
+ /**
29767
+ * Returns `true` if `value` is unsafe in the given context(s), `false` otherwise.
29768
+ *
29769
+ * @param {string} value - The string to test
29770
+ * @param {ContextName|ContextName[]|RegExp} context
29771
+ * - A named context ('HTML', 'XML', 'SVG', 'SQL', 'SQL-STRICT', 'SHELL', 'REDOS', 'NOSQL', 'LOG')
29772
+ * - An array of named contexts — returns true if unsafe in **any** of them
29773
+ * - A custom RegExp — returns true if the pattern matches
29774
+ * @returns {boolean}
29775
+ *
29776
+ * @example
29777
+ * isUnsafe('<script>alert(1)<\/script>', 'HTML') // true
29778
+ * isUnsafe('hello world', 'HTML') // false
29779
+ * isUnsafe('value', ['HTML', 'SQL']) // false
29780
+ * isUnsafe('value', /my-pattern/i) // false
29781
+ */
29782
+ function isUnsafe(value, context) {
29783
+ assertString(value);
29784
+ assertContext(context);
29785
+ if (context instanceof RegExp) return context.test(value);
29786
+ if (typeof context === "string") return matchContext(value, context) !== null;
29787
+ for (const c of context) if (matchContext(value, c) !== null) return true;
29788
+ return false;
29789
+ }
29790
+ //#endregion
29791
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js
28620
29792
  /**
28621
29793
  * Extract raw attributes (without prefix) from prefixed attribute map
28622
29794
  * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap
@@ -28682,7 +29854,8 @@ var OrderedObjParser = class {
28682
29854
  maxTotalExpansions: this.options.processEntities.maxTotalExpansions,
28683
29855
  maxExpandedLength: this.options.processEntities.maxExpandedLength,
28684
29856
  applyLimitsTo: this.options.processEntities.appliesTo
28685
- }
29857
+ },
29858
+ onInputEntity: (name, value) => isUnsafe(value, [VALID_CONTEXTS.HTML, VALID_CONTEXTS.XML]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
28686
29859
  });
28687
29860
  }
28688
29861
  this.matcher = new Matcher();
@@ -29129,7 +30302,7 @@ function sanitizeName(name, options) {
29129
30302
  return name;
29130
30303
  }
29131
30304
  //#endregion
29132
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/node2json.js
30305
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/node2json.js
29133
30306
  const METADATA_SYMBOL = XmlNode.getMetaDataSymbol();
29134
30307
  /**
29135
30308
  * Helper function to strip attribute prefix from attribute map
@@ -29229,7 +30402,7 @@ function isLeafTag(obj, options) {
29229
30402
  return false;
29230
30403
  }
29231
30404
  //#endregion
29232
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/validator.js
30405
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/validator.js
29233
30406
  const defaultOptions$1 = {
29234
30407
  allowBooleanAttributes: false,
29235
30408
  unpairedTags: []
@@ -29467,7 +30640,7 @@ function getPositionFromMatch(match) {
29467
30640
  return match.startIndex + match[1].length;
29468
30641
  }
29469
30642
  //#endregion
29470
- //#region ../../node_modules/.pnpm/fast-xml-parser@5.8.0/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js
30643
+ //#region ../../node_modules/.pnpm/fast-xml-parser@5.9.3/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js
29471
30644
  var XMLParser = class {
29472
30645
  constructor(options) {
29473
30646
  this.externalEntities = {};
@@ -30431,7 +31604,7 @@ function wrapAnsi(string, columns, options) {
30431
31604
  return String(string).normalize().split(CRLF_OR_LF).map((line) => exec(line, columns, options)).join("\n");
30432
31605
  }
30433
31606
  //#endregion
30434
- //#region ../../node_modules/.pnpm/@clack+core@1.4.1/node_modules/@clack/core/dist/index.mjs
31607
+ //#region ../../node_modules/.pnpm/@clack+core@1.4.2/node_modules/@clack/core/dist/index.mjs
30435
31608
  var import_src = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
30436
31609
  const ESC = "\x1B";
30437
31610
  const CSI = `${ESC}[`;
@@ -30790,13 +31963,13 @@ var n = class extends V {
30790
31963
  }
30791
31964
  };
30792
31965
  //#endregion
30793
- //#region ../../node_modules/.pnpm/@clack+prompts@1.5.1/node_modules/@clack/prompts/dist/index.mjs
31966
+ //#region ../../node_modules/.pnpm/@clack+prompts@1.6.0/node_modules/@clack/prompts/dist/index.mjs
30794
31967
  function isUnicodeSupported() {
30795
31968
  if (process$1.platform !== "win32") return process$1.env.TERM !== "linux";
30796
31969
  return Boolean(process$1.env.CI) || Boolean(process$1.env.WT_SESSION) || Boolean(process$1.env.TERMINUS_SUBLIME) || process$1.env.ConEmuTask === "{cmd::Cmder}" || process$1.env.TERM_PROGRAM === "Terminus-Sublime" || process$1.env.TERM_PROGRAM === "vscode" || process$1.env.TERM === "xterm-256color" || process$1.env.TERM === "alacritty" || process$1.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
30797
31970
  }
30798
- const unicode = isUnicodeSupported(), unicodeOr = (e, o) => unicode ? e : o, S_STEP_ACTIVE = unicodeOr("◆", "*"), S_STEP_CANCEL = unicodeOr("■", "x"), S_STEP_ERROR = unicodeOr("▲", "x"), S_STEP_SUBMIT = unicodeOr("◇", "o"), S_BAR = unicodeOr("│", "|"), S_BAR_END = unicodeOr("└", "—"), S_RADIO_ACTIVE = unicodeOr("●", ">"), S_RADIO_INACTIVE = unicodeOr("○", " "), symbol = (e) => {
30799
- switch (e) {
31971
+ const unicode = isUnicodeSupported(), unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr("◆", "*"), S_STEP_CANCEL = unicodeOr("■", "x"), S_STEP_ERROR = unicodeOr("▲", "x"), S_STEP_SUBMIT = unicodeOr("◇", "o"), S_BAR = unicodeOr("│", "|"), S_BAR_END = unicodeOr("└", "—"), S_RADIO_ACTIVE = unicodeOr("●", ">"), S_RADIO_INACTIVE = unicodeOr("○", " "), symbol = (o) => {
31972
+ switch (o) {
30800
31973
  case "initial":
30801
31974
  case "active": return styleText("cyan", S_STEP_ACTIVE);
30802
31975
  case "cancel": return styleText("red", S_STEP_CANCEL);
@@ -30833,6 +32006,8 @@ ${g}
30833
32006
  }
30834
32007
  }).prompt();
30835
32008
  };
32009
+ `${styleText("dim", "↑/↓")}`, `${styleText("dim", "Space:")}`, `${styleText("dim", "Enter:")}`;
32010
+ `${styleText("dim", "↑/↓")}`, `${styleText("dim", "Enter:")}`;
30836
32011
  `${styleText("gray", S_BAR)}`;
30837
32012
  const text$2 = (t) => new n({
30838
32013
  validate: t.validate,
@@ -31000,14 +32175,14 @@ const get$12 = make$14("get", { recordId: text$6({ name: "recordId" }) }, ({ rec
31000
32175
  })).pipe(withDescription("get AI insights by record id"));
31001
32176
  //#endregion
31002
32177
  //#region src/cli/ai/insights/list.ts
31003
- const page$9 = integer("page").pipe(optional$4);
31004
- const size$9 = integer("size").pipe(optional$4);
31005
- const grouped$2 = boolean("grouped").pipe(withDescription$3("group rows by article"));
32178
+ const page$8 = integer("page").pipe(optional$4);
32179
+ const size$8 = integer("size").pipe(optional$4);
32180
+ const grouped$1 = boolean("grouped").pipe(withDescription$3("group rows by article"));
31006
32181
  const unwrap$14 = (value) => getOrUndefined(value);
31007
32182
  const list$14 = make$14("list", {
31008
- page: page$9,
31009
- size: size$9,
31010
- grouped: grouped$2
32183
+ page: page$8,
32184
+ size: size$8,
32185
+ grouped: grouped$1
31011
32186
  }, ({ page, size, grouped }) => gen(function* () {
31012
32187
  const ai = yield* Ai;
31013
32188
  const renderer = yield* Renderer;
@@ -31184,14 +32359,14 @@ const get$11 = make$14("get", { recordId: text$6({ name: "recordId" }) }, ({ rec
31184
32359
  })).pipe(withDescription("get an AI summary by record id"));
31185
32360
  //#endregion
31186
32361
  //#region src/cli/ai/summary/list.ts
31187
- const page$8 = integer("page").pipe(optional$4);
31188
- const size$8 = integer("size").pipe(optional$4);
31189
- const grouped$1 = boolean("grouped").pipe(withDescription$3("group rows by article"));
32362
+ const page$7 = integer("page").pipe(optional$4);
32363
+ const size$7 = integer("size").pipe(optional$4);
32364
+ const grouped = boolean("grouped").pipe(withDescription$3("group rows by article"));
31190
32365
  const unwrap$12 = (value) => getOrUndefined(value);
31191
32366
  const list$13 = make$14("list", {
31192
- page: page$8,
31193
- size: size$8,
31194
- grouped: grouped$1
32367
+ page: page$7,
32368
+ size: size$7,
32369
+ grouped
31195
32370
  }, ({ page, size, grouped }) => gen(function* () {
31196
32371
  const ai = yield* Ai;
31197
32372
  const renderer = yield* Renderer;
@@ -31409,14 +32584,14 @@ const generate = make$14("generate", {
31409
32584
  })).pipe(withDescription("regenerate translation entries"));
31410
32585
  //#endregion
31411
32586
  //#region src/cli/ai/translate/entries/list.ts
31412
- const page$7 = integer("page").pipe(optional$4);
31413
- const size$7 = integer("size").pipe(optional$4);
32587
+ const page$6 = integer("page").pipe(optional$4);
32588
+ const size$6 = integer("size").pipe(optional$4);
31414
32589
  const keyPath = text$4("key-path").pipe(optional$4);
31415
32590
  const lang = text$4("lang").pipe(optional$4);
31416
32591
  const unwrap$10 = (value) => getOrUndefined(value);
31417
32592
  const list$12 = make$14("list", {
31418
- page: page$7,
31419
- size: size$7,
32593
+ page: page$6,
32594
+ size: size$6,
31420
32595
  keyPath,
31421
32596
  lang
31422
32597
  }, ({ page, size, keyPath, lang }) => gen(function* () {
@@ -31453,12 +32628,12 @@ const languages = make$14("languages", { id: text$6({ name: "idOrSlug" }) }, ({
31453
32628
  })).pipe(withDescription("list languages an article has been translated into"));
31454
32629
  //#endregion
31455
32630
  //#region src/cli/ai/translate/list.ts
31456
- const page$6 = integer("page").pipe(optional$4);
31457
- const size$6 = integer("size").pipe(optional$4);
32631
+ const page$5 = integer("page").pipe(optional$4);
32632
+ const size$5 = integer("size").pipe(optional$4);
31458
32633
  const unwrap$9 = (value) => getOrUndefined(value);
31459
32634
  const list$11 = make$14("list", {
31460
- page: page$6,
31461
- size: size$6
32635
+ page: page$5,
32636
+ size: size$5
31462
32637
  }, ({ page, size }) => gen(function* () {
31463
32638
  const ai = yield* Ai;
31464
32639
  const renderer = yield* Renderer;
@@ -34422,14 +35597,14 @@ const get$6 = make$14("get", { slugOrId: text$6({ name: "slugOrId" }) }, ({ slug
34422
35597
  })).pipe(withDescription("get a note by snowflake id or numeric nid"));
34423
35598
  //#endregion
34424
35599
  //#region src/cli/note/list.ts
34425
- const page$3 = integer("page").pipe(optional$4);
34426
- const size$3 = integer("size").pipe(optional$4);
35600
+ const page$2 = integer("page").pipe(optional$4);
35601
+ const size$2 = integer("size").pipe(optional$4);
34427
35602
  const state$1 = text$4("state").pipe(optional$4);
34428
35603
  const sort$1 = text$4("sort").pipe(optional$4);
34429
35604
  const unwrap$6 = (value) => getOrUndefined(value);
34430
35605
  const list$6 = make$14("list", {
34431
- page: page$3,
34432
- size: size$3,
35606
+ page: page$2,
35607
+ size: size$2,
34433
35608
  state: state$1,
34434
35609
  sort: sort$1
34435
35610
  }, ({ page, size, sort }) => gen(function* () {
@@ -35180,14 +36355,14 @@ const get$4 = make$14("get", { slugOrId: text$6({ name: "slugOrId" }) }, ({ slug
35180
36355
  })).pipe(withDescription("get a post by slug or id"));
35181
36356
  //#endregion
35182
36357
  //#region src/cli/post/list.ts
35183
- const page$2 = integer("page").pipe(optional$4);
35184
- const size$2 = integer("size").pipe(optional$4);
36358
+ const page$1 = integer("page").pipe(optional$4);
36359
+ const size$1 = integer("size").pipe(optional$4);
35185
36360
  const state = choice("state", ["publish", "draft"]).pipe(optional$4);
35186
36361
  const sort = choice("sort", ["created", "modified"]).pipe(optional$4);
35187
36362
  const unwrap$4 = (value) => getOrUndefined(value);
35188
36363
  const list$4 = make$14("list", {
35189
- page: page$2,
35190
- size: size$2,
36364
+ page: page$1,
36365
+ size: size$1,
35191
36366
  state,
35192
36367
  sort
35193
36368
  }, ({ page, size, state, sort }) => gen(function* () {
@@ -35707,7 +36882,7 @@ const profileCmd = make$14("profile").pipe(withDescription(help$4.description),
35707
36882
  //#region src/cli/project/_flags.ts
35708
36883
  const optional$1 = (self) => optional$4(self);
35709
36884
  const unwrap$3 = (value) => getOrUndefined(value);
35710
- const name$4 = optional$1(text$4("name"));
36885
+ const name$2 = optional$1(text$4("name"));
35711
36886
  const description$2 = optional$1(text$4("description"));
35712
36887
  const previewUrl = optional$1(text$4("preview-url"));
35713
36888
  const docUrl = optional$1(text$4("doc-url"));
@@ -35723,7 +36898,7 @@ const parseCsv = (v) => {
35723
36898
  return v.split(",").map((s) => s.trim()).filter(Boolean);
35724
36899
  };
35725
36900
  const projectWriteOptions = {
35726
- name: name$4,
36901
+ name: name$2,
35727
36902
  description: description$2,
35728
36903
  previewUrl,
35729
36904
  docUrl,
@@ -35977,12 +37152,12 @@ const projectListView = {
35977
37152
  };
35978
37153
  //#endregion
35979
37154
  //#region src/cli/project/list.ts
35980
- const page$1 = integer("page").pipe(optional$4);
35981
- const size$1 = integer("size").pipe(optional$4);
37155
+ const page = integer("page").pipe(optional$4);
37156
+ const size = integer("size").pipe(optional$4);
35982
37157
  const unwrap$2 = (value) => getOrUndefined(value);
35983
37158
  const list$3 = make$14("list", {
35984
- page: page$1,
35985
- size: size$1
37159
+ page,
37160
+ size
35986
37161
  }, ({ page, size }) => gen(function* () {
35987
37162
  const api = yield* Api;
35988
37163
  const renderer = yield* Renderer;
@@ -38348,11 +39523,11 @@ const SNIPPET_TYPES = [
38348
39523
  "json5",
38349
39524
  "function",
38350
39525
  "text",
38351
- "yaml"
39526
+ "yaml",
39527
+ "skill"
38352
39528
  ];
38353
39529
  const SNIPPET_KEYS = [
38354
- "name",
38355
- "reference",
39530
+ "path",
38356
39531
  "type",
38357
39532
  "raw",
38358
39533
  "private",
@@ -38360,12 +39535,10 @@ const SNIPPET_KEYS = [
38360
39535
  "metatype",
38361
39536
  "schema",
38362
39537
  "method",
38363
- "customPath",
38364
39538
  "secret",
38365
39539
  "enable"
38366
39540
  ];
38367
39541
  const snippetWriteOptions = {
38368
- reference: optional(text$4("reference")),
38369
39542
  type: optional(choice("type", SNIPPET_TYPES)),
38370
39543
  file: optional(text$4("file")),
38371
39544
  raw: optional(text$4("raw")),
@@ -38380,7 +39553,6 @@ const snippetWriteOptions = {
38380
39553
  ])),
38381
39554
  metatype: optional(text$4("metatype")),
38382
39555
  schema: optional(text$4("schema")),
38383
- customPath: optional(text$4("custom-path")),
38384
39556
  secret: optional(text$4("secret")),
38385
39557
  private: boolean("private"),
38386
39558
  noPrivate: boolean("no-private"),
@@ -38388,7 +39560,6 @@ const snippetWriteOptions = {
38388
39560
  noEnable: boolean("no-enable")
38389
39561
  };
38390
39562
  const toSnippetFlagInputs = (opts) => ({
38391
- reference: unwrap$1(opts.reference),
38392
39563
  type: unwrap$1(opts.type),
38393
39564
  file: unwrap$1(opts.file),
38394
39565
  raw: unwrap$1(opts.raw),
@@ -38396,20 +39567,17 @@ const toSnippetFlagInputs = (opts) => ({
38396
39567
  method: unwrap$1(opts.method),
38397
39568
  metatype: unwrap$1(opts.metatype),
38398
39569
  schema: unwrap$1(opts.schema),
38399
- customPath: unwrap$1(opts.customPath),
38400
39570
  secret: unwrap$1(opts.secret),
38401
39571
  private: opts.private ? true : opts.noPrivate ? false : void 0,
38402
39572
  enable: opts.enable ? true : opts.noEnable ? false : void 0
38403
39573
  });
38404
39574
  const snippetFieldsOf = (flags) => {
38405
39575
  const out = {};
38406
- if (flags.reference !== void 0) out.reference = flags.reference;
38407
39576
  if (flags.type !== void 0) out.type = flags.type;
38408
39577
  if (flags.comment !== void 0) out.comment = flags.comment;
38409
39578
  if (flags.method !== void 0) out.method = flags.method;
38410
39579
  if (flags.metatype !== void 0) out.metatype = flags.metatype;
38411
39580
  if (flags.schema !== void 0) out.schema = flags.schema;
38412
- if (flags.customPath !== void 0) out.customPath = flags.customPath;
38413
39581
  if (flags.secret !== void 0) out.secret = flags.secret;
38414
39582
  if (flags.private !== void 0) out.private = flags.private;
38415
39583
  if (flags.enable !== void 0) out.enable = flags.enable;
@@ -38439,13 +39607,14 @@ const EXT_BY_TYPE = {
38439
39607
  json5: "json5",
38440
39608
  function: "js",
38441
39609
  yaml: "yaml",
38442
- text: "txt"
39610
+ text: "txt",
39611
+ skill: "md"
38443
39612
  };
38444
39613
  const extForType = (type) => typeof type === "string" && EXT_BY_TYPE[type] || "txt";
38445
- const create$1 = make$14("create", {
38446
- name: text$4("name"),
39614
+ const create$1 = make$14("put", {
39615
+ path: text$6({ name: "path" }),
38447
39616
  ...snippetWriteOptions
38448
- }, ({ name, ...rest }) => gen(function* () {
39617
+ }, ({ path, ...rest }) => gen(function* () {
38449
39618
  const flags = toSnippetFlagInputs(rest);
38450
39619
  const api = yield* Api;
38451
39620
  const renderer = yield* Renderer;
@@ -38453,65 +39622,48 @@ const create$1 = make$14("create", {
38453
39622
  if (raw === void 0) {
38454
39623
  if (!process.stdin.isTTY) return yield* fail$2(new ValidationFailed({ message: "no snippet content provided; pass --file, --raw, or pipe stdin" }));
38455
39624
  raw = yield* (yield* Editor).openEditor({
38456
- filename: `snippet-${name}.${extForType(flags.type ?? "json")}`,
39625
+ filename: `snippet.${extForType(flags.type ?? "json")}`,
38457
39626
  initialContent: ""
38458
39627
  });
38459
39628
  }
38460
39629
  if (!raw.trim()) return yield* fail$2(new ValidationFailed({ message: "snippet content is empty" }));
38461
39630
  const body = {
38462
39631
  ...snippetFieldsOf(flags),
38463
- name,
39632
+ path,
38464
39633
  raw
38465
39634
  };
38466
- const res = yield* api.request("/snippets", {
38467
- method: "POST",
39635
+ const res = yield* api.request("/snippets/by-path", {
39636
+ method: "PUT",
38468
39637
  body
38469
39638
  });
38470
39639
  yield* renderer.emitSuccess(res);
38471
- })).pipe(withDescription("create a snippet"));
38472
- //#endregion
38473
- //#region src/cli/snippet/_resolve.ts
38474
- const unwrapList = (res) => {
38475
- if (Array.isArray(res)) return res;
38476
- if (res && typeof res === "object") {
38477
- const data = res.data;
38478
- if (Array.isArray(data)) return data;
38479
- }
38480
- return [];
38481
- };
38482
- const resolveSnippetId = (api, ref) => gen(function* () {
38483
- if (isSnowflakeId(ref)) return ref;
38484
- const slash = ref.indexOf("/");
38485
- const reference = slash === -1 ? "root" : ref.slice(0, slash);
38486
- const name = slash === -1 ? ref : ref.slice(slash + 1);
38487
- const match = unwrapList(yield* api.request(`/snippets/group/${encodeURIComponent(reference)}`).pipe(catchAll(() => succeed$1(null)))).find((s) => s.name === name);
38488
- if (!match?.id) return yield* fail$2(new ResourceNotFound({
38489
- kind: "snippet",
38490
- ref,
38491
- message: `snippet not found: ${ref}`
38492
- }));
38493
- return match.id;
38494
- });
38495
- const del$1 = make$14("delete", {
38496
- target: text$6({ name: "idOrRefName" }),
38497
- force: boolean("force").pipe(withDescription$3("skip the non-TTY guard"))
38498
- }, ({ target, force }) => gen(function* () {
39640
+ })).pipe(withDescription("write a snippet by path"));
39641
+ const del$1 = make$14("rm", {
39642
+ target: text$6({ name: "pathOrId" }),
39643
+ force: boolean("force").pipe(withDescription$3("skip the non-TTY guard")),
39644
+ recursive: boolean("recursive")
39645
+ }, ({ target, force, recursive }) => gen(function* () {
38499
39646
  if (!force && !process.stdin.isTTY) return yield* fail$2(new ValidationFailed({ message: "refusing to delete without --force in non-TTY context" }));
38500
39647
  const api = yield* Api;
38501
39648
  const renderer = yield* Renderer;
38502
- const id = yield* resolveSnippetId(api, target);
38503
- yield* api.request(`/snippets/${id}`, { method: "DELETE" });
38504
- yield* renderer.emitSuccess({ deleted: id });
38505
- })).pipe(withDescription("delete a snippet"));
38506
- const edit = make$14("edit", { target: text$6({ name: "idOrRefName" }) }, ({ target }) => gen(function* () {
39649
+ if (isSnowflakeId(target)) yield* api.request(`/snippets/${target}`, { method: "DELETE" });
39650
+ else yield* api.request("/snippets/by-path", {
39651
+ method: "DELETE",
39652
+ query: {
39653
+ path: target,
39654
+ recursive
39655
+ }
39656
+ });
39657
+ yield* renderer.emitSuccess({ deleted: target });
39658
+ })).pipe(withDescription("delete a snippet path"));
39659
+ const edit = make$14("edit", { target: text$6({ name: "pathOrId" }) }, ({ target }) => gen(function* () {
38507
39660
  const api = yield* Api;
38508
39661
  const editor = yield* Editor;
38509
39662
  const renderer = yield* Renderer;
38510
- const id = yield* resolveSnippetId(api, target);
38511
- const current = unwrapDoc(yield* api.request(`/snippets/${id}`));
39663
+ const current = unwrapDoc(yield* api.request(isSnowflakeId(target) ? `/snippets/${target}` : "/snippets/by-path", isSnowflakeId(target) ? void 0 : { query: { path: target } }));
38512
39664
  const initial = typeof current.raw === "string" ? current.raw : "";
38513
39665
  const next = yield* editor.openEditor({
38514
- filename: `snippet-${id}.${extForType(current.type)}`,
39666
+ filename: `snippet.${extForType(current.type)}`,
38515
39667
  initialContent: initial
38516
39668
  });
38517
39669
  if (next.trim() === initial.trim()) {
@@ -38522,62 +39674,164 @@ const edit = make$14("edit", { target: text$6({ name: "idOrRefName" }) }, ({ tar
38522
39674
  ...pickSnippetFields(current),
38523
39675
  raw: next
38524
39676
  };
38525
- const res = yield* api.request(`/snippets/${id}`, {
39677
+ const res = yield* api.request(isSnowflakeId(target) ? `/snippets/${target}` : "/snippets/by-path", {
38526
39678
  method: "PUT",
38527
39679
  body
38528
39680
  });
38529
39681
  yield* renderer.emitSuccess(res);
38530
39682
  })).pipe(withDescription("edit snippet content via $EDITOR"));
38531
- const get$1 = make$14("get", { target: text$6({ name: "idOrRefName" }) }, ({ target }) => gen(function* () {
39683
+ const get$1 = make$14("get", { target: text$6({ name: "pathOrId" }) }, ({ target }) => gen(function* () {
38532
39684
  const api = yield* Api;
38533
39685
  const renderer = yield* Renderer;
38534
- const id = yield* resolveSnippetId(api, target);
38535
- const res = yield* api.request(`/snippets/${id}`);
39686
+ const res = yield* api.request(isSnowflakeId(target) ? `/snippets/${target}` : "/snippets/by-path", isSnowflakeId(target) ? void 0 : { query: { path: target } });
38536
39687
  yield* renderer.emitSuccess(res);
38537
- })).pipe(withDescription("get a snippet by id or reference/name"));
39688
+ })).pipe(withDescription("get a snippet by path or id"));
38538
39689
  //#endregion
38539
39690
  //#region src/cli/snippet/list.ts
38540
- const page = integer("page").pipe(optional$4);
38541
- const size = integer("size").pipe(optional$4);
38542
- const grouped = boolean("grouped");
39691
+ const prefix = text$6({ name: "prefix" }).pipe(optional$6);
39692
+ const limit = integer("limit").pipe(optional$4);
39693
+ const recursive$1 = boolean("recursive");
38543
39694
  const unwrap = (value) => getOrUndefined(value);
38544
- const list$1 = make$14("list", {
38545
- page,
38546
- size,
38547
- grouped
38548
- }, ({ page, size, grouped }) => gen(function* () {
39695
+ const list$1 = make$14("ls", {
39696
+ prefix,
39697
+ limit,
39698
+ recursive: recursive$1
39699
+ }, ({ prefix, limit, recursive }) => gen(function* () {
38549
39700
  const api = yield* Api;
38550
39701
  const renderer = yield* Renderer;
38551
- const res = yield* api.request(grouped ? "/snippets/group" : "/snippets", { query: {
38552
- page: unwrap(page),
38553
- size: unwrap(size)
39702
+ const res = yield* api.request("/snippets", { query: {
39703
+ prefix: unwrap(prefix),
39704
+ limit: unwrap(limit),
39705
+ recursive
38554
39706
  } });
38555
39707
  yield* renderer.emitSuccess(res);
38556
- })).pipe(withDescription("list snippets"));
38557
- const update$1 = make$14("update", {
38558
- target: text$6({ name: "idOrRefName" }),
38559
- name: text$4("name").pipe(optional$4),
38560
- ...snippetWriteOptions
38561
- }, ({ target, name, ...rest }) => gen(function* () {
38562
- const flags = toSnippetFlagInputs(rest);
39708
+ })).pipe(withDescription("list snippet VFS paths"));
39709
+ //#endregion
39710
+ //#region src/cli/snippet/_sync.ts
39711
+ const IGNORED_NAMES = new Set([
39712
+ ".git",
39713
+ "node_modules",
39714
+ "__pycache__",
39715
+ ".DS_Store"
39716
+ ]);
39717
+ function normalizeRemotePrefix(prefix) {
39718
+ const normalized = prefix.replaceAll(/^\/+|\/+$/g, "");
39719
+ return normalized ? `${normalized}/` : "";
39720
+ }
39721
+ function detectSnippetType(remotePath, raw) {
39722
+ if (remotePath.endsWith("/SKILL.md") && raw.startsWith("---\n")) return "skill";
39723
+ if (remotePath.endsWith(".json")) return "json";
39724
+ if (remotePath.endsWith(".json5")) return "json5";
39725
+ if (remotePath.endsWith(".yaml") || remotePath.endsWith(".yml")) return "yaml";
39726
+ return "text";
39727
+ }
39728
+ async function walkTextFiles(root) {
39729
+ const files = [];
39730
+ async function visit(current) {
39731
+ const entries = await fs$1.readdir(current, { withFileTypes: true });
39732
+ for (const entry of entries) {
39733
+ if (IGNORED_NAMES.has(entry.name)) continue;
39734
+ const fullPath = path.join(current, entry.name);
39735
+ if (entry.isDirectory()) await visit(fullPath);
39736
+ else if (entry.isFile()) files.push(fullPath);
39737
+ }
39738
+ }
39739
+ await visit(root);
39740
+ return files.sort();
39741
+ }
39742
+ function toRemotePath(prefix, localRoot, file) {
39743
+ const relative = path.relative(localRoot, file).split(path.sep).join("/");
39744
+ return `${normalizeRemotePrefix(prefix)}${relative}`;
39745
+ }
39746
+ function toLocalPath(localRoot, prefix, remotePath) {
39747
+ const normalizedPrefix = normalizeRemotePrefix(prefix);
39748
+ const relative = normalizedPrefix ? remotePath.slice(normalizedPrefix.length) : remotePath;
39749
+ return path.join(localRoot, ...relative.split("/"));
39750
+ }
39751
+ const pull = make$14("pull", {
39752
+ remotePrefix: text$6({ name: "remotePrefix" }),
39753
+ localDir: text$6({ name: "localDir" }),
39754
+ dryRun: boolean("dry-run")
39755
+ }, ({ remotePrefix, localDir, dryRun }) => gen(function* () {
38563
39756
  const api = yield* Api;
38564
39757
  const renderer = yield* Renderer;
38565
- const id = yield* resolveSnippetId(api, target);
38566
- const current = pickSnippetFields(unwrapDoc(yield* api.request(`/snippets/${id}`)));
38567
- const raw = yield* resolveRawSource(flags, { implicitStdin: false });
38568
- const body = {
38569
- ...current,
38570
- ...snippetFieldsOf(flags)
38571
- };
38572
- const n = getOrUndefined(name);
38573
- if (n !== void 0) body.name = n;
38574
- if (raw !== void 0) body.raw = raw;
38575
- const res = yield* api.request(`/snippets/${id}`, {
38576
- method: "PUT",
38577
- body
39758
+ const list = yield* api.request("/snippets", { query: {
39759
+ prefix: remotePrefix,
39760
+ recursive: true,
39761
+ limit: 1e3
39762
+ } });
39763
+ const objects = list?.data?.objects ?? list?.objects ?? [];
39764
+ const planned = [];
39765
+ for (const object of objects) {
39766
+ const detail = yield* api.request("/snippets/by-path", { query: { path: object.path } });
39767
+ const row = detail?.data ?? detail;
39768
+ const raw = typeof row?.raw === "string" ? row.raw : "";
39769
+ const local = toLocalPath(localDir, remotePrefix, object.path);
39770
+ planned.push({
39771
+ remote: object.path,
39772
+ local
39773
+ });
39774
+ if (!dryRun) {
39775
+ yield* tryPromise(() => fs$1.mkdir(path.dirname(local), { recursive: true }));
39776
+ yield* tryPromise(() => fs$1.writeFile(local, raw, "utf8"));
39777
+ }
39778
+ }
39779
+ yield* renderer.emitSuccess({
39780
+ dryRun,
39781
+ pulled: planned
39782
+ });
39783
+ })).pipe(withDescription("pull a snippet VFS prefix into a local directory"));
39784
+ const push = make$14("push", {
39785
+ localDir: text$6({ name: "localDir" }),
39786
+ remotePrefix: text$6({ name: "remotePrefix" }),
39787
+ dryRun: boolean("dry-run"),
39788
+ forceType: choice("type", SNIPPET_TYPES).pipe(optional$4)
39789
+ }, ({ localDir, remotePrefix, dryRun, forceType }) => gen(function* () {
39790
+ const api = yield* Api;
39791
+ const renderer = yield* Renderer;
39792
+ const files = yield* tryPromise(() => walkTextFiles(localDir));
39793
+ const typeOverride = getOrUndefined(forceType);
39794
+ const planned = [];
39795
+ for (const file of files) {
39796
+ const raw = yield* tryPromise(() => fs$1.readFile(file, "utf8"));
39797
+ const remote = toRemotePath(remotePrefix, localDir, file);
39798
+ const type = typeOverride ?? detectSnippetType(remote, raw);
39799
+ planned.push({
39800
+ local: file,
39801
+ remote,
39802
+ type
39803
+ });
39804
+ if (!dryRun) yield* api.request("/snippets/by-path", {
39805
+ method: "PUT",
39806
+ body: {
39807
+ path: remote,
39808
+ raw,
39809
+ type
39810
+ }
39811
+ });
39812
+ }
39813
+ yield* renderer.emitSuccess({
39814
+ dryRun,
39815
+ pushed: planned
39816
+ });
39817
+ })).pipe(withDescription("push a local directory into snippet VFS"));
39818
+ const update$1 = make$14("mv", {
39819
+ from: text$6({ name: "from" }),
39820
+ to: text$6({ name: "to" }),
39821
+ recursive: boolean("recursive")
39822
+ }, ({ from, to, recursive }) => gen(function* () {
39823
+ const api = yield* Api;
39824
+ const renderer = yield* Renderer;
39825
+ const res = yield* api.request("/snippets/move", {
39826
+ method: "POST",
39827
+ body: {
39828
+ from,
39829
+ to,
39830
+ recursive
39831
+ }
38578
39832
  });
38579
39833
  yield* renderer.emitSuccess(res);
38580
- })).pipe(withDescription("update a snippet"));
39834
+ })).pipe(withDescription("move or rename a snippet path"));
38581
39835
  //#endregion
38582
39836
  //#region src/cli/snippet/index.ts
38583
39837
  const help$1 = registerCommandHelp({
@@ -38586,47 +39840,68 @@ const help$1 = registerCommandHelp({
38586
39840
  skillChapter: "commands-snippet",
38587
39841
  verbs: [
38588
39842
  {
38589
- name: "list",
39843
+ name: "ls",
38590
39844
  args: [
38591
- "[--page <n>]",
38592
- "[--size <n>]",
38593
- "[--grouped]"
39845
+ "[prefix]",
39846
+ "[--recursive]",
39847
+ "[--limit <n>]"
38594
39848
  ],
38595
- description: "list snippets"
39849
+ description: "list snippet paths"
38596
39850
  },
38597
39851
  {
38598
39852
  name: "get",
38599
- args: ["<id|ref/name>"],
39853
+ args: ["<path|id>"],
38600
39854
  description: "show a single snippet (full, includes raw)"
38601
39855
  },
38602
39856
  {
38603
- name: "create",
39857
+ name: "put",
38604
39858
  args: [
38605
- "--name <n>",
38606
- "[--reference <r>]",
39859
+ "<path>",
38607
39860
  "[--type <t>]",
38608
- "[--file <path|-> | --raw <text> | stdin]",
38609
- "..."
39861
+ "[--file <path|-> | --raw <text>]"
38610
39862
  ],
38611
- description: "create a snippet"
39863
+ description: "write a snippet"
38612
39864
  },
38613
39865
  {
38614
- name: "update",
39866
+ name: "mv",
38615
39867
  args: [
38616
- "<id|ref/name>",
38617
- "[--file <path|-> | --raw <text>]",
38618
- "..."
39868
+ "<from>",
39869
+ "<to>",
39870
+ "[--recursive]"
39871
+ ],
39872
+ description: "move a snippet path"
39873
+ },
39874
+ {
39875
+ name: "push",
39876
+ args: [
39877
+ "<local-dir>",
39878
+ "<remote-prefix>",
39879
+ "[--dry-run]",
39880
+ "[--type <t>]"
39881
+ ],
39882
+ description: "sync local files into snippet VFS"
39883
+ },
39884
+ {
39885
+ name: "pull",
39886
+ args: [
39887
+ "<remote-prefix>",
39888
+ "<local-dir>",
39889
+ "[--dry-run]"
38619
39890
  ],
38620
- description: "update a snippet"
39891
+ description: "sync snippet VFS files into a local directory"
38621
39892
  },
38622
39893
  {
38623
39894
  name: "edit",
38624
- args: ["<id|ref/name>"],
39895
+ args: ["<path|id>"],
38625
39896
  description: "edit snippet content via $EDITOR"
38626
39897
  },
38627
39898
  {
38628
- name: "delete",
38629
- args: ["<id|ref/name>", "[--force]"],
39899
+ name: "rm",
39900
+ args: [
39901
+ "<path|id>",
39902
+ "[--recursive]",
39903
+ "[--force]"
39904
+ ],
38630
39905
  description: "delete a snippet"
38631
39906
  }
38632
39907
  ]
@@ -38636,6 +39911,8 @@ const snippetCmd = make$14("snippet").pipe(withDescription(help$1.description),
38636
39911
  get$1,
38637
39912
  create$1,
38638
39913
  update$1,
39914
+ push,
39915
+ pull,
38639
39916
  edit,
38640
39917
  del$1
38641
39918
  ]));
@@ -41320,6 +42597,10 @@ const resolveCliVersion = () => {
41320
42597
  return "0.0.0-unknown";
41321
42598
  };
41322
42599
  const CLI_VERSION = resolveCliVersion();
42600
+ for (const stream of [process.stdout, process.stderr]) {
42601
+ const handle = stream._handle;
42602
+ if (handle && typeof handle.setBlocking === "function") handle.setBlocking(true);
42603
+ }
41323
42604
  if (import.meta.url.endsWith("/src/bin/mxs.ts")) process.env[LOCAL_DEV_ENV] ??= "1";
41324
42605
  const rootCmd = make$14("mxs", {}, () => flatMap$1(Renderer, (r) => r.emitInfo("mxs: mx-space CLI — see `mxs --help` for the command list, or `mxs <command> --help` for details."))).pipe(withDescription("mx-space CLI — manage your mx-core blog from the command line."), withSubcommands([
41325
42606
  authCmd,