@cartanova/qgrid-cli 2.10.10 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dist/_virtual/_rolldown/runtime.js +1 -10
- package/bundle/dist/application/monit/log-buffer.js +12 -6
- package/bundle/dist/application/monit/monit.frame.js +11 -3
- package/bundle/dist/application/monit/monit.types.js +1 -1
- package/bundle/dist/application/qgrid/conv-routing.js +9 -6
- package/bundle/dist/application/qgrid/expired-token-reminder.js +2 -2
- package/bundle/dist/application/qgrid/oauth.js +31 -4
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -1
- package/bundle/dist/application/qgrid/qgrid-response-format.js +21 -19
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +40 -33
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +128 -93
- package/bundle/dist/application/qgrid/qgrid.frame.js +930 -49
- package/bundle/dist/application/qgrid/qgrid.types.js +212 -5
- package/bundle/dist/application/qgrid/schema-prompt.js +75 -48
- package/bundle/dist/application/qgrid/slack-user-map.js +1 -1
- package/bundle/dist/application/qgrid/token-death.js +1 -1
- package/bundle/dist/application/qgrid/token-subscriber.js +83 -30
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -1
- package/bundle/dist/application/qgrid/token-window-keepalive.js +8 -6
- package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -13
- package/bundle/dist/application/qgrid/tool-emulation.js +19 -15
- package/bundle/dist/application/request-log/json-schema-type-text.js +29 -12
- package/bundle/dist/application/request-log/request-log.model.js +83 -70
- package/bundle/dist/application/request-log/request-log.types.js +1 -1
- package/bundle/dist/application/request-log/zod-code-format.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.model.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -1
- package/bundle/dist/application/setting/setting.constant.js +1 -1
- package/bundle/dist/application/setting/setting.model.js +2 -2
- package/bundle/dist/application/setting/setting.store.js +2 -2
- package/bundle/dist/application/setting/setting.types.js +1 -1
- package/bundle/dist/application/sonamu.generated.js +32 -16
- package/bundle/dist/application/sonamu.generated.sso.js +1 -1
- package/bundle/dist/application/token/token.model.js +26 -9
- package/bundle/dist/application/token/token.types.js +20 -3
- package/bundle/dist/i18n/en.js +15 -1
- package/bundle/dist/i18n/ko.js +15 -1
- package/bundle/dist/i18n/sd.generated.js +1 -1
- package/bundle/dist/migrations/20260807133553_manual__backfill_request_log_cost.js +8 -6
- package/bundle/dist/server-bootstrap.js +4 -2
- package/bundle/dist/server-error-handler.js +1 -1
- package/bundle/dist/sonamu.config.js +37 -8
- package/bundle/dist/startup-migrations.js +17 -7
- package/bundle/dist/testing/global.js +1 -1
- package/bundle/dist/testing/schema-bench.js +0 -0
- package/bundle/dist/testing/test-database-name.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +11 -5
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +4 -4
- package/bundle/dist/utils/providers/anthropic/anthropic-thinking.js +1 -1
- package/bundle/dist/utils/providers/anthropic/claude-session.js +20 -19
- package/bundle/dist/utils/providers/anthropic/fence-strip.js +1 -1
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +49 -23
- package/bundle/dist/utils/providers/common/credentials.js +5 -1
- package/bundle/dist/utils/providers/common/effort.js +3 -3
- package/bundle/dist/utils/providers/common/model-cost.js +69 -14
- package/bundle/dist/utils/providers/common/provider-types.js +29 -1
- package/bundle/dist/utils/providers/common/schema-validation.js +78 -40
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -1
- package/bundle/dist/utils/providers/common/strictifier.js +62 -43
- package/bundle/dist/utils/providers/common/thinking.js +3 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -1
- package/bundle/dist/utils/providers/grok/grok-backend-protocol.js +427 -0
- package/bundle/dist/utils/providers/grok/grok-constants.js +55 -0
- package/bundle/dist/utils/providers/grok/grok-direct-client.js +196 -0
- package/bundle/dist/utils/providers/grok/grok-dispatcher.js +1313 -0
- package/bundle/dist/utils/providers/grok/grok-headers.js +118 -0
- package/bundle/dist/utils/providers/grok/grok-media-client.js +420 -0
- package/bundle/dist/utils/providers/grok/grok-models.js +114 -0
- package/bundle/dist/utils/providers/grok/grok-oauth.js +455 -0
- package/bundle/dist/utils/providers/grok/grok-quota.js +119 -0
- package/bundle/dist/utils/providers/grok/grok-refresh.js +192 -0
- package/bundle/dist/utils/providers/grok/grok-types.js +186 -0
- package/bundle/dist/utils/providers/grok/grok-voice-client.js +199 -0
- package/bundle/dist/utils/providers/grok/index.js +11 -0
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +111 -83
- package/bundle/dist/utils/providers/openai/openai-callback-relay.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-direct-client.js +23 -7
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +143 -106
- package/bundle/dist/utils/providers/openai/openai-image-generation.js +48 -33
- package/bundle/dist/utils/providers/openai/openai-oauth.js +28 -13
- package/bundle/dist/utils/providers/openai/openai-quota.js +38 -27
- package/bundle/dist/utils/providers/openai/openai-refresh.js +17 -9
- package/bundle/dist/utils/providers/openai/openai-sse.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-transport-config.js +1 -1
- package/bundle/dist/utils/quiet-hours.js +1 -1
- package/bundle/dist/utils/slack-notify.js +14 -8
- package/bundle/dist/utils/subset-loaders.js +4 -5
- package/bundle/src/application/monit/log-buffer.ts +23 -9
- package/bundle/src/application/monit/monit.frame.ts +22 -5
- package/bundle/src/application/monit/monit.types.ts +6 -0
- package/bundle/src/application/qgrid/conv-routing.test.ts +76 -4
- package/bundle/src/application/qgrid/conv-routing.ts +35 -9
- package/bundle/src/application/qgrid/expired-token-reminder.ts +9 -1
- package/bundle/src/application/qgrid/oauth.ts +51 -15
- package/bundle/src/application/qgrid/qgrid-image-generation.ts +9 -0
- package/bundle/src/application/qgrid/qgrid-response-format.ts +50 -25
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +19 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +84 -40
- package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +97 -0
- package/bundle/src/application/qgrid/qgrid.dispatcher.ts +274 -126
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +1013 -3
- package/bundle/src/application/qgrid/qgrid.frame.ts +1415 -60
- package/bundle/src/application/qgrid/qgrid.types.ts +335 -0
- package/bundle/src/application/qgrid/schema-prompt.ts +105 -41
- package/bundle/src/application/qgrid/slack-user-map.ts +5 -0
- package/bundle/src/application/qgrid/token-death.ts +4 -0
- package/bundle/src/application/qgrid/token-subscriber.test.ts +21 -19
- package/bundle/src/application/qgrid/token-subscriber.ts +186 -53
- package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -0
- package/bundle/src/application/qgrid/token-window-keepalive.ts +49 -6
- package/bundle/src/application/qgrid/tool-emulation-schema.ts +33 -29
- package/bundle/src/application/qgrid/tool-emulation.ts +52 -27
- package/bundle/src/application/request-log/json-schema-type-text.test.ts +5 -5
- package/bundle/src/application/request-log/json-schema-type-text.ts +81 -26
- package/bundle/src/application/request-log/request-log.model.test.ts +111 -4
- package/bundle/src/application/request-log/request-log.model.ts +277 -146
- package/bundle/src/application/request-log/request-log.types.ts +6 -0
- package/bundle/src/application/request-log/zod-code-format.ts +11 -0
- package/bundle/src/application/request-log-step/request-log-step.model.ts +1 -0
- package/bundle/src/application/request-log-step/request-log-step.types.ts +2 -0
- package/bundle/src/application/setting/setting.constant.ts +9 -0
- package/bundle/src/application/setting/setting.model.ts +12 -2
- package/bundle/src/application/setting/setting.store.ts +5 -1
- package/bundle/src/application/setting/setting.types.ts +8 -0
- package/bundle/src/application/sonamu.generated.http +133 -0
- package/bundle/src/application/sonamu.generated.sso.ts +2 -0
- package/bundle/src/application/sonamu.generated.ts +15 -0
- package/bundle/src/application/token/token.identity.test.ts +20 -0
- package/bundle/src/application/token/token.model.ts +66 -7
- package/bundle/src/application/token/token.types.ts +24 -1
- package/bundle/src/i18n/en.ts +19 -0
- package/bundle/src/i18n/ko.ts +21 -0
- package/bundle/src/i18n/sd.generated.ts +23 -2
- package/bundle/src/migrations/20260807133553_manual__backfill_request_log_cost.ts +16 -8
- package/bundle/src/server-bootstrap.ts +4 -2
- package/bundle/src/server-error-handler.ts +1 -0
- package/bundle/src/sonamu.config.ts +69 -7
- package/bundle/src/startup-migrations.ts +27 -9
- package/bundle/src/testing/global.ts +20 -0
- package/bundle/src/testing/schema-bench.ts +105 -30
- package/bundle/src/testing/test-database-name.ts +2 -0
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +8 -0
- package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +41 -6
- package/bundle/src/utils/providers/anthropic/anthropic-quota.ts +7 -3
- package/bundle/src/utils/providers/anthropic/anthropic-thinking.ts +6 -0
- package/bundle/src/utils/providers/anthropic/claude-session.ts +58 -24
- package/bundle/src/utils/providers/anthropic/fence-strip.ts +11 -0
- package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +110 -45
- package/bundle/src/utils/providers/common/credentials.ts +8 -0
- package/bundle/src/utils/providers/common/effort.ts +9 -2
- package/bundle/src/utils/providers/common/model-cost.test.ts +48 -1
- package/bundle/src/utils/providers/common/model-cost.ts +259 -158
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +98 -2
- package/bundle/src/utils/providers/common/provider-types.ts +46 -3
- package/bundle/src/utils/providers/common/schema-validation.test.ts +5 -1
- package/bundle/src/utils/providers/common/schema-validation.ts +124 -56
- package/bundle/src/utils/providers/common/smooth-weighted-round-robin.ts +4 -0
- package/bundle/src/utils/providers/common/strictifier.ts +185 -59
- package/bundle/src/utils/providers/common/thinking.ts +2 -2
- package/bundle/src/utils/providers/common/ttft.ts +4 -2
- package/bundle/src/utils/providers/grok/__fixtures__/golden-responses-1.0.60.json +164 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.test.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.ts +721 -0
- package/bundle/src/utils/providers/grok/grok-constants.ts +105 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.test.ts +179 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.ts +313 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.test.ts +1395 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.ts +2105 -0
- package/bundle/src/utils/providers/grok/grok-headers.test.ts +149 -0
- package/bundle/src/utils/providers/grok/grok-headers.ts +199 -0
- package/bundle/src/utils/providers/grok/grok-media-client.test.ts +446 -0
- package/bundle/src/utils/providers/grok/grok-media-client.ts +703 -0
- package/bundle/src/utils/providers/grok/grok-models.test.ts +96 -0
- package/bundle/src/utils/providers/grok/grok-models.ts +161 -0
- package/bundle/src/utils/providers/grok/grok-oauth.test.ts +406 -0
- package/bundle/src/utils/providers/grok/grok-oauth.ts +771 -0
- package/bundle/src/utils/providers/grok/grok-quota.test.ts +142 -0
- package/bundle/src/utils/providers/grok/grok-quota.ts +198 -0
- package/bundle/src/utils/providers/grok/grok-refresh.test.ts +239 -0
- package/bundle/src/utils/providers/grok/grok-refresh.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-types.test.ts +252 -0
- package/bundle/src/utils/providers/grok/grok-types.ts +374 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.test.ts +321 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.ts +284 -0
- package/bundle/src/utils/providers/grok/index.ts +20 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +221 -137
- package/bundle/src/utils/providers/openai/openai-callback-relay.ts +12 -1
- package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
- package/bundle/src/utils/providers/openai/openai-direct-client.ts +111 -21
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +322 -169
- package/bundle/src/utils/providers/openai/openai-image-generation.ts +116 -36
- package/bundle/src/utils/providers/openai/openai-oauth.ts +48 -20
- package/bundle/src/utils/providers/openai/openai-quota.ts +77 -46
- package/bundle/src/utils/providers/openai/openai-refresh.ts +42 -18
- package/bundle/src/utils/providers/openai/openai-sse.ts +27 -3
- package/bundle/src/utils/providers/openai/openai-transport-config.ts +2 -0
- package/bundle/src/utils/quiet-hours.ts +12 -1
- package/bundle/src/utils/slack-notify.ts +44 -13
- package/bundle/src/utils/subset-loaders.ts +7 -7
- package/bundle/web-dist/client/assets/clsx-5XM_pHvN.js +1 -0
- package/bundle/web-dist/client/assets/index-BA7uQ-6c.js +31 -0
- package/bundle/web-dist/client/assets/index-Be2qCZmI.css +1 -0
- package/bundle/web-dist/client/assets/logs-C47OJGEI.js +1 -0
- package/bundle/web-dist/client/assets/monit-BS9no0dU.js +4 -0
- package/bundle/web-dist/client/assets/plus-sdACTfH0.js +1 -0
- package/bundle/web-dist/client/assets/refresh-cw-CY8o_1cT.js +1 -0
- package/bundle/web-dist/client/assets/request-model-BRtFuZvj.js +1 -0
- package/bundle/web-dist/client/assets/routes-kqgkUxE8.js +5 -0
- package/bundle/web-dist/client/assets/{services.generated-NP-ValHd.js → services.generated-CefiDXEv.js} +5 -5
- package/bundle/web-dist/client/assets/settings-DNDvFGSw.js +1 -0
- package/bundle/web-dist/client/assets/show-u8Np69q3.js +2 -0
- package/bundle/web-dist/client/assets/tokens-QvP410NW.js +1 -0
- package/bundle/web-dist/client/assets/total-cost-MnfKU8IN.js +1 -0
- package/bundle/web-dist/client/assets/use-oauth-login-flow-Bzdh28Ws.js +1 -0
- package/bundle/web-dist/client/assets/use-update-token-mutation-CfJKaxmR.js +1 -0
- package/bundle/web-dist/client/assets/vendor-react-CUFFrVN9.js +244 -0
- package/bundle/web-dist/client/assets/vendor-tanstack-Bf_jag9G.js +1 -0
- package/bundle/web-dist/client/index.html +6 -6
- package/bundle/web-dist/server/assets/clsx-D_N5PN_2.js +16 -0
- package/bundle/web-dist/server/assets/{lazyRouteComponent-CgBdabgd.js → lazyRouteComponent-D8iTIHyn.js} +129 -2
- package/bundle/web-dist/server/assets/logs-B3OTd9hy.js +825 -0
- package/bundle/web-dist/server/assets/{monit-ZPt66W5M.js → monit-B2hqorPe.js} +385 -126
- package/bundle/web-dist/server/assets/plus-DwG7h9kq.js +28 -0
- package/bundle/web-dist/server/assets/{react-dom-Ds75e4Jl.js → react-dom-BIYQzBqG.js} +2 -129
- package/bundle/web-dist/server/assets/refresh-cw-mMBkwOq0.js +44 -0
- package/bundle/web-dist/server/assets/{request-model-DjGldb-h.js → request-model-I6OdODSH.js} +15 -6
- package/bundle/web-dist/server/assets/{routes-Ct-k7nBA.js → routes-B95YlUv2.js} +760 -213
- package/bundle/web-dist/server/assets/{services.generated-BA4AcAf5.js → services.generated-DQATJ6qf.js} +12820 -12194
- package/bundle/web-dist/server/assets/settings-C3gbGk0m.js +830 -0
- package/bundle/web-dist/server/assets/{show-LSFIzvO2.js → show-Bxaj3rhH.js} +1350 -418
- package/bundle/web-dist/server/assets/tokens-CZjH3cB7.js +1038 -0
- package/bundle/web-dist/server/assets/total-cost-fTE9Xy82.js +18 -0
- package/bundle/web-dist/server/assets/use-oauth-login-flow-CKDHgc3U.js +2379 -0
- package/bundle/web-dist/server/assets/{use-update-token-mutation-pkArIzCP.js → use-update-token-mutation-BEbgOzaa.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +4295 -22810
- package/dist/cli.js +9 -9
- package/package.json +4 -11
- package/postinstall.mjs +12 -0
- package/skills/qgrid/SKILL.md +1 -0
- package/skills/qgrid/references/cli-env-and-server-boot.md +4 -1
- package/skills/qgrid/references/decision-rationale.md +23 -0
- package/skills/qgrid/references/grok-runtime.md +89 -0
- package/skills/qgrid/references/provider-runtime-differences.md +30 -29
- package/skills/qgrid/references/repo-map.md +10 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +56 -3
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -406
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +0 -1507
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2756
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +0 -922
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -121
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +0 -51
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +0 -1317
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +0 -561
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +0 -40
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +0 -272
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +0 -381
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +0 -51
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2986
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1126
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -517
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -101
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_5b35fc1fb85d2af4d105e0d74f940f50/node_modules/vite/dist/node/module-runner.js +0 -1265
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -9
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +0 -46
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -119
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +0 -3044
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -59
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/index.js +0 -28
- package/bundle/dist/testing/setup-mocks.js +0 -16
- package/bundle/src/testing/setup-mocks.ts +0 -44
- package/bundle/web-dist/client/assets/index-Bw2s88Ot.css +0 -1
- package/bundle/web-dist/client/assets/index-DZwzUfI-.js +0 -106
- package/bundle/web-dist/client/assets/logs-Cog79DU5.js +0 -1
- package/bundle/web-dist/client/assets/monit-2auznBys.js +0 -1
- package/bundle/web-dist/client/assets/plus-B62CuqT8.js +0 -1
- package/bundle/web-dist/client/assets/refresh-cw-NNcU0Cmq.js +0 -1
- package/bundle/web-dist/client/assets/request-model-CojtinqK.js +0 -1
- package/bundle/web-dist/client/assets/routes-B0lTeLK-.js +0 -5
- package/bundle/web-dist/client/assets/settings-D8ZxZGSJ.js +0 -1
- package/bundle/web-dist/client/assets/show-CFSERlnM.js +0 -2
- package/bundle/web-dist/client/assets/tokens-CZXUyI7O.js +0 -1
- package/bundle/web-dist/client/assets/use-oauth-login-flow-hboOs3wG.js +0 -1
- package/bundle/web-dist/client/assets/use-update-token-mutation-BQHS0byG.js +0 -1
- package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
- package/bundle/web-dist/client/assets/vendor-tanstack-DJRQAbrY.js +0 -1
- package/bundle/web-dist/server/assets/logs-BMyR98rU.js +0 -509
- package/bundle/web-dist/server/assets/plus-BZ9I0VgC.js +0 -19
- package/bundle/web-dist/server/assets/refresh-cw-CztCFis-.js +0 -23
- package/bundle/web-dist/server/assets/settings-CBUZ47Xx.js +0 -461
- package/bundle/web-dist/server/assets/tokens-DxrBW512.js +0 -448
- package/bundle/web-dist/server/assets/use-oauth-login-flow-Gn8flMK5.js +0 -178
- package/dist/cli.d.ts +0 -10
- /package/bundle/web-dist/client/assets/{cost-DH2jZbrw.js → cost-DB3HbU7T.js} +0 -0
- /package/bundle/web-dist/client/assets/{preload-helper-ca-nBW7U.js → preload-helper-DWTEM3RW.js} +0 -0
- /package/bundle/web-dist/server/assets/{cost-eEHeTRT5.js → cost-BC9yzyA9.js} +0 -0
package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import "../../../../../tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js";
|
|
2
|
-
import { format } from "../../../../../@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js";
|
|
3
|
-
import "./display.js";
|
|
4
|
-
import "./constants.js";
|
|
5
|
-
import "./helpers.js";
|
|
6
|
-
import { getDefaultFormatOptions, printDiffOrStringify } from "./diff.js";
|
|
7
|
-
import { serializeValue } from "./serialize.js";
|
|
8
|
-
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/error.js
|
|
9
|
-
function processError(_err, diffOptions, seen = /* @__PURE__ */ new WeakSet()) {
|
|
10
|
-
if (!_err || typeof _err !== "object") return { message: String(_err) };
|
|
11
|
-
const err = _err;
|
|
12
|
-
if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0) {
|
|
13
|
-
const options = {
|
|
14
|
-
...diffOptions,
|
|
15
|
-
...err.diffOptions
|
|
16
|
-
};
|
|
17
|
-
err.diff = printDiffOrStringify(err.actual, err.expected, options, err);
|
|
18
|
-
err.expected = prettifyValue(err.expected, options);
|
|
19
|
-
err.actual = prettifyValue(err.actual, options);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
if (!seen.has(err) && typeof err.cause === "object") {
|
|
23
|
-
seen.add(err);
|
|
24
|
-
err.cause = processError(err.cause, diffOptions, seen);
|
|
25
|
-
}
|
|
26
|
-
} catch {}
|
|
27
|
-
try {
|
|
28
|
-
return serializeValue(err);
|
|
29
|
-
} catch (e) {
|
|
30
|
-
return serializeValue(/* @__PURE__ */ new Error(`Failed to fully serialize error: ${e?.message}\nInner error message: ${err?.message}`));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function prettifyValue(value, options) {
|
|
34
|
-
if (typeof value !== "string") return format(value, getDefaultFormatOptions(options));
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
//#endregion
|
|
38
|
-
export { processError, serializeValue as serializeError };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3QrdXRpbHNANC4xLjEwL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3QvZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnQHZpdGVzdC9wcmV0dHktZm9ybWF0JztcbmltcG9ydCB7IHByaW50RGlmZk9yU3RyaW5naWZ5LCBnZXREZWZhdWx0Rm9ybWF0T3B0aW9ucyB9IGZyb20gJy4vZGlmZi5qcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVWYWx1ZSB9IGZyb20gJy4vc2VyaWFsaXplLmpzJztcbmltcG9ydCAndGlueXJhaW5ib3cnO1xuaW1wb3J0ICcuL2Rpc3BsYXkuanMnO1xuaW1wb3J0ICcuL2hlbHBlcnMuanMnO1xuaW1wb3J0ICcuL2NvbnN0YW50cy5qcyc7XG5cbmZ1bmN0aW9uIHByb2Nlc3NFcnJvcihfZXJyLCBkaWZmT3B0aW9ucywgc2VlbiA9IG5ldyBXZWFrU2V0KCkpIHtcblx0aWYgKCFfZXJyIHx8IHR5cGVvZiBfZXJyICE9PSBcIm9iamVjdFwiKSB7XG5cdFx0cmV0dXJuIHsgbWVzc2FnZTogU3RyaW5nKF9lcnIpIH07XG5cdH1cblx0Y29uc3QgZXJyID0gX2Vycjtcblx0aWYgKGVyci5zaG93RGlmZiB8fCBlcnIuc2hvd0RpZmYgPT09IHVuZGVmaW5lZCAmJiBlcnIuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBlcnIuYWN0dWFsICE9PSB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBvcHRpb25zID0ge1xuXHRcdFx0Li4uZGlmZk9wdGlvbnMsXG5cdFx0XHQuLi5lcnIuZGlmZk9wdGlvbnNcblx0XHR9O1xuXHRcdGVyci5kaWZmID0gcHJpbnREaWZmT3JTdHJpbmdpZnkoZXJyLmFjdHVhbCwgZXJyLmV4cGVjdGVkLCBvcHRpb25zLCBlcnIpO1xuXHRcdGVyci5leHBlY3RlZCA9IHByZXR0aWZ5VmFsdWUoZXJyLmV4cGVjdGVkLCBvcHRpb25zKTtcblx0XHRlcnIuYWN0dWFsID0gcHJldHRpZnlWYWx1ZShlcnIuYWN0dWFsLCBvcHRpb25zKTtcblx0fVxuXHQvLyBzb21lIEVycm9yIGltcGxlbWVudGF0aW9ucyBtYXkgbm90IGFsbG93IHJld3JpdGluZyBjYXVzZVxuXHQvLyBpbiBtb3N0IGNhc2VzLCB0aGUgYXNzaWdubWVudCB3aWxsIGxlYWQgdG8gXCJlcnIuY2F1c2UgPSBlcnIuY2F1c2VcIlxuXHR0cnkge1xuXHRcdGlmICghc2Vlbi5oYXMoZXJyKSAmJiB0eXBlb2YgZXJyLmNhdXNlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRzZWVuLmFkZChlcnIpO1xuXHRcdFx0ZXJyLmNhdXNlID0gcHJvY2Vzc0Vycm9yKGVyci5jYXVzZSwgZGlmZk9wdGlvbnMsIHNlZW4pO1xuXHRcdH1cblx0fSBjYXRjaCB7fVxuXHR0cnkge1xuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZShlcnIpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIHNlcmlhbGl6ZVZhbHVlKG5ldyBFcnJvcihgRmFpbGVkIHRvIGZ1bGx5IHNlcmlhbGl6ZSBlcnJvcjogJHtlPy5tZXNzYWdlfVxcbklubmVyIGVycm9yIG1lc3NhZ2U6ICR7ZXJyPy5tZXNzYWdlfWApKTtcblx0fVxufVxuZnVuY3Rpb24gcHJldHRpZnlWYWx1ZSh2YWx1ZSwgb3B0aW9ucykge1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGZvcm1hdCh2YWx1ZSwgZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnMob3B0aW9ucykpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHsgcHJvY2Vzc0Vycm9yLCBzZXJpYWxpemVWYWx1ZSBhcyBzZXJpYWxpemVFcnJvciB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsU0FBUyxhQUFhLE1BQU0sYUFBYSx1QkFBTyxJQUFJLFFBQVEsR0FBRztDQUM5RCxJQUFJLENBQUMsUUFBUSxPQUFPLFNBQVMsVUFDNUIsT0FBTyxFQUFFLFNBQVMsT0FBTyxJQUFJLEVBQUU7Q0FFaEMsTUFBTSxNQUFNO0NBQ1osSUFBSSxJQUFJLFlBQVksSUFBSSxhQUFhLFVBQWEsSUFBSSxhQUFhLFVBQWEsSUFBSSxXQUFXLFFBQVc7RUFDekcsTUFBTSxVQUFVO0dBQ2YsR0FBRztHQUNILEdBQUcsSUFBSTtFQUNSO0VBQ0EsSUFBSSxPQUFPLHFCQUFxQixJQUFJLFFBQVEsSUFBSSxVQUFVLFNBQVMsR0FBRztFQUN0RSxJQUFJLFdBQVcsY0FBYyxJQUFJLFVBQVUsT0FBTztFQUNsRCxJQUFJLFNBQVMsY0FBYyxJQUFJLFFBQVEsT0FBTztDQUMvQztDQUdBLElBQUk7RUFDSCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLElBQUksVUFBVSxVQUFVO0dBQ3BELEtBQUssSUFBSSxHQUFHO0dBQ1osSUFBSSxRQUFRLGFBQWEsSUFBSSxPQUFPLGFBQWEsSUFBSTtFQUN0RDtDQUNELFFBQVEsQ0FBQztDQUNULElBQUk7RUFDSCxPQUFPLGVBQWUsR0FBRztDQUMxQixTQUFTLEdBQUc7RUFDWCxPQUFPLCtCQUFlLElBQUksTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLHlCQUF5QixLQUFLLFNBQVMsQ0FBQztDQUN4SDtBQUNEO0FBQ0EsU0FBUyxjQUFjLE9BQU8sU0FBUztDQUN0QyxJQUFJLE9BQU8sVUFBVSxVQUNwQixPQUFPLE9BQU8sT0FBTyx3QkFBd0IsT0FBTyxDQUFDO0NBRXRELE9BQU87QUFDUiJ9
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
import { NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX } from "./constants.js";
|
|
2
|
-
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js
|
|
3
|
-
const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
4
|
-
function nanoid(size = 21) {
|
|
5
|
-
let id = "";
|
|
6
|
-
let i = size;
|
|
7
|
-
while (i--) id += urlAlphabet[Math.random() * 64 | 0];
|
|
8
|
-
return id;
|
|
9
|
-
}
|
|
10
|
-
const RealDate = Date;
|
|
11
|
-
function random(seed) {
|
|
12
|
-
const x = Math.sin(seed++) * 1e4;
|
|
13
|
-
return x - Math.floor(x);
|
|
14
|
-
}
|
|
15
|
-
function shuffle(array, seed = RealDate.now()) {
|
|
16
|
-
let length = array.length;
|
|
17
|
-
while (length) {
|
|
18
|
-
const index = Math.floor(random(seed) * length--);
|
|
19
|
-
const previous = array[length];
|
|
20
|
-
array[length] = array[index];
|
|
21
|
-
array[index] = previous;
|
|
22
|
-
++seed;
|
|
23
|
-
}
|
|
24
|
-
return array;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get original stacktrace without source map support the most performant way.
|
|
28
|
-
* - Create only 1 stack frame.
|
|
29
|
-
* - Rewrite prepareStackTrace to bypass "support-stack-trace" (usually takes ~250ms).
|
|
30
|
-
*/
|
|
31
|
-
function createSimpleStackTrace(options) {
|
|
32
|
-
const { message = "$$stack trace error", stackTraceLimit = 1 } = options || {};
|
|
33
|
-
const limit = Error.stackTraceLimit;
|
|
34
|
-
const prepareStackTrace = Error.prepareStackTrace;
|
|
35
|
-
Error.stackTraceLimit = stackTraceLimit;
|
|
36
|
-
Error.prepareStackTrace = (e) => e.stack;
|
|
37
|
-
const stackTrace = new Error(message).stack || "";
|
|
38
|
-
Error.prepareStackTrace = prepareStackTrace;
|
|
39
|
-
Error.stackTraceLimit = limit;
|
|
40
|
-
return stackTrace;
|
|
41
|
-
}
|
|
42
|
-
function notNullish(v) {
|
|
43
|
-
return v != null;
|
|
44
|
-
}
|
|
45
|
-
function assertTypes(value, name, types) {
|
|
46
|
-
const receivedType = typeof value;
|
|
47
|
-
if (!types.includes(receivedType)) throw new TypeError(`${name} value must be ${types.join(" or ")}, received "${receivedType}"`);
|
|
48
|
-
}
|
|
49
|
-
function isPrimitive(value) {
|
|
50
|
-
return value === null || typeof value !== "function" && typeof value !== "object";
|
|
51
|
-
}
|
|
52
|
-
function slash(path) {
|
|
53
|
-
return path.replace(/\\/g, "/");
|
|
54
|
-
}
|
|
55
|
-
const postfixRE = /[?#].*$/;
|
|
56
|
-
function cleanUrl(url) {
|
|
57
|
-
return url.replace(postfixRE, "");
|
|
58
|
-
}
|
|
59
|
-
function splitFileAndPostfix(path) {
|
|
60
|
-
const file = cleanUrl(path);
|
|
61
|
-
return {
|
|
62
|
-
file,
|
|
63
|
-
postfix: path.slice(file.length)
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
const externalRE = /^(?:[a-z]+:)?\/\//;
|
|
67
|
-
const isExternalUrl = (url) => externalRE.test(url);
|
|
68
|
-
/**
|
|
69
|
-
* Prepend `/@id/` and replace null byte so the id is URL-safe.
|
|
70
|
-
* This is prepended to resolved ids that are not valid browser
|
|
71
|
-
* import specifiers by the importAnalysis plugin.
|
|
72
|
-
*/
|
|
73
|
-
function wrapId(id) {
|
|
74
|
-
return id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace("\0", NULL_BYTE_PLACEHOLDER);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Undo {@link wrapId}'s `/@id/` and null byte replacements.
|
|
78
|
-
*/
|
|
79
|
-
function unwrapId(id) {
|
|
80
|
-
return id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length).replace(NULL_BYTE_PLACEHOLDER, "\0") : id;
|
|
81
|
-
}
|
|
82
|
-
function withTrailingSlash(path) {
|
|
83
|
-
if (path.at(-1) !== "/") return `${path}/`;
|
|
84
|
-
return path;
|
|
85
|
-
}
|
|
86
|
-
function filterOutComments(s) {
|
|
87
|
-
const result = [];
|
|
88
|
-
let commentState = "none";
|
|
89
|
-
for (let i = 0; i < s.length; ++i) if (commentState === "singleline") {
|
|
90
|
-
if (s[i] === "\n") commentState = "none";
|
|
91
|
-
} else if (commentState === "multiline") {
|
|
92
|
-
if (s[i - 1] === "*" && s[i] === "/") commentState = "none";
|
|
93
|
-
} else if (commentState === "none") if (s[i] === "/" && s[i + 1] === "/") commentState = "singleline";
|
|
94
|
-
else if (s[i] === "/" && s[i + 1] === "*") {
|
|
95
|
-
commentState = "multiline";
|
|
96
|
-
i += 2;
|
|
97
|
-
} else result.push(s[i]);
|
|
98
|
-
return result.join("");
|
|
99
|
-
}
|
|
100
|
-
const bareImportRE = /^(?![a-z]:)[\w@](?!.*:\/\/)/i;
|
|
101
|
-
function isBareImport(id) {
|
|
102
|
-
return bareImportRE.test(id);
|
|
103
|
-
}
|
|
104
|
-
function toArray(array) {
|
|
105
|
-
if (array === null || array === void 0) array = [];
|
|
106
|
-
if (Array.isArray(array)) return array;
|
|
107
|
-
return [array];
|
|
108
|
-
}
|
|
109
|
-
function isObject(item) {
|
|
110
|
-
return item != null && typeof item === "object" && !Array.isArray(item);
|
|
111
|
-
}
|
|
112
|
-
function isFinalObj(obj) {
|
|
113
|
-
return obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype;
|
|
114
|
-
}
|
|
115
|
-
function getType(value) {
|
|
116
|
-
return Object.prototype.toString.apply(value).slice(8, -1);
|
|
117
|
-
}
|
|
118
|
-
function collectOwnProperties(obj, collector) {
|
|
119
|
-
const collect = typeof collector === "function" ? collector : (key) => collector.add(key);
|
|
120
|
-
Object.getOwnPropertyNames(obj).forEach(collect);
|
|
121
|
-
Object.getOwnPropertySymbols(obj).forEach(collect);
|
|
122
|
-
}
|
|
123
|
-
function getOwnProperties(obj) {
|
|
124
|
-
const ownProps = /* @__PURE__ */ new Set();
|
|
125
|
-
if (isFinalObj(obj)) return [];
|
|
126
|
-
collectOwnProperties(obj, ownProps);
|
|
127
|
-
return Array.from(ownProps);
|
|
128
|
-
}
|
|
129
|
-
const defaultCloneOptions = { forceWritable: false };
|
|
130
|
-
function deepClone(val, options = defaultCloneOptions) {
|
|
131
|
-
return clone(val, /* @__PURE__ */ new WeakMap(), options);
|
|
132
|
-
}
|
|
133
|
-
function clone(val, seen, options = defaultCloneOptions) {
|
|
134
|
-
let k, out;
|
|
135
|
-
if (seen.has(val)) return seen.get(val);
|
|
136
|
-
if (Array.isArray(val)) {
|
|
137
|
-
out = Array.from({ length: k = val.length });
|
|
138
|
-
seen.set(val, out);
|
|
139
|
-
while (k--) out[k] = clone(val[k], seen, options);
|
|
140
|
-
return out;
|
|
141
|
-
}
|
|
142
|
-
if (Object.prototype.toString.call(val) === "[object Object]") {
|
|
143
|
-
out = Object.create(Object.getPrototypeOf(val));
|
|
144
|
-
seen.set(val, out);
|
|
145
|
-
const props = getOwnProperties(val);
|
|
146
|
-
for (const k of props) {
|
|
147
|
-
const descriptor = Object.getOwnPropertyDescriptor(val, k);
|
|
148
|
-
if (!descriptor) continue;
|
|
149
|
-
const cloned = clone(val[k], seen, options);
|
|
150
|
-
if (options.forceWritable) Object.defineProperty(out, k, {
|
|
151
|
-
enumerable: descriptor.enumerable,
|
|
152
|
-
configurable: true,
|
|
153
|
-
writable: true,
|
|
154
|
-
value: cloned
|
|
155
|
-
});
|
|
156
|
-
else if ("get" in descriptor) Object.defineProperty(out, k, {
|
|
157
|
-
...descriptor,
|
|
158
|
-
get() {
|
|
159
|
-
return cloned;
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
else Object.defineProperty(out, k, {
|
|
163
|
-
...descriptor,
|
|
164
|
-
value: cloned
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
return out;
|
|
168
|
-
}
|
|
169
|
-
return val;
|
|
170
|
-
}
|
|
171
|
-
function noop() {}
|
|
172
|
-
function objectAttr(source, path, defaultValue = void 0) {
|
|
173
|
-
const paths = path.replace(/\[(\d+)\]/g, ".$1").split(".");
|
|
174
|
-
let result = source;
|
|
175
|
-
for (const p of paths) {
|
|
176
|
-
result = new Object(result)[p];
|
|
177
|
-
if (result === void 0) return defaultValue;
|
|
178
|
-
}
|
|
179
|
-
return result;
|
|
180
|
-
}
|
|
181
|
-
function createDefer() {
|
|
182
|
-
let resolve = null;
|
|
183
|
-
let reject = null;
|
|
184
|
-
const p = new Promise((_resolve, _reject) => {
|
|
185
|
-
resolve = _resolve;
|
|
186
|
-
reject = _reject;
|
|
187
|
-
});
|
|
188
|
-
p.resolve = resolve;
|
|
189
|
-
p.reject = reject;
|
|
190
|
-
return p;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* If code starts with a function call, will return its last index, respecting arguments.
|
|
194
|
-
* This will return 25 - last ending character of toMatch ")"
|
|
195
|
-
* Also works with callbacks
|
|
196
|
-
* ```
|
|
197
|
-
* toMatch({ test: '123' });
|
|
198
|
-
* toBeAliased('123')
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
function getCallLastIndex(code) {
|
|
202
|
-
let charIndex = -1;
|
|
203
|
-
let inString = null;
|
|
204
|
-
let startedBracers = 0;
|
|
205
|
-
let endedBracers = 0;
|
|
206
|
-
let beforeChar = null;
|
|
207
|
-
while (charIndex <= code.length) {
|
|
208
|
-
beforeChar = code[charIndex];
|
|
209
|
-
charIndex++;
|
|
210
|
-
const char = code[charIndex];
|
|
211
|
-
if ((char === "\"" || char === "'" || char === "`") && beforeChar !== "\\") {
|
|
212
|
-
if (inString === char) inString = null;
|
|
213
|
-
else if (!inString) inString = char;
|
|
214
|
-
}
|
|
215
|
-
if (!inString) {
|
|
216
|
-
if (char === "(") startedBracers++;
|
|
217
|
-
if (char === ")") endedBracers++;
|
|
218
|
-
}
|
|
219
|
-
if (startedBracers && endedBracers && startedBracers === endedBracers) return charIndex;
|
|
220
|
-
}
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
function isNegativeNaN(val) {
|
|
224
|
-
if (!Number.isNaN(val)) return false;
|
|
225
|
-
const f64 = /* @__PURE__ */ new Float64Array(1);
|
|
226
|
-
f64[0] = val;
|
|
227
|
-
return new Uint32Array(f64.buffer)[1] >>> 31 === 1;
|
|
228
|
-
}
|
|
229
|
-
function toString(v) {
|
|
230
|
-
return Object.prototype.toString.call(v);
|
|
231
|
-
}
|
|
232
|
-
function isPlainObject(val) {
|
|
233
|
-
return toString(val) === "[object Object]" && (!val.constructor || val.constructor.name === "Object");
|
|
234
|
-
}
|
|
235
|
-
function isMergeableObject(item) {
|
|
236
|
-
return isPlainObject(item) && !Array.isArray(item);
|
|
237
|
-
}
|
|
238
|
-
function ordinal(i) {
|
|
239
|
-
const j = i % 10;
|
|
240
|
-
const k = i % 100;
|
|
241
|
-
if (j === 1 && k !== 11) return `${i}st`;
|
|
242
|
-
if (j === 2 && k !== 12) return `${i}nd`;
|
|
243
|
-
if (j === 3 && k !== 13) return `${i}rd`;
|
|
244
|
-
return `${i}th`;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Deep merge :P
|
|
248
|
-
*
|
|
249
|
-
* Will merge objects only if they are plain
|
|
250
|
-
*
|
|
251
|
-
* Do not merge types - it is very expensive and usually it's better to case a type here
|
|
252
|
-
*/
|
|
253
|
-
function deepMerge(target, ...sources) {
|
|
254
|
-
if (!sources.length) return target;
|
|
255
|
-
const source = sources.shift();
|
|
256
|
-
if (source === void 0) return target;
|
|
257
|
-
if (isMergeableObject(target) && isMergeableObject(source)) Object.keys(source).forEach((key) => {
|
|
258
|
-
const _source = source;
|
|
259
|
-
if (isMergeableObject(_source[key])) {
|
|
260
|
-
if (!target[key]) target[key] = {};
|
|
261
|
-
deepMerge(target[key], _source[key]);
|
|
262
|
-
} else target[key] = _source[key];
|
|
263
|
-
});
|
|
264
|
-
return deepMerge(target, ...sources);
|
|
265
|
-
}
|
|
266
|
-
function unique(array) {
|
|
267
|
-
return Array.from(new Set(array));
|
|
268
|
-
}
|
|
269
|
-
//#endregion
|
|
270
|
-
export { assertTypes, cleanUrl, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, filterOutComments, getCallLastIndex, getOwnProperties, getType, isBareImport, isExternalUrl, isNegativeNaN, isObject, isPrimitive, nanoid, noop, notNullish, objectAttr, ordinal, shuffle, slash, splitFileAndPostfix, toArray, unique, unwrapId, withTrailingSlash, wrapId };
|
|
271
|
-
|
|
272
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHZpdGVzdCt1dGlsc0A0LjEuMTAvbm9kZV9tb2R1bGVzL0B2aXRlc3QvdXRpbHMvZGlzdC9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZBTElEX0lEX1BSRUZJWCwgTlVMTF9CWVRFX1BMQUNFSE9MREVSIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG4vLyBwb3J0IGZyb20gbmFub2lkXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYWkvbmFub2lkXG5jb25zdCB1cmxBbHBoYWJldCA9IFwidXNlYW5kb20tMjZUMTk4MzQwUFg3NXB4SkFDS1ZFUllNSU5EQlVTSFdPTEZfR1FaYmZnaGprbHF2d3l6cmljdFwiO1xuZnVuY3Rpb24gbmFub2lkKHNpemUgPSAyMSkge1xuXHRsZXQgaWQgPSBcIlwiO1xuXHRsZXQgaSA9IHNpemU7XG5cdHdoaWxlIChpLS0pIHtcblx0XHRpZCArPSB1cmxBbHBoYWJldFtNYXRoLnJhbmRvbSgpICogNjQgfCAwXTtcblx0fVxuXHRyZXR1cm4gaWQ7XG59XG5cbmNvbnN0IFJlYWxEYXRlID0gRGF0ZTtcbmZ1bmN0aW9uIHJhbmRvbShzZWVkKSB7XG5cdGNvbnN0IHggPSBNYXRoLnNpbihzZWVkKyspICogMWU0O1xuXHRyZXR1cm4geCAtIE1hdGguZmxvb3IoeCk7XG59XG5mdW5jdGlvbiBzaHVmZmxlKGFycmF5LCBzZWVkID0gUmVhbERhdGUubm93KCkpIHtcblx0bGV0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0d2hpbGUgKGxlbmd0aCkge1xuXHRcdGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihyYW5kb20oc2VlZCkgKiBsZW5ndGgtLSk7XG5cdFx0Y29uc3QgcHJldmlvdXMgPSBhcnJheVtsZW5ndGhdO1xuXHRcdGFycmF5W2xlbmd0aF0gPSBhcnJheVtpbmRleF07XG5cdFx0YXJyYXlbaW5kZXhdID0gcHJldmlvdXM7XG5cdFx0KytzZWVkO1xuXHR9XG5cdHJldHVybiBhcnJheTtcbn1cblxuLyoqXG4qIEdldCBvcmlnaW5hbCBzdGFja3RyYWNlIHdpdGhvdXQgc291cmNlIG1hcCBzdXBwb3J0IHRoZSBtb3N0IHBlcmZvcm1hbnQgd2F5LlxuKiAtIENyZWF0ZSBvbmx5IDEgc3RhY2sgZnJhbWUuXG4qIC0gUmV3cml0ZSBwcmVwYXJlU3RhY2tUcmFjZSB0byBieXBhc3MgXCJzdXBwb3J0LXN0YWNrLXRyYWNlXCIgKHVzdWFsbHkgdGFrZXMgfjI1MG1zKS5cbiovXG5mdW5jdGlvbiBjcmVhdGVTaW1wbGVTdGFja1RyYWNlKG9wdGlvbnMpIHtcblx0Y29uc3QgeyBtZXNzYWdlID0gXCIkJHN0YWNrIHRyYWNlIGVycm9yXCIsIHN0YWNrVHJhY2VMaW1pdCA9IDEgfSA9IG9wdGlvbnMgfHwge307XG5cdGNvbnN0IGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuXHRjb25zdCBwcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlO1xuXHRFcnJvci5zdGFja1RyYWNlTGltaXQgPSBzdGFja1RyYWNlTGltaXQ7XG5cdEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gKGUpID0+IGUuc3RhY2s7XG5cdGNvbnN0IGVyciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0Y29uc3Qgc3RhY2tUcmFjZSA9IGVyci5zdGFjayB8fCBcIlwiO1xuXHRFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVTdGFja1RyYWNlO1xuXHRFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdDtcblx0cmV0dXJuIHN0YWNrVHJhY2U7XG59XG5mdW5jdGlvbiBub3ROdWxsaXNoKHYpIHtcblx0cmV0dXJuIHYgIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGFzc2VydFR5cGVzKHZhbHVlLCBuYW1lLCB0eXBlcykge1xuXHRjb25zdCByZWNlaXZlZFR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cdGNvbnN0IHBhc3MgPSB0eXBlcy5pbmNsdWRlcyhyZWNlaXZlZFR5cGUpO1xuXHRpZiAoIXBhc3MpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGAke25hbWV9IHZhbHVlIG11c3QgYmUgJHt0eXBlcy5qb2luKFwiIG9yIFwiKX0sIHJlY2VpdmVkIFwiJHtyZWNlaXZlZFR5cGV9XCJgKTtcblx0fVxufVxuZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIHNsYXNoKHBhdGgpIHtcblx0cmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG59XG5jb25zdCBwb3N0Zml4UkUgPSAvWz8jXS4qJC87XG5mdW5jdGlvbiBjbGVhblVybCh1cmwpIHtcblx0cmV0dXJuIHVybC5yZXBsYWNlKHBvc3RmaXhSRSwgXCJcIik7XG59XG5mdW5jdGlvbiBzcGxpdEZpbGVBbmRQb3N0Zml4KHBhdGgpIHtcblx0Y29uc3QgZmlsZSA9IGNsZWFuVXJsKHBhdGgpO1xuXHRyZXR1cm4ge1xuXHRcdGZpbGUsXG5cdFx0cG9zdGZpeDogcGF0aC5zbGljZShmaWxlLmxlbmd0aClcblx0fTtcbn1cbmNvbnN0IGV4dGVybmFsUkUgPSAvXig/OlthLXpdKzopP1xcL1xcLy87XG5jb25zdCBpc0V4dGVybmFsVXJsID0gKHVybCkgPT4gZXh0ZXJuYWxSRS50ZXN0KHVybCk7XG4vKipcbiogUHJlcGVuZCBgL0BpZC9gIGFuZCByZXBsYWNlIG51bGwgYnl0ZSBzbyB0aGUgaWQgaXMgVVJMLXNhZmUuXG4qIFRoaXMgaXMgcHJlcGVuZGVkIHRvIHJlc29sdmVkIGlkcyB0aGF0IGFyZSBub3QgdmFsaWQgYnJvd3NlclxuKiBpbXBvcnQgc3BlY2lmaWVycyBieSB0aGUgaW1wb3J0QW5hbHlzaXMgcGx1Z2luLlxuKi9cbmZ1bmN0aW9uIHdyYXBJZChpZCkge1xuXHRyZXR1cm4gaWQuc3RhcnRzV2l0aChWQUxJRF9JRF9QUkVGSVgpID8gaWQgOiBWQUxJRF9JRF9QUkVGSVggKyBpZC5yZXBsYWNlKFwiXFwwXCIsIE5VTExfQllURV9QTEFDRUhPTERFUik7XG59XG4vKipcbiogVW5kbyB7QGxpbmsgd3JhcElkfSdzIGAvQGlkL2AgYW5kIG51bGwgYnl0ZSByZXBsYWNlbWVudHMuXG4qL1xuZnVuY3Rpb24gdW53cmFwSWQoaWQpIHtcblx0cmV0dXJuIGlkLnN0YXJ0c1dpdGgoVkFMSURfSURfUFJFRklYKSA/IGlkLnNsaWNlKFZBTElEX0lEX1BSRUZJWC5sZW5ndGgpLnJlcGxhY2UoTlVMTF9CWVRFX1BMQUNFSE9MREVSLCBcIlxcMFwiKSA6IGlkO1xufVxuZnVuY3Rpb24gd2l0aFRyYWlsaW5nU2xhc2gocGF0aCkge1xuXHRpZiAocGF0aC5hdCgtMSkgIT09IFwiL1wiKSB7XG5cdFx0cmV0dXJuIGAke3BhdGh9L2A7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBmaWx0ZXJPdXRDb21tZW50cyhzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgY29tbWVudFN0YXRlID0gXCJub25lXCI7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmIChjb21tZW50U3RhdGUgPT09IFwic2luZ2xlbGluZVwiKSB7XG5cdFx0XHRpZiAoc1tpXSA9PT0gXCJcXG5cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJtdWx0aWxpbmVcIikge1xuXHRcdFx0aWYgKHNbaSAtIDFdID09PSBcIipcIiAmJiBzW2ldID09PSBcIi9cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJub25lXCIpIHtcblx0XHRcdGlmIChzW2ldID09PSBcIi9cIiAmJiBzW2kgKyAxXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0Y29tbWVudFN0YXRlID0gXCJzaW5nbGVsaW5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKHNbaV0gPT09IFwiL1wiICYmIHNbaSArIDFdID09PSBcIipcIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm11bHRpbGluZVwiO1xuXHRcdFx0XHRpICs9IDI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHQucHVzaChzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xufVxuY29uc3QgYmFyZUltcG9ydFJFID0gL14oPyFbYS16XTopW1xcd0BdKD8hLio6XFwvXFwvKS9pO1xuZnVuY3Rpb24gaXNCYXJlSW1wb3J0KGlkKSB7XG5cdHJldHVybiBiYXJlSW1wb3J0UkUudGVzdChpZCk7XG59XG5mdW5jdGlvbiB0b0FycmF5KGFycmF5KSB7XG5cdGlmIChhcnJheSA9PT0gbnVsbCB8fCBhcnJheSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0YXJyYXkgPSBbXTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblx0cmV0dXJuIFthcnJheV07XG59XG5mdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG5cdHJldHVybiBpdGVtICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBpc0ZpbmFsT2JqKG9iaikge1xuXHRyZXR1cm4gb2JqID09PSBPYmplY3QucHJvdG90eXBlIHx8IG9iaiA9PT0gRnVuY3Rpb24ucHJvdG90eXBlIHx8IG9iaiA9PT0gUmVnRXhwLnByb3RvdHlwZTtcbn1cbmZ1bmN0aW9uIGdldFR5cGUodmFsdWUpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpLnNsaWNlKDgsIC0xKTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RPd25Qcm9wZXJ0aWVzKG9iaiwgY29sbGVjdG9yKSB7XG5cdGNvbnN0IGNvbGxlY3QgPSB0eXBlb2YgY29sbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgPyBjb2xsZWN0b3IgOiAoa2V5KSA9PiBjb2xsZWN0b3IuYWRkKGtleSk7XG5cdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChjb2xsZWN0KTtcblx0T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopLmZvckVhY2goY29sbGVjdCk7XG59XG5mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0aWVzKG9iaikge1xuXHRjb25zdCBvd25Qcm9wcyA9IG5ldyBTZXQoKTtcblx0aWYgKGlzRmluYWxPYmoob2JqKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRjb2xsZWN0T3duUHJvcGVydGllcyhvYmosIG93blByb3BzKTtcblx0cmV0dXJuIEFycmF5LmZyb20ob3duUHJvcHMpO1xufVxuY29uc3QgZGVmYXVsdENsb25lT3B0aW9ucyA9IHsgZm9yY2VXcml0YWJsZTogZmFsc2UgfTtcbmZ1bmN0aW9uIGRlZXBDbG9uZSh2YWwsIG9wdGlvbnMgPSBkZWZhdWx0Q2xvbmVPcHRpb25zKSB7XG5cdGNvbnN0IHNlZW4gPSBuZXcgV2Vha01hcCgpO1xuXHRyZXR1cm4gY2xvbmUodmFsLCBzZWVuLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGNsb25lKHZhbCwgc2Vlbiwgb3B0aW9ucyA9IGRlZmF1bHRDbG9uZU9wdGlvbnMpIHtcblx0bGV0IGssIG91dDtcblx0aWYgKHNlZW4uaGFzKHZhbCkpIHtcblx0XHRyZXR1cm4gc2Vlbi5nZXQodmFsKTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0b3V0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogayA9IHZhbC5sZW5ndGggfSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdHdoaWxlIChrLS0pIHtcblx0XHRcdG91dFtrXSA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0fVxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiKSB7XG5cdFx0b3V0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdC8vIHdlIGRvbid0IG5lZWQgcHJvcGVydGllcyBmcm9tIHByb3RvdHlwZVxuXHRcdGNvbnN0IHByb3BzID0gZ2V0T3duUHJvcGVydGllcyh2YWwpO1xuXHRcdGZvciAoY29uc3QgayBvZiBwcm9wcykge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsLCBrKTtcblx0XHRcdGlmICghZGVzY3JpcHRvcikge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNsb25lZCA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0XHRpZiAob3B0aW9ucy5mb3JjZVdyaXRhYmxlKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvdXQsIGssIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiBjbG9uZWRcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKFwiZ2V0XCIgaW4gZGVzY3JpcHRvcikge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHRnZXQoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2xvbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cdHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG9iamVjdEF0dHIoc291cmNlLCBwYXRoLCBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQpIHtcblx0Ly8gYVszXS5iIC0+IGEuMy5iXG5cdGNvbnN0IHBhdGhzID0gcGF0aC5yZXBsYWNlKC9cXFsoXFxkKylcXF0vZywgXCIuJDFcIikuc3BsaXQoXCIuXCIpO1xuXHRsZXQgcmVzdWx0ID0gc291cmNlO1xuXHRmb3IgKGNvbnN0IHAgb2YgcGF0aHMpIHtcblx0XHRyZXN1bHQgPSBuZXcgT2JqZWN0KHJlc3VsdClbcF07XG5cdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY3JlYXRlRGVmZXIoKSB7XG5cdGxldCByZXNvbHZlID0gbnVsbDtcblx0bGV0IHJlamVjdCA9IG51bGw7XG5cdGNvbnN0IHAgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcblx0XHRyZXNvbHZlID0gX3Jlc29sdmU7XG5cdFx0cmVqZWN0ID0gX3JlamVjdDtcblx0fSk7XG5cdHAucmVzb2x2ZSA9IHJlc29sdmU7XG5cdHAucmVqZWN0ID0gcmVqZWN0O1xuXHRyZXR1cm4gcDtcbn1cbi8qKlxuKiBJZiBjb2RlIHN0YXJ0cyB3aXRoIGEgZnVuY3Rpb24gY2FsbCwgd2lsbCByZXR1cm4gaXRzIGxhc3QgaW5kZXgsIHJlc3BlY3RpbmcgYXJndW1lbnRzLlxuKiBUaGlzIHdpbGwgcmV0dXJuIDI1IC0gbGFzdCBlbmRpbmcgY2hhcmFjdGVyIG9mIHRvTWF0Y2ggXCIpXCJcbiogQWxzbyB3b3JrcyB3aXRoIGNhbGxiYWNrc1xuKiBgYGBcbiogdG9NYXRjaCh7IHRlc3Q6ICcxMjMnIH0pO1xuKiB0b0JlQWxpYXNlZCgnMTIzJylcbiogYGBgXG4qL1xuZnVuY3Rpb24gZ2V0Q2FsbExhc3RJbmRleChjb2RlKSB7XG5cdGxldCBjaGFySW5kZXggPSAtMTtcblx0bGV0IGluU3RyaW5nID0gbnVsbDtcblx0bGV0IHN0YXJ0ZWRCcmFjZXJzID0gMDtcblx0bGV0IGVuZGVkQnJhY2VycyA9IDA7XG5cdGxldCBiZWZvcmVDaGFyID0gbnVsbDtcblx0d2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuXHRcdGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF07XG5cdFx0Y2hhckluZGV4Kys7XG5cdFx0Y29uc3QgY2hhciA9IGNvZGVbY2hhckluZGV4XTtcblx0XHRjb25zdCBpc0NoYXJTdHJpbmcgPSBjaGFyID09PSBcIlxcXCJcIiB8fCBjaGFyID09PSBcIidcIiB8fCBjaGFyID09PSBcImBcIjtcblx0XHRpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09IFwiXFxcXFwiKSB7XG5cdFx0XHRpZiAoaW5TdHJpbmcgPT09IGNoYXIpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBudWxsO1xuXHRcdFx0fSBlbHNlIGlmICghaW5TdHJpbmcpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBjaGFyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWluU3RyaW5nKSB7XG5cdFx0XHRpZiAoY2hhciA9PT0gXCIoXCIpIHtcblx0XHRcdFx0c3RhcnRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHRcdGlmIChjaGFyID09PSBcIilcIikge1xuXHRcdFx0XHRlbmRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHN0YXJ0ZWRCcmFjZXJzICYmIGVuZGVkQnJhY2VycyAmJiBzdGFydGVkQnJhY2VycyA9PT0gZW5kZWRCcmFjZXJzKSB7XG5cdFx0XHRyZXR1cm4gY2hhckluZGV4O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzTmVnYXRpdmVOYU4odmFsKSB7XG5cdGlmICghTnVtYmVyLmlzTmFOKHZhbCkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZjY0ID0gbmV3IEZsb2F0NjRBcnJheSgxKTtcblx0ZjY0WzBdID0gdmFsO1xuXHRjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkoZjY0LmJ1ZmZlcik7XG5cdGNvbnN0IGlzTmVnYXRpdmUgPSB1MzJbMV0gPj4+IDMxID09PSAxO1xuXHRyZXR1cm4gaXNOZWdhdGl2ZTtcbn1cbmZ1bmN0aW9uIHRvU3RyaW5nKHYpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2KTtcbn1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG5cdHJldHVybiB0b1N0cmluZyh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiICYmICghdmFsLmNvbnN0cnVjdG9yIHx8IHZhbC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk9iamVjdFwiKTtcbn1cbmZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KGl0ZW0pIHtcblx0cmV0dXJuIGlzUGxhaW5PYmplY3QoaXRlbSkgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBvcmRpbmFsKGkpIHtcblx0Y29uc3QgaiA9IGkgJSAxMDtcblx0Y29uc3QgayA9IGkgJSAxMDA7XG5cdGlmIChqID09PSAxICYmIGsgIT09IDExKSB7XG5cdFx0cmV0dXJuIGAke2l9c3RgO1xuXHR9XG5cdGlmIChqID09PSAyICYmIGsgIT09IDEyKSB7XG5cdFx0cmV0dXJuIGAke2l9bmRgO1xuXHR9XG5cdGlmIChqID09PSAzICYmIGsgIT09IDEzKSB7XG5cdFx0cmV0dXJuIGAke2l9cmRgO1xuXHR9XG5cdHJldHVybiBgJHtpfXRoYDtcbn1cbi8qKlxuKiBEZWVwIG1lcmdlIDpQXG4qXG4qIFdpbGwgbWVyZ2Ugb2JqZWN0cyBvbmx5IGlmIHRoZXkgYXJlIHBsYWluXG4qXG4qIERvIG5vdCBtZXJnZSB0eXBlcyAtIGl0IGlzIHZlcnkgZXhwZW5zaXZlIGFuZCB1c3VhbGx5IGl0J3MgYmV0dGVyIHRvIGNhc2UgYSB0eXBlIGhlcmVcbiovXG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCAuLi5zb3VyY2VzKSB7XG5cdGlmICghc291cmNlcy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gdGFyZ2V0O1xuXHR9XG5cdGNvbnN0IHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcblx0aWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRpZiAoaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSAmJiBpc01lcmdlYWJsZU9iamVjdChzb3VyY2UpKSB7XG5cdFx0T2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGNvbnN0IF9zb3VyY2UgPSBzb3VyY2U7XG5cdFx0XHRpZiAoaXNNZXJnZWFibGVPYmplY3QoX3NvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0dGFyZ2V0W2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIF9zb3VyY2Vba2V5XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IF9zb3VyY2Vba2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZGVlcE1lcmdlKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5mdW5jdGlvbiB1bmlxdWUoYXJyYXkpIHtcblx0cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhcnJheSkpO1xufVxuXG5leHBvcnQgeyBhc3NlcnRUeXBlcywgY2xlYW5VcmwsIGNsb25lLCBjcmVhdGVEZWZlciwgY3JlYXRlU2ltcGxlU3RhY2tUcmFjZSwgZGVlcENsb25lLCBkZWVwTWVyZ2UsIGZpbHRlck91dENvbW1lbnRzLCBnZXRDYWxsTGFzdEluZGV4LCBnZXRPd25Qcm9wZXJ0aWVzLCBnZXRUeXBlLCBpc0JhcmVJbXBvcnQsIGlzRXh0ZXJuYWxVcmwsIGlzTmVnYXRpdmVOYU4sIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSwgbmFub2lkLCBub29wLCBub3ROdWxsaXNoLCBvYmplY3RBdHRyLCBvcmRpbmFsLCBzaHVmZmxlLCBzbGFzaCwgc3BsaXRGaWxlQW5kUG9zdGZpeCwgdG9BcnJheSwgdW5pcXVlLCB1bndyYXBJZCwgd2l0aFRyYWlsaW5nU2xhc2gsIHdyYXBJZCB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBTSxjQUFjO0FBQ3BCLFNBQVMsT0FBTyxPQUFPLElBQUk7Q0FDMUIsSUFBSSxLQUFLO0NBQ1QsSUFBSSxJQUFJO0NBQ1IsT0FBTyxLQUNOLE1BQU0sWUFBWSxLQUFLLE9BQU8sSUFBSSxLQUFLO0NBRXhDLE9BQU87QUFDUjtBQUVBLE1BQU0sV0FBVztBQUNqQixTQUFTLE9BQU8sTUFBTTtDQUNyQixNQUFNLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSTtDQUM3QixPQUFPLElBQUksS0FBSyxNQUFNLENBQUM7QUFDeEI7QUFDQSxTQUFTLFFBQVEsT0FBTyxPQUFPLFNBQVMsSUFBSSxHQUFHO0NBQzlDLElBQUksU0FBUyxNQUFNO0NBQ25CLE9BQU8sUUFBUTtFQUNkLE1BQU0sUUFBUSxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksUUFBUTtFQUNoRCxNQUFNLFdBQVcsTUFBTTtFQUN2QixNQUFNLFVBQVUsTUFBTTtFQUN0QixNQUFNLFNBQVM7RUFDZixFQUFFO0NBQ0g7Q0FDQSxPQUFPO0FBQ1I7Ozs7OztBQU9BLFNBQVMsdUJBQXVCLFNBQVM7Q0FDeEMsTUFBTSxFQUFFLFVBQVUsdUJBQXVCLGtCQUFrQixNQUFN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
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/offset.js
|
|
2
|
-
const lineSplitRE = /\r?\n/;
|
|
3
|
-
function positionToOffset(source, lineNumber, columnNumber) {
|
|
4
|
-
const lines = source.split(lineSplitRE);
|
|
5
|
-
const nl = /\r\n/.test(source) ? 2 : 1;
|
|
6
|
-
let start = 0;
|
|
7
|
-
if (lineNumber > lines.length) return source.length;
|
|
8
|
-
for (let i = 0; i < lineNumber - 1; i++) start += lines[i].length + nl;
|
|
9
|
-
return start + columnNumber;
|
|
10
|
-
}
|
|
11
|
-
function offsetToLineNumber(source, offset) {
|
|
12
|
-
if (offset > source.length) throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`);
|
|
13
|
-
const lines = source.split(lineSplitRE);
|
|
14
|
-
const nl = /\r\n/.test(source) ? 2 : 1;
|
|
15
|
-
let counted = 0;
|
|
16
|
-
let line = 0;
|
|
17
|
-
for (; line < lines.length; line++) {
|
|
18
|
-
const lineLength = lines[line].length + nl;
|
|
19
|
-
if (counted + lineLength >= offset) break;
|
|
20
|
-
counted += lineLength;
|
|
21
|
-
}
|
|
22
|
-
return line + 1;
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { lineSplitRE, offsetToLineNumber, positionToOffset };
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L29mZnNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsaW5lU3BsaXRSRSA9IC9cXHI/XFxuLztcbmZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQoc291cmNlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHtcblx0Y29uc3QgbGluZXMgPSBzb3VyY2Uuc3BsaXQobGluZVNwbGl0UkUpO1xuXHRjb25zdCBubCA9IC9cXHJcXG4vLnRlc3Qoc291cmNlKSA/IDIgOiAxO1xuXHRsZXQgc3RhcnQgPSAwO1xuXHRpZiAobGluZU51bWJlciA+IGxpbmVzLmxlbmd0aCkge1xuXHRcdHJldHVybiBzb3VyY2UubGVuZ3RoO1xuXHR9XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgbGluZU51bWJlciAtIDE7IGkrKykge1xuXHRcdHN0YXJ0ICs9IGxpbmVzW2ldLmxlbmd0aCArIG5sO1xuXHR9XG5cdHJldHVybiBzdGFydCArIGNvbHVtbk51bWJlcjtcbn1cbmZ1bmN0aW9uIG9mZnNldFRvTGluZU51bWJlcihzb3VyY2UsIG9mZnNldCkge1xuXHRpZiAob2Zmc2V0ID4gc291cmNlLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgb2Zmc2V0IGlzIGxvbmdlciB0aGFuIHNvdXJjZSBsZW5ndGghIG9mZnNldCAke29mZnNldH0gPiBsZW5ndGggJHtzb3VyY2UubGVuZ3RofWApO1xuXHR9XG5cdGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KGxpbmVTcGxpdFJFKTtcblx0Y29uc3QgbmwgPSAvXFxyXFxuLy50ZXN0KHNvdXJjZSkgPyAyIDogMTtcblx0bGV0IGNvdW50ZWQgPSAwO1xuXHRsZXQgbGluZSA9IDA7XG5cdGZvciAoOyBsaW5lIDwgbGluZXMubGVuZ3RoOyBsaW5lKyspIHtcblx0XHRjb25zdCBsaW5lTGVuZ3RoID0gbGluZXNbbGluZV0ubGVuZ3RoICsgbmw7XG5cdFx0aWYgKGNvdW50ZWQgKyBsaW5lTGVuZ3RoID49IG9mZnNldCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNvdW50ZWQgKz0gbGluZUxlbmd0aDtcblx0fVxuXHRyZXR1cm4gbGluZSArIDE7XG59XG5cbmV4cG9ydCB7IGxpbmVTcGxpdFJFLCBvZmZzZXRUb0xpbmVOdW1iZXIsIHBvc2l0aW9uVG9PZmZzZXQgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxjQUFjO0FBQ3BCLFNBQVMsaUJBQWlCLFFBQVEsWUFBWSxjQUFjO0NBQzNELE1BQU0sUUFBUSxPQUFPLE1BQU0sV0FBVztDQUN0QyxNQUFNLEtBQUssT0FBTyxLQUFLLE1BQU0sSUFBSSxJQUFJO0NBQ3JDLElBQUksUUFBUTtDQUNaLElBQUksYUFBYSxNQUFNLFFBQ3RCLE9BQU8sT0FBTztDQUVmLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxhQUFhLEdBQUcsS0FDbkMsU0FBUyxNQUFNLEVBQUUsQ0FBQyxTQUFTO0NBRTVCLE9BQU8sUUFBUTtBQUNoQjtBQUNBLFNBQVMsbUJBQW1CLFFBQVEsUUFBUTtDQUMzQyxJQUFJLFNBQVMsT0FBTyxRQUNuQixNQUFNLElBQUksTUFBTSwrQ0FBK0MsT0FBTyxZQUFZLE9BQU8sUUFBUTtDQUVsRyxNQUFNLFFBQVEsT0FBTyxNQUFNLFdBQVc7Q0FDdEMsTUFBTSxLQUFLLE9BQU8sS0FBSyxNQUFNLElBQUksSUFBSTtDQUNyQyxJQUFJLFVBQVU7Q0FDZCxJQUFJLE9BQU87Q0FDWCxPQUFPLE9BQU8sTUFBTSxRQUFRLFFBQVE7RUFDbkMsTUFBTSxhQUFhLE1BQU0sS0FBSyxDQUFDLFNBQVM7RUFDeEMsSUFBSSxVQUFVLGNBQWMsUUFDM0I7RUFFRCxXQUFXO0NBQ1o7Q0FDQSxPQUFPLE9BQU87QUFDZiJ9
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js
|
|
2
|
-
const IS_RECORD_SYMBOL = "@@__IMMUTABLE_RECORD__@@";
|
|
3
|
-
const IS_COLLECTION_SYMBOL = "@@__IMMUTABLE_ITERABLE__@@";
|
|
4
|
-
function isImmutable(v) {
|
|
5
|
-
return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);
|
|
6
|
-
}
|
|
7
|
-
const OBJECT_PROTO = Object.getPrototypeOf({});
|
|
8
|
-
function getUnserializableMessage(err) {
|
|
9
|
-
if (err instanceof Error) return `<unserializable>: ${err.message}`;
|
|
10
|
-
if (typeof err === "string") return `<unserializable>: ${err}`;
|
|
11
|
-
return "<unserializable>";
|
|
12
|
-
}
|
|
13
|
-
function serializeValue(val, seen = /* @__PURE__ */ new WeakMap()) {
|
|
14
|
-
if (!val || typeof val === "string") return val;
|
|
15
|
-
if (val instanceof Error && "toJSON" in val && typeof val.toJSON === "function") {
|
|
16
|
-
const jsonValue = val.toJSON();
|
|
17
|
-
if (jsonValue && jsonValue !== val && typeof jsonValue === "object") {
|
|
18
|
-
if (typeof val.message === "string") safe(() => jsonValue.message ??= normalizeErrorMessage(val.message));
|
|
19
|
-
if (typeof val.stack === "string") safe(() => jsonValue.stack ??= val.stack);
|
|
20
|
-
if (typeof val.name === "string") safe(() => jsonValue.name ??= val.name);
|
|
21
|
-
if (val.cause != null) safe(() => jsonValue.cause ??= serializeValue(val.cause, seen));
|
|
22
|
-
}
|
|
23
|
-
return serializeValue(jsonValue, seen);
|
|
24
|
-
}
|
|
25
|
-
if (typeof val === "function") return `Function<${val.name || "anonymous"}>`;
|
|
26
|
-
if (typeof val === "symbol") return val.toString();
|
|
27
|
-
if (typeof val !== "object") return val;
|
|
28
|
-
if (typeof Buffer !== "undefined" && val instanceof Buffer) return `<Buffer(${val.length}) ...>`;
|
|
29
|
-
if (typeof Uint8Array !== "undefined" && val instanceof Uint8Array) return `<Uint8Array(${val.length}) ...>`;
|
|
30
|
-
if (isImmutable(val)) return serializeValue(val.toJSON(), seen);
|
|
31
|
-
if (val instanceof Promise || val.constructor && val.constructor.prototype === "AsyncFunction") return "Promise";
|
|
32
|
-
if (typeof Element !== "undefined" && val instanceof Element) return val.tagName;
|
|
33
|
-
if (typeof val.toJSON === "function") return serializeValue(val.toJSON(), seen);
|
|
34
|
-
if (seen.has(val)) return seen.get(val);
|
|
35
|
-
if (Array.isArray(val)) {
|
|
36
|
-
const clone = new Array(val.length);
|
|
37
|
-
seen.set(val, clone);
|
|
38
|
-
val.forEach((e, i) => {
|
|
39
|
-
try {
|
|
40
|
-
clone[i] = serializeValue(e, seen);
|
|
41
|
-
} catch (err) {
|
|
42
|
-
clone[i] = getUnserializableMessage(err);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
return clone;
|
|
46
|
-
} else {
|
|
47
|
-
const clone = Object.create(null);
|
|
48
|
-
seen.set(val, clone);
|
|
49
|
-
let obj = val;
|
|
50
|
-
while (obj && obj !== OBJECT_PROTO) {
|
|
51
|
-
Object.getOwnPropertyNames(obj).forEach((key) => {
|
|
52
|
-
if (key in clone) return;
|
|
53
|
-
try {
|
|
54
|
-
clone[key] = serializeValue(val[key], seen);
|
|
55
|
-
} catch (err) {
|
|
56
|
-
delete clone[key];
|
|
57
|
-
clone[key] = getUnserializableMessage(err);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
obj = Object.getPrototypeOf(obj);
|
|
61
|
-
}
|
|
62
|
-
if (val instanceof Error) safe(() => clone.message = normalizeErrorMessage(val.message));
|
|
63
|
-
return clone;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function safe(fn) {
|
|
67
|
-
try {
|
|
68
|
-
return fn();
|
|
69
|
-
} catch {}
|
|
70
|
-
}
|
|
71
|
-
function normalizeErrorMessage(message) {
|
|
72
|
-
return message.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, "$1").replace(/__(vite_ssr_import|vi_import)_\d+__\./g, "").replace(/getByTestId('__vitest_\d+__')/g, "page");
|
|
73
|
-
}
|
|
74
|
-
//#endregion
|
|
75
|
-
export { serializeValue };
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L3NlcmlhbGl6ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBJU19SRUNPUkRfU1lNQk9MID0gXCJAQF9fSU1NVVRBQkxFX1JFQ09SRF9fQEBcIjtcbmNvbnN0IElTX0NPTExFQ1RJT05fU1lNQk9MID0gXCJAQF9fSU1NVVRBQkxFX0lURVJBQkxFX19AQFwiO1xuZnVuY3Rpb24gaXNJbW11dGFibGUodikge1xuXHRyZXR1cm4gdiAmJiAodltJU19DT0xMRUNUSU9OX1NZTUJPTF0gfHwgdltJU19SRUNPUkRfU1lNQk9MXSk7XG59XG5jb25zdCBPQkpFQ1RfUFJPVE8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pO1xuZnVuY3Rpb24gZ2V0VW5zZXJpYWxpemFibGVNZXNzYWdlKGVycikge1xuXHRpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRyZXR1cm4gYDx1bnNlcmlhbGl6YWJsZT46ICR7ZXJyLm1lc3NhZ2V9YDtcblx0fVxuXHRpZiAodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBgPHVuc2VyaWFsaXphYmxlPjogJHtlcnJ9YDtcblx0fVxuXHRyZXR1cm4gXCI8dW5zZXJpYWxpemFibGU+XCI7XG59XG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2ViX1dvcmtlcnNfQVBJL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZSh2YWwsIHNlZW4gPSBuZXcgV2Vha01hcCgpKSB7XG5cdGlmICghdmFsIHx8IHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gdmFsO1xuXHR9XG5cdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvciAmJiBcInRvSlNPTlwiIGluIHZhbCAmJiB0eXBlb2YgdmFsLnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0Y29uc3QganNvblZhbHVlID0gdmFsLnRvSlNPTigpO1xuXHRcdGlmIChqc29uVmFsdWUgJiYganNvblZhbHVlICE9PSB2YWwgJiYgdHlwZW9mIGpzb25WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0aWYgKHR5cGVvZiB2YWwubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRzYWZlKCgpID0+IGpzb25WYWx1ZS5tZXNzYWdlID8/PSBub3JtYWxpemVFcnJvck1lc3NhZ2UodmFsLm1lc3NhZ2UpKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgdmFsLnN0YWNrID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHNhZmUoKCkgPT4ganNvblZhbHVlLnN0YWNrID8/PSB2YWwuc3RhY2spO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiB2YWwubmFtZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRzYWZlKCgpID0+IGpzb25WYWx1ZS5uYW1lID8/PSB2YWwubmFtZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodmFsLmNhdXNlICE9IG51bGwpIHtcblx0XHRcdFx0c2FmZSgoKSA9PiBqc29uVmFsdWUuY2F1c2UgPz89IHNlcmlhbGl6ZVZhbHVlKHZhbC5jYXVzZSwgc2VlbikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUoanNvblZhbHVlLCBzZWVuKTtcblx0fVxuXHRpZiAodHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIGBGdW5jdGlvbjwke3ZhbC5uYW1lIHx8IFwiYW5vbnltb3VzXCJ9PmA7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwgPT09IFwic3ltYm9sXCIpIHtcblx0XHRyZXR1cm4gdmFsLnRvU3RyaW5nKCk7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIpIHtcblx0XHRyZXR1cm4gdmFsO1xuXHR9XG5cdGlmICh0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuXHRcdHJldHVybiBgPEJ1ZmZlcigke3ZhbC5sZW5ndGh9KSAuLi4+YDtcblx0fVxuXHRpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgdmFsIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHRcdHJldHVybiBgPFVpbnQ4QXJyYXkoJHt2YWwubGVuZ3RofSkgLi4uPmA7XG5cdH1cblx0Ly8gY2Fubm90IHNlcmlhbGl6ZSBpbW11dGFibGVzIGFzIGltbXV0YWJsZXNcblx0aWYgKGlzSW1tdXRhYmxlKHZhbCkpIHtcblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUodmFsLnRvSlNPTigpLCBzZWVuKTtcblx0fVxuXHRpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSB8fCB2YWwuY29uc3RydWN0b3IgJiYgdmFsLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gXCJBc3luY0Z1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gXCJQcm9taXNlXCI7XG5cdH1cblx0aWYgKHR5cGVvZiBFbGVtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRyZXR1cm4gdmFsLnRhZ05hbWU7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUodmFsLnRvSlNPTigpLCBzZWVuKTtcblx0fVxuXHRpZiAoc2Vlbi5oYXModmFsKSkge1xuXHRcdHJldHVybiBzZWVuLmdldCh2YWwpO1xuXHR9XG5cdGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1uZXctYXJyYXkgLS0gd2UgbmVlZCB0byBrZWVwIHNwYXJzZSBhcnJheXMgKFsxLCwzXSlcblx0XHRjb25zdCBjbG9uZSA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcblx0XHRzZWVuLnNldCh2YWwsIGNsb25lKTtcblx0XHR2YWwuZm9yRWFjaCgoZSwgaSkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y2xvbmVbaV0gPSBzZXJpYWxpemVWYWx1ZShlLCBzZWVuKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRjbG9uZVtpXSA9IGdldFVuc2VyaWFsaXphYmxlTWVzc2FnZShlcnIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBjbG9uZTtcblx0fSBlbHNlIHtcblx0XHQvLyBPYmplY3RzIHdpdGggYEVycm9yYCBjb25zdHJ1Y3RvcnMgYXBwZWFyIHRvIGNhdXNlIHByb2JsZW1zIGR1cmluZyB3b3JrZXIgY29tbXVuaWNhdGlvblxuXHRcdC8vIHVzaW5nIGBNZXNzYWdlUG9ydGAsIHNvIHRoZSBzZXJpYWxpemVkIGVycm9yIG9iamVjdCBpcyBiZWluZyByZWNyZWF0ZWQgYXMgcGxhaW4gb2JqZWN0LlxuXHRcdGNvbnN0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0XHRzZWVuLnNldCh2YWwsIGNsb25lKTtcblx0XHRsZXQgb2JqID0gdmFsO1xuXHRcdHdoaWxlIChvYmogJiYgb2JqICE9PSBPQkpFQ1RfUFJPVE8pIHtcblx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgaW4gY2xvbmUpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjbG9uZVtrZXldID0gc2VyaWFsaXplVmFsdWUodmFsW2tleV0sIHNlZW4pO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHQvLyBkZWxldGUgaW4gY2FzZSBpdCBoYXMgYSBzZXR0ZXIgZnJvbSBwcm90b3R5cGUgdGhhdCBtaWdodCB0aHJvd1xuXHRcdFx0XHRcdGRlbGV0ZSBjbG9uZVtrZXldO1xuXHRcdFx0XHRcdGNsb25lW2tleV0gPSBnZXRVbnNlcmlhbGl6YWJsZU1lc3NhZ2UoZXJyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcblx0XHR9XG5cdFx0aWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0XHRzYWZlKCgpID0+IGNsb25lLm1lc3NhZ2UgPSBub3JtYWxpemVFcnJvck1lc3NhZ2UodmFsLm1lc3NhZ2UpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9XG59XG5mdW5jdGlvbiBzYWZlKGZuKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGZuKCk7XG5cdH0gY2F0Y2gge31cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVycm9yTWVzc2FnZShtZXNzYWdlKSB7XG5cdHJldHVybiBtZXNzYWdlLnJlcGxhY2UoL1xcKDBcXHM/LFxccz9fX3ZpdGVfc3NyX2ltcG9ydF9cXGQrX18uKFxcdyspXFwpL2csIFwiJDFcIikucmVwbGFjZSgvX18odml0ZV9zc3JfaW1wb3J0fHZpX2ltcG9ydClfXFxkK19fXFwuL2csIFwiXCIpLnJlcGxhY2UoL2dldEJ5VGVzdElkKCdfX3ZpdGVzdF9cXGQrX18nKS9nLCBcInBhZ2VcIik7XG59XG5cbmV4cG9ydCB7IHNlcmlhbGl6ZVZhbHVlIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sdUJBQXVCO0FBQzdCLFNBQVMsWUFBWSxHQUFHO0NBQ3ZCLE9BQU8sTUFBTSxFQUFFLHlCQUF5QixFQUFFO0FBQzNDO0FBQ0EsTUFBTSxlQUFlLE9BQU8sZUFBZSxDQUFDLENBQUM7QUFDN0MsU0FBUyx5QkFBeUIsS0FBSztDQUN0QyxJQUFJLGVBQWUsT0FDbEIsT0FBTyxxQkFBcUIsSUFBSTtD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
|