@neon/sdk 0.2.0 → 1.1.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.
Files changed (86) hide show
  1. package/README.md +135 -5
  2. package/dist/client/index.d.ts +3 -3
  3. package/dist/client/index.js +2 -2
  4. package/dist/client/raw.gen.d.ts +4282 -0
  5. package/dist/client/raw.gen.d.ts.map +1 -0
  6. package/dist/client/raw.gen.js +170 -0
  7. package/dist/client/raw.gen.js.map +1 -0
  8. package/dist/client/sdk.gen.d.ts +252 -2
  9. package/dist/client/sdk.gen.d.ts.map +1 -1
  10. package/dist/client/sdk.gen.js +634 -1
  11. package/dist/client/sdk.gen.js.map +1 -1
  12. package/dist/client/types.gen.d.ts +2092 -1010
  13. package/dist/client/types.gen.d.ts.map +1 -1
  14. package/dist/index.d.ts +5 -4
  15. package/dist/neon/client.d.ts +10 -0
  16. package/dist/neon/client.d.ts.map +1 -1
  17. package/dist/neon/client.js +10 -0
  18. package/dist/neon/client.js.map +1 -1
  19. package/dist/neon/client.test-d.js +17 -0
  20. package/dist/neon/client.test-d.js.map +1 -1
  21. package/dist/neon/coverage.d.ts.map +1 -1
  22. package/dist/neon/coverage.js +57 -0
  23. package/dist/neon/coverage.js.map +1 -1
  24. package/dist/neon/raw-wrap.d.ts +63 -0
  25. package/dist/neon/raw-wrap.d.ts.map +1 -0
  26. package/dist/neon/raw-wrap.js +47 -0
  27. package/dist/neon/raw-wrap.js.map +1 -0
  28. package/dist/neon/resources/ai-gateway.d.ts +16 -0
  29. package/dist/neon/resources/ai-gateway.d.ts.map +1 -0
  30. package/dist/neon/resources/ai-gateway.js +23 -0
  31. package/dist/neon/resources/ai-gateway.js.map +1 -0
  32. package/dist/neon/resources/auth.d.ts +81 -0
  33. package/dist/neon/resources/auth.d.ts.map +1 -0
  34. package/dist/neon/resources/auth.js +197 -0
  35. package/dist/neon/resources/auth.js.map +1 -0
  36. package/dist/neon/resources/branches.d.ts +7 -0
  37. package/dist/neon/resources/branches.d.ts.map +1 -1
  38. package/dist/neon/resources/branches.js +11 -1
  39. package/dist/neon/resources/branches.js.map +1 -1
  40. package/dist/neon/resources/bucket-objects.d.ts +33 -0
  41. package/dist/neon/resources/bucket-objects.d.ts.map +1 -0
  42. package/dist/neon/resources/bucket-objects.js +74 -0
  43. package/dist/neon/resources/bucket-objects.js.map +1 -0
  44. package/dist/neon/resources/buckets.d.ts +23 -0
  45. package/dist/neon/resources/buckets.d.ts.map +1 -0
  46. package/dist/neon/resources/buckets.js +45 -0
  47. package/dist/neon/resources/buckets.js.map +1 -0
  48. package/dist/neon/resources/credentials.d.ts +23 -0
  49. package/dist/neon/resources/credentials.d.ts.map +1 -0
  50. package/dist/neon/resources/credentials.js +45 -0
  51. package/dist/neon/resources/credentials.js.map +1 -0
  52. package/dist/neon/resources/endpoints.d.ts +3 -0
  53. package/dist/neon/resources/endpoints.d.ts.map +1 -1
  54. package/dist/neon/resources/endpoints.js +11 -1
  55. package/dist/neon/resources/endpoints.js.map +1 -1
  56. package/dist/neon/resources/functions.d.ts +30 -0
  57. package/dist/neon/resources/functions.d.ts.map +1 -0
  58. package/dist/neon/resources/functions.js +79 -0
  59. package/dist/neon/resources/functions.js.map +1 -0
  60. package/dist/neon/resources/projects.d.ts +26 -2
  61. package/dist/neon/resources/projects.d.ts.map +1 -1
  62. package/dist/neon/resources/projects.js +44 -2
  63. package/dist/neon/resources/projects.js.map +1 -1
  64. package/dist/neon/resources/snapshots.d.ts +16 -5
  65. package/dist/neon/resources/snapshots.d.ts.map +1 -1
  66. package/dist/neon/resources/snapshots.js +4 -1
  67. package/dist/neon/resources/snapshots.js.map +1 -1
  68. package/dist/neon/resources/storage.d.ts +24 -0
  69. package/dist/neon/resources/storage.d.ts.map +1 -0
  70. package/dist/neon/resources/storage.js +32 -0
  71. package/dist/neon/resources/storage.js.map +1 -0
  72. package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/chunk-tasks.js +1 -1
  73. package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/index.js +4 -3
  74. package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/index.js.map +1 -1
  75. package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +1 -1
  76. package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/index.js +3 -3
  77. package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/source-map.js +1 -1
  78. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +1 -1
  79. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +1 -1
  80. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +1 -1
  81. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js +1 -1
  82. package/dist/node_modules/.pnpm/vitest@3.0.9_@types_debug@4.1.13_@types_node@20.19.17_jiti@2.7.0_jsdom@26.1.0_lightning_fb7ae83398b95c49208c9194029bba02/node_modules/vitest/dist/index.js +2 -2
  83. package/dist/raw.d.ts +4 -3
  84. package/dist/raw.js +24 -3
  85. package/dist/raw.js.map +1 -1
  86. package/package.json +4 -4
@@ -1,9 +1,9 @@
1
- import { BackupSchedule, Branch, Snapshot, SnapshotUpdateRequest } from "../../client/types.gen.js";
1
+ import { BackupSchedule, Branch, Snapshot } from "../../client/types.gen.js";
2
2
  import { Outcome } from "../result.js";
3
3
  import { CallOptions, RequestContext } from "../context.js";
4
4
 
5
5
  //#region src/neon/resources/snapshots.d.ts
6
- type UpdateInput = SnapshotUpdateRequest["snapshot"];
6
+
7
7
  /**
8
8
  * Inspect a freshly restored (not-yet-finalized) branch and decide whether to commit.
9
9
  * Return `true` to finalize the restore, `false` to abort it.
@@ -20,6 +20,17 @@ interface CreateSnapshotInput {
20
20
  /** When the snapshot is automatically deleted (ISO 8601). */
21
21
  expiresAt?: string;
22
22
  }
23
+ /** Input for {@link Snapshots.update}. */
24
+ interface UpdateSnapshotInput {
25
+ /** Rename the snapshot. */
26
+ name?: string;
27
+ /**
28
+ * Change when the snapshot expires (ISO 8601). Omit to leave the current
29
+ * expiration unchanged, pass `null` to clear it so the snapshot never
30
+ * expires, or a future timestamp to set an absolute expiration.
31
+ */
32
+ expiresAt?: string | null;
33
+ }
23
34
  /** Input for {@link Snapshots.restore}. */
24
35
  interface RestoreSnapshotInput {
25
36
  /** Name for the restored branch. Auto-generated when omitted. */
@@ -53,8 +64,8 @@ declare class Snapshots<DThrow extends boolean> {
53
64
  create(projectId: string, branchId: string, input?: CreateSnapshotInput): Promise<Outcome<Snapshot, DThrow>>;
54
65
  create<Throw extends boolean = DThrow>(projectId: string, branchId: string, input: CreateSnapshotInput | undefined, opts: CallOptions<Throw>): Promise<Outcome<Snapshot, Throw>>;
55
66
  /** @apiCall PATCH /projects/{project_id}/snapshots/{snapshot_id} */
56
- update(projectId: string, snapshotId: string, input: UpdateInput): Promise<Outcome<Snapshot, DThrow>>;
57
- update<Throw extends boolean = DThrow>(projectId: string, snapshotId: string, input: UpdateInput, opts: CallOptions<Throw>): Promise<Outcome<Snapshot, Throw>>;
67
+ update(projectId: string, snapshotId: string, input: UpdateSnapshotInput): Promise<Outcome<Snapshot, DThrow>>;
68
+ update<Throw extends boolean = DThrow>(projectId: string, snapshotId: string, input: UpdateSnapshotInput, opts: CallOptions<Throw>): Promise<Outcome<Snapshot, Throw>>;
58
69
  /** @apiCall DELETE /projects/{project_id}/snapshots/{snapshot_id} */
59
70
  delete(projectId: string, snapshotId: string): Promise<Outcome<void, DThrow>>;
60
71
  delete<Throw extends boolean = DThrow>(projectId: string, snapshotId: string, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
@@ -82,5 +93,5 @@ declare class Snapshots<DThrow extends boolean> {
82
93
  setSchedule<Throw extends boolean = DThrow>(projectId: string, branchId: string, schedule: BackupSchedule, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
83
94
  }
84
95
  //#endregion
85
- export { CreateSnapshotInput, RestorePreview, RestoreSnapshotInput, Snapshots };
96
+ export { CreateSnapshotInput, RestorePreview, RestoreSnapshotInput, Snapshots, UpdateSnapshotInput };
86
97
  //# sourceMappingURL=snapshots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshots.d.ts","names":[],"sources":["../../../src/neon/resources/snapshots.ts"],"mappings":"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"}
1
+ {"version":3,"file":"snapshots.d.ts","names":[],"sources":["../../../src/neon/resources/snapshots.ts"],"mappings":"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"}
@@ -37,7 +37,10 @@ var Snapshots = class {
37
37
  project_id: projectId,
38
38
  snapshot_id: snapshotId
39
39
  },
40
- body: { snapshot: input },
40
+ body: { snapshot: {
41
+ name: input.name,
42
+ expires_at: input.expiresAt
43
+ } },
41
44
  throwOnError: false
42
45
  }), (data) => data.snapshot);
43
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshots.js","names":["#ctx"],"sources":["../../../src/neon/resources/snapshots.ts"],"sourcesContent":["import {\n\tcreateSnapshot,\n\tdeleteProjectBranch,\n\tdeleteSnapshot,\n\tfinalizeRestoreBranch,\n\tgetSnapshotSchedule,\n\tlistSnapshots,\n\trestoreSnapshot,\n\tsetSnapshotSchedule,\n\tupdateSnapshot,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tBackupSchedule,\n\tBranch,\n\tSnapshot,\n\tSnapshotUpdateRequest,\n} from \"../../client/types.gen.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport { err, finalize, type NeonResult, type Outcome, ok } from \"../result.js\";\n\ntype UpdateInput = SnapshotUpdateRequest[\"snapshot\"];\n\n/**\n * Inspect a freshly restored (not-yet-finalized) branch and decide whether to commit.\n * Return `true` to finalize the restore, `false` to abort it.\n */\nexport type RestorePreview = (branch: Branch) => boolean | Promise<boolean>;\n\n/** Options for {@link Snapshots.create} (point-in-time + naming). */\nexport interface CreateSnapshotInput {\n\t/** A name for the snapshot. */\n\tname?: string;\n\t/** Take the snapshot at this timestamp (ISO 8601). Mutually exclusive with `lsn`. */\n\ttimestamp?: string;\n\t/** Take the snapshot at this LSN. Mutually exclusive with `timestamp`. */\n\tlsn?: string;\n\t/** When the snapshot is automatically deleted (ISO 8601). */\n\texpiresAt?: string;\n}\n\n/** Input for {@link Snapshots.restore}. */\nexport interface RestoreSnapshotInput {\n\t/** Name for the restored branch. Auto-generated when omitted. */\n\tname?: string;\n\t/** Branch to restore onto. Defaults to the snapshot's source branch. */\n\ttargetBranchId?: string;\n\t/**\n\t * Finalize immediately (move computes onto the restored branch). Defaults to `true`\n\t * when restoring as a new branch (nothing to clobber) and `false` when restoring\n\t * **onto** an existing branch (`targetBranchId`), so you can preview before the swap.\n\t * Ignored when `preview` is set (the preview flow always restores un-finalized first).\n\t */\n\tfinalize?: boolean;\n\t/**\n\t * Transaction-style restore: receives the restored (un-finalized) branch; return `true`\n\t * to finalize (commit) or `false` to abort. On abort the preview branch is deleted\n\t * unless `keepOnAbort` is set. Either way `restore` resolves to the restored `Branch`.\n\t */\n\tpreview?: RestorePreview;\n\t/** Keep the preview branch when `preview` returns `false` (default: delete it). */\n\tkeepOnAbort?: boolean;\n}\n\n/** Snapshot resource. */\nexport class Snapshots<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/snapshots */\n\tlist(projectId: string): Promise<Outcome<Snapshot[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot[], Throw>>;\n\tlist(\n\t\tprojectId: string,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot[] | NeonResult<Snapshot[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tlistSnapshots({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshots,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/branches/{branch_id}/snapshot */\n\tcreate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: CreateSnapshotInput,\n\t): Promise<Outcome<Snapshot, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: CreateSnapshotInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot, Throw>>;\n\tcreate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: CreateSnapshotInput,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot | NeonResult<Snapshot>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tcreateSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tquery: {\n\t\t\t\t\t\tname: input?.name,\n\t\t\t\t\t\ttimestamp: input?.timestamp,\n\t\t\t\t\t\tlsn: input?.lsn,\n\t\t\t\t\t\texpires_at: input?.expiresAt,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshot,\n\t\t);\n\t}\n\n\t/** @apiCall PATCH /projects/{project_id}/snapshots/{snapshot_id} */\n\tupdate(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateInput,\n\t): Promise<Outcome<Snapshot, DThrow>>;\n\tupdate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot, Throw>>;\n\tupdate(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateInput,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot | NeonResult<Snapshot>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tupdateSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\tbody: { snapshot: input },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshot,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id}/snapshots/{snapshot_id} */\n\tdelete(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t): Promise<Outcome<void, DThrow>>;\n\tdelete<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tdelete(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tdeleteSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n\n\t/**\n\t * Restore a snapshot into a branch. Returns the restored branch.\n\t *\n\t * - **As a new branch** (no `targetBranchId`): finalizes by default — ready to use.\n\t * - **Onto an existing branch** (`targetBranchId`): does **not** finalize by default,\n\t * so you can preview before the compute swap. Finish later with\n\t * `branches.finalizeRestore`, or pass a `preview` callback to do it transactionally.\n\t *\n\t * With `preview`, this restores un-finalized, runs your callback against the restored\n\t * branch, then finalizes (commit) or deletes the preview branch (abort, unless\n\t * `keepOnAbort`). Either way it resolves to the restored `Branch`.\n\t *\n\t * @apiCall POST /projects/{project_id}/snapshots/{snapshot_id}/restore\n\t */\n\trestore(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput?: RestoreSnapshotInput,\n\t): Promise<Outcome<Branch, DThrow>>;\n\trestore<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: RestoreSnapshotInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tasync restore(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput?: RestoreSnapshotInput,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst preview = input?.preview;\n\t\t// New branch → finalize by default; onto existing → preview-first by default.\n\t\t// The preview flow always restores un-finalized so it can inspect first.\n\t\tconst finalizeNow = preview\n\t\t\t? false\n\t\t\t: (input?.finalize ?? input?.targetBranchId === undefined);\n\n\t\tconst restored = await this.#ctx.execute(\n\t\t\t{\n\t\t\t\t...opts,\n\t\t\t\twaitForReadiness: preview ? true : opts?.waitForReadiness,\n\t\t\t},\n\t\t\t(client) =>\n\t\t\t\trestoreSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tname: input?.name,\n\t\t\t\t\t\ttarget_branch_id: input?.targetBranchId,\n\t\t\t\t\t\tfinalize_restore: finalizeNow,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t\tif (restored.error || !preview) {\n\t\t\treturn finalize(restored, shouldThrow);\n\t\t}\n\n\t\tconst branch = restored.data;\n\t\tconst commit = await preview(branch);\n\t\tconst step = commit\n\t\t\t? await this.#ctx.execute(\n\t\t\t\t\t{ ...opts, waitForReadiness: true },\n\t\t\t\t\t(client) =>\n\t\t\t\t\t\tfinalizeRestoreBranch({\n\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\t\t\tbranch_id: branch.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\t\t}),\n\t\t\t\t\t() => undefined,\n\t\t\t\t)\n\t\t\t: input?.keepOnAbort\n\t\t\t\t? ok(undefined)\n\t\t\t\t: await this.#ctx.execute(\n\t\t\t\t\t\t{ ...opts, waitForReadiness: true },\n\t\t\t\t\t\t(client) =>\n\t\t\t\t\t\t\tdeleteProjectBranch({\n\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\t\t\t\tbranch_id: branch.id,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t() => undefined,\n\t\t\t\t\t);\n\n\t\tif (step.error) return finalize(err<Branch>(step.error), shouldThrow);\n\t\treturn finalize(ok(branch), shouldThrow);\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/branches/{branch_id}/backup_schedule */\n\tgetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t): Promise<Outcome<BackupSchedule, DThrow>>;\n\tgetSchedule<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<BackupSchedule, Throw>>;\n\tgetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<BackupSchedule | NeonResult<BackupSchedule>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tgetSnapshotSchedule({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall PUT /projects/{project_id}/branches/{branch_id}/backup_schedule */\n\tsetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t): Promise<Outcome<void, DThrow>>;\n\tsetSchedule<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tsetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tsetSnapshotSchedule({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tbody: schedule,\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"snapshots.js","names":["#ctx"],"sources":["../../../src/neon/resources/snapshots.ts"],"sourcesContent":["import {\n\tcreateSnapshot,\n\tdeleteProjectBranch,\n\tdeleteSnapshot,\n\tfinalizeRestoreBranch,\n\tgetSnapshotSchedule,\n\tlistSnapshots,\n\trestoreSnapshot,\n\tsetSnapshotSchedule,\n\tupdateSnapshot,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tBackupSchedule,\n\tBranch,\n\tSnapshot,\n} from \"../../client/types.gen.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport { err, finalize, type NeonResult, type Outcome, ok } from \"../result.js\";\n\n/**\n * Inspect a freshly restored (not-yet-finalized) branch and decide whether to commit.\n * Return `true` to finalize the restore, `false` to abort it.\n */\nexport type RestorePreview = (branch: Branch) => boolean | Promise<boolean>;\n\n/** Options for {@link Snapshots.create} (point-in-time + naming). */\nexport interface CreateSnapshotInput {\n\t/** A name for the snapshot. */\n\tname?: string;\n\t/** Take the snapshot at this timestamp (ISO 8601). Mutually exclusive with `lsn`. */\n\ttimestamp?: string;\n\t/** Take the snapshot at this LSN. Mutually exclusive with `timestamp`. */\n\tlsn?: string;\n\t/** When the snapshot is automatically deleted (ISO 8601). */\n\texpiresAt?: string;\n}\n\n/** Input for {@link Snapshots.update}. */\nexport interface UpdateSnapshotInput {\n\t/** Rename the snapshot. */\n\tname?: string;\n\t/**\n\t * Change when the snapshot expires (ISO 8601). Omit to leave the current\n\t * expiration unchanged, pass `null` to clear it so the snapshot never\n\t * expires, or a future timestamp to set an absolute expiration.\n\t */\n\texpiresAt?: string | null;\n}\n\n/** Input for {@link Snapshots.restore}. */\nexport interface RestoreSnapshotInput {\n\t/** Name for the restored branch. Auto-generated when omitted. */\n\tname?: string;\n\t/** Branch to restore onto. Defaults to the snapshot's source branch. */\n\ttargetBranchId?: string;\n\t/**\n\t * Finalize immediately (move computes onto the restored branch). Defaults to `true`\n\t * when restoring as a new branch (nothing to clobber) and `false` when restoring\n\t * **onto** an existing branch (`targetBranchId`), so you can preview before the swap.\n\t * Ignored when `preview` is set (the preview flow always restores un-finalized first).\n\t */\n\tfinalize?: boolean;\n\t/**\n\t * Transaction-style restore: receives the restored (un-finalized) branch; return `true`\n\t * to finalize (commit) or `false` to abort. On abort the preview branch is deleted\n\t * unless `keepOnAbort` is set. Either way `restore` resolves to the restored `Branch`.\n\t */\n\tpreview?: RestorePreview;\n\t/** Keep the preview branch when `preview` returns `false` (default: delete it). */\n\tkeepOnAbort?: boolean;\n}\n\n/** Snapshot resource. */\nexport class Snapshots<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/snapshots */\n\tlist(projectId: string): Promise<Outcome<Snapshot[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot[], Throw>>;\n\tlist(\n\t\tprojectId: string,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot[] | NeonResult<Snapshot[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tlistSnapshots({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshots,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/branches/{branch_id}/snapshot */\n\tcreate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: CreateSnapshotInput,\n\t): Promise<Outcome<Snapshot, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: CreateSnapshotInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot, Throw>>;\n\tcreate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: CreateSnapshotInput,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot | NeonResult<Snapshot>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tcreateSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tquery: {\n\t\t\t\t\t\tname: input?.name,\n\t\t\t\t\t\ttimestamp: input?.timestamp,\n\t\t\t\t\t\tlsn: input?.lsn,\n\t\t\t\t\t\texpires_at: input?.expiresAt,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshot,\n\t\t);\n\t}\n\n\t/** @apiCall PATCH /projects/{project_id}/snapshots/{snapshot_id} */\n\tupdate(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateSnapshotInput,\n\t): Promise<Outcome<Snapshot, DThrow>>;\n\tupdate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateSnapshotInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Snapshot, Throw>>;\n\tupdate(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: UpdateSnapshotInput,\n\t\topts?: CallOptions,\n\t): Promise<Snapshot | NeonResult<Snapshot>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tupdateSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\t// `undefined` fields are dropped by JSON serialization, so an\n\t\t\t\t\t// omitted `expiresAt` leaves the expiration unchanged while an\n\t\t\t\t\t// explicit `null` clears it.\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tsnapshot: {\n\t\t\t\t\t\t\tname: input.name,\n\t\t\t\t\t\t\texpires_at: input.expiresAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.snapshot,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id}/snapshots/{snapshot_id} */\n\tdelete(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t): Promise<Outcome<void, DThrow>>;\n\tdelete<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tdelete(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tdeleteSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n\n\t/**\n\t * Restore a snapshot into a branch. Returns the restored branch.\n\t *\n\t * - **As a new branch** (no `targetBranchId`): finalizes by default — ready to use.\n\t * - **Onto an existing branch** (`targetBranchId`): does **not** finalize by default,\n\t * so you can preview before the compute swap. Finish later with\n\t * `branches.finalizeRestore`, or pass a `preview` callback to do it transactionally.\n\t *\n\t * With `preview`, this restores un-finalized, runs your callback against the restored\n\t * branch, then finalizes (commit) or deletes the preview branch (abort, unless\n\t * `keepOnAbort`). Either way it resolves to the restored `Branch`.\n\t *\n\t * @apiCall POST /projects/{project_id}/snapshots/{snapshot_id}/restore\n\t */\n\trestore(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput?: RestoreSnapshotInput,\n\t): Promise<Outcome<Branch, DThrow>>;\n\trestore<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput: RestoreSnapshotInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tasync restore(\n\t\tprojectId: string,\n\t\tsnapshotId: string,\n\t\tinput?: RestoreSnapshotInput,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst preview = input?.preview;\n\t\t// New branch → finalize by default; onto existing → preview-first by default.\n\t\t// The preview flow always restores un-finalized so it can inspect first.\n\t\tconst finalizeNow = preview\n\t\t\t? false\n\t\t\t: (input?.finalize ?? input?.targetBranchId === undefined);\n\n\t\tconst restored = await this.#ctx.execute(\n\t\t\t{\n\t\t\t\t...opts,\n\t\t\t\twaitForReadiness: preview ? true : opts?.waitForReadiness,\n\t\t\t},\n\t\t\t(client) =>\n\t\t\t\trestoreSnapshot({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, snapshot_id: snapshotId },\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tname: input?.name,\n\t\t\t\t\t\ttarget_branch_id: input?.targetBranchId,\n\t\t\t\t\t\tfinalize_restore: finalizeNow,\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t\tif (restored.error || !preview) {\n\t\t\treturn finalize(restored, shouldThrow);\n\t\t}\n\n\t\tconst branch = restored.data;\n\t\tconst commit = await preview(branch);\n\t\tconst step = commit\n\t\t\t? await this.#ctx.execute(\n\t\t\t\t\t{ ...opts, waitForReadiness: true },\n\t\t\t\t\t(client) =>\n\t\t\t\t\t\tfinalizeRestoreBranch({\n\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\t\t\tbranch_id: branch.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\t\t}),\n\t\t\t\t\t() => undefined,\n\t\t\t\t)\n\t\t\t: input?.keepOnAbort\n\t\t\t\t? ok(undefined)\n\t\t\t\t: await this.#ctx.execute(\n\t\t\t\t\t\t{ ...opts, waitForReadiness: true },\n\t\t\t\t\t\t(client) =>\n\t\t\t\t\t\t\tdeleteProjectBranch({\n\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\tpath: {\n\t\t\t\t\t\t\t\t\tproject_id: projectId,\n\t\t\t\t\t\t\t\t\tbranch_id: branch.id,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t() => undefined,\n\t\t\t\t\t);\n\n\t\tif (step.error) return finalize(err<Branch>(step.error), shouldThrow);\n\t\treturn finalize(ok(branch), shouldThrow);\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/branches/{branch_id}/backup_schedule */\n\tgetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t): Promise<Outcome<BackupSchedule, DThrow>>;\n\tgetSchedule<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<BackupSchedule, Throw>>;\n\tgetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<BackupSchedule | NeonResult<BackupSchedule>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tgetSnapshotSchedule({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall PUT /projects/{project_id}/branches/{branch_id}/backup_schedule */\n\tsetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t): Promise<Outcome<void, DThrow>>;\n\tsetSchedule<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tsetSchedule(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tschedule: BackupSchedule,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tsetSnapshotSchedule({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tbody: schedule,\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { BranchStorage } from "../../client/types.gen.js";
2
+ import { Outcome } from "../result.js";
3
+ import { CallOptions, RequestContext } from "../context.js";
4
+ import { BucketObjects } from "./bucket-objects.js";
5
+ import { Buckets } from "./buckets.js";
6
+
7
+ //#region src/neon/resources/storage.d.ts
8
+
9
+ /**
10
+ * Branch-scoped object storage: branch storage state, buckets, and bucket objects.
11
+ * Grouped under `neon.storage.*` so it stays distinct from the Postgres data plane.
12
+ */
13
+ declare class Storage<DThrow extends boolean> {
14
+ #private;
15
+ readonly buckets: Buckets<DThrow>;
16
+ readonly objects: BucketObjects<DThrow>;
17
+ constructor(ctx: RequestContext);
18
+ /** @apiCall GET /projects/{project_id}/branches/{branch_id}/storage */
19
+ get(projectId: string, branchId: string): Promise<Outcome<BranchStorage, DThrow>>;
20
+ get<Throw extends boolean = DThrow>(projectId: string, branchId: string, opts: CallOptions<Throw>): Promise<Outcome<BranchStorage, Throw>>;
21
+ }
22
+ //#endregion
23
+ export { Storage };
24
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","names":[],"sources":["../../../src/neon/resources/storage.ts"],"mappings":";;;;;;;;;;AAWA;;AAC2B,cADd,OACc,CAAA,eAAA,OAAA,CAAA,CAAA;UAAR;WACc,OAAA,EADd,OACc,CADN,MACM,CAAA;WAAd,OAAA,EAAA,aAAA,CAAc,MAAd,CAAA;aAGD,CAAA,GAAA,EAAA,cAAA;;KAUiB,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAA/B,OAA+B,CAAvB,OAAuB,CAAf,aAAe,EAAA,MAAA,CAAA,CAAA;KAAvB,CAAA,cAAA,OAAA,GACiB,MADjB,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,IAAA,EAIJ,WAJI,CAIQ,KAJR,CAAA,CAAA,EAKR,OALQ,CAKA,OALA,CAKQ,aALR,EAKuB,KALvB,CAAA,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { getProjectBranchStorage } from "../../client/sdk.gen.js";
2
+ import { BucketObjects } from "./bucket-objects.js";
3
+ import { Buckets } from "./buckets.js";
4
+ //#region src/neon/resources/storage.ts
5
+ /**
6
+ * Branch-scoped object storage: branch storage state, buckets, and bucket objects.
7
+ * Grouped under `neon.storage.*` so it stays distinct from the Postgres data plane.
8
+ */
9
+ var Storage = class {
10
+ buckets;
11
+ objects;
12
+ #ctx;
13
+ constructor(ctx) {
14
+ this.#ctx = ctx;
15
+ this.buckets = new Buckets(ctx);
16
+ this.objects = new BucketObjects(ctx);
17
+ }
18
+ get(projectId, branchId, opts) {
19
+ return this.#ctx.run(opts, (client) => getProjectBranchStorage({
20
+ client,
21
+ path: {
22
+ project_id: projectId,
23
+ branch_id: branchId
24
+ },
25
+ throwOnError: false
26
+ }), (data) => data);
27
+ }
28
+ };
29
+ //#endregion
30
+ export { Storage };
31
+
32
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","names":["#ctx"],"sources":["../../../src/neon/resources/storage.ts"],"sourcesContent":["import { getProjectBranchStorage } from \"../../client/sdk.gen.js\";\nimport type { BranchStorage } from \"../../client/types.gen.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport type { NeonResult, Outcome } from \"../result.js\";\nimport { BucketObjects } from \"./bucket-objects.js\";\nimport { Buckets } from \"./buckets.js\";\n\n/**\n * Branch-scoped object storage: branch storage state, buckets, and bucket objects.\n * Grouped under `neon.storage.*` so it stays distinct from the Postgres data plane.\n */\nexport class Storage<DThrow extends boolean> {\n\treadonly buckets: Buckets<DThrow>;\n\treadonly objects: BucketObjects<DThrow>;\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t\tthis.buckets = new Buckets(ctx);\n\t\tthis.objects = new BucketObjects(ctx);\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/branches/{branch_id}/storage */\n\tget(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t): Promise<Outcome<BranchStorage, DThrow>>;\n\tget<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<BranchStorage, Throw>>;\n\tget(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<BranchStorage | NeonResult<BranchStorage>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tgetProjectBranchStorage({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n}\n"],"mappings":";;;;;;;;AAWA,IAAa,UAAb,MAA6C;CAC5C;CACA;CACA;CAEA,YAAY,KAAqB;EAChC,KAAKA,OAAO;EACZ,KAAK,UAAU,IAAI,QAAQ,GAAG;EAC9B,KAAK,UAAU,IAAI,cAAc,GAAG;CACrC;CAYA,IACC,WACA,UACA,MACqD;EACrD,OAAO,KAAKA,KAAK,IAChB,OACC,WACA,wBAAwB;GACvB;GACA,MAAM;IAAE,YAAY;IAAW,WAAW;GAAS;GACnD,cAAc;EACf,CAAC,IACD,SAAS,IACX;CACD;AACD"}
@@ -25,6 +25,6 @@ function createChainable(keys, fn) {
25
25
  return chain;
26
26
  }
27
27
  //#endregion
28
- export { createChainable };
28
+ export { createChainable as c };
29
29
 
30
30
  //# sourceMappingURL=chunk-tasks.js.map
@@ -1,8 +1,8 @@
1
- import { format, objDisplay } from "../../../../../@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js";
1
+ import { f as format, o as objDisplay } from "../../../../../@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js";
2
2
  import { createDefer, isNegativeNaN, isObject, objectAttr, toArray } from "../../../../../@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/helpers.js";
3
3
  import { getSafeTimers } from "../../../../../@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/index.js";
4
4
  import { parseSingleStack } from "../../../../../@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/source-map.js";
5
- import { createChainable } from "./chunk-tasks.js";
5
+ import { c as createChainable } from "./chunk-tasks.js";
6
6
  //#region ../../node_modules/.pnpm/@vitest+runner@3.0.9/node_modules/@vitest/runner/dist/index.js
7
7
  var PendingError = class extends Error {
8
8
  constructor(message, task, note) {
@@ -237,6 +237,7 @@ function splitByComma(s) {
237
237
  if (lastToken) result.push(lastToken);
238
238
  return result;
239
239
  }
240
+ function getCurrentTest() {}
240
241
  const suite = createSuite();
241
242
  const test = createTest(function(name, optionsOrFn, optionsOrTest) {
242
243
  getCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest);
@@ -573,6 +574,6 @@ globalThis.performance ? globalThis.performance.now.bind(globalThis.performance)
573
574
  globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
574
575
  Date.now;
575
576
  //#endregion
576
- export { it, suite, test };
577
+ export { createTaskCollector, getCurrentSuite, getCurrentTest, getHooks, it, setFn, setHooks, suite, test };
577
578
 
578
579
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/@vitest+runner@3.0.9/node_modules/@vitest/runner/dist/index.js"],"sourcesContent":["import { getSafeTimers, isObject, createDefer, toArray, isNegativeNaN, format, objDisplay, objectAttr, assertTypes, shuffle } from '@vitest/utils';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { c as createChainable, b as createFileTask, a as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, l as limitConcurrency, p as partitionSuiteChildren, o as hasTests, n as hasFailed } from './chunk-tasks.js';\nimport { processError } from '@vitest/utils/error';\nexport { processError } from '@vitest/utils/error';\nimport 'pathe';\n\nclass PendingError extends Error {\n constructor(message, task, note) {\n super(message);\n this.message = message;\n this.note = note;\n this.taskId = task.id;\n }\n code = \"VITEST_PENDING\";\n taskId;\n}\n\nconst now$2 = Date.now;\nconst collectorContext = {\n tasks: [],\n currentSuite: null\n};\nfunction collectTask(task) {\n var _a;\n (_a = collectorContext.currentSuite) == null ? void 0 : _a.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n const prev = collectorContext.currentSuite;\n collectorContext.currentSuite = suite;\n await fn();\n collectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false, stackTraceError) {\n if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n return fn;\n }\n const { setTimeout, clearTimeout } = getSafeTimers();\n return function runWithTimeout(...args) {\n const startTime = now$2();\n return new Promise((resolve_, reject_) => {\n var _a;\n const timer = setTimeout(() => {\n clearTimeout(timer);\n rejectTimeoutError();\n }, timeout);\n (_a = timer.unref) == null ? void 0 : _a.call(timer);\n function rejectTimeoutError() {\n reject_(makeTimeoutError(isHook, timeout, stackTraceError));\n }\n function resolve(result) {\n clearTimeout(timer);\n if (now$2() - startTime >= timeout) {\n rejectTimeoutError();\n return;\n }\n resolve_(result);\n }\n function reject(error) {\n clearTimeout(timer);\n reject_(error);\n }\n try {\n const result = fn(...args);\n if (typeof result === \"object\" && result != null && typeof result.then === \"function\") {\n result.then(resolve, reject);\n } else {\n resolve(result);\n }\n } catch (error) {\n reject(error);\n }\n });\n };\n}\nfunction createTestContext(test, runner) {\n var _a;\n const context = function() {\n throw new Error(\"done() callback is deprecated, use promise instead\");\n };\n context.task = test;\n context.skip = (note) => {\n test.result ?? (test.result = { state: \"skip\" });\n test.result.pending = true;\n throw new PendingError(\"test is skipped; abort execution\", test, note);\n };\n context.onTestFailed = (handler, timeout) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(\n withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"))\n );\n };\n context.onTestFinished = (handler, timeout) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(\n withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"))\n );\n };\n return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context;\n}\nfunction makeTimeoutError(isHook, timeout, stackTraceError) {\n const message = `${isHook ? \"Hook\" : \"Test\"} timed out in ${timeout}ms.\nIf this is a long-running ${isHook ? \"hook\" : \"test\"}, pass a timeout value as the last argument or configure it globally with \"${isHook ? \"hookTimeout\" : \"testTimeout\"}\".`;\n const error = new Error(message);\n if (stackTraceError == null ? void 0 : stackTraceError.stack) {\n error.stack = stackTraceError.stack.replace(error.message, stackTraceError.message);\n }\n return error;\n}\n\nconst fnMap = /* @__PURE__ */ new WeakMap();\nconst fixtureMap = /* @__PURE__ */ new WeakMap();\nconst hooksMap = /* @__PURE__ */ new WeakMap();\nfunction setFn(key, fn) {\n fnMap.set(key, fn);\n}\nfunction getFn(key) {\n return fnMap.get(key);\n}\nfunction setFixture(key, fixture) {\n fixtureMap.set(key, fixture);\n}\nfunction getFixture(key) {\n return fixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n hooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n return hooksMap.get(key);\n}\n\nfunction mergeContextFixtures(fixtures, context, inject) {\n const fixtureOptionKeys = [\"auto\", \"injected\"];\n const fixtureArray = Object.entries(fixtures).map(\n ([prop, value]) => {\n const fixtureItem = { value };\n if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {\n Object.assign(fixtureItem, value[1]);\n const userValue = value[0];\n fixtureItem.value = fixtureItem.injected ? inject(prop) ?? userValue : userValue;\n }\n fixtureItem.prop = prop;\n fixtureItem.isFn = typeof fixtureItem.value === \"function\";\n return fixtureItem;\n }\n );\n if (Array.isArray(context.fixtures)) {\n context.fixtures = context.fixtures.concat(fixtureArray);\n } else {\n context.fixtures = fixtureArray;\n }\n fixtureArray.forEach((fixture) => {\n if (fixture.isFn) {\n const usedProps = getUsedProps(fixture.value);\n if (usedProps.length) {\n fixture.deps = context.fixtures.filter(\n ({ prop }) => prop !== fixture.prop && usedProps.includes(prop)\n );\n }\n }\n });\n return context;\n}\nconst fixtureValueMaps = /* @__PURE__ */ new Map();\nconst cleanupFnArrayMap = /* @__PURE__ */ new Map();\nasync function callFixtureCleanup(context) {\n const cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n for (const cleanup of cleanupFnArray.reverse()) {\n await cleanup();\n }\n cleanupFnArrayMap.delete(context);\n}\nfunction withFixtures(fn, testContext) {\n return (hookContext) => {\n const context = hookContext || testContext;\n if (!context) {\n return fn({});\n }\n const fixtures = getFixture(context);\n if (!(fixtures == null ? void 0 : fixtures.length)) {\n return fn(context);\n }\n const usedProps = getUsedProps(fn);\n const hasAutoFixture = fixtures.some(({ auto }) => auto);\n if (!usedProps.length && !hasAutoFixture) {\n return fn(context);\n }\n if (!fixtureValueMaps.get(context)) {\n fixtureValueMaps.set(context, /* @__PURE__ */ new Map());\n }\n const fixtureValueMap = fixtureValueMaps.get(context);\n if (!cleanupFnArrayMap.has(context)) {\n cleanupFnArrayMap.set(context, []);\n }\n const cleanupFnArray = cleanupFnArrayMap.get(context);\n const usedFixtures = fixtures.filter(\n ({ prop, auto }) => auto || usedProps.includes(prop)\n );\n const pendingFixtures = resolveDeps(usedFixtures);\n if (!pendingFixtures.length) {\n return fn(context);\n }\n async function resolveFixtures() {\n for (const fixture of pendingFixtures) {\n if (fixtureValueMap.has(fixture)) {\n continue;\n }\n const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value;\n context[fixture.prop] = resolvedValue;\n fixtureValueMap.set(fixture, resolvedValue);\n cleanupFnArray.unshift(() => {\n fixtureValueMap.delete(fixture);\n });\n }\n }\n return resolveFixtures().then(() => fn(context));\n };\n}\nasync function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {\n const useFnArgPromise = createDefer();\n let isUseFnArgResolved = false;\n const fixtureReturn = fixtureFn(context, async (useFnArg) => {\n isUseFnArgResolved = true;\n useFnArgPromise.resolve(useFnArg);\n const useReturnPromise = createDefer();\n cleanupFnArray.push(async () => {\n useReturnPromise.resolve();\n await fixtureReturn;\n });\n await useReturnPromise;\n }).catch((e) => {\n if (!isUseFnArgResolved) {\n useFnArgPromise.reject(e);\n return;\n }\n throw e;\n });\n return useFnArgPromise;\n}\nfunction resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) {\n fixtures.forEach((fixture) => {\n if (pendingFixtures.includes(fixture)) {\n return;\n }\n if (!fixture.isFn || !fixture.deps) {\n pendingFixtures.push(fixture);\n return;\n }\n if (depSet.has(fixture)) {\n throw new Error(\n `Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(\" <- \")}`\n );\n }\n depSet.add(fixture);\n resolveDeps(fixture.deps, depSet, pendingFixtures);\n pendingFixtures.push(fixture);\n depSet.clear();\n });\n return pendingFixtures;\n}\nfunction getUsedProps(fn) {\n let fnString = fn.toString();\n if (/__async\\(this, (?:null|arguments|\\[[_0-9, ]*\\]), function\\*/.test(fnString)) {\n fnString = fnString.split(\"__async(this,\")[1];\n }\n const match = fnString.match(/[^(]*\\(([^)]*)/);\n if (!match) {\n return [];\n }\n const args = splitByComma(match[1]);\n if (!args.length) {\n return [];\n }\n let first = args[0];\n if (\"__VITEST_FIXTURE_INDEX__\" in fn) {\n first = args[fn.__VITEST_FIXTURE_INDEX__];\n if (!first) {\n return [];\n }\n }\n if (!(first.startsWith(\"{\") && first.endsWith(\"}\"))) {\n throw new Error(\n `The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received \"${first}\".`\n );\n }\n const _first = first.slice(1, -1).replace(/\\s/g, \"\");\n const props = splitByComma(_first).map((prop) => {\n return prop.replace(/:.*|=.*/g, \"\");\n });\n const last = props.at(-1);\n if (last && last.startsWith(\"...\")) {\n throw new Error(\n `Rest parameters are not supported in fixtures, received \"${last}\".`\n );\n }\n return props;\n}\nfunction splitByComma(s) {\n const result = [];\n const stack = [];\n let start = 0;\n for (let i = 0; i < s.length; i++) {\n if (s[i] === \"{\" || s[i] === \"[\") {\n stack.push(s[i] === \"{\" ? \"}\" : \"]\");\n } else if (s[i] === stack[stack.length - 1]) {\n stack.pop();\n } else if (!stack.length && s[i] === \",\") {\n const token = s.substring(start, i).trim();\n if (token) {\n result.push(token);\n }\n start = i + 1;\n }\n }\n const lastToken = s.substring(start).trim();\n if (lastToken) {\n result.push(lastToken);\n }\n return result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n _test = test;\n}\nfunction getCurrentTest() {\n return _test;\n}\n\nconst suite = createSuite();\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n if (getCurrentTest()) {\n throw new Error(\n 'Calling the test function inside another test function is not allowed. Please put it inside \"describe\" or \"suite\" so it can be properly collected.'\n );\n }\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n});\nconst describe = suite;\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`Vitest failed to find ${message}. This is a bug in Vitest. Please, open an issue with reproduction.`);\n }\n}\nfunction getDefaultSuite() {\n assert(defaultSuite, \"the default suite\");\n return defaultSuite;\n}\nfunction getTestFilepath() {\n return currentTestFilepath;\n}\nfunction getRunner() {\n assert(runner, \"the runner\");\n return runner;\n}\nfunction createDefaultSuite(runner2) {\n const config = runner2.config.sequence;\n const collector = suite(\"\", { concurrent: config.concurrent }, () => {\n });\n delete collector.suite;\n return collector;\n}\nfunction clearCollectorContext(filepath, currentRunner) {\n if (!defaultSuite) {\n defaultSuite = createDefaultSuite(currentRunner);\n }\n runner = currentRunner;\n currentTestFilepath = filepath;\n collectorContext.tasks.length = 0;\n defaultSuite.clear();\n collectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n assert(currentSuite, \"the current suite\");\n return currentSuite;\n}\nfunction createSuiteHooks() {\n return {\n beforeAll: [],\n afterAll: [],\n beforeEach: [],\n afterEach: []\n };\n}\nfunction parseArguments(optionsOrFn, optionsOrTest) {\n let options = {};\n let fn = () => {\n };\n if (typeof optionsOrTest === \"object\") {\n if (typeof optionsOrFn === \"object\") {\n throw new TypeError(\n \"Cannot use two objects as arguments. Please provide options and a function callback in that order.\"\n );\n }\n console.warn(\n \"Using an object as a third argument is deprecated. Vitest 4 will throw an error if the third argument is not a timeout number. Please use the second argument for options. See more at https://vitest.dev/guide/migration\"\n );\n options = optionsOrTest;\n } else if (typeof optionsOrTest === \"number\") {\n options = { timeout: optionsOrTest };\n } else if (typeof optionsOrFn === \"object\") {\n options = optionsOrFn;\n }\n if (typeof optionsOrFn === \"function\") {\n if (typeof optionsOrTest === \"function\") {\n throw new TypeError(\n \"Cannot use two functions as arguments. Please use the second argument for options.\"\n );\n }\n fn = optionsOrFn;\n } else if (typeof optionsOrTest === \"function\") {\n fn = optionsOrTest;\n }\n return {\n options,\n handler: fn\n };\n}\nfunction createSuiteCollector(name, factory = () => {\n}, mode, each, suiteOptions) {\n const tasks = [];\n let suite2;\n initSuite(true);\n const task = function(name2 = \"\", options = {}) {\n var _a;\n const timeout = (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout;\n const task2 = {\n id: \"\",\n name: name2,\n suite: (_a = collectorContext.currentSuite) == null ? void 0 : _a.suite,\n each: options.each,\n fails: options.fails,\n context: void 0,\n type: \"test\",\n file: void 0,\n timeout,\n retry: options.retry ?? runner.config.retry,\n repeats: options.repeats,\n mode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n meta: options.meta ?? /* @__PURE__ */ Object.create(null)\n };\n const handler = options.handler;\n if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) {\n task2.concurrent = true;\n }\n task2.shuffle = suiteOptions == null ? void 0 : suiteOptions.shuffle;\n const context = createTestContext(task2, runner);\n Object.defineProperty(task2, \"context\", {\n value: context,\n enumerable: false\n });\n setFixture(context, options.fixtures);\n if (handler) {\n setFn(\n task2,\n withTimeout(\n withAwaitAsyncAssertions(withFixtures(handler, context), task2),\n timeout\n )\n );\n }\n if (runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, task2.each ?? false);\n if (stack) {\n task2.location = stack;\n }\n }\n tasks.push(task2);\n return task2;\n };\n const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) {\n let { options, handler } = parseArguments(optionsOrFn, optionsOrTest);\n if (typeof suiteOptions === \"object\") {\n options = Object.assign({}, suiteOptions, options);\n }\n options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent);\n options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential);\n const test3 = task(formatName(name2), {\n ...this,\n ...options,\n handler\n });\n test3.type = \"test\";\n });\n const collector = {\n type: \"collector\",\n name,\n mode,\n suite: suite2,\n options: suiteOptions,\n test: test2,\n tasks,\n collect,\n task,\n clear,\n on: addHook\n };\n function addHook(name2, ...fn) {\n getHooks(suite2)[name2].push(...fn);\n }\n function initSuite(includeLocation) {\n var _a;\n if (typeof suiteOptions === \"number\") {\n suiteOptions = { timeout: suiteOptions };\n }\n suite2 = {\n id: \"\",\n type: \"suite\",\n name,\n suite: (_a = collectorContext.currentSuite) == null ? void 0 : _a.suite,\n mode,\n each,\n file: void 0,\n shuffle: suiteOptions == null ? void 0 : suiteOptions.shuffle,\n tasks: [],\n meta: /* @__PURE__ */ Object.create(null),\n concurrent: suiteOptions == null ? void 0 : suiteOptions.concurrent\n };\n if (runner && includeLocation && runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, suite2.each ?? false);\n if (stack) {\n suite2.location = stack;\n }\n }\n setHooks(suite2, createSuiteHooks());\n }\n function clear() {\n tasks.length = 0;\n initSuite(false);\n }\n async function collect(file) {\n if (!file) {\n throw new TypeError(\"File is required to collect tasks.\");\n }\n if (factory) {\n await runWithSuite(collector, () => factory(test2));\n }\n const allChildren = [];\n for (const i of tasks) {\n allChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n }\n suite2.file = file;\n suite2.tasks = allChildren;\n allChildren.forEach((task2) => {\n task2.file = file;\n });\n return suite2;\n }\n collectTask(collector);\n return collector;\n}\nfunction withAwaitAsyncAssertions(fn, task) {\n return async (...args) => {\n const fnResult = await fn(...args);\n if (task.promises) {\n const result = await Promise.allSettled(task.promises);\n const errors = result.map((r) => r.status === \"rejected\" ? r.reason : void 0).filter(Boolean);\n if (errors.length) {\n throw errors;\n }\n }\n return fnResult;\n };\n}\nfunction createSuite() {\n function suiteFn(name, factoryOrOptions, optionsOrFactory) {\n var _a;\n const mode = this.only ? \"only\" : this.skip ? \"skip\" : this.todo ? \"todo\" : \"run\";\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n let { options, handler: factory } = parseArguments(\n factoryOrOptions,\n optionsOrFactory\n );\n const isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;\n const isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;\n options = {\n ...currentSuite == null ? void 0 : currentSuite.options,\n ...options,\n shuffle: this.shuffle ?? options.shuffle ?? ((_a = currentSuite == null ? void 0 : currentSuite.options) == null ? void 0 : _a.shuffle) ?? (runner == null ? void 0 : runner.config.sequence.shuffle)\n };\n const isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;\n const isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;\n options.concurrent = isConcurrent && !isSequential;\n options.sequential = isSequential && !isConcurrent;\n return createSuiteCollector(\n formatName(name),\n factory,\n mode,\n this.each,\n options\n );\n }\n suiteFn.each = function(cases, ...args) {\n const suite2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n suite2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n suite2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n suite2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n suite2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n suiteFn.for = function(cases, ...args) {\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const name_ = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n suite(formatTitle(name_, toArray(item), idx), options, () => handler(item));\n });\n };\n };\n suiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n suiteFn.runIf = (condition) => condition ? suite : suite.skip;\n return createChainable(\n [\"concurrent\", \"sequential\", \"shuffle\", \"skip\", \"only\", \"todo\"],\n suiteFn\n );\n}\nfunction createTaskCollector(fn, context) {\n const taskFn = fn;\n taskFn.each = function(cases, ...args) {\n const test2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n test2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n test2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n test2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n test2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n taskFn.for = function(cases, ...args) {\n const test2 = this.withContext();\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n const handlerWrapper = (ctx) => handler(item, ctx);\n handlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;\n handlerWrapper.toString = () => handler.toString();\n test2(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n });\n };\n };\n taskFn.skipIf = function(condition) {\n return condition ? this.skip : this;\n };\n taskFn.runIf = function(condition) {\n return condition ? this : this.skip;\n };\n taskFn.extend = function(fixtures) {\n const _context = mergeContextFixtures(\n fixtures,\n context || {},\n (key) => {\n var _a, _b;\n return (_b = (_a = getRunner()).injectValue) == null ? void 0 : _b.call(_a, key);\n }\n );\n return createTest(function fn2(name, optionsOrFn, optionsOrTest) {\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n }, _context);\n };\n const _test = createChainable(\n [\"concurrent\", \"sequential\", \"skip\", \"only\", \"todo\", \"fails\"],\n taskFn\n );\n if (context) {\n _test.mergeContext(context);\n }\n return _test;\n}\nfunction createTest(fn, context) {\n return createTaskCollector(fn, context);\n}\nfunction formatName(name) {\n return typeof name === \"string\" ? name : typeof name === \"function\" ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n if (template.includes(\"%#\")) {\n template = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, \"%%\");\n }\n const count = template.split(\"%\").length - 1;\n if (template.includes(\"%f\")) {\n const placeholders = template.match(/%f/g) || [];\n placeholders.forEach((_, i) => {\n if (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n let occurrence = 0;\n template = template.replace(/%f/g, (match) => {\n occurrence++;\n return occurrence === i + 1 ? \"-%f\" : match;\n });\n }\n });\n }\n let formatted = format(template, ...items.slice(0, count));\n if (isObject(items[0])) {\n formatted = formatted.replace(\n /\\$([$\\w.]+)/g,\n // https://github.com/chaijs/chai/pull/1490\n (_, key) => {\n var _a, _b;\n return objDisplay(objectAttr(items[0], key), {\n truncate: (_b = (_a = runner == null ? void 0 : runner.config) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold\n });\n }\n );\n }\n return formatted;\n}\nfunction formatTemplateString(cases, args) {\n const header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n const res = [];\n for (let i = 0; i < Math.floor(args.length / header.length); i++) {\n const oneCase = {};\n for (let j = 0; j < header.length; j++) {\n oneCase[header[j]] = args[i * header.length + j];\n }\n res.push(oneCase);\n }\n return res;\n}\nfunction findTestFileStackTrace(error, each) {\n const lines = error.split(\"\\n\").slice(1);\n for (const line of lines) {\n const stack = parseSingleStack(line);\n if (stack && stack.file === getTestFilepath()) {\n return {\n line: stack.line,\n /**\n * test.each([1, 2])('name')\n * ^ leads here, but should\n * ^ lead here\n * in source maps it's the same boundary, so it just points to the start of it\n */\n column: each ? stack.column + 1 : stack.column\n };\n }\n }\n}\n\nfunction getDefaultHookTimeout() {\n return getRunner().config.hookTimeout;\n}\nconst CLEANUP_TIMEOUT_KEY = Symbol.for(\"VITEST_CLEANUP_TIMEOUT\");\nconst CLEANUP_STACK_TRACE_KEY = Symbol.for(\"VITEST_CLEANUP_STACK_TRACE\");\nfunction getBeforeHookCleanupCallback(hook, result) {\n if (typeof result === \"function\") {\n const timeout = CLEANUP_TIMEOUT_KEY in hook && typeof hook[CLEANUP_TIMEOUT_KEY] === \"number\" ? hook[CLEANUP_TIMEOUT_KEY] : getDefaultHookTimeout();\n const stackTraceError = CLEANUP_STACK_TRACE_KEY in hook && hook[CLEANUP_STACK_TRACE_KEY] instanceof Error ? hook[CLEANUP_STACK_TRACE_KEY] : void 0;\n return withTimeout(result, timeout, true, stackTraceError);\n }\n}\nfunction beforeAll(fn, timeout = getDefaultHookTimeout()) {\n assertTypes(fn, '\"beforeAll\" callback', [\"function\"]);\n const stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n return getCurrentSuite().on(\n \"beforeAll\",\n Object.assign(\n withTimeout(\n fn,\n timeout,\n true,\n stackTraceError\n ),\n {\n [CLEANUP_TIMEOUT_KEY]: timeout,\n [CLEANUP_STACK_TRACE_KEY]: stackTraceError\n }\n )\n );\n}\nfunction afterAll(fn, timeout) {\n assertTypes(fn, '\"afterAll\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterAll\",\n withTimeout(\n fn,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n}\nfunction beforeEach(fn, timeout = getDefaultHookTimeout()) {\n assertTypes(fn, '\"beforeEach\" callback', [\"function\"]);\n const stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n return getCurrentSuite().on(\n \"beforeEach\",\n Object.assign(\n withTimeout(\n withFixtures(fn),\n timeout ?? getDefaultHookTimeout(),\n true,\n stackTraceError\n ),\n {\n [CLEANUP_TIMEOUT_KEY]: timeout,\n [CLEANUP_STACK_TRACE_KEY]: stackTraceError\n }\n )\n );\n}\nfunction afterEach(fn, timeout) {\n assertTypes(fn, '\"afterEach\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterEach\",\n withTimeout(\n withFixtures(fn),\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n}\nconst onTestFailed = createTestHook(\n \"onTestFailed\",\n (test, handler, timeout) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(\n withTimeout(\n handler,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n }\n);\nconst onTestFinished = createTestHook(\n \"onTestFinished\",\n (test, handler, timeout) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(\n withTimeout(\n handler,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n }\n);\nfunction createTestHook(name, handler) {\n return (fn, timeout) => {\n assertTypes(fn, `\"${name}\" callback`, [\"function\"]);\n const current = getCurrentTest();\n if (!current) {\n throw new Error(`Hook ${name}() can only be called inside a test`);\n }\n return handler(current, fn, timeout);\n };\n}\n\nasync function runSetupFiles(config, files, runner) {\n if (config.sequence.setupFiles === \"parallel\") {\n await Promise.all(\n files.map(async (fsPath) => {\n await runner.importFile(fsPath, \"setup\");\n })\n );\n } else {\n for (const fsPath of files) {\n await runner.importFile(fsPath, \"setup\");\n }\n }\n}\n\nconst now$1 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nasync function collectTests(specs, runner) {\n var _a;\n const files = [];\n const config = runner.config;\n for (const spec of specs) {\n const filepath = typeof spec === \"string\" ? spec : spec.filepath;\n const testLocations = typeof spec === \"string\" ? void 0 : spec.testLocations;\n const file = createFileTask(filepath, config.root, config.name, runner.pool);\n file.shuffle = config.sequence.shuffle;\n (_a = runner.onCollectStart) == null ? void 0 : _a.call(runner, file);\n clearCollectorContext(filepath, runner);\n try {\n const setupFiles = toArray(config.setupFiles);\n if (setupFiles.length) {\n const setupStart = now$1();\n await runSetupFiles(config, setupFiles, runner);\n const setupEnd = now$1();\n file.setupDuration = setupEnd - setupStart;\n } else {\n file.setupDuration = 0;\n }\n const collectStart = now$1();\n await runner.importFile(filepath, \"collect\");\n const defaultTasks = await getDefaultSuite().collect(file);\n const fileHooks = createSuiteHooks();\n mergeHooks(fileHooks, getHooks(defaultTasks));\n for (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n if (c.type === \"test\" || c.type === \"suite\") {\n file.tasks.push(c);\n } else if (c.type === \"collector\") {\n const suite = await c.collect(file);\n if (suite.name || suite.tasks.length) {\n mergeHooks(fileHooks, getHooks(suite));\n file.tasks.push(suite);\n }\n } else {\n c;\n }\n }\n setHooks(file, fileHooks);\n file.collectDuration = now$1() - collectStart;\n } catch (e) {\n const error = processError(e);\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n calculateSuiteHash(file);\n const hasOnlyTasks = someTasksAreOnly(file);\n interpretTaskModes(\n file,\n config.testNamePattern,\n testLocations,\n hasOnlyTasks,\n false,\n config.allowOnly\n );\n if (file.mode === \"queued\") {\n file.mode = \"run\";\n }\n files.push(file);\n }\n return files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n for (const _key in hooks) {\n const key = _key;\n baseHooks[key].push(...hooks[key]);\n }\n return baseHooks;\n}\n\nconst now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst unixNow = Date.now;\nfunction updateSuiteHookState(task, name, state, runner) {\n if (!task.result) {\n task.result = { state: \"run\" };\n }\n if (!task.result.hooks) {\n task.result.hooks = {};\n }\n const suiteHooks = task.result.hooks;\n if (suiteHooks) {\n suiteHooks[name] = state;\n let event = state === \"run\" ? \"before-hook-start\" : \"before-hook-end\";\n if (name === \"afterAll\" || name === \"afterEach\") {\n event = state === \"run\" ? \"after-hook-start\" : \"after-hook-end\";\n }\n updateTask(\n event,\n task,\n runner\n );\n }\n}\nfunction getSuiteHooks(suite, name, sequence) {\n const hooks = getHooks(suite)[name];\n if (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n return hooks.slice().reverse();\n }\n return hooks;\n}\nasync function callTestHooks(runner, test, hooks, sequence) {\n if (sequence === \"stack\") {\n hooks = hooks.slice().reverse();\n }\n if (!hooks.length) {\n return;\n }\n const onTestFailed = test.context.onTestFailed;\n const onTestFinished = test.context.onTestFinished;\n test.context.onTestFailed = () => {\n throw new Error(`Cannot call \"onTestFailed\" inside a test hook.`);\n };\n test.context.onTestFinished = () => {\n throw new Error(`Cannot call \"onTestFinished\" inside a test hook.`);\n };\n if (sequence === \"parallel\") {\n try {\n await Promise.all(hooks.map((fn) => fn(test.context)));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n } else {\n for (const fn of hooks) {\n try {\n await fn(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n }\n }\n test.context.onTestFailed = onTestFailed;\n test.context.onTestFinished = onTestFinished;\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n const sequence = runner.config.sequence.hooks;\n const callbacks = [];\n const parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n if (name === \"beforeEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n const hooks = getSuiteHooks(suite, name, sequence);\n if (hooks.length > 0) {\n updateSuiteHookState(currentTask, name, \"run\", runner);\n }\n async function runHook(hook) {\n return getBeforeHookCleanupCallback(hook, await hook(...args));\n }\n if (sequence === \"parallel\") {\n callbacks.push(\n ...await Promise.all(hooks.map((hook) => runHook(hook)))\n );\n } else {\n for (const hook of hooks) {\n callbacks.push(await runHook(hook));\n }\n }\n if (hooks.length > 0) {\n updateSuiteHookState(currentTask, name, \"pass\", runner);\n }\n if (name === \"afterEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n return callbacks;\n}\nconst packs = /* @__PURE__ */ new Map();\nconst eventsPacks = [];\nlet updateTimer;\nlet previousUpdate;\nfunction updateTask(event, task, runner) {\n eventsPacks.push([task.id, event]);\n packs.set(task.id, [task.result, task.meta]);\n const { clearTimeout, setTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n updateTimer = setTimeout(() => {\n previousUpdate = sendTasksUpdate(runner);\n }, 10);\n}\nasync function sendTasksUpdate(runner) {\n var _a;\n const { clearTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n await previousUpdate;\n if (packs.size) {\n const taskPacks = Array.from(packs).map(([id, task]) => {\n return [id, task[0], task[1]];\n });\n const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks, eventsPacks);\n eventsPacks.length = 0;\n packs.clear();\n return p;\n }\n}\nasync function callCleanupHooks(cleanups) {\n await Promise.all(\n cleanups.map(async (fn) => {\n if (typeof fn !== \"function\") {\n return;\n }\n await fn();\n })\n );\n}\nasync function runTest(test, runner) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n await ((_a = runner.onBeforeRunTask) == null ? void 0 : _a.call(runner, test));\n if (test.mode !== \"run\" && test.mode !== \"queued\") {\n return;\n }\n if (((_b = test.result) == null ? void 0 : _b.state) === \"fail\") {\n updateTask(\"test-failed-early\", test, runner);\n return;\n }\n const start = now();\n test.result = {\n state: \"run\",\n startTime: unixNow(),\n retryCount: 0\n };\n updateTask(\"test-prepare\", test, runner);\n setCurrentTest(test);\n const suite = test.suite || test.file;\n const repeats = test.repeats ?? 0;\n for (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n const retry = test.retry ?? 0;\n for (let retryCount = 0; retryCount <= retry; retryCount++) {\n let beforeEachCleanups = [];\n try {\n await ((_c = runner.onBeforeTryTask) == null ? void 0 : _c.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n test.result.repeatCount = repeatCount;\n beforeEachCleanups = await callSuiteHook(\n suite,\n test,\n \"beforeEach\",\n runner,\n [test.context, suite]\n );\n if (runner.runTask) {\n await runner.runTask(test);\n } else {\n const fn = getFn(test);\n if (!fn) {\n throw new Error(\n \"Test function is not found. Did you add it using `setFn`?\"\n );\n }\n await fn();\n }\n await ((_d = runner.onAfterTryTask) == null ? void 0 : _d.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n if (test.result.state !== \"fail\") {\n if (!test.repeats) {\n test.result.state = \"pass\";\n } else if (test.repeats && retry === retryCount) {\n test.result.state = \"pass\";\n }\n }\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (((_e = test.result) == null ? void 0 : _e.pending) || ((_f = test.result) == null ? void 0 : _f.state) === \"skip\") {\n test.mode = \"skip\";\n test.result = { state: \"skip\", note: (_g = test.result) == null ? void 0 : _g.note, pending: true };\n updateTask(\"test-finished\", test, runner);\n setCurrentTest(void 0);\n return;\n }\n try {\n await ((_h = runner.onTaskFinished) == null ? void 0 : _h.call(runner, test));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, test, \"afterEach\", runner, [\n test.context,\n suite\n ]);\n await callCleanupHooks(beforeEachCleanups);\n await callFixtureCleanup(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n await callTestHooks(runner, test, test.onFinished || [], \"stack\");\n if (test.result.state === \"fail\") {\n await callTestHooks(\n runner,\n test,\n test.onFailed || [],\n runner.config.sequence.hooks\n );\n }\n test.onFailed = void 0;\n test.onFinished = void 0;\n if (test.result.state === \"pass\") {\n break;\n }\n if (retryCount < retry) {\n test.result.state = \"run\";\n test.result.retryCount = (test.result.retryCount ?? 0) + 1;\n }\n updateTask(\"test-retried\", test, runner);\n }\n }\n if (test.fails) {\n if (test.result.state === \"pass\") {\n const error = processError(new Error(\"Expect test to fail\"));\n test.result.state = \"fail\";\n test.result.errors = [error];\n } else {\n test.result.state = \"pass\";\n test.result.errors = void 0;\n }\n }\n setCurrentTest(void 0);\n test.result.duration = now() - start;\n await ((_i = runner.onAfterRunTask) == null ? void 0 : _i.call(runner, test));\n updateTask(\"test-finished\", test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n if (err instanceof PendingError) {\n result.state = \"skip\";\n result.note = err.note;\n result.pending = true;\n return;\n }\n result.state = \"fail\";\n const errors = Array.isArray(err) ? err : [err];\n for (const e of errors) {\n const error = processError(e, diffOptions);\n result.errors ?? (result.errors = []);\n result.errors.push(error);\n }\n}\nfunction markTasksAsSkipped(suite, runner) {\n suite.tasks.forEach((t) => {\n t.mode = \"skip\";\n t.result = { ...t.result, state: \"skip\" };\n updateTask(\"test-finished\", t, runner);\n if (t.type === \"suite\") {\n markTasksAsSkipped(t, runner);\n }\n });\n}\nasync function runSuite(suite, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeRunSuite) == null ? void 0 : _a.call(runner, suite));\n if (((_b = suite.result) == null ? void 0 : _b.state) === \"fail\") {\n markTasksAsSkipped(suite, runner);\n updateTask(\"suite-failed-early\", suite, runner);\n return;\n }\n const start = now();\n const mode = suite.mode;\n suite.result = {\n state: mode === \"skip\" || mode === \"todo\" ? mode : \"run\",\n startTime: unixNow()\n };\n updateTask(\"suite-prepare\", suite, runner);\n let beforeAllCleanups = [];\n if (suite.mode === \"skip\") {\n suite.result.state = \"skip\";\n updateTask(\"suite-finished\", suite, runner);\n } else if (suite.mode === \"todo\") {\n suite.result.state = \"todo\";\n updateTask(\"suite-finished\", suite, runner);\n } else {\n try {\n try {\n beforeAllCleanups = await callSuiteHook(\n suite,\n suite,\n \"beforeAll\",\n runner,\n [suite]\n );\n } catch (e) {\n markTasksAsSkipped(suite, runner);\n throw e;\n }\n if (runner.runSuite) {\n await runner.runSuite(suite);\n } else {\n for (let tasksGroup of partitionSuiteChildren(suite)) {\n if (tasksGroup[0].concurrent === true) {\n await Promise.all(tasksGroup.map((c) => runSuiteChild(c, runner)));\n } else {\n const { sequence } = runner.config;\n if (suite.shuffle) {\n const suites = tasksGroup.filter(\n (group) => group.type === \"suite\"\n );\n const tests = tasksGroup.filter((group) => group.type === \"test\");\n const groups = shuffle([suites, tests], sequence.seed);\n tasksGroup = groups.flatMap(\n (group) => shuffle(group, sequence.seed)\n );\n }\n for (const c of tasksGroup) {\n await runSuiteChild(c, runner);\n }\n }\n }\n }\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, suite, \"afterAll\", runner, [suite]);\n await callCleanupHooks(beforeAllCleanups);\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n if (suite.mode === \"run\" || suite.mode === \"queued\") {\n if (!runner.config.passWithNoTests && !hasTests(suite)) {\n suite.result.state = \"fail\";\n if (!((_c = suite.result.errors) == null ? void 0 : _c.length)) {\n const error = processError(\n new Error(`No test found in suite ${suite.name}`)\n );\n suite.result.errors = [error];\n }\n } else if (hasFailed(suite)) {\n suite.result.state = \"fail\";\n } else {\n suite.result.state = \"pass\";\n }\n }\n suite.result.duration = now() - start;\n updateTask(\"suite-finished\", suite, runner);\n await ((_d = runner.onAfterRunSuite) == null ? void 0 : _d.call(runner, suite));\n }\n}\nlet limitMaxConcurrency;\nasync function runSuiteChild(c, runner) {\n if (c.type === \"test\") {\n return limitMaxConcurrency(() => runTest(c, runner));\n } else if (c.type === \"suite\") {\n return runSuite(c, runner);\n }\n}\nasync function runFiles(files, runner) {\n var _a, _b;\n limitMaxConcurrency ?? (limitMaxConcurrency = limitConcurrency(runner.config.maxConcurrency));\n for (const file of files) {\n if (!file.tasks.length && !runner.config.passWithNoTests) {\n if (!((_b = (_a = file.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.length)) {\n const error = processError(\n new Error(`No test suite found in file ${file.filepath}`)\n );\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n }\n await runSuite(file, runner);\n }\n}\nasync function startTests(specs, runner) {\n var _a, _b, _c, _d;\n const paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(specs, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n await ((_c = runner.onBeforeRunFiles) == null ? void 0 : _c.call(runner, files));\n await runFiles(files, runner);\n await ((_d = runner.onAfterRunFiles) == null ? void 0 : _d.call(runner, files));\n await sendTasksUpdate(runner);\n return files;\n}\nasync function publicCollect(specs, runner) {\n var _a, _b;\n const paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(specs, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n return files;\n}\n\nexport { afterAll, afterEach, beforeAll, beforeEach, publicCollect as collectTests, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask };\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/@vitest+runner@3.0.9/node_modules/@vitest/runner/dist/index.js"],"sourcesContent":["import { getSafeTimers, isObject, createDefer, toArray, isNegativeNaN, format, objDisplay, objectAttr, assertTypes, shuffle } from '@vitest/utils';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { c as createChainable, b as createFileTask, a as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, l as limitConcurrency, p as partitionSuiteChildren, o as hasTests, n as hasFailed } from './chunk-tasks.js';\nimport { processError } from '@vitest/utils/error';\nexport { processError } from '@vitest/utils/error';\nimport 'pathe';\n\nclass PendingError extends Error {\n constructor(message, task, note) {\n super(message);\n this.message = message;\n this.note = note;\n this.taskId = task.id;\n }\n code = \"VITEST_PENDING\";\n taskId;\n}\n\nconst now$2 = Date.now;\nconst collectorContext = {\n tasks: [],\n currentSuite: null\n};\nfunction collectTask(task) {\n var _a;\n (_a = collectorContext.currentSuite) == null ? void 0 : _a.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n const prev = collectorContext.currentSuite;\n collectorContext.currentSuite = suite;\n await fn();\n collectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false, stackTraceError) {\n if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n return fn;\n }\n const { setTimeout, clearTimeout } = getSafeTimers();\n return function runWithTimeout(...args) {\n const startTime = now$2();\n return new Promise((resolve_, reject_) => {\n var _a;\n const timer = setTimeout(() => {\n clearTimeout(timer);\n rejectTimeoutError();\n }, timeout);\n (_a = timer.unref) == null ? void 0 : _a.call(timer);\n function rejectTimeoutError() {\n reject_(makeTimeoutError(isHook, timeout, stackTraceError));\n }\n function resolve(result) {\n clearTimeout(timer);\n if (now$2() - startTime >= timeout) {\n rejectTimeoutError();\n return;\n }\n resolve_(result);\n }\n function reject(error) {\n clearTimeout(timer);\n reject_(error);\n }\n try {\n const result = fn(...args);\n if (typeof result === \"object\" && result != null && typeof result.then === \"function\") {\n result.then(resolve, reject);\n } else {\n resolve(result);\n }\n } catch (error) {\n reject(error);\n }\n });\n };\n}\nfunction createTestContext(test, runner) {\n var _a;\n const context = function() {\n throw new Error(\"done() callback is deprecated, use promise instead\");\n };\n context.task = test;\n context.skip = (note) => {\n test.result ?? (test.result = { state: \"skip\" });\n test.result.pending = true;\n throw new PendingError(\"test is skipped; abort execution\", test, note);\n };\n context.onTestFailed = (handler, timeout) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(\n withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"))\n );\n };\n context.onTestFinished = (handler, timeout) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(\n withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"))\n );\n };\n return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context;\n}\nfunction makeTimeoutError(isHook, timeout, stackTraceError) {\n const message = `${isHook ? \"Hook\" : \"Test\"} timed out in ${timeout}ms.\nIf this is a long-running ${isHook ? \"hook\" : \"test\"}, pass a timeout value as the last argument or configure it globally with \"${isHook ? \"hookTimeout\" : \"testTimeout\"}\".`;\n const error = new Error(message);\n if (stackTraceError == null ? void 0 : stackTraceError.stack) {\n error.stack = stackTraceError.stack.replace(error.message, stackTraceError.message);\n }\n return error;\n}\n\nconst fnMap = /* @__PURE__ */ new WeakMap();\nconst fixtureMap = /* @__PURE__ */ new WeakMap();\nconst hooksMap = /* @__PURE__ */ new WeakMap();\nfunction setFn(key, fn) {\n fnMap.set(key, fn);\n}\nfunction getFn(key) {\n return fnMap.get(key);\n}\nfunction setFixture(key, fixture) {\n fixtureMap.set(key, fixture);\n}\nfunction getFixture(key) {\n return fixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n hooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n return hooksMap.get(key);\n}\n\nfunction mergeContextFixtures(fixtures, context, inject) {\n const fixtureOptionKeys = [\"auto\", \"injected\"];\n const fixtureArray = Object.entries(fixtures).map(\n ([prop, value]) => {\n const fixtureItem = { value };\n if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {\n Object.assign(fixtureItem, value[1]);\n const userValue = value[0];\n fixtureItem.value = fixtureItem.injected ? inject(prop) ?? userValue : userValue;\n }\n fixtureItem.prop = prop;\n fixtureItem.isFn = typeof fixtureItem.value === \"function\";\n return fixtureItem;\n }\n );\n if (Array.isArray(context.fixtures)) {\n context.fixtures = context.fixtures.concat(fixtureArray);\n } else {\n context.fixtures = fixtureArray;\n }\n fixtureArray.forEach((fixture) => {\n if (fixture.isFn) {\n const usedProps = getUsedProps(fixture.value);\n if (usedProps.length) {\n fixture.deps = context.fixtures.filter(\n ({ prop }) => prop !== fixture.prop && usedProps.includes(prop)\n );\n }\n }\n });\n return context;\n}\nconst fixtureValueMaps = /* @__PURE__ */ new Map();\nconst cleanupFnArrayMap = /* @__PURE__ */ new Map();\nasync function callFixtureCleanup(context) {\n const cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n for (const cleanup of cleanupFnArray.reverse()) {\n await cleanup();\n }\n cleanupFnArrayMap.delete(context);\n}\nfunction withFixtures(fn, testContext) {\n return (hookContext) => {\n const context = hookContext || testContext;\n if (!context) {\n return fn({});\n }\n const fixtures = getFixture(context);\n if (!(fixtures == null ? void 0 : fixtures.length)) {\n return fn(context);\n }\n const usedProps = getUsedProps(fn);\n const hasAutoFixture = fixtures.some(({ auto }) => auto);\n if (!usedProps.length && !hasAutoFixture) {\n return fn(context);\n }\n if (!fixtureValueMaps.get(context)) {\n fixtureValueMaps.set(context, /* @__PURE__ */ new Map());\n }\n const fixtureValueMap = fixtureValueMaps.get(context);\n if (!cleanupFnArrayMap.has(context)) {\n cleanupFnArrayMap.set(context, []);\n }\n const cleanupFnArray = cleanupFnArrayMap.get(context);\n const usedFixtures = fixtures.filter(\n ({ prop, auto }) => auto || usedProps.includes(prop)\n );\n const pendingFixtures = resolveDeps(usedFixtures);\n if (!pendingFixtures.length) {\n return fn(context);\n }\n async function resolveFixtures() {\n for (const fixture of pendingFixtures) {\n if (fixtureValueMap.has(fixture)) {\n continue;\n }\n const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value;\n context[fixture.prop] = resolvedValue;\n fixtureValueMap.set(fixture, resolvedValue);\n cleanupFnArray.unshift(() => {\n fixtureValueMap.delete(fixture);\n });\n }\n }\n return resolveFixtures().then(() => fn(context));\n };\n}\nasync function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {\n const useFnArgPromise = createDefer();\n let isUseFnArgResolved = false;\n const fixtureReturn = fixtureFn(context, async (useFnArg) => {\n isUseFnArgResolved = true;\n useFnArgPromise.resolve(useFnArg);\n const useReturnPromise = createDefer();\n cleanupFnArray.push(async () => {\n useReturnPromise.resolve();\n await fixtureReturn;\n });\n await useReturnPromise;\n }).catch((e) => {\n if (!isUseFnArgResolved) {\n useFnArgPromise.reject(e);\n return;\n }\n throw e;\n });\n return useFnArgPromise;\n}\nfunction resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) {\n fixtures.forEach((fixture) => {\n if (pendingFixtures.includes(fixture)) {\n return;\n }\n if (!fixture.isFn || !fixture.deps) {\n pendingFixtures.push(fixture);\n return;\n }\n if (depSet.has(fixture)) {\n throw new Error(\n `Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(\" <- \")}`\n );\n }\n depSet.add(fixture);\n resolveDeps(fixture.deps, depSet, pendingFixtures);\n pendingFixtures.push(fixture);\n depSet.clear();\n });\n return pendingFixtures;\n}\nfunction getUsedProps(fn) {\n let fnString = fn.toString();\n if (/__async\\(this, (?:null|arguments|\\[[_0-9, ]*\\]), function\\*/.test(fnString)) {\n fnString = fnString.split(\"__async(this,\")[1];\n }\n const match = fnString.match(/[^(]*\\(([^)]*)/);\n if (!match) {\n return [];\n }\n const args = splitByComma(match[1]);\n if (!args.length) {\n return [];\n }\n let first = args[0];\n if (\"__VITEST_FIXTURE_INDEX__\" in fn) {\n first = args[fn.__VITEST_FIXTURE_INDEX__];\n if (!first) {\n return [];\n }\n }\n if (!(first.startsWith(\"{\") && first.endsWith(\"}\"))) {\n throw new Error(\n `The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received \"${first}\".`\n );\n }\n const _first = first.slice(1, -1).replace(/\\s/g, \"\");\n const props = splitByComma(_first).map((prop) => {\n return prop.replace(/:.*|=.*/g, \"\");\n });\n const last = props.at(-1);\n if (last && last.startsWith(\"...\")) {\n throw new Error(\n `Rest parameters are not supported in fixtures, received \"${last}\".`\n );\n }\n return props;\n}\nfunction splitByComma(s) {\n const result = [];\n const stack = [];\n let start = 0;\n for (let i = 0; i < s.length; i++) {\n if (s[i] === \"{\" || s[i] === \"[\") {\n stack.push(s[i] === \"{\" ? \"}\" : \"]\");\n } else if (s[i] === stack[stack.length - 1]) {\n stack.pop();\n } else if (!stack.length && s[i] === \",\") {\n const token = s.substring(start, i).trim();\n if (token) {\n result.push(token);\n }\n start = i + 1;\n }\n }\n const lastToken = s.substring(start).trim();\n if (lastToken) {\n result.push(lastToken);\n }\n return result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n _test = test;\n}\nfunction getCurrentTest() {\n return _test;\n}\n\nconst suite = createSuite();\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n if (getCurrentTest()) {\n throw new Error(\n 'Calling the test function inside another test function is not allowed. Please put it inside \"describe\" or \"suite\" so it can be properly collected.'\n );\n }\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n});\nconst describe = suite;\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`Vitest failed to find ${message}. This is a bug in Vitest. Please, open an issue with reproduction.`);\n }\n}\nfunction getDefaultSuite() {\n assert(defaultSuite, \"the default suite\");\n return defaultSuite;\n}\nfunction getTestFilepath() {\n return currentTestFilepath;\n}\nfunction getRunner() {\n assert(runner, \"the runner\");\n return runner;\n}\nfunction createDefaultSuite(runner2) {\n const config = runner2.config.sequence;\n const collector = suite(\"\", { concurrent: config.concurrent }, () => {\n });\n delete collector.suite;\n return collector;\n}\nfunction clearCollectorContext(filepath, currentRunner) {\n if (!defaultSuite) {\n defaultSuite = createDefaultSuite(currentRunner);\n }\n runner = currentRunner;\n currentTestFilepath = filepath;\n collectorContext.tasks.length = 0;\n defaultSuite.clear();\n collectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n assert(currentSuite, \"the current suite\");\n return currentSuite;\n}\nfunction createSuiteHooks() {\n return {\n beforeAll: [],\n afterAll: [],\n beforeEach: [],\n afterEach: []\n };\n}\nfunction parseArguments(optionsOrFn, optionsOrTest) {\n let options = {};\n let fn = () => {\n };\n if (typeof optionsOrTest === \"object\") {\n if (typeof optionsOrFn === \"object\") {\n throw new TypeError(\n \"Cannot use two objects as arguments. Please provide options and a function callback in that order.\"\n );\n }\n console.warn(\n \"Using an object as a third argument is deprecated. Vitest 4 will throw an error if the third argument is not a timeout number. Please use the second argument for options. See more at https://vitest.dev/guide/migration\"\n );\n options = optionsOrTest;\n } else if (typeof optionsOrTest === \"number\") {\n options = { timeout: optionsOrTest };\n } else if (typeof optionsOrFn === \"object\") {\n options = optionsOrFn;\n }\n if (typeof optionsOrFn === \"function\") {\n if (typeof optionsOrTest === \"function\") {\n throw new TypeError(\n \"Cannot use two functions as arguments. Please use the second argument for options.\"\n );\n }\n fn = optionsOrFn;\n } else if (typeof optionsOrTest === \"function\") {\n fn = optionsOrTest;\n }\n return {\n options,\n handler: fn\n };\n}\nfunction createSuiteCollector(name, factory = () => {\n}, mode, each, suiteOptions) {\n const tasks = [];\n let suite2;\n initSuite(true);\n const task = function(name2 = \"\", options = {}) {\n var _a;\n const timeout = (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout;\n const task2 = {\n id: \"\",\n name: name2,\n suite: (_a = collectorContext.currentSuite) == null ? void 0 : _a.suite,\n each: options.each,\n fails: options.fails,\n context: void 0,\n type: \"test\",\n file: void 0,\n timeout,\n retry: options.retry ?? runner.config.retry,\n repeats: options.repeats,\n mode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n meta: options.meta ?? /* @__PURE__ */ Object.create(null)\n };\n const handler = options.handler;\n if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) {\n task2.concurrent = true;\n }\n task2.shuffle = suiteOptions == null ? void 0 : suiteOptions.shuffle;\n const context = createTestContext(task2, runner);\n Object.defineProperty(task2, \"context\", {\n value: context,\n enumerable: false\n });\n setFixture(context, options.fixtures);\n if (handler) {\n setFn(\n task2,\n withTimeout(\n withAwaitAsyncAssertions(withFixtures(handler, context), task2),\n timeout\n )\n );\n }\n if (runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, task2.each ?? false);\n if (stack) {\n task2.location = stack;\n }\n }\n tasks.push(task2);\n return task2;\n };\n const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) {\n let { options, handler } = parseArguments(optionsOrFn, optionsOrTest);\n if (typeof suiteOptions === \"object\") {\n options = Object.assign({}, suiteOptions, options);\n }\n options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent);\n options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential);\n const test3 = task(formatName(name2), {\n ...this,\n ...options,\n handler\n });\n test3.type = \"test\";\n });\n const collector = {\n type: \"collector\",\n name,\n mode,\n suite: suite2,\n options: suiteOptions,\n test: test2,\n tasks,\n collect,\n task,\n clear,\n on: addHook\n };\n function addHook(name2, ...fn) {\n getHooks(suite2)[name2].push(...fn);\n }\n function initSuite(includeLocation) {\n var _a;\n if (typeof suiteOptions === \"number\") {\n suiteOptions = { timeout: suiteOptions };\n }\n suite2 = {\n id: \"\",\n type: \"suite\",\n name,\n suite: (_a = collectorContext.currentSuite) == null ? void 0 : _a.suite,\n mode,\n each,\n file: void 0,\n shuffle: suiteOptions == null ? void 0 : suiteOptions.shuffle,\n tasks: [],\n meta: /* @__PURE__ */ Object.create(null),\n concurrent: suiteOptions == null ? void 0 : suiteOptions.concurrent\n };\n if (runner && includeLocation && runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, suite2.each ?? false);\n if (stack) {\n suite2.location = stack;\n }\n }\n setHooks(suite2, createSuiteHooks());\n }\n function clear() {\n tasks.length = 0;\n initSuite(false);\n }\n async function collect(file) {\n if (!file) {\n throw new TypeError(\"File is required to collect tasks.\");\n }\n if (factory) {\n await runWithSuite(collector, () => factory(test2));\n }\n const allChildren = [];\n for (const i of tasks) {\n allChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n }\n suite2.file = file;\n suite2.tasks = allChildren;\n allChildren.forEach((task2) => {\n task2.file = file;\n });\n return suite2;\n }\n collectTask(collector);\n return collector;\n}\nfunction withAwaitAsyncAssertions(fn, task) {\n return async (...args) => {\n const fnResult = await fn(...args);\n if (task.promises) {\n const result = await Promise.allSettled(task.promises);\n const errors = result.map((r) => r.status === \"rejected\" ? r.reason : void 0).filter(Boolean);\n if (errors.length) {\n throw errors;\n }\n }\n return fnResult;\n };\n}\nfunction createSuite() {\n function suiteFn(name, factoryOrOptions, optionsOrFactory) {\n var _a;\n const mode = this.only ? \"only\" : this.skip ? \"skip\" : this.todo ? \"todo\" : \"run\";\n const currentSuite = collectorContext.currentSuite || defaultSuite;\n let { options, handler: factory } = parseArguments(\n factoryOrOptions,\n optionsOrFactory\n );\n const isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;\n const isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;\n options = {\n ...currentSuite == null ? void 0 : currentSuite.options,\n ...options,\n shuffle: this.shuffle ?? options.shuffle ?? ((_a = currentSuite == null ? void 0 : currentSuite.options) == null ? void 0 : _a.shuffle) ?? (runner == null ? void 0 : runner.config.sequence.shuffle)\n };\n const isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;\n const isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;\n options.concurrent = isConcurrent && !isSequential;\n options.sequential = isSequential && !isConcurrent;\n return createSuiteCollector(\n formatName(name),\n factory,\n mode,\n this.each,\n options\n );\n }\n suiteFn.each = function(cases, ...args) {\n const suite2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n suite2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n suite2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n suite2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n suite2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n suiteFn.for = function(cases, ...args) {\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const name_ = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n suite(formatTitle(name_, toArray(item), idx), options, () => handler(item));\n });\n };\n };\n suiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n suiteFn.runIf = (condition) => condition ? suite : suite.skip;\n return createChainable(\n [\"concurrent\", \"sequential\", \"shuffle\", \"skip\", \"only\", \"todo\"],\n suiteFn\n );\n}\nfunction createTaskCollector(fn, context) {\n const taskFn = fn;\n taskFn.each = function(cases, ...args) {\n const test2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\" && typeof fnOrOptions === \"object\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n if (arrayOnlyCases) {\n test2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n );\n } else {\n test2(formatTitle(_name, items, idx), () => handler(i), options);\n }\n } else {\n if (arrayOnlyCases) {\n test2(formatTitle(_name, items, idx), options, () => handler(...items));\n } else {\n test2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n taskFn.for = function(cases, ...args) {\n const test2 = this.withContext();\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n const handlerWrapper = (ctx) => handler(item, ctx);\n handlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;\n handlerWrapper.toString = () => handler.toString();\n test2(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n });\n };\n };\n taskFn.skipIf = function(condition) {\n return condition ? this.skip : this;\n };\n taskFn.runIf = function(condition) {\n return condition ? this : this.skip;\n };\n taskFn.extend = function(fixtures) {\n const _context = mergeContextFixtures(\n fixtures,\n context || {},\n (key) => {\n var _a, _b;\n return (_b = (_a = getRunner()).injectValue) == null ? void 0 : _b.call(_a, key);\n }\n );\n return createTest(function fn2(name, optionsOrFn, optionsOrTest) {\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n }, _context);\n };\n const _test = createChainable(\n [\"concurrent\", \"sequential\", \"skip\", \"only\", \"todo\", \"fails\"],\n taskFn\n );\n if (context) {\n _test.mergeContext(context);\n }\n return _test;\n}\nfunction createTest(fn, context) {\n return createTaskCollector(fn, context);\n}\nfunction formatName(name) {\n return typeof name === \"string\" ? name : typeof name === \"function\" ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n if (template.includes(\"%#\")) {\n template = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, \"%%\");\n }\n const count = template.split(\"%\").length - 1;\n if (template.includes(\"%f\")) {\n const placeholders = template.match(/%f/g) || [];\n placeholders.forEach((_, i) => {\n if (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n let occurrence = 0;\n template = template.replace(/%f/g, (match) => {\n occurrence++;\n return occurrence === i + 1 ? \"-%f\" : match;\n });\n }\n });\n }\n let formatted = format(template, ...items.slice(0, count));\n if (isObject(items[0])) {\n formatted = formatted.replace(\n /\\$([$\\w.]+)/g,\n // https://github.com/chaijs/chai/pull/1490\n (_, key) => {\n var _a, _b;\n return objDisplay(objectAttr(items[0], key), {\n truncate: (_b = (_a = runner == null ? void 0 : runner.config) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold\n });\n }\n );\n }\n return formatted;\n}\nfunction formatTemplateString(cases, args) {\n const header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n const res = [];\n for (let i = 0; i < Math.floor(args.length / header.length); i++) {\n const oneCase = {};\n for (let j = 0; j < header.length; j++) {\n oneCase[header[j]] = args[i * header.length + j];\n }\n res.push(oneCase);\n }\n return res;\n}\nfunction findTestFileStackTrace(error, each) {\n const lines = error.split(\"\\n\").slice(1);\n for (const line of lines) {\n const stack = parseSingleStack(line);\n if (stack && stack.file === getTestFilepath()) {\n return {\n line: stack.line,\n /**\n * test.each([1, 2])('name')\n * ^ leads here, but should\n * ^ lead here\n * in source maps it's the same boundary, so it just points to the start of it\n */\n column: each ? stack.column + 1 : stack.column\n };\n }\n }\n}\n\nfunction getDefaultHookTimeout() {\n return getRunner().config.hookTimeout;\n}\nconst CLEANUP_TIMEOUT_KEY = Symbol.for(\"VITEST_CLEANUP_TIMEOUT\");\nconst CLEANUP_STACK_TRACE_KEY = Symbol.for(\"VITEST_CLEANUP_STACK_TRACE\");\nfunction getBeforeHookCleanupCallback(hook, result) {\n if (typeof result === \"function\") {\n const timeout = CLEANUP_TIMEOUT_KEY in hook && typeof hook[CLEANUP_TIMEOUT_KEY] === \"number\" ? hook[CLEANUP_TIMEOUT_KEY] : getDefaultHookTimeout();\n const stackTraceError = CLEANUP_STACK_TRACE_KEY in hook && hook[CLEANUP_STACK_TRACE_KEY] instanceof Error ? hook[CLEANUP_STACK_TRACE_KEY] : void 0;\n return withTimeout(result, timeout, true, stackTraceError);\n }\n}\nfunction beforeAll(fn, timeout = getDefaultHookTimeout()) {\n assertTypes(fn, '\"beforeAll\" callback', [\"function\"]);\n const stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n return getCurrentSuite().on(\n \"beforeAll\",\n Object.assign(\n withTimeout(\n fn,\n timeout,\n true,\n stackTraceError\n ),\n {\n [CLEANUP_TIMEOUT_KEY]: timeout,\n [CLEANUP_STACK_TRACE_KEY]: stackTraceError\n }\n )\n );\n}\nfunction afterAll(fn, timeout) {\n assertTypes(fn, '\"afterAll\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterAll\",\n withTimeout(\n fn,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n}\nfunction beforeEach(fn, timeout = getDefaultHookTimeout()) {\n assertTypes(fn, '\"beforeEach\" callback', [\"function\"]);\n const stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n return getCurrentSuite().on(\n \"beforeEach\",\n Object.assign(\n withTimeout(\n withFixtures(fn),\n timeout ?? getDefaultHookTimeout(),\n true,\n stackTraceError\n ),\n {\n [CLEANUP_TIMEOUT_KEY]: timeout,\n [CLEANUP_STACK_TRACE_KEY]: stackTraceError\n }\n )\n );\n}\nfunction afterEach(fn, timeout) {\n assertTypes(fn, '\"afterEach\" callback', [\"function\"]);\n return getCurrentSuite().on(\n \"afterEach\",\n withTimeout(\n withFixtures(fn),\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n}\nconst onTestFailed = createTestHook(\n \"onTestFailed\",\n (test, handler, timeout) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(\n withTimeout(\n handler,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n }\n);\nconst onTestFinished = createTestHook(\n \"onTestFinished\",\n (test, handler, timeout) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(\n withTimeout(\n handler,\n timeout ?? getDefaultHookTimeout(),\n true,\n new Error(\"STACK_TRACE_ERROR\")\n )\n );\n }\n);\nfunction createTestHook(name, handler) {\n return (fn, timeout) => {\n assertTypes(fn, `\"${name}\" callback`, [\"function\"]);\n const current = getCurrentTest();\n if (!current) {\n throw new Error(`Hook ${name}() can only be called inside a test`);\n }\n return handler(current, fn, timeout);\n };\n}\n\nasync function runSetupFiles(config, files, runner) {\n if (config.sequence.setupFiles === \"parallel\") {\n await Promise.all(\n files.map(async (fsPath) => {\n await runner.importFile(fsPath, \"setup\");\n })\n );\n } else {\n for (const fsPath of files) {\n await runner.importFile(fsPath, \"setup\");\n }\n }\n}\n\nconst now$1 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nasync function collectTests(specs, runner) {\n var _a;\n const files = [];\n const config = runner.config;\n for (const spec of specs) {\n const filepath = typeof spec === \"string\" ? spec : spec.filepath;\n const testLocations = typeof spec === \"string\" ? void 0 : spec.testLocations;\n const file = createFileTask(filepath, config.root, config.name, runner.pool);\n file.shuffle = config.sequence.shuffle;\n (_a = runner.onCollectStart) == null ? void 0 : _a.call(runner, file);\n clearCollectorContext(filepath, runner);\n try {\n const setupFiles = toArray(config.setupFiles);\n if (setupFiles.length) {\n const setupStart = now$1();\n await runSetupFiles(config, setupFiles, runner);\n const setupEnd = now$1();\n file.setupDuration = setupEnd - setupStart;\n } else {\n file.setupDuration = 0;\n }\n const collectStart = now$1();\n await runner.importFile(filepath, \"collect\");\n const defaultTasks = await getDefaultSuite().collect(file);\n const fileHooks = createSuiteHooks();\n mergeHooks(fileHooks, getHooks(defaultTasks));\n for (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n if (c.type === \"test\" || c.type === \"suite\") {\n file.tasks.push(c);\n } else if (c.type === \"collector\") {\n const suite = await c.collect(file);\n if (suite.name || suite.tasks.length) {\n mergeHooks(fileHooks, getHooks(suite));\n file.tasks.push(suite);\n }\n } else {\n c;\n }\n }\n setHooks(file, fileHooks);\n file.collectDuration = now$1() - collectStart;\n } catch (e) {\n const error = processError(e);\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n calculateSuiteHash(file);\n const hasOnlyTasks = someTasksAreOnly(file);\n interpretTaskModes(\n file,\n config.testNamePattern,\n testLocations,\n hasOnlyTasks,\n false,\n config.allowOnly\n );\n if (file.mode === \"queued\") {\n file.mode = \"run\";\n }\n files.push(file);\n }\n return files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n for (const _key in hooks) {\n const key = _key;\n baseHooks[key].push(...hooks[key]);\n }\n return baseHooks;\n}\n\nconst now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst unixNow = Date.now;\nfunction updateSuiteHookState(task, name, state, runner) {\n if (!task.result) {\n task.result = { state: \"run\" };\n }\n if (!task.result.hooks) {\n task.result.hooks = {};\n }\n const suiteHooks = task.result.hooks;\n if (suiteHooks) {\n suiteHooks[name] = state;\n let event = state === \"run\" ? \"before-hook-start\" : \"before-hook-end\";\n if (name === \"afterAll\" || name === \"afterEach\") {\n event = state === \"run\" ? \"after-hook-start\" : \"after-hook-end\";\n }\n updateTask(\n event,\n task,\n runner\n );\n }\n}\nfunction getSuiteHooks(suite, name, sequence) {\n const hooks = getHooks(suite)[name];\n if (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n return hooks.slice().reverse();\n }\n return hooks;\n}\nasync function callTestHooks(runner, test, hooks, sequence) {\n if (sequence === \"stack\") {\n hooks = hooks.slice().reverse();\n }\n if (!hooks.length) {\n return;\n }\n const onTestFailed = test.context.onTestFailed;\n const onTestFinished = test.context.onTestFinished;\n test.context.onTestFailed = () => {\n throw new Error(`Cannot call \"onTestFailed\" inside a test hook.`);\n };\n test.context.onTestFinished = () => {\n throw new Error(`Cannot call \"onTestFinished\" inside a test hook.`);\n };\n if (sequence === \"parallel\") {\n try {\n await Promise.all(hooks.map((fn) => fn(test.context)));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n } else {\n for (const fn of hooks) {\n try {\n await fn(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n }\n }\n test.context.onTestFailed = onTestFailed;\n test.context.onTestFinished = onTestFinished;\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n const sequence = runner.config.sequence.hooks;\n const callbacks = [];\n const parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n if (name === \"beforeEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n const hooks = getSuiteHooks(suite, name, sequence);\n if (hooks.length > 0) {\n updateSuiteHookState(currentTask, name, \"run\", runner);\n }\n async function runHook(hook) {\n return getBeforeHookCleanupCallback(hook, await hook(...args));\n }\n if (sequence === \"parallel\") {\n callbacks.push(\n ...await Promise.all(hooks.map((hook) => runHook(hook)))\n );\n } else {\n for (const hook of hooks) {\n callbacks.push(await runHook(hook));\n }\n }\n if (hooks.length > 0) {\n updateSuiteHookState(currentTask, name, \"pass\", runner);\n }\n if (name === \"afterEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n return callbacks;\n}\nconst packs = /* @__PURE__ */ new Map();\nconst eventsPacks = [];\nlet updateTimer;\nlet previousUpdate;\nfunction updateTask(event, task, runner) {\n eventsPacks.push([task.id, event]);\n packs.set(task.id, [task.result, task.meta]);\n const { clearTimeout, setTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n updateTimer = setTimeout(() => {\n previousUpdate = sendTasksUpdate(runner);\n }, 10);\n}\nasync function sendTasksUpdate(runner) {\n var _a;\n const { clearTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n await previousUpdate;\n if (packs.size) {\n const taskPacks = Array.from(packs).map(([id, task]) => {\n return [id, task[0], task[1]];\n });\n const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks, eventsPacks);\n eventsPacks.length = 0;\n packs.clear();\n return p;\n }\n}\nasync function callCleanupHooks(cleanups) {\n await Promise.all(\n cleanups.map(async (fn) => {\n if (typeof fn !== \"function\") {\n return;\n }\n await fn();\n })\n );\n}\nasync function runTest(test, runner) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n await ((_a = runner.onBeforeRunTask) == null ? void 0 : _a.call(runner, test));\n if (test.mode !== \"run\" && test.mode !== \"queued\") {\n return;\n }\n if (((_b = test.result) == null ? void 0 : _b.state) === \"fail\") {\n updateTask(\"test-failed-early\", test, runner);\n return;\n }\n const start = now();\n test.result = {\n state: \"run\",\n startTime: unixNow(),\n retryCount: 0\n };\n updateTask(\"test-prepare\", test, runner);\n setCurrentTest(test);\n const suite = test.suite || test.file;\n const repeats = test.repeats ?? 0;\n for (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n const retry = test.retry ?? 0;\n for (let retryCount = 0; retryCount <= retry; retryCount++) {\n let beforeEachCleanups = [];\n try {\n await ((_c = runner.onBeforeTryTask) == null ? void 0 : _c.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n test.result.repeatCount = repeatCount;\n beforeEachCleanups = await callSuiteHook(\n suite,\n test,\n \"beforeEach\",\n runner,\n [test.context, suite]\n );\n if (runner.runTask) {\n await runner.runTask(test);\n } else {\n const fn = getFn(test);\n if (!fn) {\n throw new Error(\n \"Test function is not found. Did you add it using `setFn`?\"\n );\n }\n await fn();\n }\n await ((_d = runner.onAfterTryTask) == null ? void 0 : _d.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n if (test.result.state !== \"fail\") {\n if (!test.repeats) {\n test.result.state = \"pass\";\n } else if (test.repeats && retry === retryCount) {\n test.result.state = \"pass\";\n }\n }\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (((_e = test.result) == null ? void 0 : _e.pending) || ((_f = test.result) == null ? void 0 : _f.state) === \"skip\") {\n test.mode = \"skip\";\n test.result = { state: \"skip\", note: (_g = test.result) == null ? void 0 : _g.note, pending: true };\n updateTask(\"test-finished\", test, runner);\n setCurrentTest(void 0);\n return;\n }\n try {\n await ((_h = runner.onTaskFinished) == null ? void 0 : _h.call(runner, test));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, test, \"afterEach\", runner, [\n test.context,\n suite\n ]);\n await callCleanupHooks(beforeEachCleanups);\n await callFixtureCleanup(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n await callTestHooks(runner, test, test.onFinished || [], \"stack\");\n if (test.result.state === \"fail\") {\n await callTestHooks(\n runner,\n test,\n test.onFailed || [],\n runner.config.sequence.hooks\n );\n }\n test.onFailed = void 0;\n test.onFinished = void 0;\n if (test.result.state === \"pass\") {\n break;\n }\n if (retryCount < retry) {\n test.result.state = \"run\";\n test.result.retryCount = (test.result.retryCount ?? 0) + 1;\n }\n updateTask(\"test-retried\", test, runner);\n }\n }\n if (test.fails) {\n if (test.result.state === \"pass\") {\n const error = processError(new Error(\"Expect test to fail\"));\n test.result.state = \"fail\";\n test.result.errors = [error];\n } else {\n test.result.state = \"pass\";\n test.result.errors = void 0;\n }\n }\n setCurrentTest(void 0);\n test.result.duration = now() - start;\n await ((_i = runner.onAfterRunTask) == null ? void 0 : _i.call(runner, test));\n updateTask(\"test-finished\", test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n if (err instanceof PendingError) {\n result.state = \"skip\";\n result.note = err.note;\n result.pending = true;\n return;\n }\n result.state = \"fail\";\n const errors = Array.isArray(err) ? err : [err];\n for (const e of errors) {\n const error = processError(e, diffOptions);\n result.errors ?? (result.errors = []);\n result.errors.push(error);\n }\n}\nfunction markTasksAsSkipped(suite, runner) {\n suite.tasks.forEach((t) => {\n t.mode = \"skip\";\n t.result = { ...t.result, state: \"skip\" };\n updateTask(\"test-finished\", t, runner);\n if (t.type === \"suite\") {\n markTasksAsSkipped(t, runner);\n }\n });\n}\nasync function runSuite(suite, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeRunSuite) == null ? void 0 : _a.call(runner, suite));\n if (((_b = suite.result) == null ? void 0 : _b.state) === \"fail\") {\n markTasksAsSkipped(suite, runner);\n updateTask(\"suite-failed-early\", suite, runner);\n return;\n }\n const start = now();\n const mode = suite.mode;\n suite.result = {\n state: mode === \"skip\" || mode === \"todo\" ? mode : \"run\",\n startTime: unixNow()\n };\n updateTask(\"suite-prepare\", suite, runner);\n let beforeAllCleanups = [];\n if (suite.mode === \"skip\") {\n suite.result.state = \"skip\";\n updateTask(\"suite-finished\", suite, runner);\n } else if (suite.mode === \"todo\") {\n suite.result.state = \"todo\";\n updateTask(\"suite-finished\", suite, runner);\n } else {\n try {\n try {\n beforeAllCleanups = await callSuiteHook(\n suite,\n suite,\n \"beforeAll\",\n runner,\n [suite]\n );\n } catch (e) {\n markTasksAsSkipped(suite, runner);\n throw e;\n }\n if (runner.runSuite) {\n await runner.runSuite(suite);\n } else {\n for (let tasksGroup of partitionSuiteChildren(suite)) {\n if (tasksGroup[0].concurrent === true) {\n await Promise.all(tasksGroup.map((c) => runSuiteChild(c, runner)));\n } else {\n const { sequence } = runner.config;\n if (suite.shuffle) {\n const suites = tasksGroup.filter(\n (group) => group.type === \"suite\"\n );\n const tests = tasksGroup.filter((group) => group.type === \"test\");\n const groups = shuffle([suites, tests], sequence.seed);\n tasksGroup = groups.flatMap(\n (group) => shuffle(group, sequence.seed)\n );\n }\n for (const c of tasksGroup) {\n await runSuiteChild(c, runner);\n }\n }\n }\n }\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, suite, \"afterAll\", runner, [suite]);\n await callCleanupHooks(beforeAllCleanups);\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n if (suite.mode === \"run\" || suite.mode === \"queued\") {\n if (!runner.config.passWithNoTests && !hasTests(suite)) {\n suite.result.state = \"fail\";\n if (!((_c = suite.result.errors) == null ? void 0 : _c.length)) {\n const error = processError(\n new Error(`No test found in suite ${suite.name}`)\n );\n suite.result.errors = [error];\n }\n } else if (hasFailed(suite)) {\n suite.result.state = \"fail\";\n } else {\n suite.result.state = \"pass\";\n }\n }\n suite.result.duration = now() - start;\n updateTask(\"suite-finished\", suite, runner);\n await ((_d = runner.onAfterRunSuite) == null ? void 0 : _d.call(runner, suite));\n }\n}\nlet limitMaxConcurrency;\nasync function runSuiteChild(c, runner) {\n if (c.type === \"test\") {\n return limitMaxConcurrency(() => runTest(c, runner));\n } else if (c.type === \"suite\") {\n return runSuite(c, runner);\n }\n}\nasync function runFiles(files, runner) {\n var _a, _b;\n limitMaxConcurrency ?? (limitMaxConcurrency = limitConcurrency(runner.config.maxConcurrency));\n for (const file of files) {\n if (!file.tasks.length && !runner.config.passWithNoTests) {\n if (!((_b = (_a = file.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.length)) {\n const error = processError(\n new Error(`No test suite found in file ${file.filepath}`)\n );\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n }\n await runSuite(file, runner);\n }\n}\nasync function startTests(specs, runner) {\n var _a, _b, _c, _d;\n const paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(specs, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n await ((_c = runner.onBeforeRunFiles) == null ? void 0 : _c.call(runner, files));\n await runFiles(files, runner);\n await ((_d = runner.onAfterRunFiles) == null ? void 0 : _d.call(runner, files));\n await sendTasksUpdate(runner);\n return files;\n}\nasync function publicCollect(specs, runner) {\n var _a, _b;\n const paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(specs, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n return files;\n}\n\nexport { afterAll, afterEach, beforeAll, beforeEach, publicCollect as collectTests, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -87,6 +87,6 @@ function getDefaultExportFromCjs(x) {
87
87
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
88
88
  }
89
89
  //#endregion
90
- export { format, getDefaultExportFromCjs, inspect, objDisplay };
90
+ export { format as f, getDefaultExportFromCjs as g, inspect as i, objDisplay as o };
91
91
 
92
92
  //# sourceMappingURL=chunk-_commonjsHelpers.js.map
@@ -1,7 +1,7 @@
1
1
  import "../../../../../tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js";
2
2
  import "../../../../../loupe@3.2.1/node_modules/loupe/lib/index.js";
3
- import "./chunk-_commonjsHelpers.js";
4
- import "./helpers.js";
3
+ import { f as format, o as objDisplay } from "./chunk-_commonjsHelpers.js";
4
+ import { assertTypes, createDefer, isNegativeNaN, isObject, objectAttr, toArray } from "./helpers.js";
5
5
  //#region ../../node_modules/.pnpm/@vitest+utils@3.0.9/node_modules/@vitest/utils/dist/index.js
6
6
  var jsTokens_1;
7
7
  var hasRequiredJsTokens;
@@ -445,6 +445,6 @@ function getSafeTimers() {
445
445
  };
446
446
  }
447
447
  //#endregion
448
- export { getSafeTimers };
448
+ export { assertTypes, createDefer, format, getSafeTimers, isNegativeNaN, isObject, objDisplay, objectAttr, toArray };
449
449
 
450
450
  //# sourceMappingURL=index.js.map