uql-orm 0.9.3 → 0.9.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"uql-browser.min.js","sources":["../../src/schema/canonicalType.ts","../../src/dialect/abstractDialect.ts","../../src/dialect/queryContext.ts","../../src/dialect/abstractSqlDialect.ts","../../src/dialect/jsonArrayElemMatchUtils.ts","../../src/util/ansiSqlLiteral.ts","../../src/sqlite/sqliteDialect.ts","../../src/bunSql/bunSqliteDialect.ts","../../src/postgres/postgresDialect.ts","../../src/postgres/postgresWireDriverCapabilities.ts","../../src/bunSql/bunSqlPostgresDialect.ts","../../src/util/logger.ts","../../src/entity/metadata/definition.ts","../../src/querier/decorator/log.ts","../../src/querier/decorator/serialized.ts","../../src/querier/abstractQuerier.ts","../../src/querier/abstractSqlQuerier.ts","../../src/querier/abstractPoolQuerier.ts","../../src/bunSql/bunSql.util.ts","../../src/bunSql/bunSqlQuerier.ts","../../src/cockroachdb/cockroachDialect.ts","../../src/dialect/mysqlLikeSqlDialect.ts","../../src/maria/mariaDialect.ts","../../src/mysql/mysqlDialect.ts","../../src/bunSql/bunSqlQuerierPool.ts"],"sourcesContent":["/**\n * Canonical Type System\n *\n * Provides bidirectional mapping between:\n * - SQL types (dialect-specific)\n * - Canonical types (dialect-agnostic)\n * - TypeScript types (for entity generation)\n */\n\nimport type { AbstractDialect } from '../dialect/abstractDialect.js';\nimport type { ColumnType, FieldOptions } from '../type/entity.js';\nimport type { DialectName } from '../type/index.js';\nimport type { CanonicalType, SizeVariant, TypeCategory } from './types.js';\n\n// ============================================================================\n// Vector Category Helpers\n// ============================================================================\n\n/** Type guard for all vector-family categories. */\nexport function isVectorCategory(category: TypeCategory): boolean {\n return category === 'vector' || category === 'halfvec' || category === 'sparsevec';\n}\n\n/** Vector cast types supported by pgvector. */\nexport type VectorCast = 'vector' | 'halfvec' | 'sparsevec';\n\n/**\n * Resolve the effective vector cast type from field options.\n * Follows the canonical type system priority: `columnType > type`.\n */\nexport function resolveVectorCast(field: { type?: unknown; columnType?: unknown } | undefined): VectorCast {\n const raw = field?.columnType ?? field?.type;\n if (raw === 'halfvec') return 'halfvec';\n if (raw === 'sparsevec') return 'sparsevec';\n return 'vector';\n}\n\n// Type Mapping Tables\n// ============================================================================\n\n/**\n * Maps SQL type strings to canonical type categories.\n * Handles variations across dialects (PostgreSQL, MySQL, SQLite).\n */\nconst SQL_TO_CANONICAL: Record<string, Partial<CanonicalType>> = {\n // === Integers ===\n int: { category: 'integer' },\n int4: { category: 'integer' },\n integer: { category: 'integer' },\n tinyint: { category: 'integer', size: 'tiny' },\n smallint: { category: 'integer', size: 'small' },\n int2: { category: 'integer', size: 'small' },\n mediumint: { category: 'integer', size: 'medium' },\n bigint: { category: 'integer', size: 'big' },\n int8: { category: 'integer', size: 'big' },\n serial: { category: 'integer' },\n bigserial: { category: 'integer', size: 'big' },\n smallserial: { category: 'integer', size: 'small' },\n\n // === Floats ===\n float: { category: 'float' },\n float4: { category: 'float' },\n real: { category: 'float' },\n float8: { category: 'float', size: 'big' },\n double: { category: 'float', size: 'big' },\n 'double precision': { category: 'float', size: 'big' },\n\n // === Decimals ===\n decimal: { category: 'decimal' },\n numeric: { category: 'decimal' },\n money: { category: 'decimal' },\n\n // === Strings ===\n char: { category: 'string' },\n character: { category: 'string' },\n varchar: { category: 'string' },\n 'character varying': { category: 'string' },\n text: { category: 'string', size: 'small' },\n tinytext: { category: 'string', size: 'tiny' },\n mediumtext: { category: 'string', size: 'medium' },\n longtext: { category: 'string', size: 'big' },\n\n // === Boolean ===\n bool: { category: 'boolean' },\n boolean: { category: 'boolean' },\n bit: { category: 'boolean' },\n\n // === Date/Time ===\n date: { category: 'date' },\n time: { category: 'time' },\n 'time without time zone': { category: 'time' },\n 'time with time zone': { category: 'time', withTimezone: true },\n timetz: { category: 'time', withTimezone: true },\n timestamp: { category: 'timestamp' },\n 'timestamp without time zone': { category: 'timestamp' },\n 'timestamp with time zone': { category: 'timestamp', withTimezone: true },\n timestamptz: { category: 'timestamp', withTimezone: true },\n datetime: { category: 'timestamp' },\n\n // === JSON ===\n json: { category: 'json' },\n jsonb: { category: 'json' },\n\n // === UUID ===\n uuid: { category: 'uuid' },\n\n // === Binary ===\n blob: { category: 'blob' },\n bytea: { category: 'blob' },\n binary: { category: 'blob' },\n varbinary: { category: 'blob' },\n tinyblob: { category: 'blob', size: 'tiny' },\n mediumblob: { category: 'blob', size: 'medium' },\n longblob: { category: 'blob', size: 'big' },\n\n // === Vector (for AI/embeddings) ===\n vector: { category: 'vector' },\n halfvec: { category: 'halfvec' },\n sparsevec: { category: 'sparsevec' },\n};\n\nconst PG_TYPE_MAP: Record<TypeCategory, string> = {\n integer: 'INTEGER',\n float: 'REAL',\n decimal: 'NUMERIC',\n string: 'VARCHAR',\n boolean: 'BOOLEAN',\n date: 'DATE',\n time: 'TIME',\n timestamp: 'TIMESTAMP',\n json: 'JSONB',\n uuid: 'UUID',\n blob: 'BYTEA',\n vector: 'VECTOR',\n halfvec: 'HALFVEC',\n sparsevec: 'SPARSEVEC',\n};\n\nconst CANONICAL_TO_SQL: Record<DialectName, Record<TypeCategory, string>> = {\n postgres: PG_TYPE_MAP,\n cockroachdb: PG_TYPE_MAP,\n mysql: {\n integer: 'INT',\n float: 'FLOAT',\n decimal: 'DECIMAL',\n string: 'VARCHAR',\n boolean: 'TINYINT(1)',\n date: 'DATE',\n time: 'TIME',\n timestamp: 'DATETIME',\n json: 'JSON',\n uuid: 'CHAR(36)',\n blob: 'BLOB',\n vector: 'JSON', // MySQL doesn't have native vector type\n halfvec: 'JSON',\n sparsevec: 'JSON',\n },\n sqlite: {\n integer: 'INTEGER',\n float: 'REAL',\n decimal: 'REAL',\n string: 'TEXT',\n boolean: 'INTEGER',\n date: 'TEXT',\n time: 'TEXT',\n timestamp: 'TEXT',\n json: 'TEXT',\n uuid: 'TEXT',\n blob: 'BLOB',\n vector: 'TEXT',\n halfvec: 'TEXT',\n sparsevec: 'TEXT',\n },\n mariadb: {\n integer: 'INT',\n float: 'FLOAT',\n decimal: 'DECIMAL',\n string: 'VARCHAR',\n boolean: 'TINYINT(1)',\n date: 'DATE',\n time: 'TIME',\n timestamp: 'DATETIME',\n json: 'JSON',\n uuid: 'CHAR(36)',\n blob: 'BLOB',\n vector: 'VECTOR',\n halfvec: 'VECTOR', // MariaDB only supports VECTOR; no native halfvec/sparsevec\n sparsevec: 'VECTOR',\n },\n // MongoDB uses BSON types, not SQL types. These are placeholders for compatibility.\n mongodb: {\n integer: 'int',\n float: 'double',\n decimal: 'decimal128',\n string: 'string',\n boolean: 'bool',\n date: 'date',\n time: 'string',\n timestamp: 'timestamp',\n json: 'object',\n uuid: 'binData',\n blob: 'binData',\n vector: 'array',\n halfvec: 'array',\n sparsevec: 'array',\n },\n};\n\n/**\n * Size variant modifiers for SQL types.\n */\nconst PG_SIZE_MODIFIERS: Partial<Record<TypeCategory, Record<SizeVariant, string>>> = {\n integer: {\n tiny: 'SMALLINT',\n small: 'SMALLINT',\n medium: 'INTEGER',\n big: 'BIGINT',\n },\n float: {\n tiny: 'REAL',\n small: 'REAL',\n medium: 'DOUBLE PRECISION',\n big: 'DOUBLE PRECISION',\n },\n};\n\nconst SIZE_MODIFIERS: Record<DialectName, Partial<Record<TypeCategory, Record<SizeVariant, string>>>> = {\n postgres: PG_SIZE_MODIFIERS,\n cockroachdb: PG_SIZE_MODIFIERS,\n mysql: {\n integer: {\n tiny: 'TINYINT',\n small: 'SMALLINT',\n medium: 'MEDIUMINT',\n big: 'BIGINT',\n },\n float: {\n tiny: 'FLOAT',\n small: 'FLOAT',\n medium: 'DOUBLE',\n big: 'DOUBLE',\n },\n string: {\n tiny: 'TINYTEXT',\n small: 'TEXT',\n medium: 'MEDIUMTEXT',\n big: 'LONGTEXT',\n },\n blob: {\n tiny: 'TINYBLOB',\n small: 'BLOB',\n medium: 'MEDIUMBLOB',\n big: 'LONGBLOB',\n },\n },\n sqlite: {}, // SQLite uses affinity, no size modifiers\n mariadb: {\n integer: {\n tiny: 'TINYINT',\n small: 'SMALLINT',\n medium: 'MEDIUMINT',\n big: 'BIGINT',\n },\n },\n mongodb: {},\n};\n\n/**\n * Maps canonical types to TypeScript types for entity generation.\n */\nconst CANONICAL_TO_TS: Record<TypeCategory, string> = {\n integer: 'number',\n float: 'number',\n decimal: 'number',\n string: 'string',\n boolean: 'boolean',\n date: 'Date',\n time: 'string',\n timestamp: 'Date',\n json: 'unknown',\n uuid: 'string',\n blob: 'Buffer',\n vector: 'number[]',\n halfvec: 'number[]',\n sparsevec: 'number[]',\n};\n\n// ============================================================================\n// Type Conversion Functions\n// ============================================================================\n\n/**\n * Parse a SQL type string into a canonical type.\n * Handles complex types like VARCHAR(255), DECIMAL(10,2), etc.\n */\nexport function sqlToCanonical(sqlType: string): CanonicalType {\n const normalized = sqlType.toLowerCase().trim();\n\n // Check for UNSIGNED modifier before extracting base type\n const hasUnsigned = normalized.includes('unsigned');\n const withoutUnsigned = normalized.replace(/\\s*unsigned\\s*/i, ' ').trim();\n\n // Extract base type and parameters: \"VARCHAR(255)\" -> [\"varchar\", \"255\"]\n const match = withoutUnsigned.match(/^([a-z][a-z0-9 ]*?)(?:\\(([^)]+)\\))?$/);\n if (!match) {\n return { category: 'string', raw: sqlType };\n }\n\n const [, baseType, params] = match;\n const base = SQL_TO_CANONICAL[baseType];\n\n if (!base) {\n // Unknown type - pass through as raw\n return { category: 'string', raw: sqlType };\n }\n\n const result: CanonicalType = {\n category: base.category!,\n size: base.size,\n withTimezone: base.withTimezone,\n };\n\n // Parse parameters\n if (params) {\n const paramParts = params.split(',').map((p) => p.trim());\n\n if (result.category === 'string' || result.category === 'blob') {\n // VARCHAR(255) -> length\n const length = Number.parseInt(paramParts[0], 10);\n if (!Number.isNaN(length)) {\n (result as { length: number }).length = length;\n }\n } else if (result.category === 'decimal') {\n // DECIMAL(10,2) -> precision, scale\n const precision = Number.parseInt(paramParts[0], 10);\n const scale = paramParts[1] ? Number.parseInt(paramParts[1], 10) : undefined;\n if (!Number.isNaN(precision)) {\n (result as { precision: number }).precision = precision;\n }\n if (scale !== undefined && !Number.isNaN(scale)) {\n (result as { scale: number }).scale = scale;\n }\n } else if (isVectorCategory(result.category)) {\n // VECTOR(1536), HALFVEC(1536), SPARSEVEC(4000) -> length (dimensions)\n const dimensions = Number.parseInt(paramParts[0], 10);\n if (!Number.isNaN(dimensions)) {\n (result as { length: number }).length = dimensions;\n }\n }\n }\n\n // Check for UNSIGNED modifier\n if (hasUnsigned) {\n (result as { unsigned: boolean }).unsigned = true;\n }\n\n return result;\n}\n\n/**\n * Convert a canonical type to a SQL type string for a specific dialect instance.\n */\nexport function canonicalToSql(type: CanonicalType, dialect: AbstractDialect): string {\n if (type.raw) return type.raw;\n\n const dialectName = dialect.dialectName;\n let sqlType = getBaseSqlType(type, dialectName);\n\n if (type.category === 'string') {\n sqlType = formatStringSqlType(type, dialect);\n } else if (type.category === 'decimal') {\n sqlType = formatDecimalSqlType(type, dialectName, sqlType);\n } else if (isVectorCategory(type.category) && type.length && dialect.features.vectorSupportsLength) {\n sqlType = `${sqlType}(${type.length})`;\n }\n\n if (type.category === 'timestamp' && type.withTimezone && dialect.features.supportsTimestamptz) {\n sqlType = 'TIMESTAMPTZ';\n }\n\n if (type.unsigned && (dialectName === 'mysql' || dialectName === 'mariadb')) {\n sqlType = `${sqlType} UNSIGNED`;\n }\n\n return sqlType;\n}\n\nfunction getBaseSqlType(type: CanonicalType, dialect: DialectName): string {\n let sqlType = CANONICAL_TO_SQL[dialect][type.category];\n if (type.size) {\n const sizeMap = SIZE_MODIFIERS[dialect][type.category];\n if (sizeMap?.[type.size]) {\n sqlType = sizeMap[type.size];\n }\n }\n return sqlType;\n}\n\nfunction formatStringSqlType(type: CanonicalType, dialect: AbstractDialect): string {\n const { dialectName, features } = dialect;\n if (dialectName === 'sqlite') return 'TEXT';\n if (features.defaultStringAsText) return type.length ? `VARCHAR(${type.length})` : 'TEXT';\n if (dialectName === 'mysql' || dialectName === 'mariadb') {\n if (type.size === 'tiny') return 'TINYTEXT';\n if (type.size === 'small') return 'TEXT';\n if (type.size === 'medium') return 'MEDIUMTEXT';\n if (type.size === 'big') return 'LONGTEXT';\n return type.length ? `VARCHAR(${type.length})` : 'VARCHAR(255)';\n }\n return type.length ? `VARCHAR(${type.length})` : 'VARCHAR(255)';\n}\n\nfunction formatDecimalSqlType(type: CanonicalType, dialect: DialectName, baseType: string): string {\n const p = type.precision ?? (dialect === 'mysql' || dialect === 'mariadb' ? 10 : undefined);\n const s = type.scale ?? (dialect === 'mysql' || dialect === 'mariadb' ? 2 : undefined);\n if (p !== undefined) {\n return s !== undefined ? `${baseType}(${p}, ${s})` : `${baseType}(${p})`;\n }\n return baseType;\n}\n\n/**\n * Convert a canonical type to a TypeScript type string.\n */\nexport function canonicalToTypeScript(type: CanonicalType): string {\n return CANONICAL_TO_TS[type.category];\n}\n\n/**\n * Convert UQL FieldOptions to a canonical type.\n */\nexport function fieldOptionsToCanonical(options: FieldOptions, tsType?: unknown): CanonicalType {\n // If explicit columnType is specified, use it\n if (options.columnType) {\n const base = sqlToCanonical(options.columnType);\n return {\n ...base,\n length: options.length ?? base.length,\n precision: options.precision ?? base.precision,\n scale: options.scale ?? base.scale,\n };\n }\n\n // Infer from type (could be constructor or string)\n const type = options.type || tsType;\n\n if (type === String) {\n return {\n category: 'string',\n length: options.length,\n };\n }\n\n if (type === Number) {\n if (options.precision || options.scale) {\n return {\n category: 'decimal',\n precision: options.precision,\n scale: options.scale,\n };\n }\n // Infer bigint for Number if autoIncrement is true or if it's a primary key\n if (options.autoIncrement || options.isId) {\n return { category: 'integer', size: 'big' };\n }\n return { category: 'integer', size: 'big' };\n }\n\n if (type === Boolean) {\n return { category: 'boolean' };\n }\n\n if (type === Date) {\n return { category: 'timestamp' };\n }\n\n if (type === BigInt) {\n return { category: 'integer', size: 'big' };\n }\n\n if (typeof type === 'string') {\n const canonical = sqlToCanonical(type);\n // Propagate explicit dimensions into CanonicalType.length for vector types\n if (options.dimensions && isVectorCategory(canonical.category)) {\n return { ...canonical, length: options.dimensions };\n }\n return canonical;\n }\n\n // Default to string\n return { category: 'string', length: options.length };\n}\n\n/**\n * Compare two canonical types for equality.\n * Used for schema diffing.\n */\nexport function areTypesEqual(a: CanonicalType, b: CanonicalType): boolean {\n // Category must match\n if (a.category !== b.category) {\n return false;\n }\n\n // Size must match (if specified)\n if (a.size !== b.size) {\n return false;\n }\n\n // For strings, compare length (allowing for default 255)\n if (a.category === 'string') {\n const lengthA = a.length ?? 255;\n const lengthB = b.length ?? 255;\n if (lengthA !== lengthB) {\n return false;\n }\n }\n\n // For decimals, compare precision and scale (allowing for default 10, 2)\n if (a.category === 'decimal') {\n const pA = a.precision ?? 10;\n const pB = b.precision ?? 10;\n const sA = a.scale ?? 2;\n const sB = b.scale ?? 2;\n if (pA !== pB || sA !== sB) {\n return false;\n }\n }\n\n // For timestamps, compare timezone\n if (a.category === 'timestamp') {\n if (!!a.withTimezone !== !!b.withTimezone) {\n return false;\n }\n }\n\n // Unsigned must match\n if (!!a.unsigned !== !!b.unsigned) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Check if changing from type A to type B could cause data loss.\n */\nexport function isBreakingTypeChange(from: CanonicalType, to: CanonicalType): boolean {\n // Changing category is always potentially breaking\n if (from.category !== to.category) {\n return true;\n }\n\n // Reducing size is breaking\n const sizeOrder: SizeVariant[] = ['tiny', 'small', 'medium', 'big'];\n if (from.size && to.size) {\n const fromIndex = sizeOrder.indexOf(from.size);\n const toIndex = sizeOrder.indexOf(to.size);\n if (toIndex < fromIndex) {\n return true;\n }\n }\n\n // Reducing string length is breaking\n if (from.category === 'string' && from.length && to.length) {\n if (to.length < from.length) {\n return true;\n }\n }\n\n // Reducing precision/scale is breaking\n if (from.category === 'decimal') {\n if (from.precision && to.precision && to.precision < from.precision) {\n return true;\n }\n if (from.scale && to.scale && to.scale < from.scale) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Get the UQL ColumnType that best matches a canonical type.\n */\nexport function canonicalToColumnType(type: CanonicalType): ColumnType {\n switch (type.category) {\n case 'integer':\n if (type.size === 'big') return 'bigint';\n if (type.size === 'small') return 'smallint';\n return 'int';\n case 'float':\n if (type.size === 'big') return 'double';\n return 'float';\n case 'decimal':\n return 'decimal';\n case 'string':\n if (!type.length || type.length > 10000) return 'text';\n return 'varchar';\n case 'boolean':\n return 'boolean';\n case 'date':\n return 'date';\n case 'time':\n return 'time';\n case 'timestamp':\n return type.withTimezone ? 'timestamptz' : 'timestamp';\n case 'json':\n return 'jsonb';\n case 'uuid':\n return 'uuid';\n case 'blob':\n return 'bytea';\n case 'vector':\n return 'vector';\n case 'halfvec':\n return 'halfvec';\n case 'sparsevec':\n return 'sparsevec';\n default:\n return 'varchar';\n }\n}\n","import type { DialectFeatures, DialectName, EntityMeta, FieldOptions, NamingStrategy, Type } from '../type/index.js';\n\n/**\n * Options for initializing a dialect.\n */\nexport interface DialectOptions {\n readonly namingStrategy?: NamingStrategy;\n readonly driverCapabilities?: Partial<DialectFeatures>;\n}\n\n/**\n * Merge dialect capability defaults with optional overrides from {@link DialectOptions.driverCapabilities}.\n */\nexport function mergeDialectFeatures(defaults: DialectFeatures, patch?: Partial<DialectFeatures>): DialectFeatures {\n return patch ? { ...defaults, ...patch } : defaults;\n}\n\n/**\n * Base abstract class for all database dialects (SQL and NoSQL).\n */\nexport abstract class AbstractDialect {\n abstract readonly dialectName: DialectName;\n\n abstract readonly insertIdStrategy: 'first' | 'last';\n readonly namingStrategy: NamingStrategy | undefined;\n readonly features: DialectFeatures;\n\n constructor(\n featureDefaults: DialectFeatures,\n protected readonly options: DialectOptions = {},\n ) {\n this.namingStrategy = options.namingStrategy;\n this.features = mergeDialectFeatures(featureDefaults, options.driverCapabilities);\n }\n\n /**\n * Resolve the table name for an entity, applying naming strategy if necessary.\n */\n resolveTableName<E>(entity: Type<E>, meta: EntityMeta<E>): string {\n const name = meta.name ?? entity.name;\n if (name !== entity.name || !this.namingStrategy) {\n return name;\n }\n return this.namingStrategy.tableName(name);\n }\n\n /**\n * Resolve the column/field name for a property, applying naming strategy if necessary.\n */\n resolveColumnName(key: string, field: FieldOptions | undefined): string {\n if (!field || field.name !== key || !this.namingStrategy) {\n return field?.name ?? key;\n }\n return this.namingStrategy.columnName(field.name);\n }\n}\n","import type { QueryContext, QueryDialect } from '../type/index.js';\n\n/**\n * SqlQueryContext is an implementation of the QueryContext interface specifically for SQL-based dialects.\n * It follows the \"Accumulator\" or \"Builder\" pattern to construct SQL queries and their corresponding parameters.\n *\n * This pattern solves the problem of building complex SQL strings while safely managing parameterized values,\n * preventing SQL injection and handling dialect-specific parameter placeholders (e.g., '?' for MySQL, '$n' for PostgreSQL).\n */\nexport class SqlQueryContext implements QueryContext {\n private readonly sqlChunks: string[] = [];\n private readonly params: unknown[] = [];\n\n /**\n * @param dialect The SQL dialect used to determine how values should be formatted as placeholders.\n */\n constructor(readonly dialect: QueryDialect) {}\n\n /**\n * Appends raw SQL string fragments to the query.\n *\n * @param sql The SQL fragment to append.\n * @returns The current context instance for method chaining.\n */\n append(sql: string): this {\n if (sql) {\n this.sqlChunks.push(sql);\n }\n return this;\n }\n\n /**\n * Adds a value to the query parameters and appends its corresponding placeholder to the SQL.\n * The placeholder format is determined by the dialect (e.g., '?' or '$1').\n *\n * @param value The value to be parameterized.\n * @returns The current context instance for method chaining.\n */\n addValue(value: unknown): this {\n this.sqlChunks.push(this.dialect.addValue(this.params, value));\n return this;\n }\n\n /**\n * Pushes values to the parameters list without appending placeholders to the SQL.\n * This is useful when the placeholder is already present in the SQL string or handled elsewhere.\n *\n * @param values The values to be added to the parameters.\n * @returns The current context instance for method chaining.\n */\n pushValue(...values: unknown[]): this {\n this.params.push(...values.map((v) => this.dialect.normalizeValue(v)));\n return this;\n }\n\n /**\n * Returns the complete SQL query string by joining all accumulated chunks.\n */\n get sql() {\n return this.sqlChunks.join('');\n }\n\n /**\n * Returns the array of collected parameter values in the order they were added.\n */\n get values() {\n return this.params;\n }\n}\n","import { getMeta } from '../entity/index.js';\nimport { resolveVectorCast, type VectorCast } from '../schema/canonicalType.js';\nimport {\n type DialectFeatures,\n type EntityMeta,\n type FieldKey,\n type FieldOptions,\n type IdKey,\n type IsolationLevel,\n type JsonUpdateOp,\n type Key,\n type Query,\n type QueryAggregate,\n type QueryComparisonOptions,\n type QueryConflictPaths,\n type QueryContext,\n type QueryDialect,\n type QueryExclude,\n type QueryHavingMap,\n type QueryOptions,\n type QueryPager,\n type QueryPopulate,\n QueryRaw,\n type QueryRawFnOptions,\n type QuerySearch,\n type QuerySelect,\n type QuerySelectOptions,\n type QuerySizeComparisonOps,\n type QuerySortDirection,\n type QuerySortMap,\n type QueryTextSearchOptions,\n type QueryVectorSearch,\n type QueryWhere,\n type QueryWhereArray,\n type QueryWhereFieldOperatorMap,\n type QueryWhereMap,\n type QueryWhereOptions,\n RAW_ALIAS,\n RAW_VALUE,\n type RelationOptions,\n type SqlDialectName,\n type SqlQueryDialect,\n type Type,\n type UpdatePayload,\n type VectorDistance,\n} from '../type/index.js';\n\nimport {\n buildQueryWhereAsMap,\n buildSortMap,\n type CallbackKey,\n escapeSqlId,\n fillOnFields,\n filterFieldKeys,\n flatObject,\n getFieldCallbackValue,\n getFieldKeys,\n getKeys,\n getRelationRequestSummary,\n hasKeys,\n isJsonType,\n isPopulatingRelations,\n isVectorSearch,\n normalizeScalarFieldSelection,\n parseGroupMap,\n parseRelationAtKey,\n type RelationQuery,\n raw,\n} from '../util/index.js';\n\nimport { AbstractDialect, type DialectOptions } from './abstractDialect.js';\nimport { SqlQueryContext } from './queryContext.js';\n\nexport abstract class AbstractSqlDialect extends AbstractDialect implements QueryDialect, SqlQueryDialect {\n // Narrow dialect type from Dialect to SqlDialect\n abstract override readonly dialectName: SqlDialectName;\n\n abstract readonly quoteChar: '\"' | '`';\n abstract readonly serialPrimaryKey: string;\n abstract readonly tableOptions: string;\n abstract readonly beginTransactionCommand: string;\n abstract readonly commitTransactionCommand: string;\n abstract readonly rollbackTransactionCommand: string;\n\n constructor(engineDefaults: DialectFeatures, options: DialectOptions = {}) {\n super(engineDefaults, options);\n }\n\n readonly isolationLevelStrategy: 'inline' | 'set-before' | 'none' = 'inline';\n\n readonly alterColumnStrategy: 'separate-clauses' | 'single-statement' = 'single-statement';\n\n readonly alterColumnSyntax: 'ALTER COLUMN' | 'MODIFY COLUMN' | 'none' = 'ALTER COLUMN';\n\n readonly dropForeignKeySyntax: 'DROP CONSTRAINT' | 'DROP FOREIGN KEY' = 'DROP CONSTRAINT';\n\n readonly dropIndexSyntax: 'on-table' | 'standalone' = 'standalone';\n\n readonly renameTableSyntax: 'rename-table' | 'alter-table' = 'alter-table';\n\n readonly booleanLiteral: 'native' | 'integer' = 'native';\n\n readonly vectorOpsClass: Readonly<Record<VectorDistance, string>> | undefined = undefined;\n\n readonly vectorExtension: string | undefined = undefined;\n\n get escapeIdChar() {\n return this.quoteChar;\n }\n\n getBeginTransactionStatements(isolationLevel?: IsolationLevel): string[] {\n const level = isolationLevel?.toUpperCase();\n const strategy = this.isolationLevelStrategy;\n if (!level || strategy === 'none') {\n return [this.beginTransactionCommand];\n }\n if (strategy === 'inline') {\n return [`${this.beginTransactionCommand} ISOLATION LEVEL ${level}`];\n }\n // 'set-before' — MySQL/MariaDB pattern\n return [`SET TRANSACTION ISOLATION LEVEL ${level}`, this.beginTransactionCommand];\n }\n\n createContext(): QueryContext {\n return new SqlQueryContext(this);\n }\n\n addValue(values: unknown[], value: unknown): string {\n values.push(this.normalizeValue(value));\n return this.placeholder(values.length);\n }\n\n /**\n * Normalizes a parameter value for the database driver.\n * Handles bigint, boolean, and serializes plain objects/arrays to JSON strings.\n * Date values are preserved so SQL drivers can apply native date/time binding.\n * Postgres overrides to pass objects through to its native JSONB driver.\n */\n normalizeValue(value: unknown): unknown {\n if (value == null || value instanceof Date || value instanceof Uint8Array || value instanceof QueryRaw) {\n return value;\n }\n if (typeof value === 'bigint') {\n return Number(value);\n }\n if (typeof value === 'boolean') {\n return this.booleanLiteral === 'native' ? value : value ? 1 : 0;\n }\n return value;\n }\n\n /**\n * Normalizes a list of parameter values.\n */\n normalizeValues(values: unknown[] | undefined): unknown[] | undefined {\n return values?.map((v) => this.normalizeValue(v));\n }\n\n placeholder(_index: number): string {\n return '?';\n }\n\n returningId<E>(entity: Type<E>): string {\n const meta = getMeta(entity);\n const idKey = (meta.id ?? 'id') as IdKey<E>;\n const idName = this.resolveColumnName(idKey, meta.fields[idKey]);\n return `RETURNING ${this.escapeId(idName)} ${this.escapeId('id')}`;\n }\n\n search<E>(ctx: QueryContext, entity: Type<E>, q: Query<E> = {}, opts: QueryOptions = {}): void {\n const meta = getMeta(entity);\n const tableName = this.resolveTableName(entity, meta);\n const prefix = this.resolveRelationAwarePrefix(tableName, meta, opts, q.$select, q.$populate);\n opts = { ...opts, prefix };\n this.where<E>(ctx, entity, q.$where, opts);\n this.sort<E>(ctx, entity, q.$sort, opts);\n this.pager(ctx, q);\n }\n\n selectFields<E>(\n ctx: QueryContext,\n entity: Type<E>,\n select: QuerySelect<E> | QueryRaw[] | undefined,\n opts: QuerySelectOptions = {},\n exclude?: QueryExclude<E>,\n ): void {\n const meta = getMeta(entity);\n const prefix = opts.prefix ? opts.prefix + '.' : '';\n const escapedPrefix = this.escapeId(opts.prefix as string, true, true);\n\n let selectArr: (FieldKey<E> | QueryRaw)[];\n\n if (select) {\n if (Array.isArray(select)) {\n // Internal-only path: raw SQL expressions passed as QueryRaw[]\n selectArr = select;\n } else {\n selectArr = normalizeScalarFieldSelection(meta, select, exclude);\n }\n\n const id = meta.id;\n if (id && opts.prefix && !selectArr.includes(id)) {\n selectArr = [id, ...selectArr];\n }\n } else {\n selectArr = normalizeScalarFieldSelection(meta, undefined, exclude);\n }\n\n if (!selectArr.length) {\n ctx.append(escapedPrefix + '*');\n return;\n }\n\n selectArr.forEach((key, index) => {\n if (index > 0) ctx.append(', ');\n if (key instanceof QueryRaw) {\n this.getRawValue(ctx, {\n value: key,\n prefix: opts.prefix,\n escapedPrefix,\n autoPrefixAlias: opts.autoPrefixAlias,\n });\n } else {\n const field = meta.fields[key];\n if (!field) return;\n const columnName = this.resolveColumnName(key, field);\n if (field.virtual) {\n this.getRawValue(ctx, {\n value: raw(field.virtual[RAW_VALUE], key),\n prefix: opts.prefix,\n escapedPrefix,\n autoPrefixAlias: opts.autoPrefixAlias,\n });\n } else {\n ctx.append(escapedPrefix + this.escapeId(columnName));\n }\n if (!field.virtual && (columnName !== key || opts.autoPrefixAlias)) {\n const aliasStr = prefix + key;\n ctx.append(' ' + this.escapeId(aliasStr, true));\n }\n }\n });\n }\n\n select<E>(\n ctx: QueryContext,\n entity: Type<E>,\n select: QuerySelect<E> | QueryRaw[] | undefined,\n exclude?: QueryExclude<E>,\n populate?: QueryPopulate<E>,\n opts: QueryOptions = {},\n distinct?: boolean,\n sort?: QuerySortMap<E>,\n ): void {\n const meta = getMeta(entity);\n const tableName = this.resolveTableName(entity, meta);\n const mapSelect = Array.isArray(select) ? undefined : select;\n const prefix = this.resolveRelationAwarePrefix(tableName, meta, opts, mapSelect, populate);\n\n ctx.append(distinct ? 'SELECT DISTINCT ' : 'SELECT ');\n this.selectFields(ctx, entity, select, { prefix }, exclude);\n // Add related fields BEFORE FROM clause\n this.selectRelationFields(ctx, entity, mapSelect, populate, { prefix });\n // Inject vector distance projections when $project is set\n if (sort) {\n const sortMap = buildSortMap(sort);\n for (const [key, val] of Object.entries(sortMap)) {\n if (isVectorSearch(val) && val.$project) {\n ctx.append(', ');\n this.appendVectorProjection(ctx, meta, key, val);\n }\n }\n }\n ctx.append(` FROM ${this.escapeId(tableName)}`);\n // Add JOINs AFTER FROM clause\n this.selectRelationJoins(ctx, entity, mapSelect, populate, { prefix });\n }\n\n private resolveRelationAwarePrefix<E>(\n tableName: string,\n meta: EntityMeta<E>,\n opts: QueryOptions,\n select?: QuerySelect<E>,\n populate?: QueryPopulate<E>,\n ): string | undefined {\n return (opts.prefix ?? (opts.autoPrefix || isPopulatingRelations(meta, populate))) ? tableName : undefined;\n }\n\n protected selectRelationFields<E>(\n ctx: QueryContext,\n entity: Type<E>,\n select: QuerySelect<E> | undefined,\n populate: QueryPopulate<E> | undefined,\n opts: { prefix?: string } = {},\n ): void {\n this.forEachJoinableRelation(entity, select, populate, opts, (relEntity, relQuery, joinRelAlias) => {\n ctx.append(', ');\n this.selectFields(\n ctx,\n relEntity,\n relQuery.$select,\n { prefix: joinRelAlias, autoPrefixAlias: true },\n relQuery.$exclude,\n );\n this.selectRelationFields(ctx, relEntity, relQuery.$select, relQuery.$populate, { prefix: joinRelAlias });\n });\n }\n\n protected selectRelationJoins<E>(\n ctx: QueryContext,\n entity: Type<E>,\n select: QuerySelect<E> | undefined,\n populate: QueryPopulate<E> | undefined,\n opts: { prefix?: string } = {},\n ): void {\n this.forEachJoinableRelation(\n entity,\n select,\n populate,\n opts,\n (relEntity, relQuery, joinRelAlias, relOpts, meta, tableName, required) => {\n const relMeta = getMeta(relEntity);\n const relTableName = this.resolveTableName(relEntity, relMeta);\n const relEntityName = this.escapeId(relTableName);\n const relPath = opts.prefix ? this.escapeId(opts.prefix, true) : this.escapeId(tableName);\n const joinType = required ? 'INNER' : 'LEFT';\n const joinAlias = this.escapeId(joinRelAlias, true);\n\n ctx.append(` ${joinType} JOIN ${relEntityName} ${joinAlias} ON `);\n let refAppended = false;\n for (const it of relOpts.references ?? []) {\n if (refAppended) ctx.append(' AND ');\n const relField = relMeta.fields[it.foreign];\n const field = meta.fields[it.local];\n const foreignColumnName = this.resolveColumnName(it.foreign, relField);\n const localColumnName = this.resolveColumnName(it.local, field);\n ctx.append(`${joinAlias}.${this.escapeId(foreignColumnName)} = ${relPath}.${this.escapeId(localColumnName)}`);\n refAppended = true;\n }\n\n if (relQuery.$where) {\n ctx.append(' AND ');\n this.where(ctx, relEntity, relQuery.$where, { prefix: joinRelAlias, clause: false });\n }\n\n this.selectRelationJoins(ctx, relEntity, relQuery.$select, relQuery.$populate, { prefix: joinRelAlias });\n },\n );\n }\n\n /**\n * Iterates over joinable (11/m1) relations for a given select, resolving shared metadata.\n * Used by both `selectRelationFields` and `selectRelationJoins` to avoid duplicated iteration logic.\n */\n private forEachJoinableRelation<E>(\n entity: Type<E>,\n select: QuerySelect<E> | undefined,\n populate: QueryPopulate<E> | undefined,\n opts: { prefix?: string },\n callback: (\n relEntity: Type<object>,\n relQuery: RelationQuery,\n joinRelAlias: string,\n relOpts: RelationOptions,\n meta: EntityMeta<E>,\n tableName: string,\n required: boolean,\n ) => void,\n ): void {\n if (!select && !populate) return;\n const meta = getMeta(entity);\n const tableName = this.resolveTableName(entity, meta);\n const relKeys = getRelationRequestSummary(meta, populate).joinableKeys;\n const prefix = opts.prefix;\n\n for (const relKey of relKeys) {\n const relOpts = meta.relations[relKey];\n if (!relOpts?.entity) continue;\n\n const isFirstLevel = prefix === tableName;\n const joinRelAlias = isFirstLevel ? relKey : prefix ? `${prefix}.${relKey}` : relKey;\n const relEntity = relOpts.entity();\n const { query: relQuery, required } = parseRelationAtKey<E>(relKey, populate);\n\n callback(relEntity, relQuery, joinRelAlias, relOpts, meta, tableName, required);\n }\n }\n\n where<E>(ctx: QueryContext, entity: Type<E>, where: QueryWhere<E> = {}, opts: QueryWhereOptions = {}): void {\n const meta = getMeta(entity);\n const { usePrecedence, clause = 'WHERE', softDelete } = opts;\n\n where = buildQueryWhereAsMap(meta, where);\n\n if (\n meta.softDelete &&\n (softDelete || softDelete === undefined) &&\n !(where as Record<string, unknown>)[meta.softDelete]\n ) {\n (where as Record<string, unknown>)[meta.softDelete] = null;\n }\n\n const entries = Object.entries(where);\n\n if (!entries.length) {\n return;\n }\n\n if (clause) {\n ctx.append(` ${clause} `);\n }\n\n if (usePrecedence) {\n ctx.append('(');\n }\n\n const whereKeys = getKeys(where) as (keyof QueryWhereMap<E>)[];\n const hasMultipleKeys = whereKeys.length > 1;\n let appended = false;\n whereKeys.forEach((key) => {\n const val = (where as Record<string, unknown>)[key];\n if (val === undefined) return;\n if (appended) {\n ctx.append(' AND ');\n }\n this.compare(ctx, entity, key, val as QueryWhereMap<E>[keyof QueryWhereMap<E>], {\n ...opts,\n usePrecedence: hasMultipleKeys,\n });\n appended = true;\n });\n\n if (usePrecedence) {\n ctx.append(')');\n }\n }\n\n compare<E>(ctx: QueryContext, entity: Type<E>, key: string, val: unknown, opts: QueryComparisonOptions = {}): void {\n const meta = getMeta(entity);\n\n if (val instanceof QueryRaw) {\n if (key === '$exists' || key === '$nexists') {\n ctx.append(key === '$exists' ? 'EXISTS (' : 'NOT EXISTS (');\n const tableName = this.resolveTableName(entity, meta);\n this.getRawValue(ctx, {\n value: val,\n prefix: tableName,\n escapedPrefix: this.escapeId(tableName, false, true),\n });\n ctx.append(')');\n return;\n }\n this.getComparisonKey(ctx, entity, key as FieldKey<E>, opts);\n ctx.append(' = ');\n this.getRawValue(ctx, { value: val });\n return;\n }\n\n if (key === '$text') {\n const search = val as QueryTextSearchOptions<E>;\n const searchFields = search.$fields ?? (getFieldKeys(meta.fields) as FieldKey<E>[]);\n const fields = searchFields.map((fKey) => {\n const field = meta.fields[fKey];\n const columnName = this.resolveColumnName(fKey, field);\n return this.escapeId(columnName);\n });\n ctx.append(`MATCH(${fields.join(', ')}) AGAINST(`);\n ctx.addValue(search.$value);\n ctx.append(')');\n return;\n }\n\n if (key === '$and' || key === '$or' || key === '$not' || key === '$nor') {\n this.compareLogicalOperator(\n ctx,\n entity,\n key as '$and' | '$or' | '$not' | '$nor',\n val as QueryWhereArray<E>,\n opts,\n );\n return;\n }\n\n // Detect JSONB dot-notation: 'column.path' where column is a registered JSON/JSONB field\n const jsonDot = this.resolveJsonDotPath(meta, key, opts.prefix);\n if (jsonDot) {\n this.compareJsonPath(ctx, jsonDot, val);\n return;\n }\n\n if (key.includes('.')) {\n throw new TypeError(`path ${key} does not exist in ${meta.name}`);\n }\n\n // Detect relation filtering\n const rel = meta.relations[key];\n if (rel) {\n // Check if this is a $size query on a relation (count filtering)\n const valObj = val as Record<string, unknown> | undefined;\n if (valObj && typeof valObj === 'object' && '$size' in valObj && Object.keys(valObj).length === 1) {\n this.compareRelationSize(ctx, entity, key, valObj['$size'] as number | QuerySizeComparisonOps, rel, opts);\n return;\n }\n this.compareRelation(ctx, entity, key, val as QueryWhereMap<unknown>, rel, opts);\n return;\n }\n\n const value = this.normalizeWhereValue(val);\n const operators = getKeys(value) as (keyof QueryWhereFieldOperatorMap<E>)[];\n\n if (operators.length > 1) {\n ctx.append('(');\n }\n\n operators.forEach((op, index) => {\n if (index > 0) {\n ctx.append(' AND ');\n }\n this.compareFieldOperator(\n ctx,\n entity,\n key as FieldKey<E>,\n op,\n (value as QueryWhereFieldOperatorMap<E>)[op],\n opts,\n );\n });\n\n if (operators.length > 1) {\n ctx.append(')');\n }\n }\n\n protected compareLogicalOperator<E>(\n ctx: QueryContext,\n entity: Type<E>,\n key: '$and' | '$or' | '$not' | '$nor',\n val: QueryWhereArray<E>,\n opts: QueryComparisonOptions,\n ): void {\n const op = (AbstractSqlDialect.NEGATE_OP_MAP as Record<string, '$and' | '$or'>)[key] ?? (key as '$and' | '$or');\n const negate = key in AbstractSqlDialect.NEGATE_OP_MAP ? 'NOT' : '';\n\n const valArr = val ?? [];\n const hasManyItems = valArr.length > 1;\n\n if ((opts.usePrecedence || negate) && hasManyItems) {\n ctx.append((negate ? negate + ' ' : '') + '(');\n } else if (negate) {\n ctx.append(negate + ' ');\n }\n\n valArr.forEach((whereEntry, index) => {\n if (index > 0) {\n ctx.append(op === '$or' ? ' OR ' : ' AND ');\n }\n if (whereEntry instanceof QueryRaw) {\n this.getRawValue(ctx, {\n value: whereEntry,\n });\n } else if (whereEntry) {\n this.where(ctx, entity, whereEntry, {\n prefix: opts.prefix,\n usePrecedence: hasManyItems && !Array.isArray(whereEntry) && Object.keys(whereEntry as object).length > 1,\n clause: false,\n });\n }\n });\n\n if ((opts.usePrecedence || negate) && hasManyItems) {\n ctx.append(')');\n }\n }\n\n /** Simple comparison operators: `getComparisonKey → op → addValue`. */\n private static readonly NEGATE_OP_MAP = { $not: '$and', $nor: '$or' } as const;\n\n private static readonly COMPARE_OP_MAP: Record<string, string> = {\n $gt: ' > ',\n $gte: ' >= ',\n $lt: ' < ',\n $lte: ' <= ',\n };\n\n private static readonly LIKE_OP_MAP: Record<string, (v: string) => string> = {\n $startsWith: (v) => `${v}%`,\n $istartsWith: (v) => `${v.toLowerCase()}%`,\n $endsWith: (v) => `%${v}`,\n $iendsWith: (v) => `%${v.toLowerCase()}`,\n $includes: (v) => `%${v}%`,\n $iincludes: (v) => `%${v.toLowerCase()}%`,\n $like: (v) => v,\n $ilike: (v) => v.toLowerCase(),\n };\n\n // biome-ignore lint/suspicious/noExplicitAny: method works with any entity type\n protected resolveColumnWithPrefix(entity: Type<any>, key: string, { prefix }: QueryOptions = {}): string {\n const meta = getMeta(entity);\n const field = meta.fields[key as string];\n const columnName = this.resolveColumnName(key, field);\n const escapedPrefix = this.escapeId(prefix as string, true, true);\n return escapedPrefix + this.escapeId(columnName);\n }\n\n /**\n * Resolves the SQL operand for a field comparison.\n * For QueryRaw virtuals, appends the raw expression to ctx and returns undefined.\n */\n protected resolveOperandField(\n ctx: QueryContext,\n // biome-ignore lint/suspicious/noExplicitAny: method works with any entity type\n entity: Type<any>,\n key: string,\n opts: QueryOptions,\n ): string | undefined {\n const col = getMeta(entity).fields[key];\n if (col?.virtual) {\n if (col.virtual instanceof QueryRaw) {\n // biome-ignore lint/suspicious/noExplicitAny: field key type erased at runtime\n this.getComparisonKey(ctx, entity, key as FieldKey<any>, opts);\n return undefined;\n }\n return `(${col.virtual})`;\n }\n return this.resolveColumnWithPrefix(entity, key, opts);\n }\n\n private appendFieldSql(ctx: QueryContext, field: string | undefined, sql: string): void {\n ctx.append(field ? `${field}${sql}` : sql);\n }\n\n compareFieldOperator<E, K extends keyof QueryWhereFieldOperatorMap<E>>(\n ctx: QueryContext,\n entity: Type<E>,\n key: FieldKey<E>,\n op: K,\n val: QueryWhereFieldOperatorMap<E>[K],\n opts: QueryOptions = {},\n ): void {\n const field = this.resolveOperandField(ctx, entity, key as string, opts);\n\n const simpleOp = AbstractSqlDialect.COMPARE_OP_MAP[op as string];\n if (simpleOp) {\n this.appendFieldSql(ctx, field, `${simpleOp}${this.addValue(ctx.values, val)}`);\n return;\n }\n\n const likeWrap = AbstractSqlDialect.LIKE_OP_MAP[op as string];\n if (likeWrap) {\n this.appendLikeOp(ctx, field, op as string, likeWrap(val as string));\n return;\n }\n\n switch (op) {\n case '$eq':\n case '$ne':\n this.appendEqNe(ctx, field, op as string, val);\n break;\n case '$regex':\n this.appendFieldSql(ctx, field, ` ${this.regexpOp} ${this.addValue(ctx.values, val)}`);\n break;\n case '$not':\n ctx.append('NOT (');\n this.compare(ctx, entity, key as keyof QueryWhereMap<E>, val as QueryWhereMap<E>[keyof QueryWhereMap<E>], opts);\n ctx.append(')');\n break;\n case '$in':\n case '$nin':\n this.appendInNin(ctx, field, op as string, val);\n break;\n case '$between': {\n const col = this.resolveColumnWithPrefix(entity, key, opts);\n const [min, max] = val as [unknown, unknown];\n ctx.append(`${col} BETWEEN ${this.addValue(ctx.values, min)} AND ${this.addValue(ctx.values, max)}`);\n break;\n }\n case '$isNull':\n this.appendFieldSql(ctx, field, val ? ' IS NULL' : ' IS NOT NULL');\n break;\n case '$isNotNull':\n this.appendFieldSql(ctx, field, val ? ' IS NOT NULL' : ' IS NULL');\n break;\n case '$all':\n ctx.append(this.jsonAll(ctx, field ?? '', val));\n break;\n case '$size':\n ctx.append(this.jsonSize(ctx, field ?? '', val as number | QuerySizeComparisonOps));\n break;\n case '$elemMatch':\n ctx.append(this.jsonElemMatch(ctx, field ?? '', val as Record<string, unknown>));\n break;\n default:\n throw TypeError(`unknown operator: ${op}`);\n }\n }\n\n private appendLikeOp(ctx: QueryContext, field: string | undefined, op: string, wrappedVal: string): void {\n const isIlike = op.startsWith('$i') || op === '$ilike';\n const ph = this.addValue(ctx.values, wrappedVal);\n if (isIlike && field) {\n ctx.append(this.ilikeExpr(field, ph));\n } else {\n this.appendFieldSql(ctx, field, ` ${this.likeFn} ${ph}`);\n }\n }\n\n private appendEqNe(ctx: QueryContext, field: string | undefined, op: string, val: unknown): void {\n if (val === null) {\n this.appendFieldSql(ctx, field, op === '$eq' ? ' IS NULL' : ' IS NOT NULL');\n return;\n }\n const ph = this.addValue(ctx.values, val);\n if (op === '$eq') {\n this.appendFieldSql(ctx, field, ` = ${ph}`);\n return;\n }\n if (field) {\n ctx.append(this.neExpr(field, ph));\n } else {\n this.appendFieldSql(ctx, field, ` ${this.neOp} ${ph}`);\n }\n }\n\n private appendInNin(ctx: QueryContext, field: string | undefined, op: string, val: unknown): void {\n this.appendFieldSql(ctx, field, this.formatIn(ctx, Array.isArray(val) ? val : [], op === '$nin'));\n }\n\n protected addValues(ctx: QueryContext, vals: unknown[]): void {\n vals.forEach((val, index) => {\n if (index > 0) {\n ctx.append(', ');\n }\n ctx.addValue(val);\n });\n }\n\n /**\n * Build a comparison condition for a JSON field.\n * Used by both `$elemMatch` and dot-notation paths.\n * All dialect-specific behavior comes from overridable methods on `this`.\n */\n protected buildJsonFieldCondition(\n ctx: QueryContext,\n fieldAccessor: (f: string) => string,\n jsonPath: string,\n op: string,\n value: unknown,\n ): string {\n const jsonField = fieldAccessor(jsonPath);\n switch (op) {\n case '$eq':\n return value === null ? `${jsonField} IS NULL` : `${jsonField} = ${this.addValue(ctx.values, value)}`;\n case '$ne':\n if (value === null) return `${jsonField} IS NOT NULL`;\n return this.neExpr(jsonField, this.addValue(ctx.values, value));\n case '$gt':\n return `${this.numericCast(jsonField)} > ${this.addValue(ctx.values, value)}`;\n case '$gte':\n return `${this.numericCast(jsonField)} >= ${this.addValue(ctx.values, value)}`;\n case '$lt':\n return `${this.numericCast(jsonField)} < ${this.addValue(ctx.values, value)}`;\n case '$lte':\n return `${this.numericCast(jsonField)} <= ${this.addValue(ctx.values, value)}`;\n case '$like':\n return `${jsonField} ${this.likeFn} ${this.addValue(ctx.values, value)}`;\n case '$ilike':\n return this.ilikeExpr(jsonField, this.addValue(ctx.values, (value as string).toLowerCase()));\n case '$startsWith':\n return `${jsonField} ${this.likeFn} ${this.addValue(ctx.values, `${value}%`)}`;\n case '$istartsWith':\n return this.ilikeExpr(jsonField, this.addValue(ctx.values, `${(value as string).toLowerCase()}%`));\n case '$endsWith':\n return `${jsonField} ${this.likeFn} ${this.addValue(ctx.values, `%${value}`)}`;\n case '$iendsWith':\n return this.ilikeExpr(jsonField, this.addValue(ctx.values, `%${(value as string).toLowerCase()}`));\n case '$includes':\n return `${jsonField} ${this.likeFn} ${this.addValue(ctx.values, `%${value}%`)}`;\n case '$iincludes':\n return this.ilikeExpr(jsonField, this.addValue(ctx.values, `%${(value as string).toLowerCase()}%`));\n case '$regex':\n return `${jsonField} ${this.regexpOp} ${this.addValue(ctx.values, value)}`;\n case '$in':\n case '$nin':\n return this.jsonInNin(ctx, jsonField, op, value);\n case '$all':\n return this.jsonAll(ctx, jsonField, value);\n case '$size':\n return this.jsonSize(ctx, jsonField, value as number | QuerySizeComparisonOps);\n case '$elemMatch':\n return this.jsonElemMatch(ctx, jsonField, value as Record<string, unknown>);\n default:\n throw TypeError(`unknown operator: ${op}`);\n }\n }\n\n private jsonInNin(ctx: QueryContext, jsonField: string, op: string, value: unknown): string {\n return `${jsonField}${this.formatIn(ctx, Array.isArray(value) ? value : [], op === '$nin')}`;\n }\n\n protected jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string {\n throw TypeError(`$all is not supported in the base SQL dialect - override in dialect subclass`);\n }\n\n protected jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string {\n throw TypeError(`$size is not supported in the base SQL dialect - override in dialect subclass`);\n }\n\n protected jsonElemMatch(ctx: QueryContext, jsonField: string, value: Record<string, unknown>): string {\n throw TypeError(`$elemMatch is not supported in the base SQL dialect - override in dialect subclass`);\n }\n\n protected isJsonbOp(op: string): boolean {\n return op === '$all' || op === '$size' || op === '$elemMatch';\n }\n\n getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }: QueryOptions = {}): void {\n const meta = getMeta(entity);\n const escapedPrefix = this.escapeId(prefix as string, true, true);\n const field = meta.fields[key];\n\n if (field?.virtual) {\n this.getRawValue(ctx, {\n value: field.virtual,\n prefix,\n escapedPrefix,\n });\n return;\n }\n\n const columnName = this.resolveColumnName(key, field);\n ctx.append(escapedPrefix + this.escapeId(columnName));\n }\n\n sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySortMap<E> | undefined, { prefix }: QueryOptions): void {\n const sortMap = buildSortMap(sort);\n if (!hasKeys(sortMap)) {\n return;\n }\n const meta = getMeta(entity);\n\n // Separate vector search entries from direction entries before flattening,\n // because flatObject recursively destructures objects — it would break QueryVectorSearch.\n const vectorEntries: [string, QueryVectorSearch][] = [];\n const directionEntries: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(sortMap)) {\n if (isVectorSearch(val)) {\n vectorEntries.push([key, val]);\n } else {\n directionEntries[key] = val;\n }\n }\n\n const flattenedSort = flatObject(directionEntries, prefix);\n\n // Merge: vector entries first (primary ordering), then flattened direction entries.\n const allEntries: [string, unknown][] = [...vectorEntries, ...Object.entries(flattenedSort)];\n\n if (!allEntries.length) return;\n\n ctx.append(' ORDER BY ');\n\n allEntries.forEach(([key, sort], index) => {\n if (index > 0) {\n ctx.append(', ');\n }\n\n if (isVectorSearch(sort)) {\n if (sort.$project) {\n // Distance already projected in SELECT — reference the alias to avoid recomputation\n ctx.append(this.escapeId(sort.$project));\n } else {\n this.appendVectorSort(ctx, meta, key, sort);\n }\n return;\n }\n\n const direction = AbstractSqlDialect.SORT_DIRECTION_MAP[sort as QuerySortDirection];\n\n // Detect JSONB dot-notation: 'column.path'\n const jsonDot = this.resolveJsonDotPath(meta, key);\n if (jsonDot) {\n ctx.append(jsonDot.accessor() + direction);\n return;\n }\n\n const field = meta.fields[key as Key<E>];\n const name = this.resolveColumnName(key, field);\n ctx.append(this.escapeId(name) + direction);\n });\n }\n\n /**\n * Resolve common parameters for a vector similarity ORDER BY expression.\n * Shared by all dialect overrides of `appendVectorSort`.\n */\n protected resolveVectorSortParams<E>(\n meta: EntityMeta<E>,\n key: string,\n search: QueryVectorSearch,\n ): { colName: string; distance: VectorDistance; field: FieldOptions | undefined; vectorCast: VectorCast } {\n const field = meta.fields[key as FieldKey<E>];\n const colName = this.resolveColumnName(key, field);\n const distance = search.$distance ?? field?.distance ?? 'cosine';\n const vectorCast = resolveVectorCast(field);\n return { colName, distance, field, vectorCast };\n }\n\n /**\n * Mapping of UQL vector distance metrics to native SQL functions.\n * Override in dialects that use function-call syntax (e.g. SQLite, MariaDB).\n * Dialects with operator-based syntax (e.g. Postgres) leave this empty and override `appendVectorSort` directly.\n */\n protected readonly vectorDistanceFns: Partial<Record<VectorDistance, string>> = {};\n\n /**\n * Append a vector similarity function call: `fn(col, ?)`.\n * Used by dialects that express vector distance via SQL functions (SQLite, MariaDB).\n */\n protected appendFunctionVectorSort<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n key: string,\n search: QueryVectorSearch,\n dialectName: string,\n ): void {\n const { colName, distance, vectorCast } = this.resolveVectorSortParams(meta, key, search);\n const fn = this.vectorDistanceFns[distance];\n\n if (!fn) {\n throw Error(`${dialectName} does not support vector distance metric: ${distance}`);\n }\n\n ctx.append(`${fn}(${this.escapeId(colName)}, `);\n ctx.addValue(`[${search.$vector.join(',')}]`);\n if (vectorCast && dialectName === 'PostgreSQL') {\n ctx.append(`::${vectorCast}`);\n }\n ctx.append(')');\n }\n\n /**\n * Append a vector distance projection.\n */\n protected appendVectorProjection<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n key: string,\n search: QueryVectorSearch,\n ): void {\n this.appendVectorSort(ctx, meta, key, search);\n ctx.append(` AS ${this.escapeId(search.$project as string)}`);\n }\n\n /**\n * Append a vector similarity ORDER BY expression.\n * Default: auto-delegates to `appendFunctionVectorSort` when `vectorDistanceFns` has entries.\n * Override for operator-based syntax (e.g. PostgreSQL `<=>`, `<->` operators).\n */\n protected appendVectorSort<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void {\n if (hasKeys(this.vectorDistanceFns)) {\n this.appendFunctionVectorSort(ctx, meta, key, search, this.dialectName);\n return;\n }\n throw new TypeError('Vector similarity sort is not supported by this dialect. Use raw() for vector queries.');\n }\n\n pager(ctx: QueryContext, opts: QueryPager): void {\n if (opts.$limit) {\n ctx.append(` LIMIT ${Number(opts.$limit)}`);\n }\n if (opts.$skip !== undefined) {\n ctx.append(` OFFSET ${Number(opts.$skip)}`);\n }\n }\n\n count<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void {\n const search: Query<E> = { ...q };\n delete search.$sort;\n this.select<E>(ctx, entity, [raw('COUNT(*)', 'count')]);\n this.search(ctx, entity, search, opts);\n }\n\n aggregate<E>(ctx: QueryContext, entity: Type<E>, q: QueryAggregate<E>, opts: QueryOptions = {}): void {\n const meta = getMeta(entity);\n const tableName = this.resolveTableName(entity, meta);\n const groupKeys: string[] = [];\n const selectParts: string[] = [];\n const aggregateExpressions: Record<string, string> = {};\n\n for (const entry of parseGroupMap(q.$group)) {\n if (entry.kind === 'key') {\n const field = meta.fields[entry.alias as FieldKey<E>];\n const columnName = this.resolveColumnName(entry.alias, field);\n const escaped = this.escapeId(columnName);\n groupKeys.push(escaped);\n selectParts.push(columnName !== entry.alias ? `${escaped} ${this.escapeId(entry.alias)}` : escaped);\n } else {\n const sqlFn = entry.op.slice(1).toUpperCase();\n const sqlArg =\n entry.fieldRef === '*'\n ? '*'\n : this.escapeId(this.resolveColumnName(entry.fieldRef, meta.fields[entry.fieldRef as FieldKey<E>]));\n const expr = `${sqlFn}(${sqlArg})`;\n aggregateExpressions[entry.alias] = expr;\n selectParts.push(`${expr} ${this.escapeId(entry.alias)}`);\n }\n }\n\n ctx.append(`SELECT ${selectParts.join(', ')} FROM ${this.escapeId(tableName)}`);\n this.where<E>(ctx, entity, q.$where, opts);\n\n if (groupKeys.length) {\n ctx.append(` GROUP BY ${groupKeys.join(', ')}`);\n }\n\n if (q.$having) {\n this.having(ctx, q.$having, aggregateExpressions);\n }\n\n this.aggregateSort(ctx, q.$sort, aggregateExpressions);\n this.pager(ctx, q);\n }\n\n /**\n * ORDER BY for aggregate queries — handles both entity-field and alias references.\n */\n private aggregateSort(\n ctx: QueryContext,\n sort: QuerySortMap<object> | undefined,\n aggregateExpressions: Record<string, string>,\n ): void {\n const sortMap = buildSortMap(sort);\n if (!hasKeys(sortMap)) return;\n\n ctx.append(' ORDER BY ');\n Object.entries(sortMap).forEach(([key, dir], index) => {\n if (index > 0) ctx.append(', ');\n const direction = AbstractSqlDialect.SORT_DIRECTION_MAP[dir as QuerySortDirection];\n const ref = aggregateExpressions[key] ?? this.escapeId(key);\n ctx.append(ref + direction);\n });\n }\n\n protected having(ctx: QueryContext, having: QueryHavingMap, aggregateExpressions: Record<string, string>): void {\n const entries = Object.entries(having).filter(([, v]) => v !== undefined);\n if (!entries.length) return;\n\n ctx.append(' HAVING ');\n entries.forEach(([alias, condition], index) => {\n if (index > 0) ctx.append(' AND ');\n const expr = aggregateExpressions[alias] ?? this.escapeId(alias);\n this.havingCondition(ctx, expr, condition);\n });\n }\n\n private static readonly SORT_DIRECTION_MAP: Record<string | number, string> = Object.assign(\n { 1: '', asc: '', desc: ' DESC', '-1': ' DESC' },\n { [-1]: ' DESC' },\n );\n\n private static readonly havingOpMap: Record<string, string> = {\n $eq: '=',\n $ne: '<>',\n $gt: '>',\n $gte: '>=',\n $lt: '<',\n $lte: '<=',\n };\n\n protected havingCondition(ctx: QueryContext, expr: string, condition: QueryHavingMap[string]): void {\n if (typeof condition !== 'object' || condition === null) {\n ctx.append(`${expr} = `);\n ctx.addValue(condition);\n return;\n }\n const ops = condition as QueryWhereFieldOperatorMap<number>;\n const keys = getKeys(ops);\n keys.forEach((op, i) => {\n if (i > 0) ctx.append(' AND ');\n const val = ops[op];\n if (op === '$between') {\n const [min, max] = val as [number, number];\n ctx.append(`${expr} BETWEEN `);\n ctx.addValue(min);\n ctx.append(' AND ');\n ctx.addValue(max);\n } else if (op === '$in' || op === '$nin') {\n ctx.append(`${expr}${this.formatIn(ctx, Array.isArray(val) ? (val as unknown[]) : [], op === '$nin')}`);\n } else if (op === '$isNull') {\n ctx.append(`${expr}${val ? ' IS NULL' : ' IS NOT NULL'}`);\n } else if (op === '$isNotNull') {\n ctx.append(`${expr}${val ? ' IS NOT NULL' : ' IS NULL'}`);\n } else if (op === '$ne') {\n ctx.append(this.neExpr(expr, this.addValue(ctx.values, val)));\n } else {\n const sqlOp = AbstractSqlDialect.havingOpMap[op];\n if (!sqlOp) throw TypeError(`unsupported HAVING operator: ${op}`);\n ctx.append(`${expr} ${sqlOp} `);\n ctx.addValue(val);\n }\n });\n }\n\n find<E>(ctx: QueryContext, entity: Type<E>, q: Query<E> = {}, opts?: QueryOptions): void {\n this.select(ctx, entity, q.$select, q.$exclude, q.$populate, opts, q.$distinct, q.$sort);\n this.search(ctx, entity, q, opts);\n }\n\n insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void {\n const meta = getMeta(entity);\n const payloads = fillOnFields(meta, payload, 'onInsert');\n const keys = filterFieldKeys(meta, payloads[0], 'onInsert');\n\n const columns = keys.map((key) => {\n const field = meta.fields[key];\n return this.escapeId(this.resolveColumnName(key, field));\n });\n const tableName = this.resolveTableName(entity, meta);\n ctx.append(`INSERT INTO ${this.escapeId(tableName)} (${columns.join(', ')}) VALUES (`);\n\n payloads.forEach((it, recordIndex) => {\n if (recordIndex > 0) {\n ctx.append('), (');\n }\n keys.forEach((key, keyIndex) => {\n if (keyIndex > 0) {\n ctx.append(', ');\n }\n const field = meta.fields[key];\n this.formatPersistableValue(ctx, field, it[key]);\n });\n });\n ctx.append(')');\n }\n\n update<E>(\n ctx: QueryContext,\n entity: Type<E>,\n q: QuerySearch<E>,\n payload: UpdatePayload<E>,\n opts?: QueryOptions,\n ): void {\n const meta = getMeta(entity);\n const [filledPayload] = fillOnFields(meta, payload as E, 'onUpdate');\n const keys = filterFieldKeys(meta, filledPayload, 'onUpdate');\n\n const tableName = this.resolveTableName(entity, meta);\n ctx.append(`UPDATE ${this.escapeId(tableName)} SET `);\n keys.forEach((key, index) => {\n if (index > 0) {\n ctx.append(', ');\n }\n const field = meta.fields[key];\n const columnName = this.resolveColumnName(key, field);\n const escapedCol = this.escapeId(columnName);\n const value = filledPayload[key];\n\n if (this.isJsonUpdateOp(value)) {\n this.formatJsonUpdate<E>(ctx, escapedCol, value);\n } else {\n ctx.append(`${escapedCol} = `);\n this.formatPersistableValue(ctx, field, value);\n }\n });\n\n this.search(ctx, entity, q, opts);\n }\n\n upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void {\n const meta = getMeta(entity);\n const updateCtx = this.createContext();\n const update = this.getUpsertUpdateAssignments(\n updateCtx,\n meta,\n conflictPaths,\n payload,\n (name) => `VALUES(${name})`,\n );\n\n if (update) {\n this.insert(ctx, entity, payload);\n ctx.append(` ON DUPLICATE KEY UPDATE ${update}`);\n ctx.pushValue(...updateCtx.values);\n } else {\n const insertCtx = this.createContext();\n this.insert(insertCtx, entity, payload);\n ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));\n ctx.pushValue(...insertCtx.values);\n }\n }\n\n protected getUpsertUpdateAssignments<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n conflictPaths: QueryConflictPaths<E>,\n payload: E | E[],\n callback?: (columnName: string) => string,\n ): string {\n const sample = Array.isArray(payload) ? payload[0] : payload;\n const cloned = { ...sample };\n const [filledPayload] = fillOnFields(meta, cloned, 'onUpdate');\n const fields = filterFieldKeys(meta, filledPayload, 'onUpdate');\n return fields\n .filter((col) => !conflictPaths[col])\n .map((col) => {\n const field = meta.fields[col];\n const columnName = this.resolveColumnName(col, field);\n if (callback && Object.hasOwn(sample as object, col)) {\n return `${this.escapeId(columnName)} = ${callback(this.escapeId(columnName))}`;\n }\n const valCtx = this.createContext();\n this.formatPersistableValue(valCtx, field, filledPayload[col]);\n ctx.pushValue(...valCtx.values);\n return `${this.escapeId(columnName)} = ${valCtx.sql}`;\n })\n .join(', ');\n }\n\n /**\n * Shared ON CONFLICT ... DO UPDATE / DO NOTHING logic for positional-placeholder dialects (SQLite).\n * Uses a deferred context for update params so they follow INSERT params.\n * PG uses its own implementation since `$N` numbered placeholders handle param ordering natively.\n */\n protected onConflictUpsert<E>(\n ctx: QueryContext,\n entity: Type<E>,\n conflictPaths: QueryConflictPaths<E>,\n payload: E | E[],\n insertFn: (ctx: QueryContext, entity: Type<E>, payload: E | E[]) => void,\n ): void {\n const meta = getMeta(entity);\n const updateCtx = this.createContext();\n const update = this.getUpsertUpdateAssignments(\n updateCtx,\n meta,\n conflictPaths,\n payload,\n (name) => `EXCLUDED.${name}`,\n );\n const keysStr = this.getUpsertConflictPathsStr(meta, conflictPaths);\n const onConflict = update ? `DO UPDATE SET ${update}` : 'DO NOTHING';\n insertFn(ctx, entity, payload);\n ctx.append(` ON CONFLICT (${keysStr}) ${onConflict}`);\n ctx.pushValue(...updateCtx.values);\n }\n\n protected getUpsertConflictPathsStr<E>(meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>): string {\n return (getKeys(conflictPaths) as Key<E>[])\n .map((key) => {\n const field = meta.fields[key];\n const columnName = this.resolveColumnName(key, field);\n return this.escapeId(columnName);\n })\n .join(', ');\n }\n\n delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts: QueryOptions = {}): void {\n const meta = getMeta(entity);\n const tableName = this.resolveTableName(entity, meta);\n\n if (opts.softDelete || opts.softDelete === undefined) {\n if (meta.softDelete) {\n const field = meta.fields[meta.softDelete];\n if (!field?.onDelete) return;\n const value = getFieldCallbackValue(field.onDelete);\n const columnName = this.resolveColumnName(meta.softDelete, field);\n ctx.append(`UPDATE ${this.escapeId(tableName)} SET ${this.escapeId(columnName)} = `);\n ctx.addValue(value);\n this.search(ctx, entity, q, opts);\n return;\n }\n if (opts.softDelete) {\n throw TypeError(`'${tableName}' has not enabled 'softDelete'`);\n }\n }\n\n ctx.append(`DELETE FROM ${this.escapeId(tableName)}`);\n this.search(ctx, entity, q, opts);\n }\n\n escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string {\n return escapeSqlId(val, this.escapeIdChar, forbidQualified, addDot);\n }\n\n protected getPersistables<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n payload: E | E[],\n callbackKey: CallbackKey,\n ): Record<string, unknown>[] {\n const payloads = fillOnFields(meta, payload, callbackKey);\n return payloads.map((it) => this.getPersistable(ctx, meta, it, callbackKey));\n }\n\n protected getPersistable<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n payload: E,\n callbackKey: CallbackKey,\n ): Record<string, unknown> {\n const filledPayload = fillOnFields(meta, payload, callbackKey)[0];\n const keys = filterFieldKeys(meta, filledPayload, callbackKey);\n return keys.reduce(\n (acc, key) => {\n const field = meta.fields[key];\n const valCtx = this.createContext();\n this.formatPersistableValue(valCtx, field, filledPayload[key]);\n ctx.pushValue(...valCtx.values);\n acc[key] = valCtx.sql;\n return acc;\n },\n {} as Record<string, unknown>,\n );\n }\n\n protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions | undefined, value: unknown): void {\n if (value instanceof QueryRaw) {\n this.getRawValue(ctx, { value });\n return;\n }\n if (isJsonType(field?.type)) {\n ctx.addValue(value == null ? null : JSON.stringify(value));\n return;\n }\n if (field?.type === 'vector' && Array.isArray(value)) {\n ctx.addValue(`[${value.join(',')}]`);\n return;\n }\n ctx.addValue(value);\n }\n\n /**\n * Generate SQL for a JSONB merge and/or unset operation.\n * Called from `update()` when a field value has `$merge`, `$unset`, and/or `$push` operators.\n * Generates the full `\"col\" = <expression>` assignment.\n *\n * Base implementation uses MySQL-compatible syntax with *shallow* merge semantics\n * (RHS top-level keys replace LHS top-level keys, matching PostgreSQL's `jsonb || jsonb`).\n * Override in dialect subclasses when a dialect needs different JSON function semantics.\n */\n protected getJsonCastExpr(): string {\n return 'CAST(? AS JSON)';\n }\n\n protected formatJsonUpdate<E>(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp<E>): void {\n let expr = escapedCol;\n if (hasKeys(value.$merge)) {\n const merge = value.$merge as Record<string, unknown>;\n expr = `JSON_SET(COALESCE(${escapedCol}, '{}')`;\n for (const [key, v] of Object.entries(merge)) {\n expr += `, '$.${this.escapeJsonKey(key)}', ${this.getJsonCastExpr()}`;\n ctx.pushValue(JSON.stringify(v));\n }\n expr += ')';\n }\n if (hasKeys(value.$push)) {\n const push = value.$push as Record<string, unknown>;\n expr = `JSON_ARRAY_APPEND(${expr}`;\n for (const [key, v] of Object.entries(push)) {\n expr += `, '$.${this.escapeJsonKey(key)}', ${this.getJsonCastExpr()}`;\n ctx.pushValue(JSON.stringify(v));\n }\n expr += ')';\n }\n if (value.$unset?.length) {\n for (const key of value.$unset) {\n expr = `JSON_REMOVE(${expr}, '$.${this.escapeJsonKey(key)}')`;\n }\n }\n ctx.append(`${escapedCol} = ${expr}`);\n }\n\n protected isJsonUpdateOp(value: unknown): value is JsonUpdateOp {\n return typeof value === 'object' && value !== null && ('$merge' in value || '$unset' in value || '$push' in value);\n }\n\n /** Escapes a JSON key for safe interpolation into SQL string literals. */\n protected escapeJsonKey(key: string): string {\n return key.replace(/'/g, \"''\");\n }\n\n getRawValue(ctx: QueryContext, opts: QueryRawFnOptions & { value: QueryRaw; autoPrefixAlias?: boolean }) {\n const { value, prefix = '', escapedPrefix, autoPrefixAlias } = opts;\n const rawValue = value[RAW_VALUE];\n if (typeof rawValue === 'function') {\n const res = rawValue({\n ...opts,\n ctx,\n dialect: this,\n prefix,\n escapedPrefix: escapedPrefix ?? this.escapeId(prefix, true, true),\n });\n if (typeof res === 'string' || (typeof res === 'number' && !Number.isNaN(res))) {\n ctx.append(String(res));\n }\n } else {\n ctx.append(prefix + String(rawValue));\n }\n const alias = value[RAW_ALIAS];\n if (alias) {\n const fullAlias = autoPrefixAlias && prefix ? `${prefix}.${alias}` : alias;\n ctx.append(' ' + this.escapeId(fullAlias, true));\n }\n }\n\n /**\n * Resolves a dot-notation key to its JSON field metadata.\n * Shared by `where()` and `sort()` to detect 'column.path' keys where 'column' is a JSON/JSONB field.\n *\n * @returns resolved metadata or `undefined` if the key is not a JSON dot-notation path\n */\n protected resolveJsonDotPath<E>(\n meta: EntityMeta<E>,\n key: string,\n prefix?: string,\n ):\n | {\n root: string;\n jsonPath: string;\n accessor: (asJsonb?: boolean) => string;\n }\n | undefined {\n const dotIndex = key.indexOf('.');\n if (dotIndex <= 0) {\n return undefined;\n }\n const root = key.slice(0, dotIndex);\n const field = meta.fields[root as FieldKey<E>];\n if (!field || !isJsonType(field.type)) {\n return undefined;\n }\n const jsonPath = key.slice(dotIndex + 1);\n const colName = this.resolveColumnName(root, field);\n const escapedCol = (prefix ? this.escapeId(prefix, true, true) : '') + this.escapeId(colName);\n return {\n root,\n jsonPath,\n accessor: (asJsonb?: boolean) =>\n asJsonb ? this.getJsonPathJsonbExpr(escapedCol, jsonPath) : this.getJsonPathScalarExpr(escapedCol, jsonPath),\n };\n }\n\n /**\n * Compare a JSONB dot-notation path, e.g. `'settings.isArchived': { $ne: true }`.\n * Receives a pre-resolved `resolveJsonDotPath` result to avoid redundant computation.\n */\n protected compareJsonPath(\n ctx: QueryContext,\n resolved: {\n jsonPath: string;\n accessor: (asJsonb?: boolean) => string;\n },\n val: unknown,\n ): void {\n const { jsonPath, accessor } = resolved;\n const value = this.normalizeWhereValue(val);\n const operators = getKeys(value);\n\n if (operators.length > 1) {\n ctx.append('(');\n }\n\n operators.forEach((op, index) => {\n if (index > 0) ctx.append(' AND ');\n const sql = this.buildJsonFieldCondition(ctx, (f) => accessor(this.isJsonbOp(op)), jsonPath, op, value[op]);\n if (sql) {\n ctx.append(sql);\n }\n });\n\n if (operators.length > 1) {\n ctx.append(')');\n }\n }\n\n /**\n * Returns SQL that extracts a scalar value from a JSON path.\n * Dialects can override this to customize path access syntax while preserving\n * the shared comparison/operator pipeline.\n */\n protected getJsonPathScalarExpr(escapedColumn: string, jsonPath: string): string {\n const segments = jsonPath.split('.');\n let expr = escapedColumn;\n for (let i = 0; i < segments.length; i++) {\n const op = i === segments.length - 1 ? '->>' : '->';\n expr = `(${expr}${op}'${this.escapeJsonKey(segments[i])}')`;\n }\n return expr;\n }\n\n protected getJsonPathJsonbExpr(escapedColumn: string, jsonPath: string): string {\n const segments = jsonPath.split('.');\n let expr = escapedColumn;\n for (const segment of segments) {\n expr = `(${expr}->'${this.escapeJsonKey(segment)}')`;\n }\n return expr;\n }\n\n /**\n * Normalizes a raw WHERE value into an operator map.\n * Arrays become `$in`, scalars/null become `$eq`, objects pass through.\n */\n private normalizeWhereValue(val: unknown): Record<string, unknown> {\n if (Array.isArray(val)) return { $in: val };\n if (typeof val === 'object' && val !== null) return val as Record<string, unknown>;\n return { $eq: val };\n }\n\n /**\n * Filter by relation using an EXISTS subquery.\n * Supports all cardinalities: mm (via junction), 1m, m1, and 11.\n */\n protected compareRelation<E>(\n ctx: QueryContext,\n entity: Type<E>,\n key: string,\n val: QueryWhereMap<unknown>,\n rel: RelationOptions,\n opts: QueryComparisonOptions,\n ): void {\n const meta = getMeta(entity);\n const parentTable = this.resolveTableName(entity, meta);\n const parentId = meta.id;\n const escapedParentId =\n (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +\n this.escapeId(parentId);\n\n if (!rel.references?.length) {\n throw new TypeError(`Relation '${key}' on '${parentTable}' has no references defined`);\n }\n\n const relatedEntity = rel.entity!();\n const relatedMeta = getMeta(relatedEntity);\n const relatedTable = this.resolveTableName(relatedEntity, relatedMeta);\n\n ctx.append('EXISTS (SELECT 1 FROM ');\n\n if (rel.cardinality === 'mm' && rel.through) {\n // ManyToMany: EXISTS (SELECT 1 FROM JunctionTable WHERE junction.localFk = parent.id AND junction.foreignFk IN (SELECT related.id FROM Related WHERE ...))\n const throughEntity = rel.through();\n const throughMeta = getMeta(throughEntity);\n const throughTable = this.resolveTableName(throughEntity, throughMeta);\n const localFk = rel.references[0].local;\n const foreignFk = rel.references[1].local;\n const relatedId = relatedMeta.id;\n\n ctx.append(this.escapeId(throughTable));\n ctx.append(` WHERE ${this.escapeId(throughTable, false, true)}${this.escapeId(localFk)} = ${escapedParentId}`);\n ctx.append(` AND ${this.escapeId(throughTable, false, true)}${this.escapeId(foreignFk)} IN (`);\n ctx.append(\n `SELECT ${this.escapeId(relatedTable, false, true)}${this.escapeId(relatedId)} FROM ${this.escapeId(relatedTable)}`,\n );\n this.where(ctx, relatedEntity, val as QueryWhere<typeof relatedEntity>, {\n prefix: relatedTable,\n clause: 'WHERE',\n softDelete: false,\n });\n ctx.append(')');\n } else {\n // 1m / m1 / 11: EXISTS (SELECT 1 FROM Related WHERE related.fk_or_pk = parent.pk_or_fk AND ...)\n // Left side is always relatedTable.references[0].foreign\n // Right side is the parent's PK (1m) or the parent's FK (m1/11)\n const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(rel.references[0].foreign)}`;\n const joinRight =\n rel.cardinality === '1m'\n ? escapedParentId\n : (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +\n this.escapeId(rel.references[0].local);\n\n ctx.append(this.escapeId(relatedTable));\n ctx.append(` WHERE ${joinLeft} = ${joinRight}`);\n this.where(ctx, relatedEntity, val as QueryWhere<typeof relatedEntity>, {\n prefix: relatedTable,\n clause: 'AND',\n softDelete: false,\n });\n }\n\n ctx.append(')');\n }\n\n /**\n * Filter by relation size using a `COUNT(*)` subquery.\n * Supports all cardinalities: mm (via junction), 1m.\n */\n protected compareRelationSize<E>(\n ctx: QueryContext,\n entity: Type<E>,\n key: string,\n sizeVal: number | QuerySizeComparisonOps,\n rel: RelationOptions,\n opts: QueryComparisonOptions,\n ): void {\n const meta = getMeta(entity);\n const parentTable = this.resolveTableName(entity, meta);\n const parentId = meta.id;\n const escapedParentId =\n (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +\n this.escapeId(parentId);\n\n if (!rel.references?.length) {\n throw new TypeError(`Relation '${key}' on '${parentTable}' has no references defined`);\n }\n\n const appendSubquery = () => {\n ctx.append('(SELECT COUNT(*) FROM ');\n\n if (rel.cardinality === 'mm' && rel.through) {\n const throughEntity = rel.through();\n const throughMeta = getMeta(throughEntity);\n const throughTable = this.resolveTableName(throughEntity, throughMeta);\n const localFk = rel.references![0].local;\n\n ctx.append(this.escapeId(throughTable));\n ctx.append(` WHERE ${this.escapeId(throughTable, false, true)}${this.escapeId(localFk)} = ${escapedParentId}`);\n } else {\n const relatedEntity = rel.entity!();\n const relatedMeta = getMeta(relatedEntity);\n const relatedTable = this.resolveTableName(relatedEntity, relatedMeta);\n const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(rel.references![0].foreign)}`;\n\n ctx.append(this.escapeId(relatedTable));\n ctx.append(` WHERE ${joinLeft} = ${escapedParentId}`);\n }\n\n ctx.append(')');\n };\n\n this.buildSizeComparison(ctx, appendSubquery, sizeVal);\n }\n\n /**\n * Build a complete `$size` comparison expression.\n * Handles both single and multiple comparison operators by repeating the size expression.\n * @param sizeExprFn - function that appends the size expression to ctx (e.g. `jsonb_array_length(\"col\")`)\n */\n protected buildSizeComparison(\n ctx: QueryContext,\n sizeExprFn: () => void,\n sizeVal: number | QuerySizeComparisonOps,\n ): void {\n if (typeof sizeVal === 'number') {\n sizeExprFn();\n ctx.append(' = ');\n ctx.addValue(sizeVal);\n return;\n }\n\n const entries = Object.entries(sizeVal).filter(([, v]) => v !== undefined);\n\n if (entries.length > 1) {\n ctx.append('(');\n }\n\n entries.forEach(([op, val], index) => {\n if (index > 0) {\n ctx.append(' AND ');\n }\n sizeExprFn();\n this.appendSizeOp(ctx, op, val);\n });\n\n if (entries.length > 1) {\n ctx.append(')');\n }\n }\n\n /**\n * Append a single size comparison operator and value to the context.\n */\n private appendSizeOp(ctx: QueryContext, op: string, val: unknown): void {\n switch (op) {\n case '$eq':\n ctx.append(' = ');\n ctx.addValue(val);\n break;\n case '$ne':\n ctx.append(' <> ');\n ctx.addValue(val);\n break;\n case '$gt':\n ctx.append(' > ');\n ctx.addValue(val);\n break;\n case '$gte':\n ctx.append(' >= ');\n ctx.addValue(val);\n break;\n case '$lt':\n ctx.append(' < ');\n ctx.addValue(val);\n break;\n case '$lte':\n ctx.append(' <= ');\n ctx.addValue(val);\n break;\n case '$between': {\n const [min, max] = val as [number, number];\n ctx.append(' BETWEEN ');\n ctx.addValue(min);\n ctx.append(' AND ');\n ctx.addValue(max);\n break;\n }\n default:\n throw TypeError(`unsupported $size comparison operator: ${op}`);\n }\n }\n\n abstract escape(value: unknown): string;\n\n protected get regexpOp(): string {\n return 'REGEXP';\n }\n\n protected get likeFn(): string {\n return 'LIKE';\n }\n\n /**\n * Not-equal operator token for non-null comparisons.\n * Postgres uses `IS DISTINCT FROM`; MySQL/Maria uses custom `neExpr`.\n */\n protected get neOp(): string {\n return '<>';\n }\n\n protected neExpr(field: string, ph: string): string {\n return `${field} ${this.neOp} ${ph}`;\n }\n\n protected ilikeExpr(f: string, ph: string): string {\n return `LOWER(${f}) LIKE ${ph}`;\n }\n\n /**\n * Formats an IN/NOT IN expression, binding each value individually.\n * Postgres overrides to use `= ANY($1)` / `<> ALL($1)` with a single array parameter.\n */\n protected formatIn(ctx: QueryContext, values: unknown[], negate: boolean): string {\n if (values.length === 0) return negate ? ' NOT IN (NULL)' : ' IN (NULL)';\n const phs = values.map((v) => this.addValue(ctx.values, v)).join(', ');\n return ` ${negate ? 'NOT IN' : 'IN'} (${phs})`;\n }\n\n protected numericCast(expr: string): string {\n return expr;\n }\n\n override toString(): string {\n return this.dialectName;\n }\n}\n","/**\n * Shared `$elemMatch` object expansion logic:\n * - for each field:\n * - if the value is an operator-object (object, non-array), expand each operator\n * - otherwise treat it as plain equality\n *\n * Dialects decide the actual SQL produced via the callbacks.\n */\nexport function buildElemMatchConditions(\n match: Record<string, unknown>,\n onOperator: (field: string, op: string, opVal: unknown) => string,\n onEq: (field: string, value: unknown) => string,\n): string[] {\n const conditions: string[] = [];\n\n for (const [field, value] of Object.entries(match)) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const ops = value as Record<string, unknown>;\n for (const [op, opVal] of Object.entries(ops)) {\n conditions.push(onOperator(field, op, opVal));\n }\n } else {\n conditions.push(onEq(field, value));\n }\n }\n\n return conditions;\n}\n","/**\n * ANSI-style SQL **string literal** escaping (single-quote doubling) for Postgres, SQLite, and\n * related dialects. Distinct from MySQL backslash escaping (`mysqlLikeSqlDialect` / npm `sqlstring`).\n *\n * **Security**\n * - Prefer **bound parameters** (`?`, `$1`, …) for all user-controlled values; this helper is for\n * the rare inline-literal path (`Dialect.escape`).\n * - Values with `toSqlString()` are emitted **raw** (escape hatch); never attach that method to\n * untrusted input.\n * - Plain objects are rejected so we never emit ambiguous or dialect-wrong `key = val` fragments.\n *\n * PostgreSQL **array** literals (`{...}` with double-quoted elements and their own escape rules)\n * are separate from this helper; see {@link PostgresDialect} (array text format when\n * `nativeArrays` is false) — do not “unify” that path with this function.\n */\n\nconst SINGLE_QUOTE = /'/g;\n\nfunction escapeStringLiteral(val: string): string {\n return `'${val.replace(SINGLE_QUOTE, \"''\")}'`;\n}\n\nfunction zeroPad(n: number, len: number): string {\n let s = String(n);\n while (s.length < len) s = `0${s}`;\n return s;\n}\n\n/** `YYYY-MM-DD HH:mm:ss.mmm` in local time, wrapped as a quoted literal. */\nfunction dateToLocalSqlLiteral(date: Date): string {\n const y = date.getFullYear();\n const mo = date.getMonth() + 1;\n const d = date.getDate();\n const h = date.getHours();\n const mi = date.getMinutes();\n const s = date.getSeconds();\n const ms = date.getMilliseconds();\n const inner = `${zeroPad(y, 4)}-${zeroPad(mo, 2)}-${zeroPad(d, 2)} ${zeroPad(h, 2)}:${zeroPad(mi, 2)}:${zeroPad(s, 2)}.${zeroPad(ms, 3)}`;\n return escapeStringLiteral(inner);\n}\n\nfunction isByteSource(val: object): val is Uint8Array {\n return (typeof Buffer !== 'undefined' && Buffer.isBuffer(val)) || val instanceof Uint8Array;\n}\n\nfunction bytesToHexLiteral(buf: Uint8Array): string {\n let hex = '';\n for (let i = 0; i < buf.length; i++) {\n hex += buf[i].toString(16).padStart(2, '0');\n }\n return `X'${hex}'`;\n}\n\nfunction arrayToSqlList(arr: unknown[]): string {\n let sql = '';\n for (let i = 0; i < arr.length; i++) {\n const val = arr[i];\n if (Array.isArray(val)) {\n sql += `${i === 0 ? '' : ', '}(${arrayToSqlList(val)})`;\n } else {\n sql += `${i === 0 ? '' : ', '}${escapeAnsiSqlLiteral(val)}`;\n }\n }\n return sql;\n}\n\n/**\n * Escape `value` as an SQL literal (or `NULL`). Throws on unsupported types so callers cannot\n * accidentally stringify attacker-controlled objects into SQL.\n */\nexport function escapeAnsiSqlLiteral(value: unknown): string {\n if (value === undefined || value === null) {\n return 'NULL';\n }\n\n switch (typeof value) {\n case 'boolean':\n return value ? 'true' : 'false';\n case 'number':\n return Number.isFinite(value) ? String(value) : 'NULL';\n case 'bigint':\n return String(value);\n case 'string':\n return escapeStringLiteral(value);\n case 'symbol':\n case 'function':\n throw new TypeError('escapeAnsiSqlLiteral: symbol and function values are not supported; use bound parameters.');\n case 'object': {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? 'NULL' : dateToLocalSqlLiteral(value);\n }\n if (Array.isArray(value)) {\n return arrayToSqlList(value);\n }\n if (isByteSource(value)) {\n return bytesToHexLiteral(value);\n }\n if ('toSqlString' in value && typeof (value as { toSqlString?: unknown }).toSqlString === 'function') {\n return String((value as { toSqlString: () => unknown }).toSqlString());\n }\n throw new TypeError(\n 'escapeAnsiSqlLiteral: plain objects are not supported; use bound parameters or JSON.stringify + a string column.',\n );\n }\n default:\n // Defensive: all current `typeof` results are handled above.\n return escapeStringLiteral(String(value));\n }\n}\n","import type { DialectOptions } from '../dialect/abstractDialect.js';\nimport { AbstractSqlDialect } from '../dialect/abstractSqlDialect.js';\nimport { buildElemMatchConditions } from '../dialect/jsonArrayElemMatchUtils.js';\nimport { getMeta } from '../entity/index.js';\nimport type {\n DialectFeatures,\n FieldKey,\n JsonUpdateOp,\n QueryComparisonOptions,\n QueryConflictPaths,\n QueryContext,\n QuerySizeComparisonOps,\n QueryTextSearchOptions,\n QueryWhereFieldOperatorMap,\n Type,\n VectorDistance,\n} from '../type/index.js';\nimport { escapeAnsiSqlLiteral } from '../util/ansiSqlLiteral.js';\nimport { hasKeys } from '../util/index.js';\n\nexport class SqliteDialect extends AbstractSqlDialect {\n /** Default {@link DialectFeatures} for SQLite and SQLite-derived dialects. */\n static readonly defaultDialectFeatures: DialectFeatures = {\n explicitJsonCast: false,\n nativeArrays: false,\n supportsJsonb: false,\n returning: true,\n ifNotExists: true,\n indexIfNotExists: true,\n dropTableCascade: false,\n renameColumn: true,\n foreignKeyAlter: false, // SQLite does not support adding FKs to existing tables\n columnComment: false, // SQLite does not support column comments\n vectorIndexStyle: 'create',\n vectorSupportsLength: false,\n supportsTimestamptz: false,\n defaultStringAsText: true,\n };\n\n override readonly dialectName = 'sqlite';\n\n override readonly quoteChar = '`';\n\n override readonly serialPrimaryKey = 'INTEGER PRIMARY KEY AUTOINCREMENT';\n\n override readonly tableOptions = '';\n\n override readonly beginTransactionCommand = 'BEGIN TRANSACTION';\n\n override readonly commitTransactionCommand = 'COMMIT';\n\n override readonly rollbackTransactionCommand = 'ROLLBACK';\n\n override readonly isolationLevelStrategy = 'none';\n\n override readonly alterColumnSyntax = 'none';\n\n override readonly booleanLiteral = 'integer';\n\n override readonly insertIdStrategy = 'last';\n\n constructor(options: DialectOptions = {}) {\n super(SqliteDialect.defaultDialectFeatures, options);\n }\n\n protected override readonly vectorDistanceFns: Partial<Record<VectorDistance, string>> = {\n cosine: 'vec_distance_cosine',\n l2: 'vec_distance_L2',\n hamming: 'vec_distance_hamming',\n };\n\n protected override ilikeExpr(f: string, ph: string): string {\n return `${f} LIKE ${ph}`;\n }\n\n protected override get neOp(): string {\n return 'IS NOT';\n }\n\n override normalizeValue(value: unknown): unknown {\n if (value instanceof Date) return value.getTime();\n return super.normalizeValue(value);\n }\n\n override compare<E>(\n ctx: QueryContext,\n entity: Type<E>,\n key: string,\n val: unknown,\n opts?: QueryComparisonOptions,\n ): void {\n if (key === '$text') {\n const meta = getMeta(entity);\n const search = val as QueryTextSearchOptions<E>;\n const fields = search.$fields!.map((fKey) => {\n const field = meta.fields[fKey];\n const columnName = this.resolveColumnName(fKey, field!);\n return this.escapeId(columnName);\n });\n const tableName = this.resolveTableName(entity, meta);\n ctx.append(`${this.escapeId(tableName)} MATCH {${fields.join(' ')}} : `);\n ctx.addValue(search.$value);\n return;\n }\n super.compare(ctx, entity, key, val, opts);\n }\n\n override compareFieldOperator<E, K extends keyof QueryWhereFieldOperatorMap<E>>(\n ctx: QueryContext,\n entity: Type<E>,\n key: FieldKey<E>,\n op: K,\n val: QueryWhereFieldOperatorMap<E>[K],\n opts: QueryComparisonOptions = {},\n ): void {\n switch (op) {\n case '$elemMatch':\n this.buildElemMatchCondition(ctx, entity, key, val as Record<string, unknown>, opts);\n break;\n case '$all': {\n // SQLite: Check JSON array contains all values using multiple json_each subqueries\n const values = val as unknown[];\n const conditions = values\n .map((v) => {\n ctx.pushValue(JSON.stringify(v));\n return `EXISTS (SELECT 1 FROM json_each(${this.escapeId(key)}) WHERE value = json(?))`;\n })\n .join(' AND ');\n ctx.append(`(${conditions})`);\n break;\n }\n case '$size':\n // SQLite: Check JSON array length\n // e.g., json_array_length(roles) = 3, or json_array_length(roles) >= 2\n this.buildSizeComparison(\n ctx,\n () => {\n ctx.append('json_array_length(');\n this.getComparisonKey(ctx, entity, key, opts);\n ctx.append(')');\n },\n val as number | QuerySizeComparisonOps,\n );\n break;\n default:\n super.compareFieldOperator(ctx, entity, key, op, val, opts);\n }\n }\n\n /**\n * Build $elemMatch condition for SQLite JSON arrays.\n * Uses EXISTS with json_each and supports nested operators.\n */\n private buildElemMatchCondition<E>(\n ctx: QueryContext,\n _entity: Type<E>,\n key: FieldKey<E>,\n match: Record<string, unknown>,\n opts: QueryComparisonOptions,\n ): void {\n ctx.append('EXISTS (SELECT 1 FROM json_each(');\n this.getComparisonKey(ctx, _entity, key, opts);\n ctx.append(') WHERE ');\n\n const conditions = buildElemMatchConditions(\n match,\n (field, op, opVal) =>\n this.buildJsonFieldCondition(ctx, (f) => `json_extract(value, '$.${this.escapeJsonKey(f)}')`, field, op, opVal),\n (field, value) => {\n // Keep SQLite's placeholder behavior consistent with prior implementation.\n ctx.pushValue(value);\n return `json_extract(value, '$.${this.escapeJsonKey(field)}') = ?`;\n },\n );\n\n ctx.append(conditions.join(' AND '));\n ctx.append(')');\n }\n\n protected override getJsonPathScalarExpr(escapedColumn: string, jsonPath: string): string {\n return `json_extract(${escapedColumn}, '$.${this.escapeJsonKey(jsonPath)}')`;\n }\n\n protected override numericCast(expr: string): string {\n return `CAST(${expr} AS REAL)`;\n }\n\n override upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void {\n this.onConflictUpsert(ctx, entity, conflictPaths, payload, this.insert.bind(this));\n }\n\n protected override formatJsonUpdate<E>(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp<E>): void {\n let expr = escapedCol;\n if (hasKeys(value.$merge)) {\n const merge = value.$merge as Record<string, unknown>;\n expr = `json_set(COALESCE(${escapedCol}, '{}')`;\n for (const [key, v] of Object.entries(merge)) {\n expr += `, '$.${this.escapeJsonKey(key)}', json(?)`;\n ctx.pushValue(JSON.stringify(v));\n }\n expr += ')';\n }\n if (hasKeys(value.$push)) {\n const push = value.$push as Record<string, unknown>;\n expr = `json_insert(${expr}`;\n for (const [key, v] of Object.entries(push)) {\n expr += `, '$.${this.escapeJsonKey(key)}[#]', json(?)`;\n ctx.pushValue(JSON.stringify(v));\n }\n expr += ')';\n }\n if (value.$unset?.length) {\n const paths = value.$unset.map((k) => `'$.${this.escapeJsonKey(k)}'`).join(', ');\n expr = `json_remove(${expr}, ${paths})`;\n }\n ctx.append(`${escapedCol} = ${expr}`);\n }\n\n override escape(value: unknown): string {\n return escapeAnsiSqlLiteral(value);\n }\n}\n","import { SqliteDialect } from '../sqlite/sqliteDialect.js';\n\n/**\n * SQLite Dialect specialization for the `bun:sql` driver.\n */\nexport class BunSqliteDialect extends SqliteDialect {}\n","import type { DialectOptions } from '../dialect/abstractDialect.js';\nimport { AbstractSqlDialect } from '../dialect/abstractSqlDialect.js';\nimport { buildElemMatchConditions } from '../dialect/jsonArrayElemMatchUtils.js';\nimport { getMeta } from '../entity/index.js';\nimport {\n type DialectFeatures,\n type EntityMeta,\n type FieldOptions,\n type JsonColumnType,\n type JsonUpdateOp,\n type QueryComparisonOptions,\n type QueryConflictPaths,\n type QueryContext,\n type QueryOptions,\n QueryRaw,\n type QuerySizeComparisonOps,\n type QueryTextSearchOptions,\n type QueryVectorSearch,\n type SqlDialectName,\n type Type,\n type VectorDistance,\n} from '../type/index.js';\nimport { escapeAnsiSqlLiteral } from '../util/ansiSqlLiteral.js';\nimport { hasKeys, isJsonType } from '../util/index.js';\n\n/**\n * PostgreSQL dialect (AST, quoting, BIGINT IDENTITY PKs).\n * For node-pg use PgDialect. Neon, Bun SQL, and Cockroach use driver-specific subclasses.\n */\nexport class PostgresDialect extends AbstractSqlDialect {\n /** Default {@link DialectFeatures} before wire/driver-specific patches (e.g. {@link PgDialect}). */\n static readonly defaultDialectFeatures: DialectFeatures = {\n explicitJsonCast: false,\n nativeArrays: true,\n supportsJsonb: true,\n returning: true,\n ifNotExists: true,\n indexIfNotExists: true,\n dropTableCascade: true,\n renameColumn: true,\n foreignKeyAlter: true,\n columnComment: false,\n vectorIndexStyle: 'create',\n vectorSupportsLength: true,\n supportsTimestamptz: true,\n defaultStringAsText: true,\n };\n\n override readonly dialectName: SqlDialectName = 'postgres';\n\n override readonly quoteChar = '\"';\n override readonly serialPrimaryKey: string = 'BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY';\n override readonly tableOptions = '';\n override readonly beginTransactionCommand = 'BEGIN';\n override readonly commitTransactionCommand = 'COMMIT';\n override readonly rollbackTransactionCommand = 'ROLLBACK';\n override readonly alterColumnStrategy = 'separate-clauses';\n override readonly insertIdStrategy = 'last';\n\n constructor(options: DialectOptions = {}) {\n super(PostgresDialect.defaultDialectFeatures, options);\n }\n\n override readonly vectorOpsClass: Readonly<Record<VectorDistance, string>> | undefined = {\n cosine: 'vector_cosine_ops',\n l2: 'vector_l2_ops',\n inner: 'vector_ip_ops',\n l1: 'vector_l1_ops',\n hamming: 'bit_hamming_ops',\n };\n\n override readonly vectorExtension: string | undefined = 'vector';\n\n override normalizeValue(value: unknown): unknown {\n if (value != null && typeof value === 'object' && Array.isArray(value)) {\n return this.features.nativeArrays ? value : toPgArray(value);\n }\n return super.normalizeValue(value);\n }\n\n override placeholder(index: number): string {\n return `$${index}`;\n }\n\n override insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void {\n super.insert(ctx, entity, payload, opts);\n ctx.append(' ' + this.returningId(entity));\n }\n\n override upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void {\n const meta = getMeta(entity);\n const update = this.getUpsertUpdateAssignments(ctx, meta, conflictPaths, payload, (name) => `EXCLUDED.${name}`);\n const keysStr = this.getUpsertConflictPathsStr(meta, conflictPaths);\n const onConflict = update ? `DO UPDATE SET ${update}` : 'DO NOTHING';\n super.insert(ctx, entity, payload);\n // xmax system column is 0 for newly inserted rows, non-zero for updated rows (MVCC).\n ctx.append(\n ` ON CONFLICT (${keysStr}) ${onConflict} ${this.returningId(entity)}, (xmax = 0) AS ${this.escapeId('_created')}`,\n );\n }\n\n override compare<E>(\n ctx: QueryContext,\n entity: Type<E>,\n key: string,\n val: unknown,\n opts: QueryComparisonOptions = {},\n ): void {\n if (key === '$text') {\n const meta = getMeta(entity);\n const search = val as QueryTextSearchOptions<E>;\n const fields = (search.$fields ?? [])\n .map((fKey) => {\n const field = meta.fields[fKey];\n const columnName = this.resolveColumnName(fKey, field!);\n return this.escapeId(columnName);\n })\n .join(` || ' ' || `);\n ctx.append(`to_tsvector(${fields}) @@ to_tsquery(`);\n ctx.addValue(search.$value);\n ctx.append(')');\n return;\n }\n super.compare(ctx, entity, key, val, opts);\n }\n\n protected override jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string {\n return `${jsonField} @> ${this.jsonVal(ctx, value)}`;\n }\n\n protected override jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string {\n const tmpCtx = this.createContext();\n this.buildSizeComparison(tmpCtx, () => tmpCtx.append(`jsonb_array_length(${jsonField})`), value);\n ctx.pushValue(...tmpCtx.values);\n return tmpCtx.sql;\n }\n\n protected override jsonElemMatch(ctx: QueryContext, jsonField: string, match: Record<string, unknown>): string {\n // Primitive element match: keys are operators (e.g. { $startsWith: 'ad' } on a string[])\n const isPrimitiveElement = Object.keys(match).some((k) => k.startsWith('$'));\n if (isPrimitiveElement) {\n const conditions = Object.entries(match).map(([op, opVal]) =>\n this.buildJsonFieldCondition(ctx, () => 'elem', '', op, opVal),\n );\n return `EXISTS (SELECT 1 FROM jsonb_array_elements_text(${jsonField}) AS elem WHERE ${conditions.join(' AND ')})`;\n }\n\n const hasOperators = Object.values(match).some(\n (v) => v && typeof v === 'object' && !Array.isArray(v) && Object.keys(v).some((k) => k.startsWith('$')),\n );\n\n if (!hasOperators) {\n return `${jsonField} @> ${this.jsonVal(ctx, [match])}`;\n }\n\n const conditions = buildElemMatchConditions(\n match,\n (field, op, opVal) =>\n this.buildJsonFieldCondition(ctx, (f) => `elem->>'${this.escapeJsonKey(f)}'`, field, op, opVal),\n (field, val) => `elem->>'${this.escapeJsonKey(field)}' = ${this.addValue(ctx.values, val)}`,\n );\n\n return `EXISTS (SELECT 1 FROM jsonb_array_elements(${jsonField}) AS elem WHERE ${conditions.join(' AND ')})`;\n }\n\n protected override get regexpOp(): string {\n return '~';\n }\n\n protected override ilikeExpr(f: string, ph: string): string {\n return `${f} ILIKE ${ph}`;\n }\n\n protected override get neOp(): string {\n return 'IS DISTINCT FROM';\n }\n\n protected override formatIn(ctx: QueryContext, values: unknown[], negate: boolean): string {\n if (values.length === 0) return negate ? ' NOT IN (NULL)' : ' IN (NULL)';\n const ph = this.addValue(ctx.values, values);\n return negate ? ` <> ALL(${ph})` : ` = ANY(${ph})`;\n }\n\n protected override numericCast(expr: string): string {\n return `(${expr})::numeric`;\n }\n\n protected override formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions, value: unknown): void {\n if (value instanceof QueryRaw) {\n super.formatPersistableValue(ctx, field, value);\n return;\n }\n if (isJsonType(field.type)) {\n ctx.append(this.jsonVal(ctx, value, field.type as JsonColumnType));\n return;\n }\n if (field.type === 'vector' && Array.isArray(value)) {\n ctx.addValue(`[${value.join(',')}]`);\n ctx.append('::vector');\n return;\n }\n super.formatPersistableValue(ctx, field, value);\n }\n\n /** pgvector distance operators. */\n private static readonly VECTOR_OPS: Record<VectorDistance, string> = {\n cosine: '<=>',\n l2: '<->',\n inner: '<#>',\n l1: '<+>',\n hamming: '<~>',\n };\n\n /** Emit a pgvector distance expression: `\"col\" <op> $N::<vectorType>`. */\n protected override appendVectorSort<E>(\n ctx: QueryContext,\n meta: EntityMeta<E>,\n key: string,\n search: QueryVectorSearch,\n ): void {\n const { colName, distance, vectorCast } = this.resolveVectorSortParams(meta, key, search);\n const op = PostgresDialect.VECTOR_OPS[distance];\n ctx.append(`${this.escapeId(colName)} ${op} `);\n ctx.addValue(`[${search.$vector.join(',')}]`);\n ctx.append(`::${vectorCast}`);\n }\n\n protected override formatJsonUpdate<E>(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp<E>): void {\n let expr = escapedCol;\n if (hasKeys(value.$merge)) {\n expr = `COALESCE(${escapedCol}, '{}'::jsonb) || ${this.jsonVal(ctx, value.$merge)}`;\n }\n if (hasKeys(value.$push)) {\n const push = value.$push as Record<string, unknown>;\n for (const [key, v] of Object.entries(push)) {\n const currentExpr = expr;\n const ph = this.jsonVal(ctx, v);\n expr = `jsonb_set(${currentExpr}, '{${this.escapeJsonKey(key)}}', COALESCE((${currentExpr})->'${this.escapeJsonKey(\n key,\n )}', '[]'::jsonb) || jsonb_build_array(${ph}))`;\n }\n }\n if (value.$unset?.length) {\n for (const key of value.$unset) {\n expr = `(${expr}) - '${this.escapeJsonKey(key)}'`;\n }\n }\n ctx.append(`${escapedCol} = ${expr}`);\n }\n\n /**\n * Helper to add a JSON value to context with appropriate stringification and cast.\n */\n private jsonVal(ctx: QueryContext, value: unknown, type: JsonColumnType = 'jsonb'): string {\n if (value instanceof QueryRaw) return this.addValue(ctx.values, value);\n if (value == null) return `${this.addValue(ctx.values, null)}::${type}`;\n\n const json = JSON.stringify(value);\n const ph = this.addValue(ctx.values, json);\n return this.features.explicitJsonCast ? `(${ph}::text)::${type}` : `${ph}::${type}`;\n }\n\n override escape(value: unknown): string {\n return escapeAnsiSqlLiteral(value);\n }\n}\n\n/**\n * Converts a JS array to a Postgres array literal string: `{\"val1\",\"val2\"}`.\n * Safely handles nesting and escaping of special characters.\n */\nfunction toPgArray(arr: unknown[]): string {\n const elements = arr.map((val) => {\n if (val == null) return 'NULL';\n if (Array.isArray(val)) return toPgArray(val);\n if (typeof val === 'boolean') return val ? 'true' : 'false';\n if (val instanceof Uint8Array || (typeof Buffer !== 'undefined' && Buffer.isBuffer(val))) {\n const hex = Array.from(val)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n return `\"\\\\\\\\x${hex}\"`;\n }\n const str = String(val);\n const escaped = str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n return `\"${escaped}\"`;\n });\n return `{${elements.join(',')}}`;\n}\n","import type { DialectFeatures } from '../type/index.js';\n\n/**\n * Wire-style parameter shaping for **Bun SQL** (and similar clients) on PostgreSQL: arrays are\n * sent as string literals (`nativeArrays: false`) via the {@link PostgresDialect} `toPgArray` path.\n *\n * `PgDialect` does **not** use this constant — it keeps base {@link PostgresDialect} defaults\n * (`nativeArrays: true`, `explicitJsonCast: false`). `BunSqlPostgresDialect` spreads this\n * and sets `explicitJsonCast: true`.\n *\n * @remarks Optional import for custom pools; Neon / Cockroach `PostgresDialect` subclasses\n * typically use base defaults without these patches.\n */\nexport const POSTGRES_WIRE_DRIVER_CAPABILITIES = {\n nativeArrays: false,\n} as const satisfies Partial<DialectFeatures>;\n","import type { DialectOptions } from '../dialect/abstractDialect.js';\nimport { PostgresDialect } from '../postgres/postgresDialect.js';\nimport { POSTGRES_WIRE_DRIVER_CAPABILITIES } from '../postgres/postgresWireDriverCapabilities.js';\n\n/**\n * Postgres Dialect specialization for the `bun:sql` driver.\n *\n * @remarks Reuses wire array encoding plus `explicitJsonCast` so JSON merge/push binds\n * reliably; `PgDialect` omits the text re-cast.\n */\nexport class BunSqlPostgresDialect extends PostgresDialect {\n constructor(options: DialectOptions = {}) {\n super({\n ...options,\n driverCapabilities: {\n ...POSTGRES_WIRE_DRIVER_CAPABILITIES,\n explicitJsonCast: true,\n ...options.driverCapabilities,\n },\n });\n }\n}\n","import type { Logger, LoggerFunction, LoggingOptions, LogLevel } from '../type/logger.js';\nimport type { SlowQueryOptions } from '../type/querier.js';\n\nconst DEFAULT_LOG_LEVELS = [\n 'query',\n 'info',\n 'warn',\n 'error',\n 'schema',\n 'migration',\n 'skippedMigration',\n] as const satisfies LogLevel[];\n\n/**\n * Default implementation of the Logger interface using console methods.\n */\nexport class DefaultLogger implements Logger {\n logQuery(query: string, values?: unknown[], duration?: number): void {\n const time = duration !== undefined ? ` [${duration}ms]` : '';\n const params = values?.length ? ` -- ${JSON.stringify(values)}` : '';\n console.log(`\\x1b[36mquery:\\x1b[0m ${query}${params}\\x1b[32m${time}\\x1b[0m`);\n }\n\n logSlowQuery(query: string, values?: unknown[], duration?: number, logParams = true): void {\n const time = duration !== undefined ? ` [${duration}ms]` : '';\n const params = logParams && values?.length ? ` -- ${JSON.stringify(values)}` : '';\n console.warn(`\\x1b[33mslow query:\\x1b[0m ${query}${params}\\x1b[31m${time}\\x1b[0m`);\n }\n\n logWarn(message: string): void {\n console.warn(`\\x1b[33mwarn:\\x1b[0m ${message}`);\n }\n\n logError(message: string, error?: unknown): void {\n console.error(`\\x1b[31merror:\\x1b[0m ${message}`, error);\n }\n\n logInfo(message: string): void {\n console.info(`\\x1b[34minfo:\\x1b[0m ${message}`);\n }\n\n logSchema(message: string): void {\n console.log(`\\x1b[35mschema:\\x1b[0m ${message}`);\n }\n\n logMigration(message: string): void {\n console.log(`\\x1b[32mmigration:\\x1b[0m ${message}`);\n }\n\n logSkippedMigration(message: string): void {\n console.info(`\\x1b[33mskipped migration:\\x1b[0m ${message}`);\n }\n}\n\n/**\n * A wrapper class that implements the Logger interface and handles different logging options.\n */\nexport class LoggerWrapper implements Logger {\n private readonly levels: Set<LogLevel>;\n private readonly logger?: Logger;\n private readonly loggerFunction?: LoggerFunction;\n\n constructor(\n options: LoggingOptions,\n private readonly slowQuery?: SlowQueryOptions,\n ) {\n this.levels = new Set();\n\n if (options === true) {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.logger = new DefaultLogger();\n } else if (Array.isArray(options)) {\n this.levels = new Set(options);\n this.logger = new DefaultLogger();\n } else if (typeof options === 'function') {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.loggerFunction = options;\n } else if (options && typeof options === 'object') {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.logger = options;\n }\n\n if (slowQuery !== undefined && !this.logger && !this.loggerFunction) {\n this.logger = new DefaultLogger();\n }\n }\n\n logQuery(query: string, values?: unknown[], duration?: number): void {\n if (this.slowQuery !== undefined && duration !== undefined && duration >= this.slowQuery.threshold) {\n const logParams = this.slowQuery.logParams !== false;\n if (this.logger?.logSlowQuery) {\n this.logger.logSlowQuery(query, values, duration, logParams);\n return;\n }\n if (this.loggerFunction) {\n this.loggerFunction(query, logParams ? values : undefined, duration);\n return;\n }\n // If slowQuery threshold is met but no specific slowQuery logger exists,\n // it falls through to the standard logQuery below.\n }\n\n if (this.levels.has('query')) {\n if (this.logger?.logQuery) {\n this.logger.logQuery(query, values, duration);\n } else if (this.loggerFunction) {\n this.loggerFunction(query, values, duration);\n }\n }\n }\n\n logWarn(message: string): void {\n this.log('warn', message);\n }\n\n logError(message: string, error?: unknown): void {\n this.log('error', message, error);\n }\n\n logInfo(message: string): void {\n this.log('info', message);\n }\n\n logSchema(message: string): void {\n this.log('schema', message);\n }\n\n logMigration(message: string): void {\n this.log('migration', message);\n }\n\n logSkippedMigration(message: string): void {\n this.log('skippedMigration', message);\n }\n\n private log(level: LogLevel, message: string, error?: unknown) {\n if (this.levels.has(level)) {\n const method = `log${level.charAt(0).toUpperCase()}${level.slice(1)}` as keyof Logger;\n const args = error !== undefined ? [message, error] : [message];\n if (this.logger?.[method]) {\n const logFn = this.logger[method] as (m: string, e?: unknown) => void;\n logFn(...(args as [string, unknown?]));\n } else if (this.loggerFunction) {\n this.loggerFunction(...(args as [string, unknown?]));\n }\n }\n }\n}\n","import 'reflect-metadata';\nimport type {\n EntityIndexMeta,\n EntityMeta,\n EntityOptions,\n FieldKey,\n FieldOptions,\n FieldType,\n HookEvent,\n IdKey,\n Key,\n RelationKey,\n RelationKeyMap,\n RelationOptions,\n Type,\n} from '../../type/index.js';\nimport { getKeys, hasKeys, lowerFirst, upperFirst } from '../../util/index.js';\nimport { LoggerWrapper } from '../../util/logger.js';\n\n// biome-ignore lint/suspicious/noExplicitAny: heterogeneous registry — stores EntityMeta for all entity types\ntype Meta = Map<Type<unknown>, EntityMeta<any>>;\nconst holder = globalThis as unknown as Record<symbol, Meta>;\nconst metaKey = Symbol.for('uql-orm/entity/metadata');\nconst metas: Meta = holder[metaKey] ?? new Map();\nholder[metaKey] = metas;\n\nconst registrationLogger = new LoggerWrapper(true);\n\n/**\n * Append a composite index entry with normalized `unique` (default false).\n */\nexport function appendEntityIndex<E>(meta: EntityMeta<E>, index: EntityIndexMeta): void {\n if (!meta.indexes) meta.indexes = [];\n meta.indexes.push({ ...index, unique: index.unique ?? false });\n}\n\nexport function defineField<E>(entity: Type<E>, key: string, opts: FieldOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!opts.type) {\n const type = inferType(entity, key);\n opts = { ...opts, type };\n }\n const fieldKey = key as FieldKey<E>;\n meta.fields[fieldKey] = { ...meta.fields[fieldKey], ...{ name: key, ...opts } };\n return meta;\n}\n\nexport function defineId<E>(entity: Type<E>, key: string, opts: FieldOptions): EntityMeta<E> {\n const meta = ensureMeta(entity);\n const id = getIdKey(meta);\n if (id) {\n registrationLogger.logInfo(`Overriding ID property for '${entity.name}' from '${id}' to '${key}'`);\n delete meta.fields[id];\n }\n return defineField(entity, key, { ...opts, isId: true });\n}\n\nexport function defineRelation<E>(entity: Type<E>, key: string, opts: RelationOptions<E>): EntityMeta<E> {\n const resolved: RelationOptions<E> = opts.entity\n ? opts\n : (() => {\n const inferredType = inferEntityType(entity, key);\n return { ...opts, entity: () => inferredType };\n })();\n const meta = ensureMeta(entity);\n const relKey = key as RelationKey<E>;\n meta.relations[relKey] = { ...meta.relations[relKey], ...resolved };\n return meta;\n}\n\nexport function defineHook<E>(entity: Type<E>, methodName: string, event: HookEvent): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!meta.hooks) meta.hooks = {};\n if (!meta.hooks[event]) meta.hooks[event] = [];\n meta.hooks[event].push({ methodName });\n return meta;\n}\n\nfunction applyBulkFields<E>(entity: Type<E>, fields: Record<string, FieldOptions>): void {\n for (const key of Object.keys(fields)) {\n const spec = fields[key];\n if (!spec) continue;\n if (spec.isId) {\n defineId(entity, key, spec);\n } else {\n defineField(entity, key, spec);\n }\n }\n}\n\nfunction applyBulkRelations<E>(entity: Type<E>, relations: Record<string, RelationOptions<E>>): void {\n for (const key of Object.keys(relations)) {\n const spec = relations[key];\n if (spec) defineRelation(entity, key, spec);\n }\n}\n\nfunction applyBulkIndexes<E>(entity: Type<E>, indexes: readonly EntityIndexMeta[]): void {\n const meta = ensureMeta(entity);\n for (const idx of indexes) {\n appendEntityIndex(meta, idx);\n }\n}\n\nfunction applyBulkHooks<E>(entity: Type<E>, hooks: NonNullable<EntityOptions<E>['hooks']>): void {\n for (const event of Object.keys(hooks) as HookEvent[]) {\n const methodNames = hooks[event];\n if (!methodNames?.length) continue;\n for (const methodName of methodNames) {\n defineHook(entity, methodName, event);\n }\n }\n}\n\n/**\n * Applies `fields`, `relations`, `indexes`, and `hooks` from {@link EntityOptions} before\n * entity finalization. Used by `defineEntity` for decorator-free registration.\n */\nfunction applyBulkEntityOptions<E>(entity: Type<E>, opts: EntityOptions<E>): void {\n if (opts.fields) applyBulkFields(entity, opts.fields);\n if (opts.relations) applyBulkRelations(entity, opts.relations);\n if (opts.indexes?.length) applyBulkIndexes(entity, opts.indexes);\n if (opts.hooks) applyBulkHooks(entity, opts.hooks);\n}\n\nexport function defineEntity<E>(entity: Type<E>, opts: EntityOptions<E> = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n applyBulkEntityOptions(entity, opts);\n\n if (!hasKeys(meta.fields)) {\n throw TypeError(`'${entity.name}' must have fields`);\n }\n\n const onDeleteKeys = getKeys(meta.fields).filter((key) => meta.fields[key]?.onDelete) as FieldKey<E>[];\n\n if (onDeleteKeys.length > 1) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);\n }\n\n if (opts.softDelete) {\n if (!onDeleteKeys.length) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);\n }\n meta.softDelete = onDeleteKeys[0];\n }\n\n meta.name = opts.name ?? entity.name;\n let proto: FunctionConstructor = Object.getPrototypeOf(entity.prototype);\n\n while (proto.constructor !== Object) {\n const parentMeta = ensureMeta(proto.constructor as Type<E>);\n extendMeta(meta, parentMeta);\n proto = Object.getPrototypeOf(proto);\n }\n\n const id = getIdKey(meta);\n if (!id) {\n throw TypeError(\n `'${entity.name}' must have exactly one id field (use @Id, defineId, or defineEntity({ fields: { ..., isId: true } }))`,\n );\n }\n meta.id = id;\n\n return meta;\n}\n\nexport function getEntities(): Type<unknown>[] {\n return [...metas.entries()].reduce((acc, [key, val]) => {\n if (val.id) {\n acc.push(key);\n }\n return acc;\n }, [] as Type<unknown>[]);\n}\n\nexport function ensureMeta<E>(entity: Type<E>): EntityMeta<E> {\n let meta = metas.get(entity);\n if (meta) {\n return meta;\n }\n meta = { entity, id: '', fields: {}, relations: {} };\n metas.set(entity, meta);\n return meta;\n}\n\nexport function getMeta<E>(entity: Type<E>): EntityMeta<E> {\n const meta = metas.get(entity);\n if (!meta) {\n throw TypeError(`'${entity.name}' is not an entity`);\n }\n if (meta.processed) {\n return meta;\n }\n meta.processed = true;\n return fillRelations(meta);\n}\n\nfunction fillRelations<E>(meta: EntityMeta<E>): EntityMeta<E> {\n for (const relKey in meta.relations) {\n const relOpts = meta.relations[relKey];\n if (!relOpts) continue;\n\n if (relOpts.references) {\n // references were manually specified\n continue;\n }\n\n if (relOpts.mappedBy) {\n fillInverseSideRelations(relOpts);\n continue;\n }\n\n const relEntity = relOpts.entity!();\n const relMeta = ensureMeta(relEntity);\n\n if (relOpts.cardinality === 'mm') {\n const idKey = meta.id!;\n const relIdKey = relMeta.id!;\n const idName = meta.fields[idKey]?.name ?? idKey;\n const relIdName = relMeta.fields[relIdKey]?.name ?? relIdKey;\n const source = lowerFirst(meta.name ?? '') + upperFirst(idName);\n const target = lowerFirst(relMeta.name ?? '') + upperFirst(relIdName);\n relOpts.references = [\n { local: source, foreign: idKey },\n { local: target, foreign: relIdKey },\n ];\n } else {\n const relIdKey = relMeta.id;\n relOpts.references = [{ local: `${relKey}Id`, foreign: relIdKey }];\n }\n\n if (relOpts.through) {\n fillThroughRelations(relOpts.through());\n }\n }\n\n return meta;\n}\n\nfunction fillInverseSideRelations<E>(relOpts: RelationOptions<E>): void {\n const relEntity = relOpts.entity!();\n const relMeta = getMeta(relEntity);\n const mappedBy = getMappedByRelationKey(relOpts);\n relOpts.mappedBy = mappedBy;\n\n if (relMeta.fields[mappedBy]) {\n relOpts.references = [{ local: relMeta.id, foreign: mappedBy }];\n return;\n }\n\n const mappedByRelation = relMeta.relations[mappedBy];\n if (!mappedByRelation) return;\n\n if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {\n relOpts.references = (mappedByRelation.references ?? []).slice().reverse();\n relOpts.through = mappedByRelation.through;\n return;\n }\n\n relOpts.references = (mappedByRelation.references ?? []).map(({ local, foreign }) => ({\n local: foreign,\n foreign: local,\n }));\n}\n\nfunction fillThroughRelations<E>(entity: Type<E>): void {\n const meta = ensureMeta(entity);\n meta.relations = getKeys(meta.fields).reduce<EntityMeta<E>['relations']>(\n (relations, key) => {\n const field = meta.fields[key];\n if (!field) return relations;\n if (field.references) {\n const relEntity = field.references();\n const relMeta = ensureMeta(relEntity);\n const relIdKey = relMeta.id;\n const relKey = key.slice(0, -relIdKey.length);\n const relOpts: RelationOptions = {\n entity: field.references,\n cardinality: 'm1',\n references: [{ local: key, foreign: relIdKey }],\n };\n (relations as Record<string, RelationOptions>)[relKey] = relOpts;\n }\n return relations;\n },\n {} as EntityMeta<E>['relations'],\n );\n}\n\nfunction getMappedByRelationKey<E>(relOpts: RelationOptions<E>): Key<E> {\n if (typeof relOpts.mappedBy === 'function') {\n const relEntity = relOpts.entity!();\n const relMeta = ensureMeta(relEntity);\n const keyMap = getRelationKeyMap(relMeta);\n return relOpts.mappedBy(keyMap);\n }\n return relOpts.mappedBy!;\n}\n\nfunction getRelationKeyMap<E>(meta: EntityMeta<E>): RelationKeyMap<E> {\n const keys = [...getKeys(meta.fields), ...getKeys(meta.relations)];\n return keys.reduce(\n (acc, key) => {\n (acc as Record<string, string>)[key] = key;\n return acc;\n },\n {} as RelationKeyMap<E>,\n );\n}\n\nfunction getIdKey<E>(meta: EntityMeta<E>): IdKey<E> {\n const id = getKeys(meta.fields).find((key) => meta.fields[key]?.isId);\n return id as IdKey<E>;\n}\n\nfunction extendMeta<E>(target: EntityMeta<E>, source: EntityMeta<E>): void {\n const sourceFields = { ...source.fields };\n const targetId = getIdKey(target);\n if (targetId) {\n const sourceId = getIdKey(source);\n if (sourceId) {\n delete sourceFields[sourceId];\n }\n }\n target.fields = { ...sourceFields, ...target.fields };\n target.relations = { ...source.relations, ...target.relations };\n\n // Merge hooks from parent entity (parent hooks execute first)\n if (source.hooks) {\n if (!target.hooks) target.hooks = {};\n for (const event of Object.keys(source.hooks) as HookEvent[]) {\n const sourceList = source.hooks[event];\n if (sourceList?.length) {\n target.hooks[event] = [...sourceList, ...(target.hooks[event] ?? [])];\n }\n }\n }\n}\n\nfunction inferType<E>(entity: Type<E>, key: string): FieldType {\n return Reflect.getMetadata('design:type', entity.prototype, key);\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: reflected type is unknown at compile time\nfunction inferEntityType<E>(entity: Type<E>, key: string): Type<any> {\n const inferredType = inferType(entity, key);\n const isValidType = isValidEntityType(inferredType);\n if (!isValidType) {\n throw TypeError(\n `'${entity.name}.${key}' type was auto-inferred with invalid type '${(inferredType as { name?: string })?.name}'`,\n );\n }\n return inferredType;\n}\n\nexport function isValidEntityType(type: unknown): type is Type<unknown> {\n return (\n typeof type === 'function' &&\n type !== Boolean &&\n type !== String &&\n type !== Number &&\n type !== BigInt &&\n type !== Date &&\n type !== Symbol\n );\n}\n","import type { LoggerWrapper } from '../../util/logger.js';\n\n/**\n * Decorator that logs the execution of a query method.\n * It tracks execution time and logs the query, parameters, and duration.\n * The decorated class must have a `logger` property of type LoggerWrapper.\n */\nexport function Log() {\n return (_target: object, _key: string, propDescriptor: PropertyDescriptor): void => {\n const originalMethod = propDescriptor.value;\n propDescriptor.value = async function (this: { logger?: LoggerWrapper }, ...args: unknown[]) {\n if (!this.logger) {\n return originalMethod.apply(this, args);\n }\n const startTime = performance.now();\n try {\n return await originalMethod.apply(this, args);\n } finally {\n const duration = performance.now() - startTime;\n const isSql = typeof args[0] === 'string';\n const query = isSql ? (args[0] as string) : _key;\n const values = isSql ? (args[1] as unknown[] | undefined) : args;\n this.logger.logQuery(query, values, Math.round(duration));\n }\n };\n };\n}\n","/**\n * Decorator that ensures the decorated method is executed serially within the Querier instance.\n * It uses a private promise queue to prevent race conditions on the database connection.\n * Note: The decorated class must extend AbstractQuerier or implement a compatible serialize method.\n */\nexport function Serialized() {\n return (_target: object, _key: string, propDescriptor: PropertyDescriptor): void => {\n const originalMethod = propDescriptor.value;\n propDescriptor.value = function (this: { serialize: (fn: () => unknown) => unknown }, ...args: unknown[]) {\n return this.serialize(() => originalMethod.apply(this, args));\n };\n };\n}\n","import { getMeta } from '../entity/decorator/index.js';\n\nimport type {\n EntityMeta,\n ExtraOptions,\n HookEvent,\n IdKey,\n IdValue,\n LoggingOptions,\n Querier,\n Query,\n QueryAggregate,\n QueryAggregateResult,\n QueryConflictPaths,\n QueryOne,\n QueryOptions,\n QueryPopulate,\n QuerySearch,\n QueryUpdateResult,\n QueryWhere,\n RawRow,\n RelationKey,\n RelationOptions,\n RelationValue,\n TransactionOptions,\n Type,\n UpdatePayload,\n} from '../type/index.js';\nimport {\n augmentWhere,\n clone,\n filterPersistableRelationKeys,\n forEachRequestedRelation,\n getKeys,\n getRelationRequestSummary,\n LoggerWrapper,\n parseRelationAtKey,\n parseRelationQueryValue,\n type RelationQuery,\n runHooks,\n} from '../util/index.js';\nimport { Serialized } from './decorator/index.js';\n\n/**\n * Base class for all database queriers.\n * It provides a standardized way to execute tasks serially to prevent race conditions on database connections.\n */\nexport abstract class AbstractQuerier implements Querier {\n private static readonly emittedWarnings = new Set<string>();\n\n /** Clears process-wide warning deduplication. For tests only. */\n static clearEmittedWarningsForTests(): void {\n AbstractQuerier.emittedWarnings.clear();\n }\n\n /**\n * Internal promise used to queue database operations.\n * This ensures that each operation is executed serially, preventing race conditions\n * and ensuring that the database connection is used safely across concurrent calls.\n */\n private taskQueue: Promise<unknown> = Promise.resolve();\n protected readonly logger: LoggerWrapper;\n\n constructor(readonly extra?: ExtraOptions) {\n this.logger = new LoggerWrapper(extra?.logger as LoggingOptions, extra?.slowQuery);\n }\n\n protected validateProjectionQuery<E extends object>(entity: Type<E>, q: Query<E>): void {\n this.validateProjectionQueryRecursive(entity, q, getMeta(entity).name ?? entity.name);\n }\n\n private validateProjectionQueryRecursive<E extends object>(\n entity: Type<E>,\n q: Query<E> | RelationQuery<E>,\n path: string,\n ): void {\n const meta = getMeta(entity);\n if (q.$select && q.$exclude) {\n for (const [key, value] of Object.entries(q.$select)) {\n if (key in meta.fields && value) {\n throw new TypeError(\n `Cannot combine $select and $exclude when $select includes positive scalar fields (${key}) at ${path}. Use either $select (whitelist) or $exclude (subtractive) in a single query.`,\n );\n }\n }\n }\n forEachRequestedRelation(meta, q.$populate, (relKey, relValue) => {\n const relOpts = meta.relations[relKey];\n if (!relOpts?.entity) return;\n type Related = InstanceType<ReturnType<NonNullable<typeof relOpts.entity>>>;\n const relEntity = relOpts.entity();\n const parsed = parseRelationQueryValue<Related>(relValue);\n if (parsed.nested) {\n this.validateProjectionQueryRecursive(relEntity, parsed.query, `${path}.${relKey}`);\n }\n });\n }\n\n /**\n * Resolves entity from either a separate argument or from $entity field in query.\n * @param entityOrQuery - Entity class or query object with $entity\n * @param maybeQuery - Query object if entity was passed separately\n * @returns Tuple of [entity, query]\n */\n protected resolveEntityAndQuery<E extends object>(\n entityOrQuery: Type<E> | (QuerySearch<E> & { $entity: Type<E> }),\n maybeQuery?: QuerySearch<E>,\n ): [Type<E>, QuerySearch<E>] {\n // Check if first argument is a class (function with prototype)\n if (typeof entityOrQuery === 'function' && entityOrQuery.prototype) {\n return [entityOrQuery as Type<E>, maybeQuery ?? {}];\n }\n // Otherwise it's a query object with $entity\n const q = entityOrQuery as QuerySearch<E> & { $entity: Type<E> };\n if (!q.$entity) {\n throw new TypeError('$entity is required when using query-object syntax');\n }\n const { $entity, ...query } = q;\n return [$entity, query as QuerySearch<E>];\n }\n\n findOneById<E extends object>(entity: Type<E>, id: IdValue<E>, q: QueryOne<E> = {}): Promise<E | undefined> {\n const meta = getMeta(entity);\n q.$where = augmentWhere(meta, q.$where, id);\n return this.findOne(entity, q);\n }\n\n /**\n * Find a single record matching the query.\n * Supports both entity-as-argument and entity-as-field patterns.\n */\n async findOne<E extends object>(entity: Type<E>, q: QueryOne<E>): Promise<E | undefined>;\n async findOne<E extends object>(q: QueryOne<E> & { $entity: Type<E> }): Promise<E | undefined>;\n async findOne<E extends object>(\n entityOrQuery: Type<E> | (QueryOne<E> & { $entity: Type<E> }),\n maybeQuery?: QueryOne<E>,\n ): Promise<E | undefined> {\n const [entity, q] = this.resolveEntityAndQuery(entityOrQuery, maybeQuery);\n const rows = await this.findMany(entity, { ...q, $limit: 1 });\n return rows[0];\n }\n\n /**\n * Find multiple records matching the query.\n * Supports both entity-as-argument and entity-as-field patterns.\n */\n findMany<E extends object>(entity: Type<E>, q: Query<E>): Promise<E[]>;\n findMany<E extends object>(q: Query<E> & { $entity: Type<E> }): Promise<E[]>;\n async findMany<E extends object>(\n entityOrQuery: Type<E> | (Query<E> & { $entity: Type<E> }),\n maybeQuery?: Query<E>,\n ): Promise<E[]> {\n const [entity, q] = this.resolveEntityAndQuery(entityOrQuery, maybeQuery);\n this.validateProjectionQuery(entity, q);\n const founds = await this.internalFindMany(entity, q);\n await this.emitHook(entity, 'afterLoad', founds);\n return founds;\n }\n\n protected abstract internalFindMany<E extends object>(entity: Type<E>, q: Query<E>): Promise<E[]>;\n\n /**\n * Stream records as an async iterable.\n * Supports both entity-as-argument and entity-as-field patterns.\n *\n * **SQL:** Joinable relations (e.g. m1 / one-to-one) are still emitted in the streamed SQL; **to-many**\n * relations are not filled (no second query) — requesting them throws a clear `TypeError`.\n *\n * **MongoDB:** Relation loading uses aggregation + follow-up queries in `findMany`; **streams use a plain\n * find cursor**, so any requested relation keys in `$select` / `$populate` throw a `TypeError`.\n *\n * No `afterLoad` hooks on streamed rows.\n */\n findManyStream<E extends object>(entity: Type<E>, q: Query<E>): AsyncIterable<E>;\n findManyStream<E extends object>(q: Query<E> & { $entity: Type<E> }): AsyncIterable<E>;\n findManyStream<E extends object>(\n entityOrQuery: Type<E> | (Query<E> & { $entity: Type<E> }),\n maybeQuery?: Query<E>,\n ): AsyncIterable<E> {\n const [entity, q] = this.resolveEntityAndQuery(entityOrQuery, maybeQuery);\n this.validateProjectionQuery(entity, q);\n return this.internalFindManyStream(entity, q);\n }\n\n protected abstract internalFindManyStream<E extends object>(entity: Type<E>, q: Query<E>): AsyncIterable<E>;\n\n /**\n * Find multiple records and return both the records and total count.\n * Supports both entity-as-argument and entity-as-field patterns.\n */\n findManyAndCount<E extends object>(entity: Type<E>, q: Query<E>): Promise<[E[], number]>;\n findManyAndCount<E extends object>(q: Query<E> & { $entity: Type<E> }): Promise<[E[], number]>;\n async findManyAndCount<E extends object>(\n entityOrQuery: Type<E> | (Query<E> & { $entity: Type<E> }),\n maybeQuery?: Query<E>,\n ): Promise<[E[], number]> {\n const [entity, q] = this.resolveEntityAndQuery(entityOrQuery, maybeQuery);\n this.validateProjectionQuery(entity, q);\n const { $sort: _, $limit: _l, $skip: _s, ...qCount } = q;\n const [founds, count] = await Promise.all([this.internalFindMany(entity, q), this.internalCount(entity, qCount)]);\n await this.emitHook(entity, 'afterLoad', founds);\n return [founds, count];\n }\n\n /**\n * Count records matching the query.\n * Supports both entity-as-argument and entity-as-field patterns.\n */\n count<E extends object>(entity: Type<E>, q: QuerySearch<E>): Promise<number>;\n count<E extends object>(q: QuerySearch<E> & { $entity: Type<E> }): Promise<number>;\n count<E extends object>(\n entityOrQuery: Type<E> | (QuerySearch<E> & { $entity: Type<E> }),\n maybeQuery?: QuerySearch<E>,\n ): Promise<number> {\n const [entity, q] = this.resolveEntityAndQuery(entityOrQuery, maybeQuery);\n return this.internalCount(entity, q);\n }\n\n protected abstract internalCount<E extends object>(entity: Type<E>, q: QuerySearch<E>): Promise<number>;\n\n /**\n * Run an aggregate query.\n */\n aggregate<E extends object, const Q extends QueryAggregate<E>>(\n entity: Type<E>,\n q: Q,\n ): Promise<QueryAggregateResult<E, Q['$group']>[]> {\n return this.internalAggregate(entity, q);\n }\n\n protected abstract internalAggregate<E extends object, Q extends QueryAggregate<E>>(\n entity: Type<E>,\n q: Q,\n ): Promise<QueryAggregateResult<E, Q['$group']>[]>;\n\n async insertOne<E extends object>(entity: Type<E>, payload: E) {\n const [id] = await this.insertMany(entity, [payload]);\n return id;\n }\n\n async insertMany<E extends object>(entity: Type<E>, payload: E[]): Promise<IdValue<E>[]> {\n await this.emitHook(entity, 'beforeInsert', payload);\n const ids = await this.internalInsertMany(entity, payload);\n await this.emitHook(entity, 'afterInsert', payload);\n return ids;\n }\n\n protected abstract internalInsertMany<E extends object>(entity: Type<E>, payload: E[]): Promise<IdValue<E>[]>;\n\n updateOneById<E extends object>(entity: Type<E>, id: IdValue<E>, payload: UpdatePayload<E>) {\n return this.updateMany(entity, { $where: id }, payload);\n }\n\n async updateMany<E extends object>(entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>): Promise<number> {\n await this.emitHook(entity, 'beforeUpdate', [payload as E]);\n const changes = await this.internalUpdateMany(entity, q, payload);\n await this.emitHook(entity, 'afterUpdate', [payload as E]);\n return changes;\n }\n\n protected abstract internalUpdateMany<E extends object>(\n entity: Type<E>,\n q: QuerySearch<E>,\n payload: UpdatePayload<E>,\n ): Promise<number>;\n\n abstract upsertOne<E extends object>(\n entity: Type<E>,\n conflictPaths: QueryConflictPaths<E>,\n payload: E,\n ): Promise<QueryUpdateResult>;\n\n abstract upsertMany<E extends object>(\n entity: Type<E>,\n conflictPaths: QueryConflictPaths<E>,\n payload: E[],\n ): Promise<QueryUpdateResult>;\n\n deleteOneById<E extends object>(entity: Type<E>, id: IdValue<E>, opts?: QueryOptions) {\n return this.deleteMany(entity, { $where: id }, opts);\n }\n\n /**\n * Delete records matching the query.\n * Supports both entity-as-argument and entity-as-field patterns.\n */\n deleteMany<E extends object>(entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): Promise<number>;\n deleteMany<E extends object>(q: QuerySearch<E> & { $entity: Type<E> }, opts?: QueryOptions): Promise<number>;\n async deleteMany<E extends object>(\n entityOrQuery: Type<E> | (QuerySearch<E> & { $entity: Type<E> }),\n qOrOpts?: QuerySearch<E> | QueryOptions,\n maybeOpts?: QueryOptions,\n ): Promise<number> {\n let entity: Type<E>;\n let q: QuerySearch<E>;\n let opts: QueryOptions | undefined;\n\n if (typeof entityOrQuery === 'function' && entityOrQuery.prototype) {\n entity = entityOrQuery as Type<E>;\n q = qOrOpts as QuerySearch<E>;\n opts = maybeOpts;\n } else {\n const { $entity, ...rest } = entityOrQuery as QuerySearch<E> & { $entity: Type<E> };\n entity = $entity;\n q = rest as QuerySearch<E>;\n opts = qOrOpts as QueryOptions;\n }\n\n await this.emitHook(entity, 'beforeDelete', []);\n const changes = await this.internalDeleteMany(entity, q, opts);\n await this.emitHook(entity, 'afterDelete', []);\n return changes;\n }\n\n protected abstract internalDeleteMany<E extends object>(\n entity: Type<E>,\n q: QuerySearch<E>,\n opts?: QueryOptions,\n ): Promise<number>;\n\n async saveOne<E extends object>(entity: Type<E>, payload: E): Promise<IdValue<E>> {\n const [id] = await this.saveMany(entity, [payload]);\n return id;\n }\n\n async saveMany<E extends object>(entity: Type<E>, payload: E[]) {\n const meta = getMeta(entity);\n const toInsert: E[] = [];\n const toUpdate: E[] = [];\n const existingIds: IdValue<E>[] = [];\n\n const idKey = (meta.id ?? 'id') as IdKey<E>;\n\n for (const it of payload) {\n const id = it[idKey];\n if (!id) {\n toInsert.push(it);\n } else if (Object.keys(it).length === 1) {\n existingIds.push(id);\n } else {\n toUpdate.push(it);\n }\n }\n\n const [insertedIds, updatedIds] = await Promise.all([\n toInsert.length ? this.insertMany(entity, toInsert) : ([] as IdValue<E>[]),\n Promise.all(\n toUpdate.map(async (it) => {\n const id = it[idKey];\n const data = { ...it };\n delete data[idKey];\n await this.updateOneById(entity, id, data as E);\n return id;\n }),\n ),\n ]);\n\n return [...existingIds, ...insertedIds, ...updatedIds];\n }\n\n protected async fillToManyRelations<E>(entity: Type<E>, payload: E[], populate?: QueryPopulate<E>) {\n if (!payload.length) {\n return;\n }\n\n const meta = getMeta(entity);\n const relKeys = getRelationRequestSummary(meta, populate).toManyKeys;\n\n for (const relKey of relKeys) {\n const relOpts = meta.relations[relKey];\n if (!relOpts) continue;\n const relEntity = relOpts.entity!();\n type RelEntity = typeof relEntity;\n const relationQuery = clone(parseRelationAtKey(relKey, populate).query) as RelationQuery<RelEntity>;\n\n if (relOpts.through) {\n await this.fillToManyThroughRelation(payload, meta, relKey, relOpts, relationQuery as RelationQuery);\n } else if (relOpts.cardinality === '1m') {\n await this.fillToManyOneToMany(payload, meta, relKey, relOpts, relationQuery as RelationQuery, relEntity);\n }\n }\n }\n\n private async fillToManyThroughRelation<E>(\n payload: E[],\n meta: EntityMeta<E>,\n relKey: RelationKey<E>,\n relOpts: RelationOptions,\n relationQuery: RelationQuery,\n ): Promise<void> {\n const localField = relOpts.references![0].local;\n const throughEntity = relOpts.through!();\n const throughMeta = getMeta(throughEntity);\n const targetRelKey = getKeys(throughMeta.relations).find((key) =>\n throughMeta.relations[key]!.references!.some(({ local }) => local === relOpts.references![1].local),\n );\n const ids = payload.map((it) => it[meta.id!]);\n const throughFounds = await this.findMany(throughEntity, {\n ...relationQuery,\n $select: {\n [localField!]: true,\n },\n $populate: {\n [targetRelKey!]: {\n ...relationQuery,\n $required: true,\n },\n },\n $where: {\n ...relationQuery.$where,\n [localField!]: ids,\n },\n });\n const founds = (throughFounds as unknown as RawRow[]).map((it) => ({\n ...(it[targetRelKey!] as RawRow),\n [localField!]: it[localField!],\n }));\n this.putChildrenInParents(payload, founds, meta.id!, localField!, relKey);\n }\n\n private async fillToManyOneToMany<E>(\n payload: E[],\n meta: EntityMeta<E>,\n relKey: RelationKey<E>,\n relOpts: RelationOptions,\n relationQuery: RelationQuery,\n relEntity: Type<object>,\n ): Promise<void> {\n const foreignField = relOpts.references![0].foreign;\n if (relationQuery.$select) {\n if (!(relationQuery.$select as Record<string, unknown>)[foreignField]) {\n (relationQuery.$select as Record<string, unknown>)[foreignField] = true;\n }\n }\n const ids = payload.map((it) => it[meta.id!]);\n relationQuery.$where = { ...relationQuery.$where, [foreignField!]: ids };\n const founds = await this.findMany(relEntity, relationQuery);\n this.putChildrenInParents(payload, founds as RawRow[], meta.id!, foreignField!, relKey);\n }\n\n protected putChildrenInParents<E>(\n parents: E[],\n children: RawRow[],\n parentIdKey: keyof E & string,\n referenceKey: string,\n relKey: keyof E & string,\n ): void {\n const childrenByParentId: Record<string, RawRow[]> = {};\n for (const child of children) {\n const parentId = String(child[referenceKey]);\n if (!childrenByParentId[parentId]) childrenByParentId[parentId] = [];\n childrenByParentId[parentId].push(child);\n }\n for (const parent of parents) {\n parent[relKey] = childrenByParentId[String(parent[parentIdKey!])] as E[keyof E & string];\n }\n }\n\n protected async insertRelations<E extends object>(entity: Type<E>, payload: E[]) {\n const meta = getMeta(entity);\n const entries = payload.reduce<{ it: E; relKeys: RelationKey<E>[] }[]>((acc, it) => {\n const relKeys = filterPersistableRelationKeys(meta, it, 'persist');\n if (relKeys.length > 0) acc.push({ it, relKeys });\n return acc;\n }, []);\n if (!entries.length) return;\n await Promise.all(\n entries.map(({ it, relKeys }) => Promise.all(relKeys.map((relKey) => this.saveRelation(entity, it, relKey)))),\n );\n }\n\n protected async updateRelations<E extends object>(entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>) {\n const meta = getMeta(entity);\n const relKeys = filterPersistableRelationKeys(meta, payload as E, 'persist');\n\n if (!relKeys.length) {\n return;\n }\n\n const founds = await this.findMany(entity, { ...q, $select: { [meta.id!]: true } } as Query<E>);\n const ids = founds.map((found) => found[meta.id!]);\n\n await Promise.all(\n ids.map((id) =>\n Promise.all(\n relKeys.map((relKey) => this.saveRelation(entity, { ...payload, [meta.id!]: id } as E, relKey, true)),\n ),\n ),\n );\n }\n\n protected async deleteRelations<E extends object>(entity: Type<E>, ids: IdValue<E>[], opts?: QueryOptions) {\n const meta = getMeta(entity);\n const relKeys = filterPersistableRelationKeys(meta, meta.relations as unknown as E, 'delete');\n\n for (const relKey of relKeys) {\n const relOpts = meta.relations[relKey];\n if (!relOpts) continue;\n const relEntity = relOpts.entity!();\n const localField = relOpts.references![0].local;\n if (relOpts.through) {\n const throughEntity = relOpts.through();\n await this.deleteMany(throughEntity, { $where: { [localField!]: ids } }, opts);\n } else {\n const foreignField = relOpts.references![0].foreign;\n await this.deleteMany(relEntity, { $where: { [foreignField!]: ids } }, opts);\n }\n }\n }\n\n protected async saveRelation<E extends object>(\n entity: Type<E>,\n payload: E,\n relKey: RelationKey<E>,\n isUpdate?: boolean,\n ) {\n const meta = getMeta(entity);\n const id = payload[meta.id!] as IdValue<E>;\n const relOpts = meta.relations[relKey];\n if (!relOpts) return;\n const relEntity = relOpts.entity!();\n const relPayload = payload[relKey] as unknown as RelationValue<E>[];\n\n switch (relOpts.cardinality) {\n case '1m':\n case 'mm':\n return this.saveToMany(relOpts, relEntity, id, relPayload as unknown as object[], isUpdate);\n case '11':\n return this.saveOneToOne(relEntity, relOpts, id, relPayload as unknown as object);\n case 'm1':\n if (relPayload) return this.saveManyToOne(entity, relEntity, relOpts, id, relPayload as unknown as object);\n }\n }\n\n private async saveToMany(\n relOpts: RelationOptions,\n relEntity: Type<object>,\n id: unknown,\n relPayload: object[],\n isUpdate?: boolean,\n ) {\n const { references, through } = relOpts;\n if (through) {\n const localField = references![0].local;\n const throughEntity = through();\n if (isUpdate) {\n await this.deleteMany(throughEntity, { $where: { [localField]: id } as QueryWhere<object> });\n }\n if (relPayload) {\n const savedIds = await this.saveMany(relEntity, relPayload);\n const throughBodies = savedIds.map((relId) => ({\n [references![0].local]: id,\n [references![1].local]: relId,\n }));\n await this.insertMany(throughEntity, throughBodies);\n }\n return;\n }\n const foreignField = references![0].foreign;\n if (isUpdate) {\n await this.deleteMany(relEntity, { $where: { [foreignField]: id } as QueryWhere<object> });\n }\n if (relPayload) {\n for (const it of relPayload) {\n (it as RawRow)[foreignField] = id;\n }\n await this.saveMany(relEntity, relPayload);\n }\n }\n\n private async saveOneToOne(relEntity: Type<object>, relOpts: RelationOptions, id: unknown, relPayload: object) {\n const foreignField = relOpts.references![0].foreign;\n if (relPayload === null) {\n await this.deleteMany(relEntity, { $where: { [foreignField!]: id } as QueryWhere<object> });\n return;\n }\n await this.saveOne(relEntity, { ...relPayload, [foreignField!]: id });\n }\n\n private async saveManyToOne<E extends object>(\n entity: Type<E>,\n relEntity: Type<object>,\n relOpts: RelationOptions,\n id: IdValue<E>,\n relPayload: object,\n ) {\n const localField = relOpts.references![0].local;\n const referenceId = await this.insertOne(relEntity, relPayload);\n await this.updateOneById(entity, id, { [localField]: referenceId } as E);\n }\n\n abstract readonly hasOpenTransaction: boolean;\n\n async transaction<T>(callback: () => Promise<T>, opts?: TransactionOptions) {\n if (this.hasOpenTransaction) {\n return callback();\n }\n try {\n await this.beginTransaction(opts);\n const res = await callback();\n await this.commitTransaction();\n return res;\n } catch (err) {\n await this.rollbackTransaction();\n throw err;\n } finally {\n await this.release();\n }\n }\n\n /**\n * Emit a lifecycle hook event for the given entity.\n * Fires global listeners first, then entity-level hooks.\n */\n private async emitHook<E extends object>(entity: Type<E>, event: HookEvent, payloads: E[]): Promise<void> {\n const listeners = this.extra?.listeners;\n const meta = getMeta(entity);\n const registrations = meta.hooks?.[event];\n\n // Fast bail-out: skip if no listeners and no entity hooks\n if (!listeners?.length && !registrations?.length) return;\n\n // Fire global listeners first\n if (listeners?.length) {\n for (const listener of listeners) {\n const fn = listener[event];\n if (fn) {\n const result = fn({ entity, querier: this, payloads, event });\n if (result instanceof Promise) await result;\n }\n }\n }\n\n // Fire entity-level hooks\n if (registrations?.length) {\n await runHooks(entity, event, payloads, { querier: this });\n }\n }\n\n async releaseIfFree() {\n if (!this.hasOpenTransaction) {\n await this.internalRelease();\n }\n }\n\n /**\n * Schedules a task to be executed serially in the querier instance.\n * This is used by the @Serialized decorator to protect database-level operations.\n *\n * @param task - The async task to execute.\n * @returns A promise that resolves with the task's result.\n */\n protected async serialize<T>(task: () => Promise<T>): Promise<T> {\n const res = this.taskQueue.then(task);\n this.taskQueue = res.catch(() => {});\n return res;\n }\n\n abstract beginTransaction(opts?: TransactionOptions): Promise<void>;\n\n abstract commitTransaction(): Promise<void>;\n\n abstract rollbackTransaction(): Promise<void>;\n\n protected abstract internalRelease(): Promise<void>;\n\n @Serialized()\n async release(): Promise<void> {\n return this.internalRelease();\n }\n}\n","import type { AbstractSqlDialect } from '../dialect/index.js';\nimport { getMeta } from '../entity/index.js';\nimport type {\n ExtraOptions,\n IdValue,\n Query,\n QueryAggregate,\n QueryAggregateResult,\n QueryConflictPaths,\n QueryOptions,\n QuerySearch,\n QueryUpdateResult,\n RawRow,\n SqlQuerier,\n TransactionOptions,\n Type,\n UpdatePayload,\n} from '../type/index.js';\nimport {\n buildUpdateResult,\n clone,\n getRelationRequestSummary,\n obtainAttrsPaths,\n throwNoPendingTransaction,\n throwPendingTransaction,\n unflatObject,\n unflatObjects,\n} from '../util/index.js';\nimport type { BuildUpdateResultPayload } from '../util/sql.util.js';\nimport { AbstractQuerier } from './abstractQuerier.js';\nimport { Log, Serialized } from './decorator/index.js';\n\nexport abstract class AbstractSqlQuerier extends AbstractQuerier implements SqlQuerier {\n private hasPendingTransaction?: boolean;\n\n constructor(\n readonly dialect: AbstractSqlDialect,\n override readonly extra?: ExtraOptions,\n ) {\n super(extra);\n }\n\n /**\n * internal read query.\n */\n protected abstract internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;\n\n /**\n * internal insert/update/delete/ddl query.\n */\n protected abstract internalRun(query: string, values?: unknown[]): Promise<QueryUpdateResult>;\n\n /**\n * Build a QueryUpdateResult with affected changes and calculated IDs.\n */\n protected buildUpdateResult(payload: BuildUpdateResultPayload): QueryUpdateResult {\n return buildUpdateResult({\n insertIdStrategy: this.dialect.insertIdStrategy,\n ...payload,\n });\n }\n\n /**\n * Hook for subclasses (e.g. pool queriers) to establish a connection.\n * Called before every query but outside the `@Log()` timer.\n */\n protected async lazyConnect(): Promise<void> {}\n\n @Serialized()\n async all<T>(query: string, values?: unknown[]): Promise<T[]> {\n await this.lazyConnect();\n return this.timedAll<T>(query, values);\n }\n\n @Log()\n private async timedAll<T>(query: string, values?: unknown[]): Promise<T[]> {\n return this.internalAll<T>(query, this.dialect.normalizeValues(values));\n }\n\n @Serialized()\n async run(query: string, values?: unknown[]): Promise<QueryUpdateResult> {\n await this.lazyConnect();\n return this.timedRun(query, values);\n }\n\n @Log()\n private async timedRun(query: string, values?: unknown[]): Promise<QueryUpdateResult> {\n return this.internalRun(query, this.dialect.normalizeValues(values));\n }\n\n protected override async internalFindMany<E extends object>(entity: Type<E>, q: Query<E>) {\n const ctx = this.dialect.createContext();\n this.dialect.find(ctx, entity, q);\n const res = await this.all<RawRow>(ctx.sql, ctx.values);\n const founds = unflatObjects<E>(res).map((row) => this.hydrateJsonFields(entity, row));\n await this.fillToManyRelations(entity, founds, q.$populate);\n return founds;\n }\n\n protected override async *internalFindManyStream<E extends object>(entity: Type<E>, q: Query<E>) {\n const meta = getMeta(entity);\n const { toManyKeys } = getRelationRequestSummary(meta, q.$populate);\n if (toManyKeys.length) {\n throw new TypeError(\n `findManyStream does not load to-many relations (${toManyKeys.join(', ')}). Use findMany so fillToManyRelations can run, or omit those keys from the stream query.`,\n );\n }\n const ctx = this.dialect.createContext();\n this.dialect.find(ctx, entity, q);\n const normalizedParams = this.dialect.normalizeValues(ctx.values);\n let attrsPaths: Record<string, string[]> | undefined;\n for await (const row of this.internalStream<RawRow>(ctx.sql, normalizedParams)) {\n attrsPaths ??= obtainAttrsPaths(row);\n yield this.hydrateJsonFields(entity, unflatObject<E>(row, attrsPaths));\n }\n }\n\n /**\n * Internal streaming query — returns an async iterable of raw rows.\n * Default implementation falls back to `internalAll()` then yields each row.\n * Drivers with native cursor/streaming APIs (SQLite, Pg) should override this.\n */\n protected async *internalStream<T>(query: string, values?: unknown[]): AsyncIterable<T> {\n const rows = await this.internalAll<T>(query, this.dialect.normalizeValues(values));\n yield* rows;\n }\n\n private hydrateJsonFields<E extends object>(entity: Type<E>, dto: E): E {\n this.hydrateJsonFieldsRecursive(entity, dto, new WeakSet<object>());\n return dto;\n }\n\n private hydrateJsonFieldsRecursive<E extends object>(entity: Type<E>, dto: E, visited: WeakSet<object>) {\n if (!dto || typeof dto !== 'object' || visited.has(dto)) {\n return;\n }\n visited.add(dto);\n\n const meta = getMeta(entity);\n const row = dto as Record<string, unknown>;\n\n for (const key in meta.fields) {\n const field = meta.fields[key];\n if (!field || (field.type !== 'json' && field.type !== 'jsonb')) {\n continue;\n }\n const value = row[key];\n if (typeof value !== 'string') {\n continue;\n }\n try {\n row[key] = JSON.parse(value);\n } catch {\n // Keep the original value when the driver returns non-JSON text.\n }\n }\n\n for (const key in meta.relations) {\n const rel = meta.relations[key];\n const relEntity = rel?.entity?.();\n if (!relEntity) {\n continue;\n }\n const value = row[key];\n if (Array.isArray(value)) {\n for (const it of value) {\n this.hydrateJsonFieldsRecursive(relEntity, it, visited);\n }\n continue;\n }\n if (value && typeof value === 'object') {\n this.hydrateJsonFieldsRecursive(relEntity, value, visited);\n }\n }\n }\n\n protected override async internalCount<E extends object>(entity: Type<E>, q: QuerySearch<E> = {}) {\n const ctx = this.dialect.createContext();\n this.dialect.count(ctx, entity, q);\n const res = await this.all<{ count: number }>(ctx.sql, ctx.values);\n return Number(res[0].count);\n }\n\n protected override async internalAggregate<E extends object, Q extends QueryAggregate<E>>(\n entity: Type<E>,\n q: Q,\n ): Promise<QueryAggregateResult<E, Q['$group']>[]> {\n const ctx = this.dialect.createContext();\n this.dialect.aggregate(ctx, entity, q);\n // biome-ignore lint/suspicious/noExplicitAny: raw DB rows satisfy QueryAggregateResult at runtime but TS can't verify\n return this.all<any>(ctx.sql, ctx.values);\n }\n\n override async internalInsertMany<E extends object>(entity: Type<E>, payload: E[]) {\n if (!payload?.length) {\n return [];\n }\n payload = clone(payload);\n const ctx = this.dialect.createContext();\n this.dialect.insert(ctx, entity, payload);\n const { ids = [] } = await this.run(ctx.sql, ctx.values);\n const meta = getMeta(entity);\n const idKey = meta.id!;\n const payloadIds = payload.map((it, index) => {\n const id = ids[index] as E[typeof idKey];\n it[idKey] ??= id;\n return it[idKey];\n });\n await this.insertRelations(entity, payload);\n return payloadIds as IdValue<E>[];\n }\n\n override async internalUpdateMany<E extends object>(entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>) {\n payload = clone(payload);\n const ctx = this.dialect.createContext();\n this.dialect.update(ctx, entity, q, payload);\n const { changes = 0 } = await this.run(ctx.sql, ctx.values);\n await this.updateRelations(entity, q, payload);\n return changes;\n }\n\n override async upsertOne<E extends object>(entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E) {\n return this.upsertMany(entity, conflictPaths, [payload]);\n }\n\n override async upsertMany<E extends object>(entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E[]) {\n if (!payload?.length) {\n return { changes: 0 };\n }\n payload = clone(payload);\n const ctx = this.dialect.createContext();\n this.dialect.upsert(ctx, entity, conflictPaths, payload);\n return this.run(ctx.sql, ctx.values);\n }\n\n protected override async internalDeleteMany<E extends object>(\n entity: Type<E>,\n q: QuerySearch<E>,\n opts?: QueryOptions,\n ) {\n const meta = getMeta(entity);\n const findCtx = this.dialect.createContext();\n this.dialect.find(findCtx, entity, { ...q, $select: { [meta.id!]: true } } as Query<E>);\n const founds = await this.all<E>(findCtx.sql, findCtx.values);\n if (!founds.length) {\n return 0;\n }\n const ids = founds.map((it) => it[meta.id!]);\n const deleteCtx = this.dialect.createContext();\n this.dialect.delete(deleteCtx, entity, { $where: ids }, opts);\n const { changes = 0 } = await this.run(deleteCtx.sql, deleteCtx.values);\n await this.deleteRelations(entity, ids, opts);\n return changes;\n }\n\n override get hasOpenTransaction() {\n return !!this.hasPendingTransaction;\n }\n\n @Serialized()\n override async beginTransaction(opts?: TransactionOptions) {\n if (this.hasPendingTransaction) {\n throwPendingTransaction();\n }\n await this.lazyConnect();\n const statements = this.dialect.getBeginTransactionStatements(opts?.isolationLevel);\n for (const sql of statements) {\n await this.internalRun(sql);\n }\n this.hasPendingTransaction = true;\n }\n\n @Serialized()\n override async commitTransaction() {\n if (!this.hasPendingTransaction) {\n throwNoPendingTransaction();\n }\n await this.internalRun(this.dialect.commitTransactionCommand);\n this.hasPendingTransaction = false;\n }\n\n @Serialized()\n override async rollbackTransaction() {\n if (!this.hasPendingTransaction) {\n throwNoPendingTransaction();\n }\n await this.internalRun(this.dialect.rollbackTransactionCommand);\n this.hasPendingTransaction = false;\n }\n}\n","import type { AbstractSqlDialect } from '../dialect/index.js';\nimport type { ExtraOptions } from '../type/index.js';\nimport { throwPendingTransaction } from '../util/index.js';\nimport { AbstractSqlQuerier } from './abstractSqlQuerier.js';\n\nexport abstract class AbstractPoolQuerier<C> extends AbstractSqlQuerier {\n protected conn: C | undefined;\n\n protected getConn(): C {\n if (!this.conn) throw new TypeError('pool querier not connected');\n return this.conn;\n }\n\n constructor(\n dialect: AbstractSqlDialect,\n protected readonly connect: () => Promise<C>,\n override readonly extra?: ExtraOptions,\n ) {\n super(dialect, extra);\n }\n\n protected override async lazyConnect() {\n this.conn ??= await this.connect();\n }\n\n override async internalRelease() {\n if (this.hasOpenTransaction) {\n throwPendingTransaction();\n }\n if (!this.conn) {\n return;\n }\n await this.releaseConn(this.conn);\n this.conn = undefined;\n }\n\n protected abstract releaseConn(conn: C): Promise<void>;\n}\n","import type { ReservedSQL, SQL } from 'bun';\nimport type { PrimaryKey, RawRow, SqlDialectName } from '../type/index.js';\n\nexport type BunSqlResult<T = RawRow> = T[] & {\n count?: number;\n affectedRows?: number;\n lastInsertRowid?: PrimaryKey;\n};\n\nexport function getAffectedRows(res: BunSqlResult): number {\n if (Array.isArray(res) && res.length) {\n return res.length;\n }\n return res.affectedRows || res.count || 0;\n}\n\nexport function isReservedConnection(conn: unknown): conn is ReservedSQL {\n return !!(conn && typeof (conn as ReservedSQL).release === 'function');\n}\n\nexport function isPoolableDialect(dialectName: SqlDialectName): boolean {\n return dialectName !== 'sqlite';\n}\n\n/**\n * Robustly infers the UQL SqlDialect from a Bun SQL.Options object.\n */\nexport function inferDialectName(config: SQL.Options): SqlDialectName {\n if ((config as SQL.SQLiteOptions).filename) return 'sqlite';\n const opts = config as SQL.PostgresOrMySQLOptions;\n if (opts.url) {\n const urlStr = opts.url.toString();\n if (urlStr === ':memory:' || urlStr.endsWith('.db') || urlStr.endsWith('.sqlite')) {\n return 'sqlite';\n }\n const scheme = urlStr.split(':')[0] as SqlDialectName;\n const dialect = DialectMap[scheme];\n if (dialect) return dialect;\n }\n if (opts.adapter) return opts.adapter as SqlDialectName;\n return 'postgres';\n}\n\nconst DialectMap = {\n postgres: 'postgres',\n postgresql: 'postgres',\n mysql: 'mysql',\n mysql2: 'mysql',\n mariadb: 'mariadb',\n sqlite: 'sqlite',\n sqlite3: 'sqlite',\n cockroachdb: 'cockroachdb',\n} as const satisfies Record<SqlDialectName | string, SqlDialectName>;\n\n/**\n * Normalizes SQL.Options into a structure that Bun's SQL engine expects for a given dialect.\n * Crucially handles 'filename' mapping for SQLite and alias resolution for Cockroach/MariaDB.\n */\nexport function normalizeBunOpts(config: SQL.Options, dialectName: SqlDialectName): SQL.Options {\n if (dialectName === 'sqlite') {\n const rawFilename =\n ('filename' in config ? config.filename : null) || ('url' in config ? config.url : null) || ':memory:';\n return {\n ...config,\n adapter: 'sqlite',\n filename: rawFilename.toString(),\n } satisfies SQL.SQLiteOptions;\n }\n\n const adapter = dialectName === 'cockroachdb' ? 'postgres' : dialectName;\n const opts: SQL.PostgresOrMySQLOptions = { bigint: true, ...config, adapter };\n\n if (!opts.url) {\n return opts;\n }\n\n try {\n const url = opts.url instanceof URL ? opts.url : new URL(opts.url);\n if (url.searchParams.get('sslmode') === 'no-verify') {\n url.searchParams.delete('sslmode');\n opts.url = url.toString();\n opts.tls = { rejectUnauthorized: false, ...(typeof opts.tls === 'object' ? opts.tls : undefined) };\n }\n } catch (_) {}\n\n return opts as SQL.Options;\n}\n\n/**\n * Normalizes Bun result rows into plain JavaScript objects and coerces BigInts to numbers.\n * This ensures compatibility with UQL's expected return types and reliable JSON serialization.\n */\nexport function normalizeRows<T>(res: BunSqlResult<T>): T[] {\n const rows: T[] = [];\n for (const row of res) {\n let cleanRow: RawRow | undefined;\n const sourceRow = row as RawRow;\n for (const key in sourceRow) {\n const value = sourceRow[key];\n if (typeof value === 'bigint') {\n // Clone only when needed so non-bigint rows can pass through untouched.\n cleanRow ??= { ...sourceRow };\n cleanRow[key] = Number(value);\n }\n }\n rows.push((cleanRow ?? sourceRow) as T);\n }\n return rows;\n}\n\n/**\n * Robustly extracts the last inserted ID from a Bun SQL result.\n * Handles BigInt-to-number coercion for cross-dialect consistency.\n */\nexport function getInsertId(res: BunSqlResult): PrimaryKey | undefined {\n return typeof res.lastInsertRowid === 'bigint' ? Number(res.lastInsertRowid) : res.lastInsertRowid;\n}\n","import type { ReservedSQL, SQL } from 'bun';\nimport type { AbstractSqlDialect } from '../dialect/index.js';\nimport { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';\nimport type { ExtraOptions, RawRow } from '../type/index.js';\nimport { type BunSqlResult, getAffectedRows, getInsertId, isReservedConnection, normalizeRows } from './bunSql.util.js';\n\nexport class BunSqlQuerier extends AbstractPoolQuerier<ReservedSQL> {\n constructor(\n readonly sql: SQL,\n dialect: AbstractSqlDialect,\n connFactory: () => Promise<ReservedSQL>,\n override readonly extra?: ExtraOptions,\n ) {\n super(dialect, connFactory, extra);\n }\n\n override async internalAll<T>(query: string, values?: unknown[]) {\n const res = await this.execute<T>(query, values);\n return normalizeRows(res);\n }\n\n override async internalRun(query: string, values?: unknown[]) {\n const res = await this.execute<RawRow>(query, values);\n const rows = normalizeRows(res);\n\n // Bun's result metadata varies by query type; use the base builder to map safely.\n return this.buildUpdateResult({\n rows,\n changes: getAffectedRows(res),\n id: getInsertId(res),\n upsertStatus: res.affectedRows,\n });\n }\n\n private async execute<T>(query: string, values?: unknown[]): Promise<BunSqlResult<T>> {\n // Safe: UQL parameters are strictly bound. .unsafe() correctly bypasses Bun's tagged template\n // literal parsing requirement so we can execute our dynamically compiled AST strings natively.\n return this.getConn().unsafe<BunSqlResult<T>>(query, values);\n }\n\n protected override async releaseConn(conn: ReservedSQL) {\n if (isReservedConnection(conn)) {\n await conn.release();\n }\n }\n}\n","import { PostgresDialect } from '../postgres/postgresDialect.js';\nimport type { VectorDistance } from '../type/index.js';\n\n/**\n * CockroachDB Dialect.\n * Completely leverages PostgresDialect directly since they share wire compatibility.\n * CockroachDB natively supports `(xmax = 0)` to allow Postgres-compatible ORMs\n * to perform `upsert` queries without custom overrides.\n */\nexport class CockroachDialect extends PostgresDialect {\n override readonly dialectName = 'cockroachdb';\n\n override readonly serialPrimaryKey = 'SERIAL PRIMARY KEY';\n\n override readonly vectorOpsClass: Readonly<Record<VectorDistance, string>> | undefined = undefined;\n\n override readonly vectorExtension: string | undefined = undefined;\n}\n","import SqlString from 'sqlstring';\nimport type { DialectFeatures, QueryContext, QuerySizeComparisonOps } from '../type/index.js';\nimport type { DialectOptions } from './abstractDialect.js';\nimport { AbstractSqlDialect } from './abstractSqlDialect.js';\nimport { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';\n\n/**\n * Shared JSON-array / JSON-object operator implementation between MySQL and MariaDB.\n *\n * Both dialects support the MySQL-compatible JSON functions/operators used by:\n * - `$size` (JSON_LENGTH)\n * - `$all` (JSON_CONTAINS)\n * - `$elemMatch` (JSON_TABLE, or fast JSON_CONTAINS for the simple case)\n */\nexport abstract class MysqlLikeSqlDialect extends AbstractSqlDialect {\n /** Default {@link DialectFeatures} for MySQL-compatible SQL dialects. */\n static readonly defaultDialectFeatures: DialectFeatures = {\n explicitJsonCast: false,\n nativeArrays: false,\n supportsJsonb: false,\n returning: false,\n ifNotExists: true,\n indexIfNotExists: false,\n dropTableCascade: false,\n renameColumn: true,\n foreignKeyAlter: true,\n columnComment: true,\n vectorIndexStyle: 'inline',\n vectorSupportsLength: false,\n supportsTimestamptz: false,\n defaultStringAsText: false,\n };\n\n override readonly quoteChar = '`';\n\n override readonly tableOptions = 'ENGINE=InnoDB DEFAULT CHARSET=utf8mb4';\n\n override readonly beginTransactionCommand = 'START TRANSACTION';\n\n override readonly commitTransactionCommand = 'COMMIT';\n\n override readonly rollbackTransactionCommand = 'ROLLBACK';\n\n override readonly isolationLevelStrategy = 'set-before';\n\n override readonly dropForeignKeySyntax = 'DROP FOREIGN KEY';\n\n override readonly dropIndexSyntax = 'on-table';\n\n override readonly renameTableSyntax = 'rename-table';\n\n override readonly alterColumnSyntax = 'MODIFY COLUMN';\n\n override readonly booleanLiteral = 'integer';\n\n override readonly insertIdStrategy = 'first';\n\n constructor(options: DialectOptions = {}) {\n super(MysqlLikeSqlDialect.defaultDialectFeatures, options);\n }\n\n override escape(value: unknown): string {\n return SqlString.escape(value);\n }\n\n protected override numericCast(expr: string): string {\n return `CAST(${expr} AS DECIMAL)`;\n }\n\n protected override ilikeExpr(f: string, ph: string): string {\n return `${f} LIKE ${ph}`;\n }\n\n protected override neExpr(field: string, ph: string): string {\n // MySQL/MariaDB null-safe inequality: true when values differ or one side is NULL.\n return `NOT (${field} <=> ${ph})`;\n }\n\n protected override jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string {\n return `JSON_CONTAINS(${jsonField}, ${this.addValue(ctx.values, JSON.stringify(value))})`;\n }\n\n protected override jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string {\n const tmpCtx = this.createContext();\n this.buildSizeComparison(tmpCtx, () => tmpCtx.append(`JSON_LENGTH(${jsonField})`), value);\n ctx.pushValue(...tmpCtx.values);\n return tmpCtx.sql;\n }\n\n protected override jsonElemMatch(ctx: QueryContext, jsonField: string, match: Record<string, unknown>): string {\n const isPrimitiveElement = Object.keys(match).some((k) => k.startsWith('$'));\n\n if (isPrimitiveElement) {\n const ops = Object.entries(match);\n const conditions = ops.map(([op, opVal]) =>\n this.buildJsonFieldCondition(ctx, () => 'jt.elem_text', '', op, opVal),\n );\n return `EXISTS (SELECT 1 FROM JSON_TABLE(${jsonField}, '$[*]' COLUMNS (elem_text TEXT PATH '$')) AS jt WHERE ${conditions.join(\n ' AND ',\n )})`;\n }\n\n const hasOperators = Object.values(match).some(\n (v) => v && typeof v === 'object' && !Array.isArray(v) && Object.keys(v).some((k) => k.startsWith('$')),\n );\n\n if (!hasOperators) {\n return `JSON_CONTAINS(${jsonField}, ${this.addValue(ctx.values, JSON.stringify([match]))})`;\n }\n\n const fields = Object.keys(match);\n const columns = fields.map((f) => `${this.escapeId(f, true)} TEXT PATH '$.${this.escapeJsonKey(f)}'`).join(', ');\n\n const conditions = buildElemMatchConditions(\n match,\n (field, op, opVal) => this.buildJsonFieldCondition(ctx, (f) => `jt.${this.escapeId(f, true)}`, field, op, opVal),\n (field, val) => `jt.${this.escapeId(field, true)} = ${this.addValue(ctx.values, val)}`,\n );\n\n return `EXISTS (SELECT 1 FROM JSON_TABLE(${jsonField}, '$[*]' COLUMNS (${columns})) AS jt WHERE ${conditions.join(\n ' AND ',\n )})`;\n }\n}\n","import type { DialectOptions } from '../dialect/abstractDialect.js';\nimport { MysqlLikeSqlDialect } from '../dialect/mysqlLikeSqlDialect.js';\nimport { getMeta } from '../entity/index.js';\nimport type { QueryConflictPaths, QueryContext, QueryOptions, Type, VectorDistance } from '../type/index.js';\n\nexport class MariaDialect extends MysqlLikeSqlDialect {\n override readonly dialectName = 'mariadb';\n\n override readonly serialPrimaryKey = 'BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY';\n\n constructor(options: DialectOptions = {}) {\n super({\n ...options,\n driverCapabilities: {\n vectorSupportsLength: true,\n ...options.driverCapabilities,\n },\n });\n }\n\n override insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void {\n super.insert(ctx, entity, payload, opts);\n ctx.append(' ' + this.returningId(entity));\n }\n\n override upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void {\n const meta = getMeta(entity);\n const updateCtx = this.createContext();\n const update = this.getUpsertUpdateAssignments(\n updateCtx,\n meta,\n conflictPaths,\n payload,\n (name) => `VALUES(${name})`,\n );\n const returning = this.returningId(entity);\n\n if (update) {\n super.insert(ctx, entity, payload);\n ctx.append(` ON DUPLICATE KEY UPDATE ${update} ${returning}`);\n ctx.pushValue(...updateCtx.values);\n } else {\n const insertCtx = this.createContext();\n super.insert(insertCtx, entity, payload);\n ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));\n ctx.append(' ' + returning);\n ctx.pushValue(...insertCtx.values);\n }\n }\n\n protected override getJsonPathScalarExpr(escapedColumn: string, jsonPath: string): string {\n const escapedPath = jsonPath\n .split('.')\n .map((segment) => this.escapeJsonKey(segment))\n .join('.');\n // MariaDB does not support MySQL's -> / ->> JSON shorthand operators.\n // JSON_VALUE keeps dot-notation access native and portable across MariaDB versions.\n return `JSON_VALUE(${escapedColumn}, '$.${escapedPath}')`;\n }\n\n /** MariaDB does not support CAST(val AS JSON). We use JSON_EXTRACT to convert string to JSON. */\n protected override getJsonCastExpr(): string {\n return \"JSON_EXTRACT(?, '$')\";\n }\n\n /** MariaDB 11.7+ vector distance functions. */\n protected override readonly vectorDistanceFns: Partial<Record<VectorDistance, string>> = {\n cosine: 'VEC_DISTANCE_COSINE',\n l2: 'VEC_DISTANCE_EUCLIDEAN',\n };\n}\n","import { MysqlLikeSqlDialect } from '../dialect/mysqlLikeSqlDialect.js';\n\nexport class MySqlDialect extends MysqlLikeSqlDialect {\n override readonly dialectName = 'mysql';\n\n override readonly serialPrimaryKey = 'BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY';\n}\n","import { type ReservedSQL, SQL } from 'bun';\nimport { CockroachDialect } from '../cockroachdb/cockroachDialect.js';\nimport type { DialectOptions } from '../dialect/abstractDialect.js';\nimport type { AbstractSqlDialect } from '../dialect/abstractSqlDialect.js';\nimport { MariaDialect } from '../maria/mariaDialect.js';\nimport { MySqlDialect } from '../mysql/mysqlDialect.js';\nimport { AbstractQuerierPool } from '../querier/index.js';\nimport type { ExtraOptions, SqlDialectName, SqlPoolCompat } from '../type/index.js';\nimport {\n type BunSqlResult,\n getAffectedRows,\n inferDialectName,\n isPoolableDialect,\n normalizeBunOpts,\n normalizeRows,\n} from './bunSql.util.js';\nimport { BunSqliteDialect } from './bunSqliteDialect.js';\nimport { BunSqlPostgresDialect } from './bunSqlPostgresDialect.js';\nimport { BunSqlQuerier } from './bunSqlQuerier.js';\n\ntype DialectConstructor = new (options: DialectOptions) => AbstractSqlDialect;\n\nconst DialectMap: Readonly<Record<SqlDialectName, DialectConstructor>> = {\n postgres: BunSqlPostgresDialect,\n mysql: MySqlDialect,\n mariadb: MariaDialect,\n sqlite: BunSqliteDialect,\n cockroachdb: CockroachDialect,\n};\n\nexport class BunSqlQuerierPool extends AbstractQuerierPool<AbstractSqlDialect, BunSqlQuerier> {\n readonly sql: SQL;\n readonly sqlDialectName: SqlDialectName;\n\n constructor(\n readonly config: SQL.Options,\n extra?: ExtraOptions,\n ) {\n const dialectName = inferDialectName(config);\n super(new DialectMap[dialectName]({ namingStrategy: extra?.namingStrategy }), extra);\n this.sqlDialectName = dialectName;\n\n const opts = normalizeBunOpts(config, dialectName);\n this.sql = new SQL(opts);\n }\n\n /**\n * Provides a pg-compatible interface for libraries like connect-pg-simple.\n * Connection release is handled automatically by Bun's native pool.\n */\n get pool(): SqlPoolCompat {\n return {\n query: (text: string, values?: unknown[]) =>\n this.sql.unsafe<BunSqlResult>(text, this.dialect.normalizeValues(values)).then((res) => ({\n rows: normalizeRows(res),\n rowCount: getAffectedRows(res),\n })),\n on: () => {\n /* no-op for event listeners */\n },\n };\n }\n\n async getQuerier() {\n const connFactory = async () => {\n // Bun's SQLite adapter does not support connection reservation (it's unpooled).\n if (!isPoolableDialect(this.sqlDialectName)) {\n return this.sql as ReservedSQL;\n }\n return this.sql.reserve();\n };\n return new BunSqlQuerier(this.sql, this.dialect, connFactory, this.extra);\n }\n\n async end() {\n await this.sql.close();\n }\n}\n"],"names":["resolveVectorCast","field","raw","columnType","type","mergeDialectFeatures","defaults","patch","AbstractDialect","featureDefaults","options","namingStrategy","features","driverCapabilities","resolveTableName","entity","meta","name","tableName","resolveColumnName","key","columnName","SqlQueryContext","dialect","sqlChunks","params","append","sql","push","addValue","value","pushValue","values","map","v","normalizeValue","join","AbstractSqlDialect","engineDefaults","isolationLevelStrategy","alterColumnStrategy","alterColumnSyntax","dropForeignKeySyntax","dropIndexSyntax","renameTableSyntax","booleanLiteral","vectorOpsClass","undefined","vectorExtension","vectorDistanceFns","escapeIdChar","quoteChar","getBeginTransactionStatements","isolationLevel","level","toUpperCase","strategy","beginTransactionCommand","createContext","placeholder","length","Date","Uint8Array","QueryRaw","Number","normalizeValues","_index","returningId","getMeta","idKey","id","idName","fields","escapeId","search","ctx","q","opts","prefix","resolveRelationAwarePrefix","$select","$populate","where","$where","sort","$sort","pager","selectFields","select","exclude","escapedPrefix","selectArr","Array","isArray","normalizeScalarFieldSelection","includes","forEach","index","getRawValue","autoPrefixAlias","virtual","RAW_VALUE","aliasStr","populate","distinct","mapSelect","selectRelationFields","sortMap","buildSortMap","val","Object","entries","isVectorSearch","$project","appendVectorProjection","selectRelationJoins","autoPrefix","isPopulatingRelations","forEachJoinableRelation","relEntity","relQuery","joinRelAlias","$exclude","relOpts","required","relMeta","relTableName","relEntityName","relPath","joinType","joinAlias","refAppended","it","references","relField","foreign","local","foreignColumnName","localColumnName","clause","callback","relKeys","getRelationRequestSummary","joinableKeys","relKey","relations","isFirstLevel","query","parseRelationAtKey","usePrecedence","softDelete","buildQueryWhereAsMap","whereKeys","getKeys","hasMultipleKeys","appended","compare","getComparisonKey","searchFields","$fields","getFieldKeys","fKey","$value","compareLogicalOperator","jsonDot","resolveJsonDotPath","compareJsonPath","TypeError","rel","valObj","keys","compareRelationSize","compareRelation","normalizeWhereValue","operators","op","compareFieldOperator","NEGATE_OP_MAP","negate","valArr","hasManyItems","whereEntry","$not","$nor","COMPARE_OP_MAP","$gt","$gte","$lt","$lte","LIKE_OP_MAP","$startsWith","$istartsWith","toLowerCase","$endsWith","$iendsWith","$includes","$iincludes","$like","$ilike","resolveColumnWithPrefix","resolveOperandField","col","appendFieldSql","simpleOp","likeWrap","appendLikeOp","appendEqNe","regexpOp","appendInNin","min","max","jsonAll","jsonSize","jsonElemMatch","wrappedVal","isIlike","startsWith","ph","ilikeExpr","likeFn","neExpr","neOp","formatIn","addValues","vals","buildJsonFieldCondition","fieldAccessor","jsonPath","jsonField","numericCast","jsonInNin","isJsonbOp","hasKeys","vectorEntries","directionEntries","flattenedSort","flatObject","allEntries","appendVectorSort","direction","SORT_DIRECTION_MAP","accessor","resolveVectorSortParams","colName","distance","$distance","vectorCast","appendFunctionVectorSort","dialectName","fn","Error","$vector","$limit","$skip","count","aggregate","groupKeys","selectParts","aggregateExpressions","entry","parseGroupMap","$group","kind","alias","escaped","sqlFn","slice","sqlArg","fieldRef","expr","$having","having","aggregateSort","dir","ref","filter","condition","havingCondition","assign","asc","desc","havingOpMap","$eq","$ne","ops","i","sqlOp","find","$distinct","insert","payload","payloads","fillOnFields","filterFieldKeys","columns","recordIndex","keyIndex","formatPersistableValue","update","filledPayload","escapedCol","isJsonUpdateOp","formatJsonUpdate","upsert","conflictPaths","updateCtx","getUpsertUpdateAssignments","insertCtx","replace","sample","cloned","hasOwn","valCtx","onConflictUpsert","insertFn","keysStr","getUpsertConflictPathsStr","onConflict","delete","onDelete","getFieldCallbackValue","forbidQualified","addDot","escapeSqlId","getPersistables","callbackKey","getPersistable","reduce","acc","isJsonType","JSON","stringify","getJsonCastExpr","$merge","merge","escapeJsonKey","$push","$unset","rawValue","res","isNaN","String","RAW_ALIAS","fullAlias","dotIndex","indexOf","root","asJsonb","getJsonPathJsonbExpr","getJsonPathScalarExpr","resolved","f","escapedColumn","segments","split","segment","$in","parentTable","parentId","escapedParentId","relatedEntity","relatedMeta","relatedTable","cardinality","through","throughEntity","throughMeta","throughTable","localFk","foreignFk","relatedId","joinLeft","joinRight","sizeVal","appendSubquery","buildSizeComparison","sizeExprFn","appendSizeOp","phs","toString","buildElemMatchConditions","match","onOperator","onEq","conditions","opVal","SINGLE_QUOTE","escapeStringLiteral","zeroPad","n","len","s","dateToLocalSqlLiteral","date","y","getFullYear","mo","getMonth","d","getDate","h","getHours","mi","getMinutes","getSeconds","ms","getMilliseconds","inner","isByteSource","Buffer","isBuffer","bytesToHexLiteral","buf","hex","padStart","arrayToSqlList","arr","escapeAnsiSqlLiteral","isFinite","getTime","toSqlString","SqliteDialect","defaultDialectFeatures","explicitJsonCast","nativeArrays","supportsJsonb","returning","ifNotExists","indexIfNotExists","dropTableCascade","renameColumn","foreignKeyAlter","columnComment","vectorIndexStyle","vectorSupportsLength","supportsTimestamptz","defaultStringAsText","serialPrimaryKey","tableOptions","commitTransactionCommand","rollbackTransactionCommand","insertIdStrategy","cosine","l2","hamming","buildElemMatchCondition","_entity","bind","paths","k","escape","BunSqliteDialect","PostgresDialect","l1","toPgArray","jsonVal","tmpCtx","isPrimitiveElement","some","hasOperators","VECTOR_OPS","currentExpr","json","elements","from","b","str","POSTGRES_WIRE_DRIVER_CAPABILITIES","BunSqlPostgresDialect","DEFAULT_LOG_LEVELS","DefaultLogger","logQuery","duration","time","console","log","logSlowQuery","logParams","warn","logWarn","message","logError","error","logInfo","info","logSchema","logMigration","logSkippedMigration","LoggerWrapper","slowQuery","levels","Set","logger","loggerFunction","threshold","has","method","charAt","args","logFn","holder","globalThis","metaKey","Symbol","for","metas","Map","ensureMeta","get","set","processed","fillRelations","mappedBy","fillInverseSideRelations","relIdKey","relIdName","source","lowerFirst","upperFirst","target","fillThroughRelations","getMappedByRelationKey","mappedByRelation","reverse","keyMap","getRelationKeyMap","Log","_target","_key","propDescriptor","originalMethod","apply","startTime","performance","now","isSql","Math","round","Serialized","serialize","AbstractQuerier","release","emittedWarnings","clearEmittedWarningsForTests","clear","extra","taskQueue","Promise","resolve","validateProjectionQuery","validateProjectionQueryRecursive","path","forEachRequestedRelation","relValue","parsed","parseRelationQueryValue","nested","resolveEntityAndQuery","entityOrQuery","maybeQuery","prototype","$entity","findOneById","augmentWhere","findOne","rows","findMany","founds","internalFindMany","emitHook","findManyStream","internalFindManyStream","findManyAndCount","_","_l","_s","qCount","all","internalCount","internalAggregate","insertOne","insertMany","ids","internalInsertMany","updateOneById","updateMany","changes","internalUpdateMany","deleteOneById","deleteMany","qOrOpts","maybeOpts","rest","internalDeleteMany","saveOne","saveMany","toInsert","toUpdate","existingIds","insertedIds","updatedIds","data","fillToManyRelations","toManyKeys","relationQuery","clone","fillToManyThroughRelation","fillToManyOneToMany","localField","targetRelKey","throughFounds","$required","putChildrenInParents","foreignField","parents","children","parentIdKey","referenceKey","childrenByParentId","child","parent","insertRelations","filterPersistableRelationKeys","saveRelation","updateRelations","found","deleteRelations","isUpdate","relPayload","saveToMany","saveOneToOne","saveManyToOne","savedIds","throughBodies","relId","referenceId","transaction","hasOpenTransaction","beginTransaction","commitTransaction","err","rollbackTransaction","event","listeners","registrations","hooks","listener","result","querier","runHooks","releaseIfFree","internalRelease","task","then","catch","AbstractSqlQuerier","timedAll","run","timedRun","buildUpdateResult","lazyConnect","internalAll","internalRun","unflatObjects","row","hydrateJsonFields","normalizedParams","attrsPaths","internalStream","obtainAttrsPaths","unflatObject","dto","hydrateJsonFieldsRecursive","WeakSet","visited","add","parse","payloadIds","upsertOne","upsertMany","findCtx","deleteCtx","hasPendingTransaction","throwPendingTransaction","statements","throwNoPendingTransaction","AbstractPoolQuerier","getConn","conn","connect","releaseConn","getAffectedRows","affectedRows","isReservedConnection","isPoolableDialect","inferDialectName","config","filename","url","urlStr","endsWith","scheme","DialectMap","adapter","postgres","postgresql","mysql","mysql2","mariadb","sqlite","sqlite3","cockroachdb","normalizeBunOpts","rawFilename","bigint","URL","searchParams","tls","rejectUnauthorized","normalizeRows","cleanRow","sourceRow","getInsertId","lastInsertRowid","BunSqlQuerier","connFactory","execute","upsertStatus","unsafe","CockroachDialect","MysqlLikeSqlDialect","SqlString","MariaDialect","escapedPath","MySqlDialect","BunSqlQuerierPool","AbstractQuerierPool","sqlDialectName","SQL","pool","text","rowCount","on","getQuerier","reserve","end","close"],"mappings":"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"}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","x_google_ignoreList":[6,7,8,9,10,11,12,13]}
1
+ {"version":3,"file":"uql-browser.min.js","sources":["../../src/test/entityMock.ts","../../src/util/logger.ts","../../src/entity/metadata/definition.ts","../../src/test/it.util.ts","../../src/test/loadTsDefaultExportWithJiti.ts","../../src/test/mockQuerierPool.ts","../../../../node_modules/.bun/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js","../../../../node_modules/.bun/@vitest+pretty-format@4.1.9/node_modules/@vitest/pretty-format/dist/index.js","../../../../node_modules/.bun/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/display.js","../../../../node_modules/.bun/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/helpers.js","../../../../node_modules/.bun/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/timers.js","../../../../node_modules/.bun/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js","../../../../node_modules/.bun/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/source-map.js","../../../../node_modules/.bun/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/chunk-artifact.js","../../src/test/spec.util.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { Entity, Field, Id, ManyToMany, ManyToOne, OneToMany, OneToOne } from '../entity/index.js';\nimport { idKey, type Json, type QueryRawFnOptions, type Relation } from '../type/index.js';\nimport { raw } from '../util/index.js';\n\n/**\n * an `abstract` class can (optionally) be used as the base \"template\" for the entities\n * (so common fields' declaration is easily reused).\n */\nexport abstract class BaseEntity {\n /**\n * auto-generated primary-key (when the `onInsert` property is omitted).\n */\n @Id()\n id?: number;\n\n /**\n * foreign-keys are really simple to specify with the `reference` property.\n */\n @Field({ references: () => Company })\n companyId?: number;\n\n /**\n * The `Relation` wrapper type can be used in ESM projects for the relations to\n * avoid circular dependency issues.\n */\n @ManyToOne({ entity: () => Company })\n company?: Relation<Company>;\n\n @Field({ references: () => User })\n creatorId?: number;\n\n @ManyToOne({ entity: () => User })\n creator?: Relation<User>;\n\n /**\n * 'onInsert' property can be used to specify a custom mechanism for\n * obtaining the value of a field when inserting:\n */\n @Field({ onInsert: Date.now })\n createdAt?: number;\n\n /**\n * 'onUpdate' property can be used to specify a custom mechanism for\n * obtaining the value of a field when updating:\n */\n @Field({ onUpdate: Date.now })\n updatedAt?: number;\n}\n\nexport type CompanyKindKey = 'public' | 'private';\n\nexport type CompanyKind = { [k in CompanyKindKey]?: 0 | 1 } & {\n tags?: string[];\n description?: string;\n country?: string;\n meta?: Record<string, unknown>;\n isArchived?: boolean;\n};\n\n/**\n * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.\n */\n@Entity()\nexport class Company extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ type: 'jsonb' })\n kind?: Json<CompanyKind>;\n}\n\n/**\n * and entity can specify the table name.\n */\n@Entity({ name: 'user_profile' })\nexport class Profile extends BaseEntity {\n /**\n * an entity can specify its own ID Field and still inherit the others\n * columns/relations from its parent entity.\n */\n @Id()\n pk?: number;\n\n @Field({ name: 'image' })\n picture?: string;\n\n @OneToOne({ entity: () => User })\n declare creator?: Relation<User>;\n}\n\n@Entity()\nexport class User extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ updatable: false })\n email?: string;\n\n @Field({ eager: false })\n password?: string;\n\n /**\n * `mappedBy` property can be a callback or a string (callback is useful for auto-refactoring).\n */\n @OneToOne({ entity: () => Profile, mappedBy: (profile) => profile.creator!, cascade: true })\n profile?: Profile;\n\n @OneToMany({ entity: () => User, mappedBy: 'creator' })\n users?: User[];\n}\n\n@Entity()\nexport class UserWithNonUpdatableId {\n @Id({ updatable: false })\n id!: number;\n\n @Field()\n name!: string;\n}\n\n@Entity()\nexport class LedgerAccount extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ references: () => LedgerAccount })\n parentLedgerId?: number;\n\n @ManyToOne()\n parentLedger?: LedgerAccount;\n}\n\n@Entity()\nexport class TaxCategory extends BaseEntity {\n /**\n * `idKey` symbol can be used to specify the name of the identifier property,\n * so the type of the identifier can always be type-safe\n * (the identifiers named as `id` or `_id` are auto-inferred).\n */\n [idKey]?: 'pk';\n\n /**\n * an entity can override the ID Field and still inherit the others\n * columns/relations from its parent entity.\n * 'onInsert' property can be used to specify a custom mechanism for\n * auto-generating the primary-key's value when inserting.\n */\n @Id({ onInsert: randomUUID })\n pk?: string;\n\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Tax extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n percentage?: number;\n\n @Field({ references: () => TaxCategory })\n categoryId?: string;\n\n @ManyToOne()\n category?: TaxCategory;\n\n @Field()\n description?: string;\n}\n\n/**\n * `softDelete` will make the entity \"soft deletable\".\n */\n@Entity({ softDelete: true })\nexport class MeasureUnitCategory extends BaseEntity {\n @Field()\n name?: string;\n\n @OneToMany({ entity: () => MeasureUnit, mappedBy: (measureUnit) => measureUnit.categoryId! })\n measureUnits?: MeasureUnit[];\n\n /**\n * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.\n */\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity({ softDelete: true })\nexport class MeasureUnit extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ references: () => MeasureUnitCategory })\n categoryId?: number;\n\n @ManyToOne({ cascade: 'persist' })\n category?: MeasureUnitCategory;\n\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity()\nexport class Storehouse extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n address?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Item extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field()\n code?: string;\n\n @Field({ references: () => LedgerAccount })\n buyLedgerAccountId?: number;\n\n @ManyToOne()\n buyLedgerAccount?: LedgerAccount;\n\n @Field({ references: () => LedgerAccount })\n saleLedgerAccountId?: number;\n\n @ManyToOne()\n saleLedgerAccount?: LedgerAccount;\n\n @Field({ references: () => Tax })\n taxId?: number;\n\n @ManyToOne()\n tax?: Tax;\n\n @Field({ references: () => MeasureUnit })\n measureUnitId?: number;\n\n @ManyToOne()\n measureUnit?: MeasureUnit;\n\n @Field()\n salePrice?: number;\n\n @Field()\n inventoryable?: boolean;\n\n @ManyToMany({ entity: () => Tag, through: () => ItemTag, cascade: true })\n tags?: Tag[];\n\n @Field({\n /**\n * `virtual` property allows defining the value for a non-persistent field,\n * such value might be a scalar or a (`raw`) function. Virtual-fields can\n * be used in `$select` and `$where` as a common field whose value is\n * replaced is replaced at runtime.\n */\n virtual: raw(({ ctx, escapedPrefix, dialect }: QueryRawFnOptions = {}) => {\n ctx!.append('(');\n dialect!.count(\n ctx!,\n ItemTag,\n {\n $where: {\n itemId: raw(({ ctx: innerCtx }: QueryRawFnOptions = {}) => {\n innerCtx!.append(escapedPrefix + dialect!.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx!.append(')');\n }),\n })\n tagsCount?: number;\n}\n\n@Entity()\nexport class Tag extends BaseEntity {\n @Field()\n name?: string;\n\n @ManyToMany({ entity: () => Item, mappedBy: (item) => item.tags! })\n items?: Item[];\n\n @Field({\n virtual: raw(({ ctx, escapedPrefix, dialect }: QueryRawFnOptions = {}) => {\n ctx!.append('(');\n dialect!.count(\n ctx!,\n ItemTag,\n {\n $where: {\n tagId: raw(({ ctx: innerCtx }: QueryRawFnOptions = {}) => {\n innerCtx!.append(escapedPrefix + dialect!.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx!.append(')');\n }),\n })\n itemsCount?: number;\n}\n\n@Entity()\nexport class ItemTag {\n @Id()\n id?: number;\n\n @Field({ references: () => Item })\n itemId?: number;\n\n @Field({ references: () => Tag })\n tagId?: number;\n}\n\n@Entity()\nexport class InventoryAdjustment extends BaseEntity {\n @OneToMany({\n entity: () => ItemAdjustment,\n mappedBy: (rel) => rel.inventoryAdjustment!,\n cascade: true,\n })\n itemAdjustments?: ItemAdjustment[];\n\n @Field()\n date?: Date;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class ItemAdjustment extends BaseEntity {\n @Field({ references: () => Item })\n itemId?: number;\n\n @ManyToOne()\n item?: Item;\n\n @Field()\n number?: number;\n\n @Field()\n buyPrice?: number;\n\n @Field({ references: () => Storehouse })\n storehouseId?: number;\n\n @ManyToOne()\n storehouse?: Storehouse;\n\n @Field({ references: () => InventoryAdjustment })\n inventoryAdjustmentId?: number;\n\n @ManyToOne()\n inventoryAdjustment?: InventoryAdjustment;\n}\n\n@Entity()\nexport class VectorItem {\n @Id() id?: number;\n @Field() name?: string;\n @Field({ type: 'vector', dimensions: 3 }) vec!: number[];\n}\n","import type { Logger, LoggerFunction, LoggingOptions, LogLevel } from '../type/logger.js';\nimport type { SlowQueryOptions } from '../type/querier.js';\n\nconst DEFAULT_LOG_LEVELS = [\n 'query',\n 'info',\n 'warn',\n 'error',\n 'schema',\n 'migration',\n 'skippedMigration',\n] as const satisfies LogLevel[];\n\n/**\n * Default implementation of the Logger interface using console methods.\n */\nexport class DefaultLogger implements Logger {\n logQuery(query: string, values?: unknown[], duration?: number): void {\n const time = duration !== undefined ? ` [${duration}ms]` : '';\n const params = values?.length ? ` -- ${JSON.stringify(values)}` : '';\n console.log(`\\x1b[36mquery:\\x1b[0m ${query}${params}\\x1b[32m${time}\\x1b[0m`);\n }\n\n logSlowQuery(query: string, values?: unknown[], duration?: number, logParams = true): void {\n const time = duration !== undefined ? ` [${duration}ms]` : '';\n const params = logParams && values?.length ? ` -- ${JSON.stringify(values)}` : '';\n console.warn(`\\x1b[33mslow query:\\x1b[0m ${query}${params}\\x1b[31m${time}\\x1b[0m`);\n }\n\n logWarn(message: string): void {\n console.warn(`\\x1b[33mwarn:\\x1b[0m ${message}`);\n }\n\n logError(message: string, error?: unknown): void {\n console.error(`\\x1b[31merror:\\x1b[0m ${message}`, error);\n }\n\n logInfo(message: string): void {\n console.info(`\\x1b[34minfo:\\x1b[0m ${message}`);\n }\n\n logSchema(message: string): void {\n console.log(`\\x1b[35mschema:\\x1b[0m ${message}`);\n }\n\n logMigration(message: string): void {\n console.log(`\\x1b[32mmigration:\\x1b[0m ${message}`);\n }\n\n logSkippedMigration(message: string): void {\n console.info(`\\x1b[33mskipped migration:\\x1b[0m ${message}`);\n }\n}\n\n/**\n * A wrapper class that implements the Logger interface and handles different logging options.\n */\nexport class LoggerWrapper implements Logger {\n private readonly levels: Set<LogLevel>;\n private readonly logger?: Logger;\n private readonly loggerFunction?: LoggerFunction;\n\n constructor(\n options: LoggingOptions,\n private readonly slowQuery?: SlowQueryOptions,\n ) {\n this.levels = new Set();\n\n if (options === true) {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.logger = new DefaultLogger();\n } else if (Array.isArray(options)) {\n this.levels = new Set(options);\n this.logger = new DefaultLogger();\n } else if (typeof options === 'function') {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.loggerFunction = options;\n } else if (options && typeof options === 'object') {\n this.levels = new Set(DEFAULT_LOG_LEVELS);\n this.logger = options;\n }\n\n if (slowQuery !== undefined && !this.logger && !this.loggerFunction) {\n this.logger = new DefaultLogger();\n }\n }\n\n logQuery(query: string, values?: unknown[], duration?: number): void {\n if (this.slowQuery !== undefined && duration !== undefined && duration >= this.slowQuery.threshold) {\n const logParams = this.slowQuery.logParams !== false;\n if (this.logger?.logSlowQuery) {\n this.logger.logSlowQuery(query, values, duration, logParams);\n return;\n }\n if (this.loggerFunction) {\n this.loggerFunction(query, logParams ? values : undefined, duration);\n return;\n }\n // If slowQuery threshold is met but no specific slowQuery logger exists,\n // it falls through to the standard logQuery below.\n }\n\n if (this.levels.has('query')) {\n if (this.logger?.logQuery) {\n this.logger.logQuery(query, values, duration);\n } else if (this.loggerFunction) {\n this.loggerFunction(query, values, duration);\n }\n }\n }\n\n logWarn(message: string): void {\n this.log('warn', message);\n }\n\n logError(message: string, error?: unknown): void {\n this.log('error', message, error);\n }\n\n logInfo(message: string): void {\n this.log('info', message);\n }\n\n logSchema(message: string): void {\n this.log('schema', message);\n }\n\n logMigration(message: string): void {\n this.log('migration', message);\n }\n\n logSkippedMigration(message: string): void {\n this.log('skippedMigration', message);\n }\n\n private log(level: LogLevel, message: string, error?: unknown) {\n if (this.levels.has(level)) {\n const method = `log${level.charAt(0).toUpperCase()}${level.slice(1)}` as keyof Logger;\n const args = error !== undefined ? [message, error] : [message];\n if (this.logger?.[method]) {\n const logFn = this.logger[method] as (m: string, e?: unknown) => void;\n logFn(...(args as [string, unknown?]));\n } else if (this.loggerFunction) {\n this.loggerFunction(...(args as [string, unknown?]));\n }\n }\n }\n}\n","import 'reflect-metadata';\nimport type {\n EntityIndexMeta,\n EntityMeta,\n EntityOptions,\n FieldKey,\n FieldOptions,\n FieldType,\n HookEvent,\n IdKey,\n Key,\n RelationKey,\n RelationKeyMap,\n RelationOptions,\n Type,\n} from '../../type/index.js';\nimport { getKeys, hasKeys, lowerFirst, upperFirst } from '../../util/index.js';\nimport { LoggerWrapper } from '../../util/logger.js';\n\n// biome-ignore lint/suspicious/noExplicitAny: heterogeneous registry — stores EntityMeta for all entity types\ntype Meta = Map<Type<unknown>, EntityMeta<any>>;\nconst holder = globalThis as unknown as Record<symbol, Meta>;\nconst metaKey = Symbol.for('uql-orm/entity/metadata');\nconst metas: Meta = holder[metaKey] ?? new Map();\nholder[metaKey] = metas;\n\nconst registrationLogger = new LoggerWrapper(true);\n\n/**\n * Append a composite index entry with normalized `unique` (default false).\n */\nexport function appendEntityIndex<E>(meta: EntityMeta<E>, index: EntityIndexMeta): void {\n if (!meta.indexes) meta.indexes = [];\n meta.indexes.push({ ...index, unique: index.unique ?? false });\n}\n\nexport function defineField<E>(entity: Type<E>, key: string, opts: FieldOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!opts.type) {\n const type = inferType(entity, key);\n opts = { ...opts, type };\n }\n const fieldKey = key as FieldKey<E>;\n meta.fields[fieldKey] = { ...meta.fields[fieldKey], ...{ name: key, ...opts } };\n return meta;\n}\n\nexport function defineId<E>(entity: Type<E>, key: string, opts: FieldOptions): EntityMeta<E> {\n const meta = ensureMeta(entity);\n const id = getIdKey(meta);\n if (id) {\n registrationLogger.logInfo(`Overriding ID property for '${entity.name}' from '${id}' to '${key}'`);\n delete meta.fields[id];\n }\n return defineField(entity, key, { ...opts, isId: true });\n}\n\nexport function defineRelation<E>(entity: Type<E>, key: string, opts: RelationOptions<E>): EntityMeta<E> {\n const resolved: RelationOptions<E> = opts.entity\n ? opts\n : (() => {\n const inferredType = inferEntityType(entity, key);\n return { ...opts, entity: () => inferredType };\n })();\n const meta = ensureMeta(entity);\n const relKey = key as RelationKey<E>;\n meta.relations[relKey] = { ...meta.relations[relKey], ...resolved };\n return meta;\n}\n\nexport function defineHook<E>(entity: Type<E>, methodName: string, event: HookEvent): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!meta.hooks) meta.hooks = {};\n if (!meta.hooks[event]) meta.hooks[event] = [];\n meta.hooks[event].push({ methodName });\n return meta;\n}\n\nfunction applyBulkFields<E>(entity: Type<E>, fields: Record<string, FieldOptions>): void {\n for (const key of Object.keys(fields)) {\n const spec = fields[key];\n if (!spec) continue;\n if (spec.isId) {\n defineId(entity, key, spec);\n } else {\n defineField(entity, key, spec);\n }\n }\n}\n\nfunction applyBulkRelations<E>(entity: Type<E>, relations: Record<string, RelationOptions<E>>): void {\n for (const key of Object.keys(relations)) {\n const spec = relations[key];\n if (spec) defineRelation(entity, key, spec);\n }\n}\n\nfunction applyBulkIndexes<E>(entity: Type<E>, indexes: readonly EntityIndexMeta[]): void {\n const meta = ensureMeta(entity);\n for (const idx of indexes) {\n appendEntityIndex(meta, idx);\n }\n}\n\nfunction applyBulkHooks<E>(entity: Type<E>, hooks: NonNullable<EntityOptions<E>['hooks']>): void {\n for (const event of Object.keys(hooks) as HookEvent[]) {\n const methodNames = hooks[event];\n if (!methodNames?.length) continue;\n for (const methodName of methodNames) {\n defineHook(entity, methodName, event);\n }\n }\n}\n\n/**\n * Applies `fields`, `relations`, `indexes`, and `hooks` from {@link EntityOptions} before\n * entity finalization. Used by `defineEntity` for decorator-free registration.\n */\nfunction applyBulkEntityOptions<E>(entity: Type<E>, opts: EntityOptions<E>): void {\n if (opts.fields) applyBulkFields(entity, opts.fields);\n if (opts.relations) applyBulkRelations(entity, opts.relations);\n if (opts.indexes?.length) applyBulkIndexes(entity, opts.indexes);\n if (opts.hooks) applyBulkHooks(entity, opts.hooks);\n}\n\nexport function defineEntity<E>(entity: Type<E>, opts: EntityOptions<E> = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n applyBulkEntityOptions(entity, opts);\n\n if (!hasKeys(meta.fields)) {\n throw TypeError(`'${entity.name}' must have fields`);\n }\n\n const onDeleteKeys = getKeys(meta.fields).filter((key) => meta.fields[key]?.onDelete) as FieldKey<E>[];\n\n if (onDeleteKeys.length > 1) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);\n }\n\n if (opts.softDelete) {\n if (!onDeleteKeys.length) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);\n }\n meta.softDelete = onDeleteKeys[0];\n }\n\n meta.name = opts.name ?? entity.name;\n let proto: FunctionConstructor = Object.getPrototypeOf(entity.prototype);\n\n while (proto.constructor !== Object) {\n const parentMeta = ensureMeta(proto.constructor as Type<E>);\n extendMeta(meta, parentMeta);\n proto = Object.getPrototypeOf(proto);\n }\n\n const id = getIdKey(meta);\n if (!id) {\n throw TypeError(\n `'${entity.name}' must have exactly one id field (use @Id, defineId, or defineEntity({ fields: { ..., isId: true } }))`,\n );\n }\n meta.id = id;\n\n return meta;\n}\n\nexport function getEntities(): Type<unknown>[] {\n return [...metas.entries()].reduce((acc, [key, val]) => {\n if (val.id) {\n acc.push(key);\n }\n return acc;\n }, [] as Type<unknown>[]);\n}\n\nexport function ensureMeta<E>(entity: Type<E>): EntityMeta<E> {\n let meta = metas.get(entity);\n if (meta) {\n return meta;\n }\n meta = { entity, id: '', fields: {}, relations: {} };\n metas.set(entity, meta);\n return meta;\n}\n\nexport function getMeta<E>(entity: Type<E>): EntityMeta<E> {\n const meta = metas.get(entity);\n if (!meta) {\n throw TypeError(`'${entity.name}' is not an entity`);\n }\n if (meta.processed) {\n return meta;\n }\n meta.processed = true;\n return fillRelations(meta);\n}\n\nfunction fillRelations<E>(meta: EntityMeta<E>): EntityMeta<E> {\n for (const relKey in meta.relations) {\n const relOpts = meta.relations[relKey];\n if (!relOpts) continue;\n\n if (relOpts.references) {\n // references were manually specified\n continue;\n }\n\n if (relOpts.mappedBy) {\n fillInverseSideRelations(relOpts);\n continue;\n }\n\n const relEntity = relOpts.entity!();\n const relMeta = ensureMeta(relEntity);\n\n if (relOpts.cardinality === 'mm') {\n const idKey = meta.id!;\n const relIdKey = relMeta.id!;\n const idName = meta.fields[idKey]?.name ?? idKey;\n const relIdName = relMeta.fields[relIdKey]?.name ?? relIdKey;\n const source = lowerFirst(meta.name ?? '') + upperFirst(idName);\n const target = lowerFirst(relMeta.name ?? '') + upperFirst(relIdName);\n relOpts.references = [\n { local: source, foreign: idKey },\n { local: target, foreign: relIdKey },\n ];\n } else {\n const relIdKey = relMeta.id;\n relOpts.references = [{ local: `${relKey}Id`, foreign: relIdKey }];\n }\n\n if (relOpts.through) {\n fillThroughRelations(relOpts.through());\n }\n }\n\n return meta;\n}\n\nfunction fillInverseSideRelations<E>(relOpts: RelationOptions<E>): void {\n const relEntity = relOpts.entity!();\n const relMeta = getMeta(relEntity);\n const mappedBy = getMappedByRelationKey(relOpts);\n relOpts.mappedBy = mappedBy;\n\n if (relMeta.fields[mappedBy]) {\n relOpts.references = [{ local: relMeta.id, foreign: mappedBy }];\n return;\n }\n\n const mappedByRelation = relMeta.relations[mappedBy];\n if (!mappedByRelation) return;\n\n if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {\n relOpts.references = (mappedByRelation.references ?? []).slice().reverse();\n relOpts.through = mappedByRelation.through;\n return;\n }\n\n relOpts.references = (mappedByRelation.references ?? []).map(({ local, foreign }) => ({\n local: foreign,\n foreign: local,\n }));\n}\n\nfunction fillThroughRelations<E>(entity: Type<E>): void {\n const meta = ensureMeta(entity);\n meta.relations = getKeys(meta.fields).reduce<EntityMeta<E>['relations']>(\n (relations, key) => {\n const field = meta.fields[key];\n if (!field) return relations;\n if (field.references) {\n const relEntity = field.references();\n const relMeta = ensureMeta(relEntity);\n const relIdKey = relMeta.id;\n const relKey = key.slice(0, -relIdKey.length);\n const relOpts: RelationOptions = {\n entity: field.references,\n cardinality: 'm1',\n references: [{ local: key, foreign: relIdKey }],\n };\n (relations as Record<string, RelationOptions>)[relKey] = relOpts;\n }\n return relations;\n },\n {} as EntityMeta<E>['relations'],\n );\n}\n\nfunction getMappedByRelationKey<E>(relOpts: RelationOptions<E>): Key<E> {\n if (typeof relOpts.mappedBy === 'function') {\n const relEntity = relOpts.entity!();\n const relMeta = ensureMeta(relEntity);\n const keyMap = getRelationKeyMap(relMeta);\n return relOpts.mappedBy(keyMap);\n }\n return relOpts.mappedBy!;\n}\n\nfunction getRelationKeyMap<E>(meta: EntityMeta<E>): RelationKeyMap<E> {\n const keys = [...getKeys(meta.fields), ...getKeys(meta.relations)];\n return keys.reduce(\n (acc, key) => {\n (acc as Record<string, string>)[key] = key;\n return acc;\n },\n {} as RelationKeyMap<E>,\n );\n}\n\nfunction getIdKey<E>(meta: EntityMeta<E>): IdKey<E> {\n const id = getKeys(meta.fields).find((key) => meta.fields[key]?.isId);\n return id as IdKey<E>;\n}\n\nfunction extendMeta<E>(target: EntityMeta<E>, source: EntityMeta<E>): void {\n const sourceFields = { ...source.fields };\n const targetId = getIdKey(target);\n if (targetId) {\n const sourceId = getIdKey(source);\n if (sourceId) {\n delete sourceFields[sourceId];\n }\n }\n target.fields = { ...sourceFields, ...target.fields };\n target.relations = { ...source.relations, ...target.relations };\n\n // Merge hooks from parent entity (parent hooks execute first)\n if (source.hooks) {\n if (!target.hooks) target.hooks = {};\n for (const event of Object.keys(source.hooks) as HookEvent[]) {\n const sourceList = source.hooks[event];\n if (sourceList?.length) {\n target.hooks[event] = [...sourceList, ...(target.hooks[event] ?? [])];\n }\n }\n }\n}\n\nfunction inferType<E>(entity: Type<E>, key: string): FieldType {\n return Reflect.getMetadata('design:type', entity.prototype, key);\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: reflected type is unknown at compile time\nfunction inferEntityType<E>(entity: Type<E>, key: string): Type<any> {\n const inferredType = inferType(entity, key);\n const isValidType = isValidEntityType(inferredType);\n if (!isValidType) {\n throw TypeError(\n `'${entity.name}.${key}' type was auto-inferred with invalid type '${(inferredType as { name?: string })?.name}'`,\n );\n }\n return inferredType;\n}\n\nexport function isValidEntityType(type: unknown): type is Type<unknown> {\n return (\n typeof type === 'function' &&\n type !== Boolean &&\n type !== String &&\n type !== Number &&\n type !== BigInt &&\n type !== Date &&\n type !== Symbol\n );\n}\n","import { getEntities, getMeta } from '../entity/decorator/index.js';\nimport type { AbstractSqlQuerier } from '../querier/index.js';\nimport type { Type } from '../type/index.js';\nimport { getKeys } from '../util/index.js';\n\nexport async function createTables(querier: AbstractSqlQuerier, primaryKeyType: string) {\n const entities = getEntities();\n for (const entity of entities) {\n const sql = getDdlForTable(entity, querier, primaryKeyType);\n await querier.run(sql);\n }\n}\n\nexport async function dropTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n for (const entity of entities) {\n const meta = getMeta(entity);\n const sql = `DROP TABLE IF EXISTS ${querier.dialect.escapeId(meta.name!)}`;\n await querier.run(sql);\n }\n}\n\nexport async function clearTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n for (const entity of entities) {\n const ctx = querier.dialect.createContext();\n querier.dialect.delete(ctx, entity, {});\n await querier.run(ctx.sql, ctx.values);\n }\n}\n\nfunction getDdlForTable<E>(entity: Type<E>, querier: AbstractSqlQuerier, primaryKeyType: string) {\n const meta = getMeta(entity);\n\n let sql = `CREATE TABLE IF NOT EXISTS ${querier.dialect.escapeId(meta.name!)} (\\n\\t`;\n\n const insertableIdType = 'VARCHAR(36)';\n const defaultType = querier.dialect.escapeIdChar === '\"' ? 'TEXT' : 'VARCHAR(255)';\n\n const columns = getKeys(meta.fields).map((key) => {\n const field = meta.fields[key]!;\n let propSql = querier.dialect.escapeId(field.name!) + ' ';\n if (field.isId) {\n propSql += field.onInsert ? `${insertableIdType} PRIMARY KEY` : primaryKeyType;\n } else if (field.type === 'vector' || field.type === 'halfvec' || field.type === 'sparsevec') {\n propSql += field.dimensions ? `${field.type}(${field.dimensions})` : field.type;\n } else if (field.type === Number) {\n propSql += 'BIGINT';\n } else if (field.type === Date) {\n propSql += 'TIMESTAMP';\n } else if (field.type === 'json' || field.type === 'jsonb') {\n propSql += field.type === 'jsonb' && querier.dialect.features.supportsJsonb ? 'JSONB' : 'JSON';\n } else {\n propSql += defaultType;\n }\n return propSql;\n });\n\n sql += columns.join(',\\n\\t');\n sql += `\\n);`;\n\n // log('sql', sql);\n\n return sql;\n}\n","import { mkdtemp, rm, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { createJiti } from 'jiti';\n\n/**\n * Write TypeScript source to a temp file and load its default export via jiti.\n *\n * Use in tests to mirror how `uql-migrate` loads `.ts` migrations. At runtime, the migrator loads\n * on-disk files with native `import()`; this helper matches CLI-style jiti resolution for generated strings.\n */\nexport async function loadTsDefaultExportWithJiti<T>(source: string, uqlOrmPackageRoot: string): Promise<T> {\n const dir = await mkdtemp(join(tmpdir(), 'uql-jiti-'));\n const filePath = join(dir, 'module.ts');\n await writeFile(filePath, source, 'utf8');\n try {\n const jiti = createJiti(uqlOrmPackageRoot);\n return (await jiti.import(filePath, { default: true })) as T;\n } finally {\n await rm(dir, { recursive: true, force: true });\n }\n}\n","import type { AbstractDialect } from '../dialect/abstractDialect.js';\nimport type { Querier, QuerierPool, TransactionOptions } from '../type/index.js';\n\nexport type CreateMockQuerierPoolOptions<Q extends Querier> = {\n getMigrationQuerier?: () => Promise<Q>;\n};\n\n/**\n * Minimal {@link QuerierPool} for tests. Requires `dialect` so shapes stay aligned with {@link Config.pool}.\n */\nexport function createMockQuerierPool<Q extends Querier>(\n dialect: AbstractDialect,\n getQuerier: () => Promise<Q>,\n options?: CreateMockQuerierPoolOptions<Q>,\n): QuerierPool<Q, AbstractDialect> {\n const pool: QuerierPool<Q, AbstractDialect> = {\n dialect,\n getQuerier,\n async transaction<T>(callback: (querier: Q) => Promise<T>, _opts?: TransactionOptions): Promise<T> {\n const querier = await getQuerier();\n return callback(querier);\n },\n async withQuerier<T>(callback: (querier: Q) => Promise<T>): Promise<T> {\n const querier = await getQuerier();\n try {\n return await callback(querier);\n } finally {\n await querier.release();\n }\n },\n async end() {},\n };\n if (options?.getMigrationQuerier) {\n pool.getMigrationQuerier = options.getMigrationQuerier;\n }\n return pool;\n}\n","// src/index.ts\nvar b = {\n reset: [0, 0],\n bold: [1, 22, \"\\x1B[22m\\x1B[1m\"],\n dim: [2, 22, \"\\x1B[22m\\x1B[2m\"],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n};\nfunction i(e) {\n return String(e);\n}\ni.open = \"\";\ni.close = \"\";\nfunction p() {\n let e = {\n isColorSupported: !1,\n reset: i\n };\n for (let r in b)\n e[r] = i;\n return e;\n}\nfunction B() {\n let e = typeof process != \"undefined\" ? process : void 0, r = (e == null ? void 0 : e.env) || {}, a = r.FORCE_TTY !== \"false\", l = (e == null ? void 0 : e.argv) || [];\n return !(\"NO_COLOR\" in r || l.includes(\"--no-color\")) && (\"FORCE_COLOR\" in r || l.includes(\"--color\") || (e == null ? void 0 : e.platform) === \"win32\" || a && r.TERM !== \"dumb\" || \"CI\" in r) || typeof window != \"undefined\" && !!window.chrome;\n}\nfunction C({ force: e } = {}) {\n let r = e || B(), a = (t, o, u, n) => {\n let g = \"\", s = 0;\n do\n g += t.substring(s, n) + u, s = n + o.length, n = t.indexOf(o, s);\n while (~n);\n return g + t.substring(s);\n }, l = (t, o, u = t) => {\n let n = (g) => {\n let s = String(g), h = s.indexOf(o, t.length);\n return ~h ? t + a(s, o, u, h) + o : t + s + o;\n };\n return n.open = t, n.close = o, n;\n }, c = {\n isColorSupported: r\n }, f = (t) => `\\x1B[${t}m`;\n for (let t in b) {\n let o = b[t];\n c[t] = r ? l(\n f(o[0]),\n f(o[1]),\n o[2]\n ) : i;\n }\n return c;\n}\nvar d = C();\nfunction m() {\n Object.assign(d, p());\n}\nfunction w() {\n Object.assign(d, C({ force: !0 }));\n}\nvar y = d;\nexport {\n C as createColors,\n y as default,\n m as disableDefaultColors,\n w as enabledDefaultColors,\n p as getDefaultColors,\n B as isSupported\n};\n","import styles from 'tinyrainbow';\n\nfunction _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== 'default' && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n });\n return Object.freeze(n);\n}\n\nfunction getKeysOfEnumerableProperties(object, compareKeys) {\n\tconst rawKeys = Object.keys(object);\n\tconst keys = compareKeys === null ? rawKeys : rawKeys.sort(compareKeys);\n\tif (Object.getOwnPropertySymbols) {\n\t\tfor (const symbol of Object.getOwnPropertySymbols(object)) {\n\t\t\tif (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n\t\t\t\tkeys.push(symbol);\n\t\t\t}\n\t\t}\n\t}\n\treturn keys;\n}\n/**\n* Return entries (for example, of a map)\n* with spacing, indentation, and comma\n* without surrounding punctuation (for example, braces)\n*/\nfunction printIteratorEntries(iterator, config, indentation, depth, refs, printer, separator = \": \") {\n\tlet result = \"\";\n\tlet width = 0;\n\tlet current = iterator.next();\n\tif (!current.done) {\n\t\tresult += config.spacingOuter;\n\t\tconst indentationNext = indentation + config.indent;\n\t\twhile (!current.done) {\n\t\t\tresult += indentationNext;\n\t\t\tif (width++ === config.maxWidth) {\n\t\t\t\tresult += \"…\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst name = printer(current.value[0], config, indentationNext, depth, refs);\n\t\t\tconst value = printer(current.value[1], config, indentationNext, depth, refs);\n\t\t\tresult += name + separator + value;\n\t\t\tcurrent = iterator.next();\n\t\t\tif (!current.done) {\n\t\t\t\tresult += `,${config.spacingInner}`;\n\t\t\t} else if (!config.min) {\n\t\t\t\tresult += \",\";\n\t\t\t}\n\t\t}\n\t\tresult += config.spacingOuter + indentation;\n\t}\n\treturn result;\n}\n/**\n* Return values (for example, of a set)\n* with spacing, indentation, and comma\n* without surrounding punctuation (braces or brackets)\n*/\nfunction printIteratorValues(iterator, config, indentation, depth, refs, printer) {\n\tlet result = \"\";\n\tlet width = 0;\n\tlet current = iterator.next();\n\tif (!current.done) {\n\t\tresult += config.spacingOuter;\n\t\tconst indentationNext = indentation + config.indent;\n\t\twhile (!current.done) {\n\t\t\tresult += indentationNext;\n\t\t\tif (width++ === config.maxWidth) {\n\t\t\t\tresult += \"…\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult += printer(current.value, config, indentationNext, depth, refs);\n\t\t\tcurrent = iterator.next();\n\t\t\tif (!current.done) {\n\t\t\t\tresult += `,${config.spacingInner}`;\n\t\t\t} else if (!config.min) {\n\t\t\t\tresult += \",\";\n\t\t\t}\n\t\t}\n\t\tresult += config.spacingOuter + indentation;\n\t}\n\treturn result;\n}\n/**\n* Return items (for example, of an array)\n* with spacing, indentation, and comma\n* without surrounding punctuation (for example, brackets)\n*/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n\tlet result = \"\";\n\tlist = list instanceof ArrayBuffer ? new DataView(list) : list;\n\tconst isDataView = (l) => l instanceof DataView;\n\tconst length = isDataView(list) ? list.byteLength : list.length;\n\tif (length > 0) {\n\t\tresult += config.spacingOuter;\n\t\tconst indentationNext = indentation + config.indent;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += indentationNext;\n\t\t\tif (i === config.maxWidth) {\n\t\t\t\tresult += \"…\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isDataView(list) || i in list) {\n\t\t\t\tresult += printer(isDataView(list) ? list.getInt8(i) : list[i], config, indentationNext, depth, refs);\n\t\t\t}\n\t\t\tif (i < length - 1) {\n\t\t\t\tresult += `,${config.spacingInner}`;\n\t\t\t} else if (!config.min) {\n\t\t\t\tresult += \",\";\n\t\t\t}\n\t\t}\n\t\tresult += config.spacingOuter + indentation;\n\t}\n\treturn result;\n}\n/**\n* Return properties of an object\n* with spacing, indentation, and comma\n* without surrounding punctuation (for example, braces)\n*/\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n\tlet result = \"\";\n\tconst keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n\tif (keys.length > 0) {\n\t\tresult += config.spacingOuter;\n\t\tconst indentationNext = indentation + config.indent;\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tconst name = printer(key, config, indentationNext, depth, refs);\n\t\t\tconst value = printer(val[key], config, indentationNext, depth, refs);\n\t\t\tresult += `${indentationNext + name}: ${value}`;\n\t\t\tif (i < keys.length - 1) {\n\t\t\t\tresult += `,${config.spacingInner}`;\n\t\t\t} else if (!config.min) {\n\t\t\t\tresult += \",\";\n\t\t\t}\n\t\t}\n\t\tresult += config.spacingOuter + indentation;\n\t}\n\treturn result;\n}\n\nconst asymmetricMatcher = typeof Symbol === \"function\" && Symbol.for ? Symbol.for(\"jest.asymmetricMatcher\") : 1267621;\nconst SPACE$2 = \" \";\nconst serialize$5 = (val, config, indentation, depth, refs, printer) => {\n\tconst stringedValue = val.toString();\n\tif (stringedValue === \"ArrayContaining\" || stringedValue === \"ArrayNotContaining\") {\n\t\tif (++depth > config.maxDepth) {\n\t\t\treturn `[${stringedValue}]`;\n\t\t}\n\t\treturn `${stringedValue + SPACE$2}[${printListItems(val.sample, config, indentation, depth, refs, printer)}]`;\n\t}\n\tif (stringedValue === \"ObjectContaining\" || stringedValue === \"ObjectNotContaining\") {\n\t\tif (++depth > config.maxDepth) {\n\t\t\treturn `[${stringedValue}]`;\n\t\t}\n\t\treturn `${stringedValue + SPACE$2}{${printObjectProperties(val.sample, config, indentation, depth, refs, printer)}}`;\n\t}\n\tif (stringedValue === \"StringMatching\" || stringedValue === \"StringNotMatching\") {\n\t\treturn stringedValue + SPACE$2 + printer(val.sample, config, indentation, depth, refs);\n\t}\n\tif (stringedValue === \"StringContaining\" || stringedValue === \"StringNotContaining\") {\n\t\treturn stringedValue + SPACE$2 + printer(val.sample, config, indentation, depth, refs);\n\t}\n\tif (typeof val.toAsymmetricMatcher !== \"function\") {\n\t\tthrow new TypeError(`Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`);\n\t}\n\treturn val.toAsymmetricMatcher();\n};\nconst test$5 = (val) => val && val.$$typeof === asymmetricMatcher;\nconst plugin$5 = {\n\tserialize: serialize$5,\n\ttest: test$5\n};\n\nconst SPACE$1 = \" \";\nconst OBJECT_NAMES = new Set([\"DOMStringMap\", \"NamedNodeMap\"]);\nconst ARRAY_REGEXP = /^(?:HTML\\w*Collection|NodeList)$/;\nfunction testName(name) {\n\treturn OBJECT_NAMES.has(name) || ARRAY_REGEXP.test(name);\n}\nconst test$4 = (val) => val && val.constructor && !!val.constructor.name && testName(val.constructor.name);\nfunction isNamedNodeMap(collection) {\n\treturn collection.constructor.name === \"NamedNodeMap\";\n}\nconst serialize$4 = (collection, config, indentation, depth, refs, printer) => {\n\tconst name = collection.constructor.name;\n\tif (++depth > config.maxDepth) {\n\t\treturn `[${name}]`;\n\t}\n\treturn (config.min ? \"\" : name + SPACE$1) + (OBJECT_NAMES.has(name) ? `{${printObjectProperties(isNamedNodeMap(collection) ? [...collection].reduce((props, attribute) => {\n\t\tprops[attribute.name] = attribute.value;\n\t\treturn props;\n\t}, {}) : { ...collection }, config, indentation, depth, refs, printer)}}` : `[${printListItems([...collection], config, indentation, depth, refs, printer)}]`);\n};\nconst plugin$4 = {\n\tserialize: serialize$4,\n\ttest: test$4\n};\n\n/**\n* Copyright (c) Meta Platforms, Inc. and affiliates.\n*\n* This source code is licensed under the MIT license found in the\n* LICENSE file in the root directory of this source tree.\n*/\nfunction escapeHTML(str) {\n\treturn str.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n}\n\n// Return empty string if keys is empty.\nfunction printProps(keys, props, config, indentation, depth, refs, printer) {\n\tconst indentationNext = indentation + config.indent;\n\tconst colors = config.colors;\n\treturn keys.map((key) => {\n\t\tconst value = props[key];\n\t\t// hidden injected value that should not be printed\n\t\tif (typeof value === \"string\" && value[0] === \"_\" && value.startsWith(\"__vitest_\") && value.match(/__vitest_\\d+__/)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet printed = printer(value, config, indentationNext, depth, refs);\n\t\tif (typeof value !== \"string\") {\n\t\t\tif (printed.includes(\"\\n\")) {\n\t\t\t\tprinted = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation;\n\t\t\t}\n\t\t\tprinted = `{${printed}}`;\n\t\t}\n\t\treturn `${config.spacingInner + indentation + colors.prop.open + key + colors.prop.close}=${colors.value.open}${printed}${colors.value.close}`;\n\t}).join(\"\");\n}\n// Return empty string if children is empty.\nfunction printChildren(children, config, indentation, depth, refs, printer) {\n\treturn children.map((child) => config.spacingOuter + indentation + (typeof child === \"string\" ? printText(child, config) : printer(child, config, indentation, depth, refs))).join(\"\");\n}\nfunction printShadowRoot(children, config, indentation, depth, refs, printer) {\n\tif (config.printShadowRoot === false) {\n\t\treturn \"\";\n\t}\n\treturn [`${config.spacingOuter + indentation}#shadow-root`, printChildren(children, config, indentation + config.indent, depth, refs, printer)].join(\"\");\n}\nfunction printText(text, config) {\n\tconst contentColor = config.colors.content;\n\treturn contentColor.open + escapeHTML(text) + contentColor.close;\n}\nfunction printComment(comment, config) {\n\tconst commentColor = config.colors.comment;\n\treturn `${commentColor.open}<!--${escapeHTML(comment)}-->${commentColor.close}`;\n}\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nfunction printElement(type, printedProps, printedChildren, config, indentation) {\n\tconst tagColor = config.colors.tag;\n\treturn `${tagColor.open}<${type}${printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open}${printedChildren ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}</${type}` : `${printedProps && !config.min ? \"\" : \" \"}/`}>${tagColor.close}`;\n}\nfunction printElementAsLeaf(type, config) {\n\tconst tagColor = config.colors.tag;\n\treturn `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`;\n}\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^(?:(?:HTML|SVG)\\w*)?Element$/;\nfunction testHasAttribute(val) {\n\ttry {\n\t\treturn typeof val.hasAttribute === \"function\" && val.hasAttribute(\"is\");\n\t} catch {\n\t\treturn false;\n\t}\n}\nfunction testNode(val) {\n\tconst constructorName = val.constructor.name;\n\tconst { nodeType, tagName } = val;\n\tconst isCustomElement = typeof tagName === \"string\" && tagName.includes(\"-\") || testHasAttribute(val);\n\treturn nodeType === ELEMENT_NODE && (ELEMENT_REGEXP.test(constructorName) || isCustomElement) || nodeType === TEXT_NODE && constructorName === \"Text\" || nodeType === COMMENT_NODE && constructorName === \"Comment\" || nodeType === FRAGMENT_NODE && constructorName === \"DocumentFragment\";\n}\nconst test$3 = (val) => val?.constructor?.name && testNode(val);\nfunction nodeIsText(node) {\n\treturn node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n\treturn node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n\treturn node.nodeType === FRAGMENT_NODE;\n}\nfunction filterChildren(children, filterNode) {\n\t// Filter out text nodes that only contain whitespace to prevent empty lines\n\t// This is done regardless of whether a filterNode is provided\n\tlet filtered = children.filter((node) => {\n\t\t// Filter out text nodes that are only whitespace\n\t\tif (node.nodeType === TEXT_NODE) {\n\t\t\tconst text = node.data || \"\";\n\t\t\t// Keep text nodes that have non-whitespace content\n\t\t\treturn text.trim().length > 0;\n\t\t}\n\t\treturn true;\n\t});\n\t// Apply additional user-provided filter if specified\n\tif (filterNode) {\n\t\tfiltered = filtered.filter(filterNode);\n\t}\n\treturn filtered;\n}\nfunction serializeDOM(node, config, indentation, depth, refs, printer, filterNode) {\n\tif (nodeIsText(node)) {\n\t\treturn printText(node.data, config);\n\t}\n\tif (nodeIsComment(node)) {\n\t\treturn printComment(node.data, config);\n\t}\n\tconst type = nodeIsFragment(node) ? \"DocumentFragment\" : node.tagName.toLowerCase();\n\tif (++depth > config.maxDepth) {\n\t\treturn printElementAsLeaf(type, config);\n\t}\n\tconst children = Array.prototype.slice.call(node.childNodes || node.children);\n\tconst shadowChildren = nodeIsFragment(node) || !node.shadowRoot ? [] : Array.prototype.slice.call(node.shadowRoot.children);\n\tconst resolvedChildren = filterNode ? filterChildren(children, filterNode) : children;\n\tconst resolvedShadowChildren = filterNode ? filterChildren(shadowChildren, filterNode) : shadowChildren;\n\treturn printElement(type, printProps(nodeIsFragment(node) ? [] : Array.from(node.attributes, (attr) => attr.name).sort(), nodeIsFragment(node) ? {} : [...node.attributes].reduce((props, attribute) => {\n\t\tprops[attribute.name] = attribute.value;\n\t\treturn props;\n\t}, {}), config, indentation + config.indent, depth, refs, printer), (resolvedShadowChildren.length > 0 ? printShadowRoot(resolvedShadowChildren, config, indentation + config.indent, depth, refs, printer) : \"\") + printChildren(resolvedChildren, config, indentation + config.indent, depth, refs, printer), config, indentation);\n}\nconst serialize$3 = (node, config, indentation, depth, refs, printer) => serializeDOM(node, config, indentation, depth, refs, printer);\nfunction createDOMElementFilter(filterNode) {\n\treturn {\n\t\ttest: test$3,\n\t\tserialize: (node, config, indentation, depth, refs, printer) => serializeDOM(node, config, indentation, depth, refs, printer, filterNode)\n\t};\n}\nconst plugin$3 = {\n\tserialize: serialize$3,\n\ttest: test$3\n};\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = \"@@__IMMUTABLE_ITERABLE__@@\";\nconst IS_LIST_SENTINEL = \"@@__IMMUTABLE_LIST__@@\";\nconst IS_KEYED_SENTINEL = \"@@__IMMUTABLE_KEYED__@@\";\nconst IS_MAP_SENTINEL = \"@@__IMMUTABLE_MAP__@@\";\nconst IS_ORDERED_SENTINEL = \"@@__IMMUTABLE_ORDERED__@@\";\nconst IS_RECORD_SENTINEL = \"@@__IMMUTABLE_RECORD__@@\";\nconst IS_SEQ_SENTINEL = \"@@__IMMUTABLE_SEQ__@@\";\nconst IS_SET_SENTINEL = \"@@__IMMUTABLE_SET__@@\";\nconst IS_STACK_SENTINEL = \"@@__IMMUTABLE_STACK__@@\";\nconst getImmutableName = (name) => `Immutable.${name}`;\nconst printAsLeaf = (name) => `[${name}]`;\nconst SPACE = \" \";\nconst LAZY = \"…\";\nfunction printImmutableEntries(val, config, indentation, depth, refs, printer, type) {\n\treturn ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}{${printIteratorEntries(val.entries(), config, indentation, depth, refs, printer)}}`;\n}\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n\tlet i = 0;\n\treturn { next() {\n\t\tif (i < val._keys.length) {\n\t\t\tconst key = val._keys[i++];\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: [key, val.get(key)]\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tdone: true,\n\t\t\tvalue: undefined\n\t\t};\n\t} };\n}\nfunction printImmutableRecord(val, config, indentation, depth, refs, printer) {\n\t// _name property is defined only for an Immutable Record instance\n\t// which was constructed with a second optional descriptive name arg\n\tconst name = getImmutableName(val._name || \"Record\");\n\treturn ++depth > config.maxDepth ? printAsLeaf(name) : `${name + SPACE}{${printIteratorEntries(getRecordEntries(val), config, indentation, depth, refs, printer)}}`;\n}\nfunction printImmutableSeq(val, config, indentation, depth, refs, printer) {\n\tconst name = getImmutableName(\"Seq\");\n\tif (++depth > config.maxDepth) {\n\t\treturn printAsLeaf(name);\n\t}\n\tif (val[IS_KEYED_SENTINEL]) {\n\t\treturn `${name + SPACE}{${val._iter || val._object ? printIteratorEntries(val.entries(), config, indentation, depth, refs, printer) : LAZY}}`;\n\t}\n\treturn `${name + SPACE}[${val._iter || val._array || val._collection || val._iterable ? printIteratorValues(val.values(), config, indentation, depth, refs, printer) : LAZY}]`;\n}\nfunction printImmutableValues(val, config, indentation, depth, refs, printer, type) {\n\treturn ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}[${printIteratorValues(val.values(), config, indentation, depth, refs, printer)}]`;\n}\nconst serialize$2 = (val, config, indentation, depth, refs, printer) => {\n\tif (val[IS_MAP_SENTINEL]) {\n\t\treturn printImmutableEntries(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? \"OrderedMap\" : \"Map\");\n\t}\n\tif (val[IS_LIST_SENTINEL]) {\n\t\treturn printImmutableValues(val, config, indentation, depth, refs, printer, \"List\");\n\t}\n\tif (val[IS_SET_SENTINEL]) {\n\t\treturn printImmutableValues(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? \"OrderedSet\" : \"Set\");\n\t}\n\tif (val[IS_STACK_SENTINEL]) {\n\t\treturn printImmutableValues(val, config, indentation, depth, refs, printer, \"Stack\");\n\t}\n\tif (val[IS_SEQ_SENTINEL]) {\n\t\treturn printImmutableSeq(val, config, indentation, depth, refs, printer);\n\t}\n\t// For compatibility with immutable v3 and v4, let record be the default.\n\treturn printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nconst test$2 = (val) => val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nconst plugin$2 = {\n\tserialize: serialize$2,\n\ttest: test$2\n};\n\nfunction getDefaultExportFromCjs(x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\n\nvar reactIs$1 = {exports: {}};\n\nvar reactIs_production = {};\n\n/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production;\n\nfunction requireReactIs_production () {\n\tif (hasRequiredReactIs_production) return reactIs_production;\n\thasRequiredReactIs_production = 1;\n\tvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n\t REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n\t REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n\t REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n\t REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n\t REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n\t REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n\t REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n\t REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n\t REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n\t REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n\t REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n\t REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n\t REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n\tfunction typeOf(object) {\n\t if (\"object\" === typeof object && null !== object) {\n\t var $$typeof = object.$$typeof;\n\t switch ($$typeof) {\n\t case REACT_ELEMENT_TYPE:\n\t switch (((object = object.type), object)) {\n\t case REACT_FRAGMENT_TYPE:\n\t case REACT_PROFILER_TYPE:\n\t case REACT_STRICT_MODE_TYPE:\n\t case REACT_SUSPENSE_TYPE:\n\t case REACT_SUSPENSE_LIST_TYPE:\n\t case REACT_VIEW_TRANSITION_TYPE:\n\t return object;\n\t default:\n\t switch (((object = object && object.$$typeof), object)) {\n\t case REACT_CONTEXT_TYPE:\n\t case REACT_FORWARD_REF_TYPE:\n\t case REACT_LAZY_TYPE:\n\t case REACT_MEMO_TYPE:\n\t return object;\n\t case REACT_CONSUMER_TYPE:\n\t return object;\n\t default:\n\t return $$typeof;\n\t }\n\t }\n\t case REACT_PORTAL_TYPE:\n\t return $$typeof;\n\t }\n\t }\n\t}\n\treactIs_production.ContextConsumer = REACT_CONSUMER_TYPE;\n\treactIs_production.ContextProvider = REACT_CONTEXT_TYPE;\n\treactIs_production.Element = REACT_ELEMENT_TYPE;\n\treactIs_production.ForwardRef = REACT_FORWARD_REF_TYPE;\n\treactIs_production.Fragment = REACT_FRAGMENT_TYPE;\n\treactIs_production.Lazy = REACT_LAZY_TYPE;\n\treactIs_production.Memo = REACT_MEMO_TYPE;\n\treactIs_production.Portal = REACT_PORTAL_TYPE;\n\treactIs_production.Profiler = REACT_PROFILER_TYPE;\n\treactIs_production.StrictMode = REACT_STRICT_MODE_TYPE;\n\treactIs_production.Suspense = REACT_SUSPENSE_TYPE;\n\treactIs_production.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n\treactIs_production.isContextConsumer = function (object) {\n\t return typeOf(object) === REACT_CONSUMER_TYPE;\n\t};\n\treactIs_production.isContextProvider = function (object) {\n\t return typeOf(object) === REACT_CONTEXT_TYPE;\n\t};\n\treactIs_production.isElement = function (object) {\n\t return (\n\t \"object\" === typeof object &&\n\t null !== object &&\n\t object.$$typeof === REACT_ELEMENT_TYPE\n\t );\n\t};\n\treactIs_production.isForwardRef = function (object) {\n\t return typeOf(object) === REACT_FORWARD_REF_TYPE;\n\t};\n\treactIs_production.isFragment = function (object) {\n\t return typeOf(object) === REACT_FRAGMENT_TYPE;\n\t};\n\treactIs_production.isLazy = function (object) {\n\t return typeOf(object) === REACT_LAZY_TYPE;\n\t};\n\treactIs_production.isMemo = function (object) {\n\t return typeOf(object) === REACT_MEMO_TYPE;\n\t};\n\treactIs_production.isPortal = function (object) {\n\t return typeOf(object) === REACT_PORTAL_TYPE;\n\t};\n\treactIs_production.isProfiler = function (object) {\n\t return typeOf(object) === REACT_PROFILER_TYPE;\n\t};\n\treactIs_production.isStrictMode = function (object) {\n\t return typeOf(object) === REACT_STRICT_MODE_TYPE;\n\t};\n\treactIs_production.isSuspense = function (object) {\n\t return typeOf(object) === REACT_SUSPENSE_TYPE;\n\t};\n\treactIs_production.isSuspenseList = function (object) {\n\t return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n\t};\n\treactIs_production.isValidElementType = function (type) {\n\t return \"string\" === typeof type ||\n\t \"function\" === typeof type ||\n\t type === REACT_FRAGMENT_TYPE ||\n\t type === REACT_PROFILER_TYPE ||\n\t type === REACT_STRICT_MODE_TYPE ||\n\t type === REACT_SUSPENSE_TYPE ||\n\t type === REACT_SUSPENSE_LIST_TYPE ||\n\t (\"object\" === typeof type &&\n\t null !== type &&\n\t (type.$$typeof === REACT_LAZY_TYPE ||\n\t type.$$typeof === REACT_MEMO_TYPE ||\n\t type.$$typeof === REACT_CONTEXT_TYPE ||\n\t type.$$typeof === REACT_CONSUMER_TYPE ||\n\t type.$$typeof === REACT_FORWARD_REF_TYPE ||\n\t type.$$typeof === REACT_CLIENT_REFERENCE ||\n\t void 0 !== type.getModuleId))\n\t ? true\n\t : false;\n\t};\n\treactIs_production.typeOf = typeOf;\n\treturn reactIs_production;\n}\n\nvar hasRequiredReactIs$1;\n\nfunction requireReactIs$1 () {\n\tif (hasRequiredReactIs$1) return reactIs$1.exports;\n\thasRequiredReactIs$1 = 1;\n\n\t{\n\t reactIs$1.exports = requireReactIs_production();\n\t}\n\treturn reactIs$1.exports;\n}\n\nvar reactIsExports$1 = requireReactIs$1();\nvar index$1 = /*@__PURE__*/getDefaultExportFromCjs(reactIsExports$1);\n\nvar ReactIs19 = /*#__PURE__*/_mergeNamespaces({\n __proto__: null,\n default: index$1\n}, [reactIsExports$1]);\n\nvar reactIs = {exports: {}};\n\nvar reactIs_production_min = {};\n\n/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min;\n\nfunction requireReactIs_production_min () {\n\tif (hasRequiredReactIs_production_min) return reactIs_production_min;\n\thasRequiredReactIs_production_min = 1;\nvar b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\n\tfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}reactIs_production_min.ContextConsumer=h;reactIs_production_min.ContextProvider=g;reactIs_production_min.Element=b;reactIs_production_min.ForwardRef=l;reactIs_production_min.Fragment=d;reactIs_production_min.Lazy=q;reactIs_production_min.Memo=p;reactIs_production_min.Portal=c;reactIs_production_min.Profiler=f;reactIs_production_min.StrictMode=e;reactIs_production_min.Suspense=m;\n\treactIs_production_min.SuspenseList=n;reactIs_production_min.isAsyncMode=function(){return false};reactIs_production_min.isConcurrentMode=function(){return false};reactIs_production_min.isContextConsumer=function(a){return v(a)===h};reactIs_production_min.isContextProvider=function(a){return v(a)===g};reactIs_production_min.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===b};reactIs_production_min.isForwardRef=function(a){return v(a)===l};reactIs_production_min.isFragment=function(a){return v(a)===d};reactIs_production_min.isLazy=function(a){return v(a)===q};reactIs_production_min.isMemo=function(a){return v(a)===p};\n\treactIs_production_min.isPortal=function(a){return v(a)===c};reactIs_production_min.isProfiler=function(a){return v(a)===f};reactIs_production_min.isStrictMode=function(a){return v(a)===e};reactIs_production_min.isSuspense=function(a){return v(a)===m};reactIs_production_min.isSuspenseList=function(a){return v(a)===n};\n\treactIs_production_min.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?true:false};reactIs_production_min.typeOf=v;\n\treturn reactIs_production_min;\n}\n\nvar hasRequiredReactIs;\n\nfunction requireReactIs () {\n\tif (hasRequiredReactIs) return reactIs.exports;\n\thasRequiredReactIs = 1;\n\n\t{\n\t reactIs.exports = requireReactIs_production_min();\n\t}\n\treturn reactIs.exports;\n}\n\nvar reactIsExports = requireReactIs();\nvar index = /*@__PURE__*/getDefaultExportFromCjs(reactIsExports);\n\nvar ReactIs18 = /*#__PURE__*/_mergeNamespaces({\n __proto__: null,\n default: index\n}, [reactIsExports]);\n\nconst reactIsMethods = [\n\t\"isAsyncMode\",\n\t\"isConcurrentMode\",\n\t\"isContextConsumer\",\n\t\"isContextProvider\",\n\t\"isElement\",\n\t\"isForwardRef\",\n\t\"isFragment\",\n\t\"isLazy\",\n\t\"isMemo\",\n\t\"isPortal\",\n\t\"isProfiler\",\n\t\"isStrictMode\",\n\t\"isSuspense\",\n\t\"isSuspenseList\",\n\t\"isValidElementType\"\n];\nconst ReactIs = Object.fromEntries(reactIsMethods.map((m) => [m, (v) => ReactIs18[m](v) || ReactIs19[m](v)]));\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nfunction getChildren(arg, children = []) {\n\tif (Array.isArray(arg)) {\n\t\tfor (const item of arg) {\n\t\t\tgetChildren(item, children);\n\t\t}\n\t} else if (arg != null && arg !== false && arg !== \"\") {\n\t\tchildren.push(arg);\n\t}\n\treturn children;\n}\nfunction getType(element) {\n\tconst type = element.type;\n\tif (typeof type === \"string\") {\n\t\treturn type;\n\t}\n\tif (typeof type === \"function\") {\n\t\treturn type.displayName || type.name || \"Unknown\";\n\t}\n\tif (ReactIs.isFragment(element)) {\n\t\treturn \"React.Fragment\";\n\t}\n\tif (ReactIs.isSuspense(element)) {\n\t\treturn \"React.Suspense\";\n\t}\n\tif (typeof type === \"object\" && type !== null) {\n\t\tif (ReactIs.isContextProvider(element)) {\n\t\t\treturn \"Context.Provider\";\n\t\t}\n\t\tif (ReactIs.isContextConsumer(element)) {\n\t\t\treturn \"Context.Consumer\";\n\t\t}\n\t\tif (ReactIs.isForwardRef(element)) {\n\t\t\tif (type.displayName) {\n\t\t\t\treturn type.displayName;\n\t\t\t}\n\t\t\tconst functionName = type.render.displayName || type.render.name || \"\";\n\t\t\treturn functionName === \"\" ? \"ForwardRef\" : `ForwardRef(${functionName})`;\n\t\t}\n\t\tif (ReactIs.isMemo(element)) {\n\t\t\tconst functionName = type.displayName || type.type.displayName || type.type.name || \"\";\n\t\t\treturn functionName === \"\" ? \"Memo\" : `Memo(${functionName})`;\n\t\t}\n\t}\n\treturn \"UNDEFINED\";\n}\nfunction getPropKeys$1(element) {\n\tconst { props } = element;\n\treturn Object.keys(props).filter((key) => key !== \"children\" && props[key] !== undefined).sort();\n}\nconst serialize$1 = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? printElementAsLeaf(getType(element), config) : printElement(getType(element), printProps(getPropKeys$1(element), element.props, config, indentation + config.indent, depth, refs, printer), printChildren(getChildren(element.props.children), config, indentation + config.indent, depth, refs, printer), config, indentation);\nconst test$1 = (val) => val != null && ReactIs.isElement(val);\nconst plugin$1 = {\n\tserialize: serialize$1,\n\ttest: test$1\n};\n\nconst testSymbol = typeof Symbol === \"function\" && Symbol.for ? Symbol.for(\"react.test.json\") : 245830487;\nfunction getPropKeys(object) {\n\tconst { props } = object;\n\treturn props ? Object.keys(props).filter((key) => props[key] !== undefined).sort() : [];\n}\nconst serialize = (object, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? printElementAsLeaf(object.type, config) : printElement(object.type, object.props ? printProps(getPropKeys(object), object.props, config, indentation + config.indent, depth, refs, printer) : \"\", object.children ? printChildren(object.children, config, indentation + config.indent, depth, refs, printer) : \"\", config, indentation);\nconst test = (val) => val && val.$$typeof === testSymbol;\nconst plugin = {\n\tserialize,\n\ttest\n};\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n/**\n* Explicitly comparing typeof constructor to function avoids undefined as name\n* when mock identity-obj-proxy returns the key as the value for any key.\n*/\nfunction getConstructorName(val) {\n\treturn typeof val.constructor === \"function\" && val.constructor.name || \"Object\";\n}\n/** Is val is equal to global window object? Works even if it does not exist :) */\nfunction isWindow(val) {\n\treturn typeof window !== \"undefined\" && val === window;\n}\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/g;\nclass PrettyFormatPluginError extends Error {\n\tconstructor(message, stack) {\n\t\tsuper(message);\n\t\tthis.stack = stack;\n\t\tthis.name = this.constructor.name;\n\t}\n}\nfunction isToStringedArrayType(toStringed) {\n\treturn toStringed === \"[object Array]\" || toStringed === \"[object ArrayBuffer]\" || toStringed === \"[object DataView]\" || toStringed === \"[object Float32Array]\" || toStringed === \"[object Float64Array]\" || toStringed === \"[object Int8Array]\" || toStringed === \"[object Int16Array]\" || toStringed === \"[object Int32Array]\" || toStringed === \"[object Uint8Array]\" || toStringed === \"[object Uint8ClampedArray]\" || toStringed === \"[object Uint16Array]\" || toStringed === \"[object Uint32Array]\";\n}\nfunction printNumber(val) {\n\treturn Object.is(val, -0) ? \"-0\" : String(val);\n}\nfunction printBigInt(val) {\n\treturn String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n\tif (!printFunctionName) {\n\t\treturn \"[Function]\";\n\t}\n\treturn `[Function ${val.name || \"anonymous\"}]`;\n}\nfunction printSymbol(val) {\n\treturn String(val).replace(SYMBOL_REGEXP, \"Symbol($1)\");\n}\nfunction printError(val) {\n\treturn `[${errorToString.call(val)}]`;\n}\n/**\n* The first port of call for printing an object, handles most of the\n* data-types in JS.\n*/\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n\tif (val === true || val === false) {\n\t\treturn `${val}`;\n\t}\n\tif (val === undefined) {\n\t\treturn \"undefined\";\n\t}\n\tif (val === null) {\n\t\treturn \"null\";\n\t}\n\tconst typeOf = typeof val;\n\tif (typeOf === \"number\") {\n\t\treturn printNumber(val);\n\t}\n\tif (typeOf === \"bigint\") {\n\t\treturn printBigInt(val);\n\t}\n\tif (typeOf === \"string\") {\n\t\tif (escapeString) {\n\t\t\treturn `\"${val.replaceAll(/\"|\\\\/g, \"\\\\$&\")}\"`;\n\t\t}\n\t\treturn `\"${val}\"`;\n\t}\n\tif (typeOf === \"function\") {\n\t\treturn printFunction(val, printFunctionName);\n\t}\n\tif (typeOf === \"symbol\") {\n\t\treturn printSymbol(val);\n\t}\n\tconst toStringed = toString.call(val);\n\tif (toStringed === \"[object WeakMap]\") {\n\t\treturn \"WeakMap {}\";\n\t}\n\tif (toStringed === \"[object WeakSet]\") {\n\t\treturn \"WeakSet {}\";\n\t}\n\tif (toStringed === \"[object Function]\" || toStringed === \"[object GeneratorFunction]\") {\n\t\treturn printFunction(val, printFunctionName);\n\t}\n\tif (toStringed === \"[object Symbol]\") {\n\t\treturn printSymbol(val);\n\t}\n\tif (toStringed === \"[object Date]\") {\n\t\treturn Number.isNaN(+val) ? \"Date { NaN }\" : toISOString.call(val);\n\t}\n\tif (toStringed === \"[object Error]\") {\n\t\treturn printError(val);\n\t}\n\tif (toStringed === \"[object RegExp]\") {\n\t\tif (escapeRegex) {\n\t\t\t// https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n\t\t\treturn regExpToString.call(val).replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, \"\\\\$&\");\n\t\t}\n\t\treturn regExpToString.call(val);\n\t}\n\tif (val instanceof Error) {\n\t\treturn printError(val);\n\t}\n\treturn null;\n}\n/**\n* Handles more complex objects ( such as objects with circular references.\n* maps and sets etc )\n*/\nfunction printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) {\n\tif (refs.includes(val)) {\n\t\treturn \"[Circular]\";\n\t}\n\trefs = [...refs];\n\trefs.push(val);\n\tconst hitMaxDepth = ++depth > config.maxDepth;\n\tconst min = config.min;\n\tif (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === \"function\" && !hasCalledToJSON) {\n\t\treturn printer(val.toJSON(), config, indentation, depth, refs, true);\n\t}\n\tconst toStringed = toString.call(val);\n\tif (toStringed === \"[object Arguments]\") {\n\t\treturn hitMaxDepth ? \"[Arguments]\" : `${min ? \"\" : \"Arguments \"}[${printListItems(val, config, indentation, depth, refs, printer)}]`;\n\t}\n\tif (isToStringedArrayType(toStringed)) {\n\t\treturn hitMaxDepth ? `[${val.constructor.name}]` : `${min ? \"\" : !config.printBasicPrototype && val.constructor.name === \"Array\" ? \"\" : `${val.constructor.name} `}[${printListItems(val, config, indentation, depth, refs, printer)}]`;\n\t}\n\tif (toStringed === \"[object Map]\") {\n\t\treturn hitMaxDepth ? \"[Map]\" : `Map {${printIteratorEntries(val.entries(), config, indentation, depth, refs, printer, \" => \")}}`;\n\t}\n\tif (toStringed === \"[object Set]\") {\n\t\treturn hitMaxDepth ? \"[Set]\" : `Set {${printIteratorValues(val.values(), config, indentation, depth, refs, printer)}}`;\n\t}\n\t// Avoid failure to serialize global window object in jsdom test environment.\n\t// For example, not even relevant if window is prop of React element.\n\treturn hitMaxDepth || isWindow(val) ? `[${getConstructorName(val)}]` : `${min ? \"\" : !config.printBasicPrototype && getConstructorName(val) === \"Object\" ? \"\" : `${getConstructorName(val)} `}{${printObjectProperties(val, config, indentation, depth, refs, printer)}}`;\n}\nconst ErrorPlugin = {\n\ttest: (val) => val && val instanceof Error,\n\tserialize(val, config, indentation, depth, refs, printer) {\n\t\tif (refs.includes(val)) {\n\t\t\treturn \"[Circular]\";\n\t\t}\n\t\trefs = [...refs, val];\n\t\tconst hitMaxDepth = ++depth > config.maxDepth;\n\t\tconst { message, cause, ...rest } = val;\n\t\tconst entries = {\n\t\t\tmessage,\n\t\t\t...typeof cause !== \"undefined\" ? { cause } : {},\n\t\t\t...val instanceof AggregateError ? { errors: val.errors } : {},\n\t\t\t...rest\n\t\t};\n\t\tconst name = val.name !== \"Error\" ? val.name : getConstructorName(val);\n\t\treturn hitMaxDepth ? `[${name}]` : `${name} {${printIteratorEntries(Object.entries(entries).values(), config, indentation, depth, refs, printer)}}`;\n\t}\n};\nfunction isNewPlugin(plugin) {\n\treturn plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n\tlet printed;\n\ttry {\n\t\tprinted = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print(val, (valChild) => printer(valChild, config, indentation, depth, refs), (str) => {\n\t\t\tconst indentationNext = indentation + config.indent;\n\t\t\treturn indentationNext + str.replaceAll(NEWLINE_REGEXP, `\\n${indentationNext}`);\n\t\t}, {\n\t\t\tedgeSpacing: config.spacingOuter,\n\t\t\tmin: config.min,\n\t\t\tspacing: config.spacingInner\n\t\t}, config.colors);\n\t} catch (error) {\n\t\tthrow new PrettyFormatPluginError(error.message, error.stack);\n\t}\n\tif (typeof printed !== \"string\") {\n\t\tthrow new TypeError(`pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`);\n\t}\n\treturn printed;\n}\nfunction findPlugin(plugins, val) {\n\tfor (const plugin of plugins) {\n\t\ttry {\n\t\t\tif (plugin.test(val)) {\n\t\t\t\treturn plugin;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthrow new PrettyFormatPluginError(error.message, error.stack);\n\t\t}\n\t}\n\treturn null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n\tlet result;\n\tconst plugin = findPlugin(config.plugins, val);\n\tif (plugin !== null) {\n\t\tresult = printPlugin(plugin, val, config, indentation, depth, refs);\n\t} else {\n\t\tconst basicResult = printBasicValue(val, config.printFunctionName, config.escapeRegex, config.escapeString);\n\t\tif (basicResult !== null) {\n\t\t\tresult = basicResult;\n\t\t} else {\n\t\t\tresult = printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON);\n\t\t}\n\t}\n\t// Per-depth output budget (inspired by Node's util.inspect).\n\t// Each depth level tracks output independently, so nested results\n\t// don't inflate a single counter (which would undercount by ~Nx for\n\t// N levels of nesting). Nodes at the same depth produce disjoint spans\n\t// in the output string, so each bucket accurately reflects output at\n\t// that level. Total output is bounded by maxDepth × maxOutputLength.\n\tconfig._outputLengthPerDepth[depth] ??= 0;\n\tconfig._outputLengthPerDepth[depth] += result.length;\n\tif (config._outputLengthPerDepth[depth] > config.maxOutputLength) {\n\t\tconfig.maxDepth = 0;\n\t}\n\treturn result;\n}\nconst DEFAULT_THEME = {\n\tcomment: \"gray\",\n\tcontent: \"reset\",\n\tprop: \"yellow\",\n\ttag: \"cyan\",\n\tvalue: \"green\"\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\nconst DEFAULT_OPTIONS = {\n\tcallToJSON: true,\n\tcompareKeys: undefined,\n\tescapeRegex: false,\n\tescapeString: true,\n\thighlight: false,\n\tindent: 2,\n\tmaxDepth: Number.POSITIVE_INFINITY,\n\tmaxOutputLength: 1e6,\n\tmaxWidth: Number.POSITIVE_INFINITY,\n\tmin: false,\n\tplugins: [],\n\tprintBasicPrototype: true,\n\tprintFunctionName: true,\n\tprintShadowRoot: true,\n\ttheme: DEFAULT_THEME\n};\nfunction validateOptions(options) {\n\tfor (const key of Object.keys(options)) {\n\t\tif (!Object.hasOwn(DEFAULT_OPTIONS, key)) {\n\t\t\tthrow new Error(`pretty-format: Unknown option \"${key}\".`);\n\t\t}\n\t}\n\tif (options.min && options.indent !== undefined && options.indent !== 0) {\n\t\tthrow new Error(\"pretty-format: Options \\\"min\\\" and \\\"indent\\\" cannot be used together.\");\n\t}\n}\nfunction getColorsHighlight() {\n\treturn DEFAULT_THEME_KEYS.reduce((colors, key) => {\n\t\tconst value = DEFAULT_THEME[key];\n\t\tconst color = value && styles[value];\n\t\tif (color && typeof color.close === \"string\" && typeof color.open === \"string\") {\n\t\t\tcolors[key] = color;\n\t\t} else {\n\t\t\tthrow new Error(`pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`);\n\t\t}\n\t\treturn colors;\n\t}, Object.create(null));\n}\nfunction getColorsEmpty() {\n\treturn DEFAULT_THEME_KEYS.reduce((colors, key) => {\n\t\tcolors[key] = {\n\t\t\tclose: \"\",\n\t\t\topen: \"\"\n\t\t};\n\t\treturn colors;\n\t}, Object.create(null));\n}\nfunction getPrintFunctionName(options) {\n\treturn options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\n}\nfunction getEscapeRegex(options) {\n\treturn options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\n}\nfunction getEscapeString(options) {\n\treturn options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\n}\nfunction getConfig(options) {\n\treturn {\n\t\tcallToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n\t\tcolors: options?.highlight ? getColorsHighlight() : getColorsEmpty(),\n\t\tcompareKeys: typeof options?.compareKeys === \"function\" || options?.compareKeys === null ? options.compareKeys : DEFAULT_OPTIONS.compareKeys,\n\t\tescapeRegex: getEscapeRegex(options),\n\t\tescapeString: getEscapeString(options),\n\t\tindent: options?.min ? \"\" : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n\t\tmaxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n\t\tmaxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n\t\tmin: options?.min ?? DEFAULT_OPTIONS.min,\n\t\tplugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n\t\tprintBasicPrototype: options?.printBasicPrototype ?? true,\n\t\tprintFunctionName: getPrintFunctionName(options),\n\t\tprintShadowRoot: options?.printShadowRoot ?? true,\n\t\tspacingInner: options?.min ? \" \" : \"\\n\",\n\t\tspacingOuter: options?.min ? \"\" : \"\\n\",\n\t\tmaxOutputLength: options?.maxOutputLength ?? DEFAULT_OPTIONS.maxOutputLength,\n\t\t_outputLengthPerDepth: []\n\t};\n}\nfunction createIndent(indent) {\n\treturn Array.from({ length: indent + 1 }).join(\" \");\n}\n/**\n* Returns a presentation string of your `val` object\n* @param val any potential JavaScript object\n* @param options Custom settings\n*/\nfunction format(val, options) {\n\tif (options) {\n\t\tvalidateOptions(options);\n\t\tif (options.plugins) {\n\t\t\tconst plugin = findPlugin(options.plugins, val);\n\t\t\tif (plugin !== null) {\n\t\t\t\treturn printPlugin(plugin, val, getConfig(options), \"\", 0, []);\n\t\t\t}\n\t\t}\n\t}\n\tconst basicResult = printBasicValue(val, getPrintFunctionName(options), getEscapeRegex(options), getEscapeString(options));\n\tif (basicResult !== null) {\n\t\treturn basicResult;\n\t}\n\treturn printComplexValue(val, getConfig(options), \"\", 0, []);\n}\nconst plugins = {\n\tAsymmetricMatcher: plugin$5,\n\tDOMCollection: plugin$4,\n\tDOMElement: plugin$3,\n\tImmutable: plugin$2,\n\tReactElement: plugin$1,\n\tReactTestComponent: plugin,\n\tError: ErrorPlugin\n};\n\nexport { DEFAULT_OPTIONS, createDOMElementFilter, format, plugins };\n","import { plugins, createDOMElementFilter, format as format$1 } from '@vitest/pretty-format';\n\nconst ansiColors = {\n bold: ['1', '22'],\n dim: ['2', '22'],\n italic: ['3', '23'],\n underline: ['4', '24'],\n // 5 & 6 are blinking\n inverse: ['7', '27'],\n hidden: ['8', '28'],\n strike: ['9', '29'],\n // 10-20 are fonts\n // 21-29 are resets for 1-9\n black: ['30', '39'],\n red: ['31', '39'],\n green: ['32', '39'],\n yellow: ['33', '39'],\n blue: ['34', '39'],\n magenta: ['35', '39'],\n cyan: ['36', '39'],\n white: ['37', '39'],\n brightblack: ['30;1', '39'],\n brightred: ['31;1', '39'],\n brightgreen: ['32;1', '39'],\n brightyellow: ['33;1', '39'],\n brightblue: ['34;1', '39'],\n brightmagenta: ['35;1', '39'],\n brightcyan: ['36;1', '39'],\n brightwhite: ['37;1', '39'],\n grey: ['90', '39'],\n};\nconst styles = {\n special: 'cyan',\n number: 'yellow',\n bigint: 'yellow',\n boolean: 'yellow',\n undefined: 'grey',\n null: 'bold',\n string: 'green',\n symbol: 'green',\n date: 'magenta',\n regexp: 'red',\n};\nconst truncator = '…';\nfunction colorise(value, styleType) {\n const color = ansiColors[styles[styleType]] || ansiColors[styleType] || '';\n if (!color) {\n return String(value);\n }\n return `\\u001b[${color[0]}m${String(value)}\\u001b[${color[1]}m`;\n}\nfunction normaliseOptions({ showHidden = false, depth = 2, colors = false, customInspect = true, showProxy = false, maxArrayLength = Infinity, breakLength = Infinity, seen = [], \n// eslint-disable-next-line no-shadow\ntruncate = Infinity, stylize = String, } = {}, inspect) {\n const options = {\n showHidden: Boolean(showHidden),\n depth: Number(depth),\n colors: Boolean(colors),\n customInspect: Boolean(customInspect),\n showProxy: Boolean(showProxy),\n maxArrayLength: Number(maxArrayLength),\n breakLength: Number(breakLength),\n truncate: Number(truncate),\n seen,\n inspect,\n stylize,\n };\n if (options.colors) {\n options.stylize = colorise;\n }\n return options;\n}\nfunction isHighSurrogate(char) {\n return char >= '\\ud800' && char <= '\\udbff';\n}\nfunction truncate(string, length, tail = truncator) {\n string = String(string);\n const tailLength = tail.length;\n const stringLength = string.length;\n if (tailLength > length && stringLength > tailLength) {\n return tail;\n }\n if (stringLength > length && stringLength > tailLength) {\n let end = length - tailLength;\n if (end > 0 && isHighSurrogate(string[end - 1])) {\n end = end - 1;\n }\n return `${string.slice(0, end)}${tail}`;\n }\n return string;\n}\n// eslint-disable-next-line complexity\nfunction inspectList(list, options, inspectItem, separator = ', ') {\n inspectItem = inspectItem || options.inspect;\n const size = list.length;\n if (size === 0)\n return '';\n const originalLength = options.truncate;\n let output = '';\n let peek = '';\n let truncated = '';\n for (let i = 0; i < size; i += 1) {\n const last = i + 1 === list.length;\n const secondToLast = i + 2 === list.length;\n truncated = `${truncator}(${list.length - i})`;\n const value = list[i];\n // If there is more than one remaining we need to account for a separator of `, `\n options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n const string = peek || inspectItem(value, options) + (last ? '' : separator);\n const nextLength = output.length + string.length;\n const truncatedLength = nextLength + truncated.length;\n // If this is the last element, and adding it would\n // take us over length, but adding the truncator wouldn't - then break now\n if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n break;\n }\n // If this isn't the last or second to last element to scan,\n // but the string is already over length then break here\n if (!last && !secondToLast && truncatedLength > originalLength) {\n break;\n }\n // Peek at the next string to determine if we should\n // break early before adding this item to the output\n peek = last ? '' : inspectItem(list[i + 1], options) + (secondToLast ? '' : separator);\n // If we have one element left, but this element and\n // the next takes over length, the break early\n if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) {\n break;\n }\n output += string;\n // If the next element takes us to length -\n // but there are more after that, then we should truncate now\n if (!last && !secondToLast && nextLength + peek.length >= originalLength) {\n truncated = `${truncator}(${list.length - i - 1})`;\n break;\n }\n truncated = '';\n }\n return `${output}${truncated}`;\n}\nfunction quoteComplexKey(key) {\n if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n return key;\n }\n return JSON.stringify(key)\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n}\nfunction inspectProperty([key, value], options) {\n options.truncate -= 2;\n if (typeof key === 'string') {\n key = quoteComplexKey(key);\n }\n else if (typeof key !== 'number') {\n key = `[${options.inspect(key, options)}]`;\n }\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key}: ${value}`;\n}\n\nfunction inspectArray(array, options) {\n // Object.keys will always output the Array indices first, so we can slice by\n // `array.length` to get non-index properties\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return '[]';\n options.truncate -= 4;\n const listContents = inspectList(array, options);\n options.truncate -= listContents.length;\n let propertyContents = '';\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map(key => [key, array[key]]), options, inspectProperty);\n }\n return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ''} ]`;\n}\n\nconst getArrayName = (array) => {\n // We need to special case Node.js' Buffers, which report to be Uint8Array\n // @ts-ignore\n if (typeof Buffer === 'function' && array instanceof Buffer) {\n return 'Buffer';\n }\n if (array[Symbol.toStringTag]) {\n return array[Symbol.toStringTag];\n }\n return array.constructor.name;\n};\nfunction inspectTypedArray(array, options) {\n const name = getArrayName(array);\n options.truncate -= name.length + 4;\n // Object.keys will always output the Array indices first, so we can slice by\n // `array.length` to get non-index properties\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return `${name}[]`;\n // As we know TypedArrays only contain Unsigned Integers, we can skip inspecting each one and simply\n // stylise the toString() value of them\n let output = '';\n for (let i = 0; i < array.length; i++) {\n const string = `${options.stylize(truncate(array[i], options.truncate), 'number')}${i === array.length - 1 ? '' : ', '}`;\n options.truncate -= string.length;\n if (array[i] !== array.length && options.truncate <= 3) {\n output += `${truncator}(${array.length - array[i] + 1})`;\n break;\n }\n output += string;\n }\n let propertyContents = '';\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map(key => [key, array[key]]), options, inspectProperty);\n }\n return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ''} ]`;\n}\n\nfunction inspectDate(dateObject, options) {\n const stringRepresentation = dateObject.toJSON();\n if (stringRepresentation === null) {\n return 'Invalid Date';\n }\n const split = stringRepresentation.split('T');\n const date = split[0];\n // If we need to - truncate the time portion, but never the date\n return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, 'date');\n}\n\nfunction inspectFunction(func, options) {\n const functionType = func[Symbol.toStringTag] || 'Function';\n const name = func.name;\n if (!name) {\n return options.stylize(`[${functionType}]`, 'special');\n }\n return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, 'special');\n}\n\nfunction inspectMapEntry([key, value], options) {\n options.truncate -= 4;\n key = options.inspect(key, options);\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key} => ${value}`;\n}\n// IE11 doesn't support `map.entries()`\nfunction mapToEntries(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n}\nfunction inspectMap(map, options) {\n if (map.size === 0)\n return 'Map{}';\n options.truncate -= 7;\n return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n\nconst isNaN = Number.isNaN || (i => i !== i); // eslint-disable-line no-self-compare\nfunction inspectNumber(number, options) {\n if (isNaN(number)) {\n return options.stylize('NaN', 'number');\n }\n if (number === Infinity) {\n return options.stylize('Infinity', 'number');\n }\n if (number === -Infinity) {\n return options.stylize('-Infinity', 'number');\n }\n if (number === 0) {\n return options.stylize(1 / number === Infinity ? '+0' : '-0', 'number');\n }\n return options.stylize(truncate(String(number), options.truncate), 'number');\n}\n\nfunction inspectBigInt(number, options) {\n let nums = truncate(number.toString(), options.truncate - 1);\n if (nums !== truncator)\n nums += 'n';\n return options.stylize(nums, 'bigint');\n}\n\nfunction inspectRegExp(value, options) {\n const flags = value.toString().split('/')[2];\n const sourceLength = options.truncate - (2 + flags.length);\n const source = value.source;\n return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, 'regexp');\n}\n\n// IE11 doesn't support `Array.from(set)`\nfunction arrayFromSet(set) {\n const values = [];\n set.forEach(value => {\n values.push(value);\n });\n return values;\n}\nfunction inspectSet(set, options) {\n if (set.size === 0)\n return 'Set{}';\n options.truncate -= 7;\n return `Set{ ${inspectList(arrayFromSet(set), options)} }`;\n}\n\nconst stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\" +\n '\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]', 'g');\nconst escapeCharacters = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n \"'\": \"\\\\'\",\n '\\\\': '\\\\\\\\',\n};\nconst hex = 16;\nfunction escape(char) {\n return (escapeCharacters[char] ||\n `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-4)}`);\n}\nfunction inspectString(string, options) {\n if (stringEscapeChars.test(string)) {\n string = string.replace(stringEscapeChars, escape);\n }\n return options.stylize(`'${truncate(string, options.truncate - 2)}'`, 'string');\n}\n\nfunction inspectSymbol(value) {\n if ('description' in Symbol.prototype) {\n return value.description ? `Symbol(${value.description})` : 'Symbol()';\n }\n return value.toString();\n}\n\nconst getPromiseValue = () => 'Promise{…}';\n\nfunction inspectObject$1(object, options) {\n const properties = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n if (properties.length === 0 && symbols.length === 0) {\n return '{}';\n }\n options.truncate -= 4;\n options.seen = options.seen || [];\n if (options.seen.includes(object)) {\n return '[Circular]';\n }\n options.seen.push(object);\n const propertyContents = inspectList(properties.map(key => [key, object[key]]), options, inspectProperty);\n const symbolContents = inspectList(symbols.map(key => [key, object[key]]), options, inspectProperty);\n options.seen.pop();\n let sep = '';\n if (propertyContents && symbolContents) {\n sep = ', ';\n }\n return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n\nconst toStringTag = typeof Symbol !== 'undefined' && Symbol.toStringTag ? Symbol.toStringTag : false;\nfunction inspectClass(value, options) {\n let name = '';\n if (toStringTag && toStringTag in value) {\n name = value[toStringTag];\n }\n name = name || value.constructor.name;\n // Babel transforms anonymous classes to the name `_class`\n if (!name || name === '_class') {\n name = '<Anonymous Class>';\n }\n options.truncate -= name.length;\n return `${name}${inspectObject$1(value, options)}`;\n}\n\nfunction inspectArguments(args, options) {\n if (args.length === 0)\n return 'Arguments[]';\n options.truncate -= 13;\n return `Arguments[ ${inspectList(args, options)} ]`;\n}\n\nconst errorKeys = [\n 'stack',\n 'line',\n 'column',\n 'name',\n 'message',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'number',\n 'description',\n 'cause',\n];\nfunction inspectObject(error, options) {\n const properties = Object.getOwnPropertyNames(error).filter(key => errorKeys.indexOf(key) === -1);\n const name = error.name;\n options.truncate -= name.length;\n let message = '';\n if (typeof error.message === 'string') {\n message = truncate(error.message, options.truncate);\n }\n else {\n properties.unshift('message');\n }\n message = message ? `: ${message}` : '';\n options.truncate -= message.length + 5;\n options.seen = options.seen || [];\n if (options.seen.includes(error)) {\n return '[Circular]';\n }\n options.seen.push(error);\n const propertyContents = inspectList(properties.map(key => [key, error[key]]), options, inspectProperty);\n return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ''}`;\n}\n\nfunction inspectAttribute([key, value], options) {\n options.truncate -= 3;\n if (!value) {\n return `${options.stylize(String(key), 'yellow')}`;\n }\n return `${options.stylize(String(key), 'yellow')}=${options.stylize(`\"${value}\"`, 'string')}`;\n}\nfunction inspectNodeCollection(collection, options) {\n return inspectList(collection, options, inspectNode, '\\n');\n}\nfunction inspectNode(node, options) {\n switch (node.nodeType) {\n case 1:\n return inspectHTML(node, options);\n case 3:\n return options.inspect(node.data, options);\n default:\n return options.inspect(node, options);\n }\n}\n// @ts-ignore (Deno doesn't have Element)\nfunction inspectHTML(element, options) {\n const properties = element.getAttributeNames();\n const name = element.tagName.toLowerCase();\n const head = options.stylize(`<${name}`, 'special');\n const headClose = options.stylize(`>`, 'special');\n const tail = options.stylize(`</${name}>`, 'special');\n options.truncate -= name.length * 2 + 5;\n let propertyContents = '';\n if (properties.length > 0) {\n propertyContents += ' ';\n propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, ' ');\n }\n options.truncate -= propertyContents.length;\n const truncate = options.truncate;\n let children = inspectNodeCollection(element.children, options);\n if (children && children.length > truncate) {\n children = `${truncator}(${element.children.length})`;\n }\n return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n\n/* !\n * loupe\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\nconst symbolsSupported = typeof Symbol === 'function' && typeof Symbol.for === 'function';\nconst chaiInspect = symbolsSupported ? Symbol.for('chai/inspect') : '@@chai/inspect';\nconst nodeInspect = Symbol.for('nodejs.util.inspect.custom');\nconst constructorMap = new WeakMap();\nconst stringTagMap = {};\nconst baseTypesMap = {\n undefined: (value, options) => options.stylize('undefined', 'undefined'),\n null: (value, options) => options.stylize('null', 'null'),\n boolean: (value, options) => options.stylize(String(value), 'boolean'),\n Boolean: (value, options) => options.stylize(String(value), 'boolean'),\n number: inspectNumber,\n Number: inspectNumber,\n bigint: inspectBigInt,\n BigInt: inspectBigInt,\n string: inspectString,\n String: inspectString,\n function: inspectFunction,\n Function: inspectFunction,\n symbol: inspectSymbol,\n // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n Symbol: inspectSymbol,\n Array: inspectArray,\n Date: inspectDate,\n Map: inspectMap,\n Set: inspectSet,\n RegExp: inspectRegExp,\n Promise: getPromiseValue,\n // WeakSet, WeakMap are totally opaque to us\n WeakSet: (value, options) => options.stylize('WeakSet{…}', 'special'),\n WeakMap: (value, options) => options.stylize('WeakMap{…}', 'special'),\n Arguments: inspectArguments,\n Int8Array: inspectTypedArray,\n Uint8Array: inspectTypedArray,\n Uint8ClampedArray: inspectTypedArray,\n Int16Array: inspectTypedArray,\n Uint16Array: inspectTypedArray,\n Int32Array: inspectTypedArray,\n Uint32Array: inspectTypedArray,\n Float32Array: inspectTypedArray,\n Float64Array: inspectTypedArray,\n Generator: () => '',\n DataView: () => '',\n ArrayBuffer: () => '',\n Error: inspectObject,\n HTMLCollection: inspectNodeCollection,\n NodeList: inspectNodeCollection,\n};\n// eslint-disable-next-line complexity\nconst inspectCustom = (value, options, type, inspectFn) => {\n if (chaiInspect in value && typeof value[chaiInspect] === 'function') {\n return value[chaiInspect](options);\n }\n if (nodeInspect in value && typeof value[nodeInspect] === 'function') {\n return value[nodeInspect](options.depth, options, inspectFn);\n }\n if ('inspect' in value && typeof value.inspect === 'function') {\n return value.inspect(options.depth, options);\n }\n if ('constructor' in value && constructorMap.has(value.constructor)) {\n return constructorMap.get(value.constructor)(value, options);\n }\n if (stringTagMap[type]) {\n return stringTagMap[type](value, options);\n }\n return '';\n};\nconst toString = Object.prototype.toString;\n// eslint-disable-next-line complexity\nfunction inspect$1(value, opts = {}) {\n const options = normaliseOptions(opts, inspect$1);\n const { customInspect } = options;\n let type = value === null ? 'null' : typeof value;\n if (type === 'object') {\n type = toString.call(value).slice(8, -1);\n }\n // If it is a base value that we already support, then use Loupe's inspector\n if (type in baseTypesMap) {\n return baseTypesMap[type](value, options);\n }\n // If `options.customInspect` is set to true then try to use the custom inspector\n if (customInspect && value) {\n const output = inspectCustom(value, options, type, inspect$1);\n if (output) {\n if (typeof output === 'string')\n return output;\n return inspect$1(output, options);\n }\n }\n const proto = value ? Object.getPrototypeOf(value) : false;\n // If it's a plain Object then use Loupe's inspector\n if (proto === Object.prototype || proto === null) {\n return inspectObject$1(value, options);\n }\n // Specifically account for HTMLElements\n // @ts-ignore\n if (value && typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n return inspectHTML(value, options);\n }\n if ('constructor' in value) {\n // If it is a class, inspect it like an object but add the constructor name\n if (value.constructor !== Object) {\n return inspectClass(value, options);\n }\n // If it is an object with an anonymous prototype, display it as an object.\n return inspectObject$1(value, options);\n }\n // last chance to check if it's an object\n if (value === Object(value)) {\n return inspectObject$1(value, options);\n }\n // We have run out of options! Just stringify the value\n return options.stylize(String(value), type);\n}\n\nconst { AsymmetricMatcher, DOMCollection, DOMElement, Immutable, ReactElement, ReactTestComponent } = plugins;\nconst PLUGINS = [\n\tReactTestComponent,\n\tReactElement,\n\tDOMElement,\n\tDOMCollection,\n\tImmutable,\n\tAsymmetricMatcher\n];\nfunction stringify(object, maxDepth = 10, { maxLength, filterNode, ...options } = {}) {\n\tconst MAX_LENGTH = maxLength ?? 1e4;\n\tlet result;\n\t// Convert string selector to filter function\n\tconst filterFn = typeof filterNode === \"string\" ? createNodeFilterFromSelector(filterNode) : filterNode;\n\tconst plugins = filterFn ? [\n\t\tReactTestComponent,\n\t\tReactElement,\n\t\tcreateDOMElementFilter(filterFn),\n\t\tDOMCollection,\n\t\tImmutable,\n\t\tAsymmetricMatcher\n\t] : PLUGINS;\n\ttry {\n\t\tresult = format$1(object, {\n\t\t\tmaxDepth,\n\t\t\tescapeString: false,\n\t\t\tplugins,\n\t\t\t...options\n\t\t});\n\t} catch {\n\t\tresult = format$1(object, {\n\t\t\tcallToJSON: false,\n\t\t\tmaxDepth,\n\t\t\tescapeString: false,\n\t\t\tplugins,\n\t\t\t...options\n\t\t});\n\t}\n\t// Prevents infinite loop https://github.com/vitest-dev/vitest/issues/7249\n\treturn result.length >= MAX_LENGTH && maxDepth > 1 ? stringify(object, Math.floor(Math.min(maxDepth, Number.MAX_SAFE_INTEGER) / 2), {\n\t\tmaxLength,\n\t\tfilterNode,\n\t\t...options\n\t}) : result;\n}\nfunction createNodeFilterFromSelector(selector) {\n\tconst ELEMENT_NODE = 1;\n\tconst COMMENT_NODE = 8;\n\treturn (node) => {\n\t\t// Filter out comments\n\t\tif (node.nodeType === COMMENT_NODE) {\n\t\t\treturn false;\n\t\t}\n\t\t// Filter out elements matching the selector\n\t\tif (node.nodeType === ELEMENT_NODE && node.matches) {\n\t\t\ttry {\n\t\t\t\treturn !node.matches(selector);\n\t\t\t} catch {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n}\nconst formatRegExp = /%[sdjifoOc%]/g;\nfunction baseFormat(args, options = {}) {\n\tconst formatArg = (item, inspecOptions) => {\n\t\tif (options.prettifyObject) {\n\t\t\treturn stringify(item, undefined, {\n\t\t\t\tprintBasicPrototype: false,\n\t\t\t\tescapeString: false\n\t\t\t});\n\t\t}\n\t\treturn inspect(item, inspecOptions);\n\t};\n\tif (typeof args[0] !== \"string\") {\n\t\tconst objects = [];\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tobjects.push(formatArg(args[i], {\n\t\t\t\tdepth: 0,\n\t\t\t\tcolors: false\n\t\t\t}));\n\t\t}\n\t\treturn objects.join(\" \");\n\t}\n\tconst len = args.length;\n\tlet i = 1;\n\tconst template = args[0];\n\tlet str = String(template).replace(formatRegExp, (x) => {\n\t\tif (x === \"%%\") {\n\t\t\treturn \"%\";\n\t\t}\n\t\tif (i >= len) {\n\t\t\treturn x;\n\t\t}\n\t\tswitch (x) {\n\t\t\tcase \"%s\": {\n\t\t\t\tconst value = args[i++];\n\t\t\t\tif (typeof value === \"bigint\") {\n\t\t\t\t\treturn `${value.toString()}n`;\n\t\t\t\t}\n\t\t\t\tif (typeof value === \"number\" && value === 0 && 1 / value < 0) {\n\t\t\t\t\treturn \"-0\";\n\t\t\t\t}\n\t\t\t\tif (typeof value === \"object\" && value !== null) {\n\t\t\t\t\tif (typeof value.toString === \"function\" && value.toString !== Object.prototype.toString) {\n\t\t\t\t\t\treturn value.toString();\n\t\t\t\t\t}\n\t\t\t\t\treturn formatArg(value, {\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tcolors: false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\tcase \"%d\": {\n\t\t\t\tconst value = args[i++];\n\t\t\t\tif (typeof value === \"bigint\") {\n\t\t\t\t\treturn `${value.toString()}n`;\n\t\t\t\t}\n\t\t\t\tif (typeof value === \"symbol\") {\n\t\t\t\t\treturn \"NaN\";\n\t\t\t\t}\n\t\t\t\treturn Number(value).toString();\n\t\t\t}\n\t\t\tcase \"%i\": {\n\t\t\t\tconst value = args[i++];\n\t\t\t\tif (typeof value === \"bigint\") {\n\t\t\t\t\treturn `${value.toString()}n`;\n\t\t\t\t}\n\t\t\t\treturn Number.parseInt(String(value)).toString();\n\t\t\t}\n\t\t\tcase \"%f\": return Number.parseFloat(String(args[i++])).toString();\n\t\t\tcase \"%o\": return formatArg(args[i++], {\n\t\t\t\tshowHidden: true,\n\t\t\t\tshowProxy: true\n\t\t\t});\n\t\t\tcase \"%O\": return formatArg(args[i++]);\n\t\t\tcase \"%c\": {\n\t\t\t\ti++;\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tcase \"%j\": try {\n\t\t\t\treturn JSON.stringify(args[i++]);\n\t\t\t} catch (err) {\n\t\t\t\tconst m = err.message;\n\t\t\t\tif (m.includes(\"circular structure\") || m.includes(\"cyclic structures\") || m.includes(\"cyclic object\")) {\n\t\t\t\t\treturn \"[Circular]\";\n\t\t\t\t}\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\tdefault: return x;\n\t\t}\n\t});\n\tfor (let x = args[i]; i < len; x = args[++i]) {\n\t\tif (x === null || typeof x !== \"object\") {\n\t\t\tstr += ` ${typeof x === \"symbol\" ? x.toString() : x}`;\n\t\t} else {\n\t\t\tstr += ` ${formatArg(x)}`;\n\t\t}\n\t}\n\treturn str;\n}\nfunction format(...args) {\n\treturn baseFormat(args);\n}\nfunction browserFormat(...args) {\n\treturn baseFormat(args, { prettifyObject: true });\n}\nfunction inspect(obj, options = {}) {\n\tif (options.truncate === 0) {\n\t\toptions.truncate = Number.POSITIVE_INFINITY;\n\t}\n\treturn inspect$1(obj, options);\n}\nfunction objDisplay(obj, options = {}) {\n\tif (typeof options.truncate === \"undefined\") {\n\t\toptions.truncate = 40;\n\t}\n\tconst str = inspect(obj, options);\n\tconst type = Object.prototype.toString.call(obj);\n\tif (options.truncate && str.length >= options.truncate) {\n\t\tif (type === \"[object Function]\") {\n\t\t\tconst fn = obj;\n\t\t\treturn !fn.name ? \"[Function]\" : `[Function: ${fn.name}]`;\n\t\t} else if (type === \"[object Array]\") {\n\t\t\treturn `[ Array(${obj.length}) ]`;\n\t\t} else if (type === \"[object Object]\") {\n\t\t\tconst keys = Object.keys(obj);\n\t\t\tconst kstr = keys.length > 2 ? `${keys.splice(0, 2).join(\", \")}, ...` : keys.join(\", \");\n\t\t\treturn `{ Object (${kstr}) }`;\n\t\t} else {\n\t\t\treturn str;\n\t\t}\n\t}\n\treturn str;\n}\n\nexport { browserFormat, format, formatRegExp, inspect, objDisplay, stringify };\n","import { VALID_ID_PREFIX, NULL_BYTE_PLACEHOLDER } from './constants.js';\n\n// port from nanoid\n// https://github.com/ai/nanoid\nconst urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nfunction nanoid(size = 21) {\n\tlet id = \"\";\n\tlet i = size;\n\twhile (i--) {\n\t\tid += urlAlphabet[Math.random() * 64 | 0];\n\t}\n\treturn id;\n}\n\nconst RealDate = Date;\nfunction random(seed) {\n\tconst x = Math.sin(seed++) * 1e4;\n\treturn x - Math.floor(x);\n}\nfunction shuffle(array, seed = RealDate.now()) {\n\tlet length = array.length;\n\twhile (length) {\n\t\tconst index = Math.floor(random(seed) * length--);\n\t\tconst previous = array[length];\n\t\tarray[length] = array[index];\n\t\tarray[index] = previous;\n\t\t++seed;\n\t}\n\treturn array;\n}\n\n/**\n* Get original stacktrace without source map support the most performant way.\n* - Create only 1 stack frame.\n* - Rewrite prepareStackTrace to bypass \"support-stack-trace\" (usually takes ~250ms).\n*/\nfunction createSimpleStackTrace(options) {\n\tconst { message = \"$$stack trace error\", stackTraceLimit = 1 } = options || {};\n\tconst limit = Error.stackTraceLimit;\n\tconst prepareStackTrace = Error.prepareStackTrace;\n\tError.stackTraceLimit = stackTraceLimit;\n\tError.prepareStackTrace = (e) => e.stack;\n\tconst err = new Error(message);\n\tconst stackTrace = err.stack || \"\";\n\tError.prepareStackTrace = prepareStackTrace;\n\tError.stackTraceLimit = limit;\n\treturn stackTrace;\n}\nfunction notNullish(v) {\n\treturn v != null;\n}\nfunction assertTypes(value, name, types) {\n\tconst receivedType = typeof value;\n\tconst pass = types.includes(receivedType);\n\tif (!pass) {\n\t\tthrow new TypeError(`${name} value must be ${types.join(\" or \")}, received \"${receivedType}\"`);\n\t}\n}\nfunction isPrimitive(value) {\n\treturn value === null || typeof value !== \"function\" && typeof value !== \"object\";\n}\nfunction slash(path) {\n\treturn path.replace(/\\\\/g, \"/\");\n}\nconst postfixRE = /[?#].*$/;\nfunction cleanUrl(url) {\n\treturn url.replace(postfixRE, \"\");\n}\nfunction splitFileAndPostfix(path) {\n\tconst file = cleanUrl(path);\n\treturn {\n\t\tfile,\n\t\tpostfix: path.slice(file.length)\n\t};\n}\nconst externalRE = /^(?:[a-z]+:)?\\/\\//;\nconst isExternalUrl = (url) => externalRE.test(url);\n/**\n* Prepend `/@id/` and replace null byte so the id is URL-safe.\n* This is prepended to resolved ids that are not valid browser\n* import specifiers by the importAnalysis plugin.\n*/\nfunction wrapId(id) {\n\treturn id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace(\"\\0\", NULL_BYTE_PLACEHOLDER);\n}\n/**\n* Undo {@link wrapId}'s `/@id/` and null byte replacements.\n*/\nfunction unwrapId(id) {\n\treturn id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length).replace(NULL_BYTE_PLACEHOLDER, \"\\0\") : id;\n}\nfunction withTrailingSlash(path) {\n\tif (path.at(-1) !== \"/\") {\n\t\treturn `${path}/`;\n\t}\n\treturn path;\n}\nfunction filterOutComments(s) {\n\tconst result = [];\n\tlet commentState = \"none\";\n\tfor (let i = 0; i < s.length; ++i) {\n\t\tif (commentState === \"singleline\") {\n\t\t\tif (s[i] === \"\\n\") {\n\t\t\t\tcommentState = \"none\";\n\t\t\t}\n\t\t} else if (commentState === \"multiline\") {\n\t\t\tif (s[i - 1] === \"*\" && s[i] === \"/\") {\n\t\t\t\tcommentState = \"none\";\n\t\t\t}\n\t\t} else if (commentState === \"none\") {\n\t\t\tif (s[i] === \"/\" && s[i + 1] === \"/\") {\n\t\t\t\tcommentState = \"singleline\";\n\t\t\t} else if (s[i] === \"/\" && s[i + 1] === \"*\") {\n\t\t\t\tcommentState = \"multiline\";\n\t\t\t\ti += 2;\n\t\t\t} else {\n\t\t\t\tresult.push(s[i]);\n\t\t\t}\n\t\t}\n\t}\n\treturn result.join(\"\");\n}\nconst bareImportRE = /^(?![a-z]:)[\\w@](?!.*:\\/\\/)/i;\nfunction isBareImport(id) {\n\treturn bareImportRE.test(id);\n}\nfunction toArray(array) {\n\tif (array === null || array === undefined) {\n\t\tarray = [];\n\t}\n\tif (Array.isArray(array)) {\n\t\treturn array;\n\t}\n\treturn [array];\n}\nfunction isObject(item) {\n\treturn item != null && typeof item === \"object\" && !Array.isArray(item);\n}\nfunction isFinalObj(obj) {\n\treturn obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype;\n}\nfunction getType(value) {\n\treturn Object.prototype.toString.apply(value).slice(8, -1);\n}\nfunction collectOwnProperties(obj, collector) {\n\tconst collect = typeof collector === \"function\" ? collector : (key) => collector.add(key);\n\tObject.getOwnPropertyNames(obj).forEach(collect);\n\tObject.getOwnPropertySymbols(obj).forEach(collect);\n}\nfunction getOwnProperties(obj) {\n\tconst ownProps = new Set();\n\tif (isFinalObj(obj)) {\n\t\treturn [];\n\t}\n\tcollectOwnProperties(obj, ownProps);\n\treturn Array.from(ownProps);\n}\nconst defaultCloneOptions = { forceWritable: false };\nfunction deepClone(val, options = defaultCloneOptions) {\n\tconst seen = new WeakMap();\n\treturn clone(val, seen, options);\n}\nfunction clone(val, seen, options = defaultCloneOptions) {\n\tlet k, out;\n\tif (seen.has(val)) {\n\t\treturn seen.get(val);\n\t}\n\tif (Array.isArray(val)) {\n\t\tout = Array.from({ length: k = val.length });\n\t\tseen.set(val, out);\n\t\twhile (k--) {\n\t\t\tout[k] = clone(val[k], seen, options);\n\t\t}\n\t\treturn out;\n\t}\n\tif (Object.prototype.toString.call(val) === \"[object Object]\") {\n\t\tout = Object.create(Object.getPrototypeOf(val));\n\t\tseen.set(val, out);\n\t\t// we don't need properties from prototype\n\t\tconst props = getOwnProperties(val);\n\t\tfor (const k of props) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(val, k);\n\t\t\tif (!descriptor) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst cloned = clone(val[k], seen, options);\n\t\t\tif (options.forceWritable) {\n\t\t\t\tObject.defineProperty(out, k, {\n\t\t\t\t\tenumerable: descriptor.enumerable,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: cloned\n\t\t\t\t});\n\t\t\t} else if (\"get\" in descriptor) {\n\t\t\t\tObject.defineProperty(out, k, {\n\t\t\t\t\t...descriptor,\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn cloned;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tObject.defineProperty(out, k, {\n\t\t\t\t\t...descriptor,\n\t\t\t\t\tvalue: cloned\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\treturn val;\n}\nfunction noop() {}\nfunction objectAttr(source, path, defaultValue = undefined) {\n\t// a[3].b -> a.3.b\n\tconst paths = path.replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\");\n\tlet result = source;\n\tfor (const p of paths) {\n\t\tresult = new Object(result)[p];\n\t\tif (result === undefined) {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\treturn result;\n}\nfunction createDefer() {\n\tlet resolve = null;\n\tlet reject = null;\n\tconst p = new Promise((_resolve, _reject) => {\n\t\tresolve = _resolve;\n\t\treject = _reject;\n\t});\n\tp.resolve = resolve;\n\tp.reject = reject;\n\treturn p;\n}\n/**\n* If code starts with a function call, will return its last index, respecting arguments.\n* This will return 25 - last ending character of toMatch \")\"\n* Also works with callbacks\n* ```\n* toMatch({ test: '123' });\n* toBeAliased('123')\n* ```\n*/\nfunction getCallLastIndex(code) {\n\tlet charIndex = -1;\n\tlet inString = null;\n\tlet startedBracers = 0;\n\tlet endedBracers = 0;\n\tlet beforeChar = null;\n\twhile (charIndex <= code.length) {\n\t\tbeforeChar = code[charIndex];\n\t\tcharIndex++;\n\t\tconst char = code[charIndex];\n\t\tconst isCharString = char === \"\\\"\" || char === \"'\" || char === \"`\";\n\t\tif (isCharString && beforeChar !== \"\\\\\") {\n\t\t\tif (inString === char) {\n\t\t\t\tinString = null;\n\t\t\t} else if (!inString) {\n\t\t\t\tinString = char;\n\t\t\t}\n\t\t}\n\t\tif (!inString) {\n\t\t\tif (char === \"(\") {\n\t\t\t\tstartedBracers++;\n\t\t\t}\n\t\t\tif (char === \")\") {\n\t\t\t\tendedBracers++;\n\t\t\t}\n\t\t}\n\t\tif (startedBracers && endedBracers && startedBracers === endedBracers) {\n\t\t\treturn charIndex;\n\t\t}\n\t}\n\treturn null;\n}\nfunction isNegativeNaN(val) {\n\tif (!Number.isNaN(val)) {\n\t\treturn false;\n\t}\n\tconst f64 = new Float64Array(1);\n\tf64[0] = val;\n\tconst u32 = new Uint32Array(f64.buffer);\n\tconst isNegative = u32[1] >>> 31 === 1;\n\treturn isNegative;\n}\nfunction toString(v) {\n\treturn Object.prototype.toString.call(v);\n}\nfunction isPlainObject(val) {\n\treturn toString(val) === \"[object Object]\" && (!val.constructor || val.constructor.name === \"Object\");\n}\nfunction isMergeableObject(item) {\n\treturn isPlainObject(item) && !Array.isArray(item);\n}\nfunction ordinal(i) {\n\tconst j = i % 10;\n\tconst k = i % 100;\n\tif (j === 1 && k !== 11) {\n\t\treturn `${i}st`;\n\t}\n\tif (j === 2 && k !== 12) {\n\t\treturn `${i}nd`;\n\t}\n\tif (j === 3 && k !== 13) {\n\t\treturn `${i}rd`;\n\t}\n\treturn `${i}th`;\n}\n/**\n* Deep merge :P\n*\n* Will merge objects only if they are plain\n*\n* Do not merge types - it is very expensive and usually it's better to case a type here\n*/\nfunction deepMerge(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\tif (source === undefined) {\n\t\treturn target;\n\t}\n\tif (isMergeableObject(target) && isMergeableObject(source)) {\n\t\tObject.keys(source).forEach((key) => {\n\t\t\tconst _source = source;\n\t\t\tif (isMergeableObject(_source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\ttarget[key] = {};\n\t\t\t\t}\n\t\t\t\tdeepMerge(target[key], _source[key]);\n\t\t\t} else {\n\t\t\t\ttarget[key] = _source[key];\n\t\t\t}\n\t\t});\n\t}\n\treturn deepMerge(target, ...sources);\n}\nfunction unique(array) {\n\treturn Array.from(new Set(array));\n}\n\nexport { assertTypes, cleanUrl, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, filterOutComments, getCallLastIndex, getOwnProperties, getType, isBareImport, isExternalUrl, isNegativeNaN, isObject, isPrimitive, nanoid, noop, notNullish, objectAttr, ordinal, shuffle, slash, splitFileAndPostfix, toArray, unique, unwrapId, withTrailingSlash, wrapId };\n","const SAFE_TIMERS_SYMBOL = Symbol(\"vitest:SAFE_TIMERS\");\nfunction getSafeTimers() {\n\tconst { setTimeout: safeSetTimeout, setInterval: safeSetInterval, clearInterval: safeClearInterval, clearTimeout: safeClearTimeout, setImmediate: safeSetImmediate, clearImmediate: safeClearImmediate, queueMicrotask: safeQueueMicrotask } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis;\n\tconst { nextTick: safeNextTick } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis.process || {};\n\treturn {\n\t\tnextTick: safeNextTick,\n\t\tsetTimeout: safeSetTimeout,\n\t\tsetInterval: safeSetInterval,\n\t\tclearInterval: safeClearInterval,\n\t\tclearTimeout: safeClearTimeout,\n\t\tsetImmediate: safeSetImmediate,\n\t\tclearImmediate: safeClearImmediate,\n\t\tqueueMicrotask: safeQueueMicrotask\n\t};\n}\nfunction setSafeTimers() {\n\tconst { setTimeout: safeSetTimeout, setInterval: safeSetInterval, clearInterval: safeClearInterval, clearTimeout: safeClearTimeout, setImmediate: safeSetImmediate, clearImmediate: safeClearImmediate, queueMicrotask: safeQueueMicrotask } = globalThis;\n\tconst { nextTick: safeNextTick } = globalThis.process || {};\n\tconst timers = {\n\t\tnextTick: safeNextTick,\n\t\tsetTimeout: safeSetTimeout,\n\t\tsetInterval: safeSetInterval,\n\t\tclearInterval: safeClearInterval,\n\t\tclearTimeout: safeClearTimeout,\n\t\tsetImmediate: safeSetImmediate,\n\t\tclearImmediate: safeClearImmediate,\n\t\tqueueMicrotask: safeQueueMicrotask\n\t};\n\tglobalThis[SAFE_TIMERS_SYMBOL] = timers;\n}\n/**\n* Returns a promise that resolves after the specified duration.\n*\n* @param timeout - Delay in milliseconds\n* @param scheduler - Timer function to use, defaults to `setTimeout`. Useful for mocked timers.\n*\n* @example\n* await delay(100)\n*\n* @example\n* // With mocked timers\n* const { setTimeout } = getSafeTimers()\n* await delay(100, setTimeout)\n*/\nfunction delay(timeout, scheduler = setTimeout) {\n\treturn new Promise((resolve) => scheduler(resolve, timeout));\n}\n\nexport { delay, getSafeTimers, setSafeTimers };\n","const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\nfunction normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input.replace(/\\\\/g, \"/\").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());\n}\n\nconst _UNC_REGEX = /^[/\\\\]{2}/;\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nconst _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nconst normalize = function(path) {\n if (path.length === 0) {\n return \".\";\n }\n path = normalizeWindowsPath(path);\n const isUNCPath = path.match(_UNC_REGEX);\n const isPathAbsolute = isAbsolute(path);\n const trailingSeparator = path[path.length - 1] === \"/\";\n path = normalizeString(path, !isPathAbsolute);\n if (path.length === 0) {\n if (isPathAbsolute) {\n return \"/\";\n }\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) {\n path += \"/\";\n }\n if (_DRIVE_LETTER_RE.test(path)) {\n path += \"/\";\n }\n if (isUNCPath) {\n if (!isPathAbsolute) {\n return `//./${path}`;\n }\n return `//${path}`;\n }\n return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;\n};\nconst join = function(...segments) {\n let path = \"\";\n for (const seg of segments) {\n if (!seg) {\n continue;\n }\n if (path.length > 0) {\n const pathTrailing = path[path.length - 1] === \"/\";\n const segLeading = seg[0] === \"/\";\n const both = pathTrailing && segLeading;\n if (both) {\n path += seg.slice(1);\n } else {\n path += pathTrailing || segLeading ? seg : `/${seg}`;\n }\n } else {\n path += seg;\n }\n }\n return normalize(path);\n};\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\nconst resolve = function(...arguments_) {\n arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {\n const path = index >= 0 ? arguments_[index] : cwd();\n if (!path || path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\nfunction normalizeString(path, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n char = path[index];\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== \".\" || res[res.length - 2] !== \".\") {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst isAbsolute = function(p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\nconst dirname = function(p) {\n const segments = normalizeWindowsPath(p).replace(/\\/$/, \"\").split(\"/\").slice(0, -1);\n if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) {\n segments[0] += \"/\";\n }\n return segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n};\n\nexport { dirname as d, join as j, resolve as r };\n","import { isPrimitive, notNullish } from './helpers.js';\nimport { r as resolve } from './chunk-pathe.M-eThtNZ.js';\nimport './constants.js';\n\n// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -2147483648 | -value;\n }\n return relative + value;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\n\n// src/trace-mapping.ts\n\n// src/sourcemap-segment.ts\nvar COLUMN = 0;\nvar SOURCES_INDEX = 1;\nvar SOURCE_LINE = 2;\nvar SOURCE_COLUMN = 3;\nvar NAMES_INDEX = 4;\n\n// src/binary-search.ts\nvar found = false;\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + (high - low >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return state.lastIndex = binarySearch(haystack, needle, low, high);\n}\n\n// src/trace-mapping.ts\nvar LINE_GTR_ZERO = \"`line` must be greater than 0 (lines start at line 1)\";\nvar COL_GTR_EQ_ZERO = \"`column` must be greater than or equal to 0 (columns start at column 0)\";\nvar LEAST_UPPER_BOUND = -1;\nvar GREATEST_LOWER_BOUND = 1;\nfunction cast(map) {\n return map;\n}\nfunction decodedMappings(map) {\n var _a;\n return (_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded));\n}\nfunction originalPositionFor(map, needle) {\n let { line, column, bias } = needle;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n if (line >= decoded.length) return OMapping(null, null, null, null);\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND\n );\n if (index === -1) return OMapping(null, null, null, null);\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null\n );\n}\nfunction OMapping(source, line, column, name) {\n return { source, line, column, name };\n}\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(?:\\S:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(?:eval@)?(?:\\[native code\\])?$/;\nconst stackIgnorePatterns = [\n\t\"node:internal\",\n\t/\\/packages\\/\\w+\\/dist\\//,\n\t/\\/@vitest\\/\\w+\\/dist\\//,\n\t\"/vitest/dist/\",\n\t\"/vitest/src/\",\n\t\"/node_modules/chai/\",\n\t\"/node_modules/tinyspy/\",\n\t\"/vite/dist/node/module-runner\",\n\t\"/rolldown-vite/dist/node/module-runner\",\n\t\"/deps/chunk-\",\n\t\"/deps/@vitest\",\n\t\"/deps/loupe\",\n\t\"/deps/chai\",\n\t\"/browser-playwright/dist/locators.js\",\n\t\"/browser-webdriverio/dist/locators.js\",\n\t\"/browser-preview/dist/locators.js\",\n\t/node:\\w+/,\n\t/__vitest_test__/,\n\t/__vitest_browser__/,\n\t\"/@id/__x00__vitest/browser\",\n\t/\\/deps\\/vitest_/\n];\nconst NOW_LENGTH = Date.now().toString().length;\nconst REGEXP_VITEST = new RegExp(`vitest=\\\\d{${NOW_LENGTH}}`);\nfunction extractLocation(urlLike) {\n\t// Fail-fast but return locations like \"(native)\"\n\tif (!urlLike.includes(\":\")) {\n\t\treturn [urlLike];\n\t}\n\tconst regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n\tconst parts = regExp.exec(urlLike.replace(/^\\(|\\)$/g, \"\"));\n\tif (!parts) {\n\t\treturn [urlLike];\n\t}\n\tlet url = parts[1];\n\tif (url.startsWith(\"async \")) {\n\t\turl = url.slice(6);\n\t}\n\tif (url.startsWith(\"http:\") || url.startsWith(\"https:\")) {\n\t\tconst urlObj = new URL(url);\n\t\turlObj.searchParams.delete(\"import\");\n\t\turlObj.searchParams.delete(\"browserv\");\n\t\turl = urlObj.pathname + urlObj.hash + urlObj.search;\n\t}\n\tif (url.startsWith(\"/@fs/\")) {\n\t\tconst isWindows = /^\\/@fs\\/[a-zA-Z]:\\//.test(url);\n\t\turl = url.slice(isWindows ? 5 : 4);\n\t}\n\tif (url.includes(\"vitest=\")) {\n\t\turl = url.replace(REGEXP_VITEST, \"\").replace(/[?&]$/, \"\");\n\t}\n\treturn [\n\t\turl,\n\t\tparts[2] || undefined,\n\t\tparts[3] || undefined\n\t];\n}\nfunction parseSingleFFOrSafariStack(raw) {\n\tlet line = raw.trim();\n\tif (SAFARI_NATIVE_CODE_REGEXP.test(line)) {\n\t\treturn null;\n\t}\n\tif (line.includes(\" > eval\")) {\n\t\tline = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n\t}\n\t// Early return for lines that don't look like Firefox/Safari stack traces\n\t// Firefox/Safari stack traces must contain '@' and should have location info after it\n\tif (!line.includes(\"@\")) {\n\t\treturn null;\n\t}\n\t// Find the correct @ that separates function name from location\n\t// For cases like '@https://@fs/path' or 'functionName@https://@fs/path'\n\t// we need to find the first @ that precedes a valid location (containing :)\n\tlet atIndex = -1;\n\tlet locationPart = \"\";\n\tlet functionName;\n\t// Try each @ from left to right to find the one that gives us a valid location\n\tfor (let i = 0; i < line.length; i++) {\n\t\tif (line[i] === \"@\") {\n\t\t\tconst candidateLocation = line.slice(i + 1);\n\t\t\t// Minimum length 3 for valid location: 1 for filename + 1 for colon + 1 for line number (e.g., \"a:1\")\n\t\t\tif (candidateLocation.includes(\":\") && candidateLocation.length >= 3) {\n\t\t\t\tatIndex = i;\n\t\t\t\tlocationPart = candidateLocation;\n\t\t\t\tfunctionName = i > 0 ? line.slice(0, i) : undefined;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Validate we found a valid location with minimum length (filename:line format)\n\tif (atIndex === -1 || !locationPart.includes(\":\") || locationPart.length < 3) {\n\t\treturn null;\n\t}\n\tconst [url, lineNumber, columnNumber] = extractLocation(locationPart);\n\tif (!url || !lineNumber || !columnNumber) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tfile: url,\n\t\tmethod: functionName || \"\",\n\t\tline: Number.parseInt(lineNumber),\n\t\tcolumn: Number.parseInt(columnNumber)\n\t};\n}\nfunction parseSingleStack(raw) {\n\tconst line = raw.trim();\n\tif (!CHROME_IE_STACK_REGEXP.test(line)) {\n\t\treturn parseSingleFFOrSafariStack(line);\n\t}\n\treturn parseSingleV8Stack(line);\n}\n// Based on https://github.com/stacktracejs/error-stack-parser\n// Credit to stacktracejs\nfunction parseSingleV8Stack(raw) {\n\tlet line = raw.trim();\n\tif (!CHROME_IE_STACK_REGEXP.test(line)) {\n\t\treturn null;\n\t}\n\tif (line.includes(\"(eval \")) {\n\t\tline = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n\t}\n\tlet sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n\t// capture and preserve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n\t// case it has spaces in it, as the string is split on \\s+ later on\n\tconst location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\t// remove the parenthesized location from the line, if it was matched\n\tsanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n\t// if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n\t// because this line doesn't have function name\n\tconst [url, lineNumber, columnNumber] = extractLocation(location ? location[1] : sanitizedLine);\n\tlet method = location && sanitizedLine || \"\";\n\tlet file = url && [\"eval\", \"<anonymous>\"].includes(url) ? undefined : url;\n\tif (!file || !lineNumber || !columnNumber) {\n\t\treturn null;\n\t}\n\tif (method.startsWith(\"async \")) {\n\t\tmethod = method.slice(6);\n\t}\n\tif (file.startsWith(\"file://\")) {\n\t\tfile = file.slice(7);\n\t}\n\t// normalize Windows path (\\ -> /)\n\tfile = file.startsWith(\"node:\") || file.startsWith(\"internal:\") ? file : resolve(file);\n\tif (method) {\n\t\tmethod = method.replace(/\\(0\\s?,\\s?__vite_ssr_import_\\d+__.(\\w+)\\)/g, \"$1\").replace(/__(vite_ssr_import|vi_import)_\\d+__\\./g, \"\").replace(/(Object\\.)?__vite_ssr_export_default__\\s?/g, \"\");\n\t}\n\treturn {\n\t\tmethod,\n\t\tfile,\n\t\tline: Number.parseInt(lineNumber),\n\t\tcolumn: Number.parseInt(columnNumber)\n\t};\n}\nfunction createStackString(stacks) {\n\treturn stacks.map((stack) => {\n\t\tconst line = `${stack.file}:${stack.line}:${stack.column}`;\n\t\tif (stack.method) {\n\t\t\treturn ` at ${stack.method}(${line})`;\n\t\t}\n\t\treturn ` at ${line}`;\n\t}).join(\"\\n\");\n}\nfunction parseStacktrace(stack, options = {}) {\n\tconst { ignoreStackEntries = stackIgnorePatterns } = options;\n\tlet stacks = !CHROME_IE_STACK_REGEXP.test(stack) ? parseFFOrSafariStackTrace(stack) : parseV8Stacktrace(stack);\n\t// remove vi.defineHelper's internal stacks\n\tconst helperIndex = stacks.findLastIndex((s) => s.method.includes(\"__VITEST_HELPER__\"));\n\tif (helperIndex >= 0) {\n\t\tstacks = stacks.slice(helperIndex + 1);\n\t}\n\treturn stacks.map((stack) => {\n\t\tif (options.getUrlId) {\n\t\t\tstack.file = options.getUrlId(stack.file);\n\t\t}\n\t\tconst map = options.getSourceMap?.(stack.file);\n\t\tif (!map || typeof map !== \"object\" || !map.version) {\n\t\t\treturn shouldFilter(ignoreStackEntries, stack.file) ? null : stack;\n\t\t}\n\t\tconst traceMap = new DecodedMap(map, stack.file);\n\t\tconst position = getOriginalPosition(traceMap, stack);\n\t\tif (!position) {\n\t\t\treturn stack;\n\t\t}\n\t\tconst { line, column, source, name } = position;\n\t\tlet file = source || stack.file;\n\t\tif (file.match(/\\/\\w:\\//)) {\n\t\t\tfile = file.slice(1);\n\t\t}\n\t\tif (shouldFilter(ignoreStackEntries, file)) {\n\t\t\treturn null;\n\t\t}\n\t\tif (line != null && column != null) {\n\t\t\treturn {\n\t\t\t\tline,\n\t\t\t\tcolumn,\n\t\t\t\tfile,\n\t\t\t\tmethod: name || stack.method\n\t\t\t};\n\t\t}\n\t\treturn stack;\n\t}).filter((s) => s != null);\n}\nfunction shouldFilter(ignoreStackEntries, file) {\n\treturn ignoreStackEntries.some((p) => file.match(p));\n}\nfunction parseFFOrSafariStackTrace(stack) {\n\treturn stack.split(\"\\n\").map((line) => parseSingleFFOrSafariStack(line)).filter(notNullish);\n}\nfunction parseV8Stacktrace(stack) {\n\treturn stack.split(\"\\n\").map((line) => parseSingleV8Stack(line)).filter(notNullish);\n}\nfunction parseErrorStacktrace(e, options = {}) {\n\tif (!e || isPrimitive(e)) {\n\t\treturn [];\n\t}\n\tif (\"stacks\" in e && e.stacks) {\n\t\treturn e.stacks;\n\t}\n\tconst stackStr = e.stack || \"\";\n\t// if \"stack\" property was overwritten at runtime to be something else,\n\t// ignore the value because we don't know how to process it\n\tlet stackFrames = typeof stackStr === \"string\" ? parseStacktrace(stackStr, options) : [];\n\tif (!stackFrames.length) {\n\t\tconst e_ = e;\n\t\tif (e_.fileName != null && e_.lineNumber != null && e_.columnNumber != null) {\n\t\t\tstackFrames = parseStacktrace(`${e_.fileName}:${e_.lineNumber}:${e_.columnNumber}`, options);\n\t\t}\n\t\tif (e_.sourceURL != null && e_.line != null && e_._column != null) {\n\t\t\tstackFrames = parseStacktrace(`${e_.sourceURL}:${e_.line}:${e_.column}`, options);\n\t\t}\n\t}\n\tif (options.frameFilter) {\n\t\tstackFrames = stackFrames.filter((f) => options.frameFilter(e, f) !== false);\n\t}\n\te.stacks = stackFrames;\n\treturn stackFrames;\n}\nclass DecodedMap {\n\t_encoded;\n\t_decoded;\n\t_decodedMemo;\n\turl;\n\tversion;\n\tnames = [];\n\tresolvedSources;\n\tconstructor(map, from) {\n\t\tthis.map = map;\n\t\tconst { mappings, names, sources } = map;\n\t\tthis.version = map.version;\n\t\tthis.names = names || [];\n\t\tthis._encoded = mappings || \"\";\n\t\tthis._decodedMemo = memoizedState();\n\t\tthis.url = from;\n\t\tthis.resolvedSources = (sources || []).map((s) => resolve(from, \"..\", s || \"\"));\n\t}\n}\nfunction memoizedState() {\n\treturn {\n\t\tlastKey: -1,\n\t\tlastNeedle: -1,\n\t\tlastIndex: -1\n\t};\n}\nfunction getOriginalPosition(map, needle) {\n\tconst result = originalPositionFor(map, needle);\n\tif (result.column == null) {\n\t\treturn null;\n\t}\n\treturn result;\n}\n\nexport { DecodedMap, createStackString, stackIgnorePatterns as defaultStackIgnorePatterns, getOriginalPosition, parseErrorStacktrace, parseSingleFFOrSafariStack, parseSingleStack, parseSingleV8Stack, parseStacktrace };\n","import { processError } from '@vitest/utils/error';\nimport { isObject, filterOutComments, ordinal, createDefer, assertTypes, toArray, isNegativeNaN, unique, objectAttr, shuffle } from '@vitest/utils/helpers';\nimport { getSafeTimers } from '@vitest/utils/timers';\nimport { format, formatRegExp, objDisplay } from '@vitest/utils/display';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { relative } from 'pathe';\n\nclass PendingError extends Error {\n\tcode = \"VITEST_PENDING\";\n\ttaskId;\n\tconstructor(message, task, note) {\n\t\tsuper(message);\n\t\tthis.message = message;\n\t\tthis.note = note;\n\t\tthis.taskId = task.id;\n\t}\n}\nclass TestRunAbortError extends Error {\n\tname = \"TestRunAbortError\";\n\treason;\n\tconstructor(message, reason) {\n\t\tsuper(message);\n\t\tthis.reason = reason;\n\t}\n}\nclass FixtureDependencyError extends Error {\n\tname = \"FixtureDependencyError\";\n}\nclass FixtureAccessError extends Error {\n\tname = \"FixtureAccessError\";\n}\nclass FixtureParseError extends Error {\n\tname = \"FixtureParseError\";\n}\nclass AroundHookSetupError extends Error {\n\tname = \"AroundHookSetupError\";\n}\nclass AroundHookTeardownError extends Error {\n\tname = \"AroundHookTeardownError\";\n}\nclass AroundHookMultipleCallsError extends Error {\n\tname = \"AroundHookMultipleCallsError\";\n}\n\n// use WeakMap here to make the Test and Suite object serializable\nconst fnMap = new WeakMap();\nconst testFixtureMap = new WeakMap();\nconst hooksMap = new WeakMap();\nfunction setFn(key, fn) {\n\tfnMap.set(key, fn);\n}\nfunction getFn(key) {\n\treturn fnMap.get(key);\n}\nfunction setTestFixture(key, fixture) {\n\ttestFixtureMap.set(key, fixture);\n}\nfunction getTestFixtures(key) {\n\treturn testFixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n\thooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n\treturn hooksMap.get(key);\n}\n\nconst FIXTURE_STACK_TRACE_KEY = Symbol.for(\"VITEST_FIXTURE_STACK_TRACE\");\nclass TestFixtures {\n\t_suiteContexts;\n\t_overrides = new WeakMap();\n\t_registrations;\n\tstatic _definitions = [];\n\tstatic _builtinFixtures = [\n\t\t\"task\",\n\t\t\"signal\",\n\t\t\"onTestFailed\",\n\t\t\"onTestFinished\",\n\t\t\"skip\",\n\t\t\"annotate\"\n\t];\n\tstatic _fixtureOptionKeys = [\n\t\t\"auto\",\n\t\t\"injected\",\n\t\t\"scope\"\n\t];\n\tstatic _fixtureScopes = [\n\t\t\"test\",\n\t\t\"file\",\n\t\t\"worker\"\n\t];\n\tstatic _workerContextSuite = { type: \"worker\" };\n\tstatic clearDefinitions() {\n\t\tTestFixtures._definitions.length = 0;\n\t}\n\tstatic getWorkerContexts() {\n\t\treturn TestFixtures._definitions.map((f) => f.getWorkerContext());\n\t}\n\tstatic getFileContexts(file) {\n\t\treturn TestFixtures._definitions.map((f) => f.getFileContext(file));\n\t}\n\tstatic isFixtureOptions(obj) {\n\t\treturn isObject(obj) && Object.keys(obj).some((key) => TestFixtures._fixtureOptionKeys.includes(key));\n\t}\n\tconstructor(registrations) {\n\t\tthis._registrations = registrations ?? new Map();\n\t\tthis._suiteContexts = new WeakMap();\n\t\tTestFixtures._definitions.push(this);\n\t}\n\textend(runner, userFixtures) {\n\t\tconst { suite } = getCurrentSuite();\n\t\tconst isTopLevel = !suite || suite.file === suite;\n\t\tconst registrations = this.parseUserFixtures(runner, userFixtures, isTopLevel);\n\t\treturn new TestFixtures(registrations);\n\t}\n\tget(suite) {\n\t\tlet currentSuite = suite;\n\t\twhile (currentSuite) {\n\t\t\tconst overrides = this._overrides.get(currentSuite);\n\t\t\t// return the closest override\n\t\t\tif (overrides) {\n\t\t\t\treturn overrides;\n\t\t\t}\n\t\t\tif (currentSuite === currentSuite.file) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentSuite = currentSuite.suite || currentSuite.file;\n\t\t}\n\t\treturn this._registrations;\n\t}\n\toverride(runner, userFixtures) {\n\t\tconst { suite: currentSuite, file } = getCurrentSuite();\n\t\tconst suite = currentSuite || file;\n\t\tconst isTopLevel = !currentSuite || currentSuite.file === currentSuite;\n\t\t// Create a copy of the closest parent's registrations to avoid modifying them\n\t\t// For chained calls, this.get(suite) returns this suite's overrides; for first call, returns parent's\n\t\tconst suiteRegistrations = new Map(this.get(suite));\n\t\tconst registrations = this.parseUserFixtures(runner, userFixtures, isTopLevel, suiteRegistrations);\n\t\t// If defined in top-level, just override all registrations\n\t\t// We don't support overriding suite-level fixtures anyway (it will throw an error)\n\t\tif (isTopLevel) {\n\t\t\tthis._registrations = registrations;\n\t\t} else {\n\t\t\tthis._overrides.set(suite, registrations);\n\t\t}\n\t}\n\tgetFileContext(file) {\n\t\tif (!this._suiteContexts.has(file)) {\n\t\t\tthis._suiteContexts.set(file, Object.create(null));\n\t\t}\n\t\treturn this._suiteContexts.get(file);\n\t}\n\tgetWorkerContext() {\n\t\tif (!this._suiteContexts.has(TestFixtures._workerContextSuite)) {\n\t\t\tthis._suiteContexts.set(TestFixtures._workerContextSuite, Object.create(null));\n\t\t}\n\t\treturn this._suiteContexts.get(TestFixtures._workerContextSuite);\n\t}\n\tparseUserFixtures(runner, userFixtures, supportNonTest, registrations = new Map(this._registrations)) {\n\t\tconst errors = [];\n\t\tObject.entries(userFixtures).forEach(([name, fn]) => {\n\t\t\tlet options;\n\t\t\tlet value;\n\t\t\tlet _options;\n\t\t\tif (Array.isArray(fn) && fn.length >= 2 && TestFixtures.isFixtureOptions(fn[1])) {\n\t\t\t\t_options = fn[1];\n\t\t\t\toptions = {\n\t\t\t\t\tauto: _options.auto ?? false,\n\t\t\t\t\tscope: _options.scope ?? \"test\",\n\t\t\t\t\tinjected: _options.injected ?? false\n\t\t\t\t};\n\t\t\t\tvalue = options.injected ? runner.injectValue?.(name) ?? fn[0] : fn[0];\n\t\t\t} else {\n\t\t\t\tvalue = fn;\n\t\t\t}\n\t\t\tconst parent = registrations.get(name);\n\t\t\tif (parent && options) {\n\t\t\t\tif (parent.scope !== options.scope) {\n\t\t\t\t\terrors.push(new FixtureDependencyError(`The \"${name}\" fixture was already registered with a \"${options.scope}\" scope.`));\n\t\t\t\t}\n\t\t\t\tif (parent.auto !== options.auto) {\n\t\t\t\t\terrors.push(new FixtureDependencyError(`The \"${name}\" fixture was already registered as { auto: ${options.auto} }.`));\n\t\t\t\t}\n\t\t\t} else if (parent) {\n\t\t\t\toptions = {\n\t\t\t\t\tauto: parent.auto,\n\t\t\t\t\tscope: parent.scope,\n\t\t\t\t\tinjected: parent.injected\n\t\t\t\t};\n\t\t\t} else if (!options) {\n\t\t\t\toptions = {\n\t\t\t\t\tauto: false,\n\t\t\t\t\tinjected: false,\n\t\t\t\t\tscope: \"test\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (options.scope && !TestFixtures._fixtureScopes.includes(options.scope)) {\n\t\t\t\terrors.push(new FixtureDependencyError(`The \"${name}\" fixture has unknown scope \"${options.scope}\".`));\n\t\t\t}\n\t\t\tif (!supportNonTest && options.scope !== \"test\") {\n\t\t\t\terrors.push(new FixtureDependencyError(`The \"${name}\" fixture cannot be defined with a ${options.scope} scope${!_options?.scope && parent?.scope ? \" (inherited from the base fixture)\" : \"\"} inside the describe block. Define it at the top level of the file instead.`));\n\t\t\t}\n\t\t\tconst deps = isFixtureFunction(value) ? getUsedProps(value) : new Set();\n\t\t\tconst item = {\n\t\t\t\tname,\n\t\t\t\tvalue,\n\t\t\t\tauto: options.auto ?? false,\n\t\t\t\tinjected: options.injected ?? false,\n\t\t\t\tscope: options.scope ?? \"test\",\n\t\t\t\tdeps,\n\t\t\t\tparent\n\t\t\t};\n\t\t\tif (isFixtureFunction(value)) {\n\t\t\t\tObject.assign(value, { [FIXTURE_STACK_TRACE_KEY]: new Error(\"STACK_TRACE_ERROR\") });\n\t\t\t}\n\t\t\tregistrations.set(name, item);\n\t\t\tif (item.scope === \"worker\" && (runner.pool === \"vmThreads\" || runner.pool === \"vmForks\")) {\n\t\t\t\titem.scope = \"file\";\n\t\t\t}\n\t\t});\n\t\t// validate fixture dependency scopes\n\t\tfor (const fixture of registrations.values()) {\n\t\t\tfor (const depName of fixture.deps) {\n\t\t\t\tif (TestFixtures._builtinFixtures.includes(depName)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst dep = registrations.get(depName);\n\t\t\t\tif (!dep) {\n\t\t\t\t\terrors.push(new FixtureDependencyError(`The \"${fixture.name}\" fixture depends on unknown fixture \"${depName}\".`));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (depName === fixture.name && !fixture.parent) {\n\t\t\t\t\terrors.push(new FixtureDependencyError(`The \"${fixture.name}\" fixture depends on itself, but does not have a base implementation.`));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (TestFixtures._fixtureScopes.indexOf(fixture.scope) > TestFixtures._fixtureScopes.indexOf(dep.scope)) {\n\t\t\t\t\terrors.push(new FixtureDependencyError(`The ${fixture.scope} \"${fixture.name}\" fixture cannot depend on a ${dep.scope} fixture \"${dep.name}\".`));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (errors.length === 1) {\n\t\t\tthrow errors[0];\n\t\t} else if (errors.length > 1) {\n\t\t\tthrow new AggregateError(errors, \"Cannot resolve user fixtures. See errors for more information.\");\n\t\t}\n\t\treturn registrations;\n\t}\n}\nconst cleanupFnArrayMap = new WeakMap();\nasync function callFixtureCleanup(context) {\n\tconst cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n\tfor (const cleanup of cleanupFnArray.reverse()) {\n\t\tawait cleanup();\n\t}\n\tcleanupFnArrayMap.delete(context);\n}\n/**\n* Returns the current number of cleanup functions registered for the context.\n* This can be used as a checkpoint to later clean up only fixtures added after this point.\n*/\nfunction getFixtureCleanupCount(context) {\n\treturn cleanupFnArrayMap.get(context)?.length ?? 0;\n}\n/**\n* Cleans up only fixtures that were added after the given checkpoint index.\n* This is used by aroundEach to clean up fixtures created inside runTest()\n* while preserving fixtures that were created for aroundEach itself.\n*/\nasync function callFixtureCleanupFrom(context, fromIndex) {\n\tconst cleanupFnArray = cleanupFnArrayMap.get(context);\n\tif (!cleanupFnArray || cleanupFnArray.length <= fromIndex) {\n\t\treturn;\n\t}\n\t// Get items added after the checkpoint\n\tconst toCleanup = cleanupFnArray.slice(fromIndex);\n\t// Clean up in reverse order\n\tfor (const cleanup of toCleanup.reverse()) {\n\t\tawait cleanup();\n\t}\n\t// Remove cleaned up items from the array, keeping items before checkpoint\n\tcleanupFnArray.length = fromIndex;\n}\nconst contextHasFixturesCache = new WeakMap();\nfunction withFixtures(fn, options) {\n\tconst collector = getCurrentSuite();\n\tconst suite = options?.suite || collector.suite || collector.file;\n\treturn async (hookContext) => {\n\t\tconst context = hookContext || options?.context;\n\t\tif (!context) {\n\t\t\tif (options?.suiteHook) {\n\t\t\t\tvalidateSuiteHook(fn, options.suiteHook, options.stackTraceError);\n\t\t\t}\n\t\t\treturn fn({});\n\t\t}\n\t\tconst fixtures = options?.fixtures || getTestFixtures(context);\n\t\tif (!fixtures) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tconst registrations = fixtures.get(suite);\n\t\tif (!registrations.size) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tconst usedFixtures = [];\n\t\tconst usedProps = getUsedProps(fn);\n\t\tfor (const fixture of registrations.values()) {\n\t\t\tif (isAutoFixture(fixture, options) || usedProps.has(fixture.name)) {\n\t\t\t\tusedFixtures.push(fixture);\n\t\t\t}\n\t\t}\n\t\tif (!usedFixtures.length) {\n\t\t\treturn fn(context);\n\t\t}\n\t\tif (!cleanupFnArrayMap.has(context)) {\n\t\t\tcleanupFnArrayMap.set(context, []);\n\t\t}\n\t\tconst cleanupFnArray = cleanupFnArrayMap.get(context);\n\t\tconst pendingFixtures = resolveDeps(usedFixtures, registrations);\n\t\tif (!pendingFixtures.length) {\n\t\t\treturn fn(context);\n\t\t}\n\t\t// Check if suite-level hook is trying to access test-scoped fixtures\n\t\t// Suite hooks (beforeAll/afterAll/aroundAll) can only access file/worker scoped fixtures\n\t\tif (options?.suiteHook) {\n\t\t\tconst testScopedFixtures = pendingFixtures.filter((f) => f.scope === \"test\");\n\t\t\tif (testScopedFixtures.length > 0) {\n\t\t\t\tconst fixtureNames = testScopedFixtures.map((f) => `\"${f.name}\"`).join(\", \");\n\t\t\t\tconst alternativeHook = {\n\t\t\t\t\taroundAll: \"aroundEach\",\n\t\t\t\t\tbeforeAll: \"beforeEach\",\n\t\t\t\t\tafterAll: \"afterEach\"\n\t\t\t\t};\n\t\t\t\tconst error = new FixtureDependencyError(`Test-scoped fixtures cannot be used inside ${options.suiteHook} hook. ` + `The following fixtures are test-scoped: ${fixtureNames}. ` + `Use { scope: 'file' } or { scope: 'worker' } fixtures instead, or move the logic to ${alternativeHook[options.suiteHook]} hook.`);\n\t\t\t\t// Use stack trace from hook registration for better error location\n\t\t\t\tif (options.stackTraceError?.stack) {\n\t\t\t\t\terror.stack = error.message + options.stackTraceError.stack.replace(options.stackTraceError.message, \"\");\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\tif (!contextHasFixturesCache.has(context)) {\n\t\t\tcontextHasFixturesCache.set(context, new WeakSet());\n\t\t}\n\t\tconst cachedFixtures = contextHasFixturesCache.get(context);\n\t\tfor (const fixture of pendingFixtures) {\n\t\t\tif (fixture.scope === \"test\") {\n\t\t\t\t// fixture could be already initialized during \"before\" hook\n\t\t\t\t// we can't check \"fixture.name\" in context because context may\n\t\t\t\t// access the parent fixture ({ a: ({ a }) => {} })\n\t\t\t\tif (cachedFixtures.has(fixture)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcachedFixtures.add(fixture);\n\t\t\t\tconst resolvedValue = await resolveTestFixtureValue(fixture, context, cleanupFnArray);\n\t\t\t\tcontext[fixture.name] = resolvedValue;\n\t\t\t\tcleanupFnArray.push(() => {\n\t\t\t\t\tcachedFixtures.delete(fixture);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst resolvedValue = await resolveScopeFixtureValue(fixtures, suite, fixture);\n\t\t\t\tcontext[fixture.name] = resolvedValue;\n\t\t\t}\n\t\t}\n\t\treturn fn(context);\n\t};\n}\nfunction isAutoFixture(fixture, options) {\n\tif (!fixture.auto) {\n\t\treturn false;\n\t}\n\t// suite hook doesn't automatically trigger unused test-scoped fixtures.\n\tif (options?.suiteHook && fixture.scope === \"test\") {\n\t\treturn false;\n\t}\n\treturn true;\n}\nfunction isFixtureFunction(value) {\n\treturn typeof value === \"function\";\n}\nfunction resolveTestFixtureValue(fixture, context, cleanupFnArray) {\n\tif (!isFixtureFunction(fixture.value)) {\n\t\treturn fixture.value;\n\t}\n\treturn resolveFixtureFunction(fixture.value, fixture.name, context, cleanupFnArray);\n}\nconst scopedFixturePromiseCache = new WeakMap();\nasync function resolveScopeFixtureValue(fixtures, suite, fixture) {\n\tconst workerContext = fixtures.getWorkerContext();\n\tconst fileContext = fixtures.getFileContext(suite.file);\n\tconst fixtureContext = fixture.scope === \"worker\" ? workerContext : fileContext;\n\tif (!isFixtureFunction(fixture.value)) {\n\t\tfixtureContext[fixture.name] = fixture.value;\n\t\treturn fixture.value;\n\t}\n\tif (fixture.name in fixtureContext) {\n\t\treturn fixtureContext[fixture.name];\n\t}\n\tif (scopedFixturePromiseCache.has(fixture)) {\n\t\treturn scopedFixturePromiseCache.get(fixture);\n\t}\n\tif (!cleanupFnArrayMap.has(fixtureContext)) {\n\t\tcleanupFnArrayMap.set(fixtureContext, []);\n\t}\n\tconst cleanupFnFileArray = cleanupFnArrayMap.get(fixtureContext);\n\tconst promise = resolveFixtureFunction(fixture.value, fixture.name, fixture.scope === \"file\" ? {\n\t\t...workerContext,\n\t\t...fileContext\n\t} : fixtureContext, cleanupFnFileArray).then((value) => {\n\t\tfixtureContext[fixture.name] = value;\n\t\tscopedFixturePromiseCache.delete(fixture);\n\t\treturn value;\n\t});\n\tscopedFixturePromiseCache.set(fixture, promise);\n\treturn promise;\n}\nasync function resolveFixtureFunction(fixtureFn, fixtureName, context, cleanupFnArray) {\n\t// wait for `use` call to extract fixture value\n\tconst useFnArgPromise = createDefer();\n\tconst stackTraceError = FIXTURE_STACK_TRACE_KEY in fixtureFn && fixtureFn[FIXTURE_STACK_TRACE_KEY] instanceof Error ? fixtureFn[FIXTURE_STACK_TRACE_KEY] : undefined;\n\tlet isUseFnArgResolved = false;\n\tconst fixtureReturn = fixtureFn(context, async (useFnArg) => {\n\t\t// extract `use` argument\n\t\tisUseFnArgResolved = true;\n\t\tuseFnArgPromise.resolve(useFnArg);\n\t\t// suspend fixture teardown by holding off `useReturnPromise` resolution until cleanup\n\t\tconst useReturnPromise = createDefer();\n\t\tcleanupFnArray.push(async () => {\n\t\t\t// start teardown by resolving `use` Promise\n\t\t\tuseReturnPromise.resolve();\n\t\t\t// wait for finishing teardown\n\t\t\tawait fixtureReturn;\n\t\t});\n\t\tawait useReturnPromise;\n\t}).then(() => {\n\t\t// fixture returned without calling use()\n\t\tif (!isUseFnArgResolved) {\n\t\t\tconst error = new Error(`Fixture \"${fixtureName}\" returned without calling \"use\". Make sure to call \"use\" in every code path of the fixture function.`);\n\t\t\tif (stackTraceError?.stack) {\n\t\t\t\terror.stack = error.message + stackTraceError.stack.replace(stackTraceError.message, \"\");\n\t\t\t}\n\t\t\tuseFnArgPromise.reject(error);\n\t\t}\n\t}).catch((e) => {\n\t\t// treat fixture setup error as test failure\n\t\tif (!isUseFnArgResolved) {\n\t\t\tuseFnArgPromise.reject(e);\n\t\t\treturn;\n\t\t}\n\t\t// otherwise re-throw to avoid silencing error during cleanup\n\t\tthrow e;\n\t});\n\treturn useFnArgPromise;\n}\nfunction resolveDeps(usedFixtures, registrations, depSet = new Set(), pendingFixtures = []) {\n\tusedFixtures.forEach((fixture) => {\n\t\tif (pendingFixtures.includes(fixture)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isFixtureFunction(fixture.value) || !fixture.deps) {\n\t\t\tpendingFixtures.push(fixture);\n\t\t\treturn;\n\t\t}\n\t\tif (depSet.has(fixture)) {\n\t\t\tif (fixture.parent) {\n\t\t\t\tfixture = fixture.parent;\n\t\t\t} else {\n\t\t\t\tthrow new Error(`Circular fixture dependency detected: ${fixture.name} <- ${[...depSet].reverse().map((d) => d.name).join(\" <- \")}`);\n\t\t\t}\n\t\t}\n\t\tdepSet.add(fixture);\n\t\tresolveDeps([...fixture.deps].map((n) => n === fixture.name ? fixture.parent : registrations.get(n)).filter((n) => !!n), registrations, depSet, pendingFixtures);\n\t\tpendingFixtures.push(fixture);\n\t\tdepSet.clear();\n\t});\n\treturn pendingFixtures;\n}\nfunction validateSuiteHook(fn, hook, suiteError) {\n\tconst usedProps = getUsedProps(fn, {\n\t\tsourceError: suiteError,\n\t\tsuiteHook: hook\n\t});\n\tif (usedProps.size) {\n\t\tconst error = new FixtureAccessError(`The ${hook} hook uses fixtures \"${[...usedProps].join(\"\\\", \\\"\")}\", but has no access to context. ` + `Did you forget to call it as \"test.${hook}()\" instead of \"${hook}()\"?\\n` + `If you used internal \"suite\" task as the first argument previously, access it in the second argument instead. ` + `See https://vitest.dev/guide/test-context#suite-level-hooks`);\n\t\tif (suiteError) {\n\t\t\terror.stack = suiteError.stack?.replace(suiteError.message, error.message);\n\t\t}\n\t\tthrow error;\n\t}\n}\nconst kPropsSymbol = Symbol(\"$vitest:fixture-props\");\nconst kPropNamesSymbol = Symbol(\"$vitest:fixture-prop-names\");\nfunction configureProps(fn, options) {\n\tObject.defineProperty(fn, kPropsSymbol, {\n\t\tvalue: options,\n\t\tenumerable: false\n\t});\n}\nfunction memoProps(fn, props) {\n\tfn[kPropNamesSymbol] = props;\n\treturn props;\n}\nfunction getUsedProps(fn, { sourceError, suiteHook } = {}) {\n\tif (kPropNamesSymbol in fn) {\n\t\treturn fn[kPropNamesSymbol];\n\t}\n\tconst { index: fixturesIndex = 0, original: implementation = fn } = kPropsSymbol in fn ? fn[kPropsSymbol] : {};\n\tlet fnString = filterOutComments(implementation.toString());\n\t// match lowered async function and strip it off\n\t// example code on esbuild-try https://esbuild.github.io/try/#YgAwLjI0LjAALS1zdXBwb3J0ZWQ6YXN5bmMtYXdhaXQ9ZmFsc2UAZQBlbnRyeS50cwBjb25zdCBvID0gewogIGYxOiBhc3luYyAoKSA9PiB7fSwKICBmMjogYXN5bmMgKGEpID0+IHt9LAogIGYzOiBhc3luYyAoYSwgYikgPT4ge30sCiAgZjQ6IGFzeW5jIGZ1bmN0aW9uKGEpIHt9LAogIGY1OiBhc3luYyBmdW5jdGlvbiBmZihhKSB7fSwKICBhc3luYyBmNihhKSB7fSwKCiAgZzE6IGFzeW5jICgpID0+IHt9LAogIGcyOiBhc3luYyAoeyBhIH0pID0+IHt9LAogIGczOiBhc3luYyAoeyBhIH0sIGIpID0+IHt9LAogIGc0OiBhc3luYyBmdW5jdGlvbiAoeyBhIH0pIHt9LAogIGc1OiBhc3luYyBmdW5jdGlvbiBnZyh7IGEgfSkge30sCiAgYXN5bmMgZzYoeyBhIH0pIHt9LAoKICBoMTogYXN5bmMgKCkgPT4ge30sCiAgLy8gY29tbWVudCBiZXR3ZWVuCiAgaDI6IGFzeW5jIChhKSA9PiB7fSwKfQ\n\t// __async(this, null, function*\n\t// __async(this, arguments, function*\n\t// __async(this, [_0, _1], function*\n\tif (/__async\\((?:this|null), (?:null|arguments|\\[[_0-9, ]*\\]), function\\*/.test(fnString)) {\n\t\tfnString = fnString.split(/__async\\((?:this|null),/)[1];\n\t}\n\tconst match = fnString.match(/[^(]*\\(([^)]*)/);\n\tif (!match) {\n\t\treturn memoProps(fn, new Set());\n\t}\n\tconst args = splitByComma(match[1]);\n\tif (!args.length) {\n\t\treturn memoProps(fn, new Set());\n\t}\n\tconst fixturesArgument = args[fixturesIndex];\n\tif (!fixturesArgument) {\n\t\treturn memoProps(fn, new Set());\n\t}\n\tif (!(fixturesArgument[0] === \"{\" && fixturesArgument.endsWith(\"}\"))) {\n\t\tconst ordinalArgument = ordinal(fixturesIndex + 1);\n\t\tconst error = new FixtureParseError(`The ${ordinalArgument} argument inside a fixture must use object destructuring pattern, e.g. ({ task } => {}). ` + `Instead, received \"${fixturesArgument}\".` + `${suiteHook ? ` If you used internal \"suite\" task as the ${ordinalArgument} argument previously, access it in the ${ordinal(fixturesIndex + 2)} argument instead.` : \"\"}`);\n\t\tif (sourceError) {\n\t\t\terror.stack = sourceError.stack?.replace(sourceError.message, error.message);\n\t\t}\n\t\tthrow error;\n\t}\n\tconst _first = fixturesArgument.slice(1, -1).replace(/\\s/g, \"\");\n\tconst props = splitByComma(_first).map((prop) => {\n\t\treturn prop.replace(/:.*|=.*/g, \"\");\n\t});\n\tconst last = props.at(-1);\n\tif (last && last.startsWith(\"...\")) {\n\t\tconst error = new FixtureParseError(`Rest parameters are not supported in fixtures, received \"${last}\".`);\n\t\tif (sourceError) {\n\t\t\terror.stack = sourceError.stack?.replace(sourceError.message, error.message);\n\t\t}\n\t\tthrow error;\n\t}\n\treturn memoProps(fn, new Set(props));\n}\nfunction splitByComma(s) {\n\tconst result = [];\n\tconst stack = [];\n\tlet start = 0;\n\tfor (let i = 0; i < s.length; i++) {\n\t\tif (s[i] === \"{\" || s[i] === \"[\") {\n\t\t\tstack.push(s[i] === \"{\" ? \"}\" : \"]\");\n\t\t} else if (s[i] === stack.at(-1)) {\n\t\t\tstack.pop();\n\t\t} else if (!stack.length && s[i] === \",\") {\n\t\t\tconst token = s.substring(start, i).trim();\n\t\t\tif (token) {\n\t\t\t\tresult.push(token);\n\t\t\t}\n\t\t\tstart = i + 1;\n\t\t}\n\t}\n\tconst lastToken = s.substring(start).trim();\n\tif (lastToken) {\n\t\tresult.push(lastToken);\n\t}\n\treturn result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n\t_test = test;\n}\nfunction getCurrentTest() {\n\treturn _test;\n}\nconst tests = [];\nfunction addRunningTest(test) {\n\ttests.push(test);\n\treturn () => {\n\t\ttests.splice(tests.indexOf(test));\n\t};\n}\nfunction getRunningTests() {\n\treturn tests;\n}\n\nconst kChainableContext = Symbol(\"kChainableContext\");\nfunction getChainableContext(chainable) {\n\treturn chainable?.[kChainableContext];\n}\nfunction createChainable(keys, fn, context) {\n\tfunction create(context) {\n\t\tconst chain = function(...args) {\n\t\t\treturn fn.apply(context, args);\n\t\t};\n\t\tObject.assign(chain, fn);\n\t\tObject.defineProperty(chain, kChainableContext, {\n\t\t\tvalue: {\n\t\t\t\twithContext: () => chain.bind(context),\n\t\t\t\tgetFixtures: () => context.fixtures,\n\t\t\t\tsetContext: (key, value) => {\n\t\t\t\t\tcontext[key] = value;\n\t\t\t\t},\n\t\t\t\tmergeContext: (ctx) => {\n\t\t\t\t\tObject.assign(context, ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\tenumerable: false\n\t\t});\n\t\tfor (const key of keys) {\n\t\t\tObject.defineProperty(chain, key, { get() {\n\t\t\t\treturn create({\n\t\t\t\t\t...context,\n\t\t\t\t\t[key]: true\n\t\t\t\t});\n\t\t\t} });\n\t\t}\n\t\treturn chain;\n\t}\n\tconst chain = create(context ?? {});\n\tObject.defineProperty(chain, \"fn\", {\n\t\tvalue: fn,\n\t\tenumerable: false\n\t});\n\treturn chain;\n}\n\nfunction getDefaultHookTimeout() {\n\treturn getRunner().config.hookTimeout;\n}\nconst CLEANUP_TIMEOUT_KEY = Symbol.for(\"VITEST_CLEANUP_TIMEOUT\");\nconst CLEANUP_STACK_TRACE_KEY = Symbol.for(\"VITEST_CLEANUP_STACK_TRACE\");\nconst AROUND_TIMEOUT_KEY = Symbol.for(\"VITEST_AROUND_TIMEOUT\");\nconst AROUND_STACK_TRACE_KEY = Symbol.for(\"VITEST_AROUND_STACK_TRACE\");\nfunction getBeforeHookCleanupCallback(hook, result, context) {\n\tif (typeof result === \"function\") {\n\t\tconst timeout = CLEANUP_TIMEOUT_KEY in hook && typeof hook[CLEANUP_TIMEOUT_KEY] === \"number\" ? hook[CLEANUP_TIMEOUT_KEY] : getDefaultHookTimeout();\n\t\tconst stackTraceError = CLEANUP_STACK_TRACE_KEY in hook && hook[CLEANUP_STACK_TRACE_KEY] instanceof Error ? hook[CLEANUP_STACK_TRACE_KEY] : undefined;\n\t\treturn withTimeout(result, timeout, true, stackTraceError, (_, error) => {\n\t\t\tif (context) {\n\t\t\t\tabortContextSignal(context, error);\n\t\t\t}\n\t\t});\n\t}\n}\n/**\n* Registers a callback function to be executed once before all tests within the current suite.\n* This hook is useful for scenarios where you need to perform setup operations that are common to all tests in a suite, such as initializing a database connection or setting up a test environment.\n*\n* **Note:** The `beforeAll` hooks are executed in the order they are defined one after another. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed before all tests.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using beforeAll to set up a database connection\n* beforeAll(async () => {\n* await database.connect();\n* });\n* ```\n*/\nfunction beforeAll(fn, timeout = getDefaultHookTimeout()) {\n\tassertTypes(fn, \"\\\"beforeAll\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\tconst context = getChainableContext(this);\n\treturn getCurrentSuite().on(\"beforeAll\", Object.assign(withTimeout(withSuiteFixtures(\"beforeAll\", fn, context, stackTraceError), timeout, true, stackTraceError), {\n\t\t[CLEANUP_TIMEOUT_KEY]: timeout,\n\t\t[CLEANUP_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\n/**\n* Registers a callback function to be executed once after all tests within the current suite have completed.\n* This hook is useful for scenarios where you need to perform cleanup operations after all tests in a suite have run, such as closing database connections or cleaning up temporary files.\n*\n* **Note:** The `afterAll` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed after all tests.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using afterAll to close a database connection\n* afterAll(async () => {\n* await database.disconnect();\n* });\n* ```\n*/\nfunction afterAll(fn, timeout) {\n\tassertTypes(fn, \"\\\"afterAll\\\" callback\", [\"function\"]);\n\tconst context = getChainableContext(this);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\treturn getCurrentSuite().on(\"afterAll\", withTimeout(withSuiteFixtures(\"afterAll\", fn, context, stackTraceError), timeout ?? getDefaultHookTimeout(), true, stackTraceError));\n}\n/**\n* Registers a callback function to be executed before each test within the current suite.\n* This hook is useful for scenarios where you need to reset or reinitialize the test environment before each test runs, such as resetting database states, clearing caches, or reinitializing variables.\n*\n* **Note:** The `beforeEach` hooks are executed in the order they are defined one after another. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed before each test. This function receives an `TestContext` parameter if additional test context is needed.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using beforeEach to reset a database state\n* beforeEach(async () => {\n* await database.reset();\n* });\n* ```\n*/\nfunction beforeEach(fn, timeout = getDefaultHookTimeout()) {\n\tassertTypes(fn, \"\\\"beforeEach\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\tconst wrapper = (context, suite) => {\n\t\tconst fixtureResolver = withFixtures(fn, { suite });\n\t\treturn fixtureResolver(context);\n\t};\n\treturn getCurrentSuite().on(\"beforeEach\", Object.assign(withTimeout(wrapper, timeout ?? getDefaultHookTimeout(), true, stackTraceError, abortIfTimeout), {\n\t\t[CLEANUP_TIMEOUT_KEY]: timeout,\n\t\t[CLEANUP_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\n/**\n* Registers a callback function to be executed after each test within the current suite has completed.\n* This hook is useful for scenarios where you need to clean up or reset the test environment after each test runs, such as deleting temporary files, clearing test-specific database entries, or resetting mocked functions.\n*\n* **Note:** The `afterEach` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed after each test. This function receives an `TestContext` parameter if additional test context is needed.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using afterEach to delete temporary files created during a test\n* afterEach(async () => {\n* await fileSystem.deleteTempFiles();\n* });\n* ```\n*/\nfunction afterEach(fn, timeout) {\n\tassertTypes(fn, \"\\\"afterEach\\\" callback\", [\"function\"]);\n\tconst wrapper = (context, suite) => {\n\t\tconst fixtureResolver = withFixtures(fn, { suite });\n\t\treturn fixtureResolver(context);\n\t};\n\treturn getCurrentSuite().on(\"afterEach\", withTimeout(wrapper, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n}\n/**\n* Registers a callback function to be executed when a test fails within the current suite.\n* This function allows for custom actions to be performed in response to test failures, such as logging, cleanup, or additional diagnostics.\n*\n* **Note:** The `onTestFailed` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* @param {Function} fn - The callback function to be executed upon a test failure. The function receives the test result (including errors).\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @throws {Error} Throws an error if the function is not called within a test.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using onTestFailed to log failure details\n* onTestFailed(({ errors }) => {\n* console.log(`Test failed: ${test.name}`, errors);\n* });\n* ```\n*/\nconst onTestFailed = createTestHook(\"onTestFailed\", (test, handler, timeout) => {\n\ttest.onFailed ||= [];\n\ttest.onFailed.push(withTimeout(handler, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n});\n/**\n* Registers a callback function to be executed when the current test finishes, regardless of the outcome (pass or fail).\n* This function is ideal for performing actions that should occur after every test execution, such as cleanup, logging, or resetting shared resources.\n*\n* This hook is useful if you have access to a resource in the test itself and you want to clean it up after the test finishes. It is a more compact way to clean up resources than using the combination of `beforeEach` and `afterEach`.\n*\n* **Note:** The `onTestFinished` hooks are running in reverse order of their registration. You can configure this by changing the `sequence.hooks` option in the config file.\n*\n* **Note:** The `onTestFinished` hook is not called if the test is canceled with a dynamic `ctx.skip()` call.\n*\n* @param {Function} fn - The callback function to be executed after a test finishes. The function can receive parameters providing details about the completed test, including its success or failure status.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @throws {Error} Throws an error if the function is not called within a test.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using onTestFinished for cleanup\n* const db = await connectToDatabase();\n* onTestFinished(async () => {\n* await db.disconnect();\n* });\n* ```\n*/\nconst onTestFinished = createTestHook(\"onTestFinished\", (test, handler, timeout) => {\n\ttest.onFinished ||= [];\n\ttest.onFinished.push(withTimeout(handler, timeout ?? getDefaultHookTimeout(), true, new Error(\"STACK_TRACE_ERROR\"), abortIfTimeout));\n});\n/**\n* Registers a callback function that wraps around all tests within the current suite.\n* The callback receives a `runSuite` function that must be called to run the suite's tests.\n* This hook is useful for scenarios where you need to wrap an entire suite in a context\n* (e.g., starting a server, opening a database connection that all tests share).\n*\n* **Note:** When multiple `aroundAll` hooks are registered, they are nested inside each other.\n* The first registered hook is the outermost wrapper.\n*\n* @param {Function} fn - The callback function that wraps the suite. Must call `runSuite()` to run the tests.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using aroundAll to wrap suite in a tracing span\n* aroundAll(async (runSuite) => {\n* await tracer.trace('test-suite', runSuite);\n* });\n* ```\n* @example\n* ```ts\n* // Example of using aroundAll with fixtures\n* aroundAll(async (runSuite, { db }) => {\n* await db.transaction(() => runSuite());\n* });\n* ```\n*/\nfunction aroundAll(fn, timeout) {\n\tassertTypes(fn, \"\\\"aroundAll\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\tconst resolvedTimeout = timeout ?? getDefaultHookTimeout();\n\tconst context = getChainableContext(this);\n\treturn getCurrentSuite().on(\"aroundAll\", Object.assign(withSuiteFixtures(\"aroundAll\", fn, context, stackTraceError, 1), {\n\t\t[AROUND_TIMEOUT_KEY]: resolvedTimeout,\n\t\t[AROUND_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\n/**\n* Registers a callback function that wraps around each test within the current suite.\n* The callback receives a `runTest` function that must be called to run the test.\n* This hook is useful for scenarios where you need to wrap tests in a context (e.g., database transactions).\n*\n* **Note:** When multiple `aroundEach` hooks are registered, they are nested inside each other.\n* The first registered hook is the outermost wrapper.\n*\n* @param {Function} fn - The callback function that wraps the test. Must call `runTest()` to run the test.\n* @param {number} [timeout] - Optional timeout in milliseconds for the hook. If not provided, the default hook timeout from the runner's configuration is used.\n* @returns {void}\n* @example\n* ```ts\n* // Example of using aroundEach to wrap tests in a database transaction\n* aroundEach(async (runTest) => {\n* await database.transaction(() => runTest());\n* });\n* ```\n* @example\n* ```ts\n* // Example of using aroundEach with fixtures\n* aroundEach(async (runTest, { db }) => {\n* await db.transaction(() => runTest());\n* });\n* ```\n*/\nfunction aroundEach(fn, timeout) {\n\tassertTypes(fn, \"\\\"aroundEach\\\" callback\", [\"function\"]);\n\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\tconst resolvedTimeout = timeout ?? getDefaultHookTimeout();\n\tconst wrapper = (runTest, context, suite) => {\n\t\tconst innerFn = (ctx) => fn(runTest, ctx, suite);\n\t\tconfigureProps(innerFn, {\n\t\t\tindex: 1,\n\t\t\toriginal: fn\n\t\t});\n\t\tconst fixtureResolver = withFixtures(innerFn, { suite });\n\t\treturn fixtureResolver(context);\n\t};\n\treturn getCurrentSuite().on(\"aroundEach\", Object.assign(wrapper, {\n\t\t[AROUND_TIMEOUT_KEY]: resolvedTimeout,\n\t\t[AROUND_STACK_TRACE_KEY]: stackTraceError\n\t}));\n}\nfunction withSuiteFixtures(suiteHook, fn, context, stackTraceError, contextIndex = 0) {\n\treturn (...args) => {\n\t\tconst suite = args.at(-1);\n\t\tconst prefix = args.slice(0, -1);\n\t\tconst wrapper = (ctx) => fn(...prefix, ctx, suite);\n\t\tconfigureProps(wrapper, {\n\t\t\tindex: contextIndex,\n\t\t\toriginal: fn\n\t\t});\n\t\tconst fixtures = context?.getFixtures();\n\t\tconst fileContext = fixtures?.getFileContext(suite.file);\n\t\tconst fixtured = withFixtures(wrapper, {\n\t\t\tsuiteHook,\n\t\t\tfixtures,\n\t\t\tcontext: fileContext,\n\t\t\tstackTraceError\n\t\t});\n\t\treturn fixtured();\n\t};\n}\nfunction getAroundHookTimeout(hook) {\n\treturn AROUND_TIMEOUT_KEY in hook && typeof hook[AROUND_TIMEOUT_KEY] === \"number\" ? hook[AROUND_TIMEOUT_KEY] : getDefaultHookTimeout();\n}\nfunction getAroundHookStackTrace(hook) {\n\treturn AROUND_STACK_TRACE_KEY in hook && hook[AROUND_STACK_TRACE_KEY] instanceof Error ? hook[AROUND_STACK_TRACE_KEY] : undefined;\n}\nfunction createTestHook(name, handler) {\n\treturn (fn, timeout) => {\n\t\tassertTypes(fn, `\"${name}\" callback`, [\"function\"]);\n\t\tconst current = getCurrentTest();\n\t\tif (!current) {\n\t\t\tthrow new Error(`Hook ${name}() can only be called inside a test`);\n\t\t}\n\t\treturn handler(current, fn, timeout);\n\t};\n}\n\n/**\n* If any tasks been marked as `only`, mark all other tasks as `skip`.\n*/\nfunction interpretTaskModes(file, namePattern, testLocations, testIds, testTagsFilter, onlyMode, parentIsOnly, allowOnly) {\n\tconst matchedLocations = [];\n\tconst traverseSuite = (suite, parentIsOnly, parentMatchedWithLocation) => {\n\t\tconst suiteIsOnly = parentIsOnly || suite.mode === \"only\";\n\t\t// Check if any tasks in this suite have `.only` - if so, only those should run\n\t\tconst hasSomeTasksOnly = onlyMode && suite.tasks.some((t) => t.mode === \"only\" || t.type === \"suite\" && someTasksAreOnly(t));\n\t\tsuite.tasks.forEach((t) => {\n\t\t\t// Check if either the parent suite or the task itself are marked as included\n\t\t\t// If there are tasks with `.only` in this suite, only include those (not all tasks from describe.only)\n\t\t\tconst includeTask = hasSomeTasksOnly ? t.mode === \"only\" || t.type === \"suite\" && someTasksAreOnly(t) : suiteIsOnly || t.mode === \"only\";\n\t\t\tif (onlyMode) {\n\t\t\t\tif (t.type === \"suite\" && (includeTask || someTasksAreOnly(t))) {\n\t\t\t\t\t// Don't skip this suite\n\t\t\t\t\tif (t.mode === \"only\") {\n\t\t\t\t\t\tcheckAllowOnly(t, allowOnly);\n\t\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t\t}\n\t\t\t\t} else if (t.mode === \"run\" && !includeTask) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t} else if (t.mode === \"only\") {\n\t\t\t\t\tcheckAllowOnly(t, allowOnly);\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet hasLocationMatch = parentMatchedWithLocation;\n\t\t\t// Match test location against provided locations, only run if present\n\t\t\t// in `testLocations`. Note: if `includeTaskLocation` is not enabled,\n\t\t\t// all test will be skipped.\n\t\t\tif (testLocations !== undefined && testLocations.length !== 0) {\n\t\t\t\tif (t.location && testLocations?.includes(t.location.line)) {\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t\tmatchedLocations.push(t.location.line);\n\t\t\t\t\thasLocationMatch = true;\n\t\t\t\t} else if (parentMatchedWithLocation) {\n\t\t\t\t\tt.mode = \"run\";\n\t\t\t\t} else if (t.type === \"test\") {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (t.type === \"test\") {\n\t\t\t\tif (namePattern && !getTaskFullName(t).match(namePattern)) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t\tif (testIds && !testIds.includes(t.id)) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t\tif (testTagsFilter && !testTagsFilter(t.tags || [])) {\n\t\t\t\t\tt.mode = \"skip\";\n\t\t\t\t}\n\t\t\t} else if (t.type === \"suite\") {\n\t\t\t\tif (t.mode === \"skip\") {\n\t\t\t\t\tskipAllTasks(t);\n\t\t\t\t} else if (t.mode === \"todo\") {\n\t\t\t\t\ttodoAllTasks(t);\n\t\t\t\t} else {\n\t\t\t\t\ttraverseSuite(t, includeTask, hasLocationMatch);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// if all subtasks are skipped, mark as skip\n\t\tif (suite.mode === \"run\" || suite.mode === \"queued\") {\n\t\t\tif (suite.tasks.length && suite.tasks.every((i) => i.mode !== \"run\" && i.mode !== \"queued\")) {\n\t\t\t\tsuite.mode = \"skip\";\n\t\t\t}\n\t\t}\n\t};\n\ttraverseSuite(file, parentIsOnly, false);\n\tconst nonMatching = testLocations?.filter((loc) => !matchedLocations.includes(loc));\n\tif (nonMatching && nonMatching.length !== 0) {\n\t\tconst message = nonMatching.length === 1 ? `line ${nonMatching[0]}` : `lines ${nonMatching.join(\", \")}`;\n\t\tif (file.result === undefined) {\n\t\t\tfile.result = {\n\t\t\t\tstate: \"fail\",\n\t\t\t\terrors: []\n\t\t\t};\n\t\t}\n\t\tif (file.result.errors === undefined) {\n\t\t\tfile.result.errors = [];\n\t\t}\n\t\tfile.result.errors.push(processError(new Error(`No test found in ${file.name} in ${message}`)));\n\t}\n}\nfunction getTaskFullName(task) {\n\treturn `${task.suite ? `${getTaskFullName(task.suite)} ` : \"\"}${task.name}`;\n}\nfunction someTasksAreOnly(suite) {\n\treturn suite.tasks.some((t) => t.mode === \"only\" || t.type === \"suite\" && someTasksAreOnly(t));\n}\nfunction skipAllTasks(suite) {\n\tsuite.tasks.forEach((t) => {\n\t\tif (t.mode === \"run\" || t.mode === \"queued\") {\n\t\t\tt.mode = \"skip\";\n\t\t\tif (t.type === \"suite\") {\n\t\t\t\tskipAllTasks(t);\n\t\t\t}\n\t\t}\n\t});\n}\nfunction todoAllTasks(suite) {\n\tsuite.tasks.forEach((t) => {\n\t\tif (t.mode === \"run\" || t.mode === \"queued\") {\n\t\t\tt.mode = \"todo\";\n\t\t\tif (t.type === \"suite\") {\n\t\t\t\ttodoAllTasks(t);\n\t\t\t}\n\t\t}\n\t});\n}\nfunction checkAllowOnly(task, allowOnly) {\n\tif (allowOnly) {\n\t\treturn;\n\t}\n\tconst error = processError(new Error(\"[Vitest] Unexpected .only modifier. Remove it or pass --allowOnly argument to bypass this error\"));\n\ttask.result = {\n\t\tstate: \"fail\",\n\t\terrors: [error]\n\t};\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction generateHash(str) {\n\tlet hash = 0;\n\tif (str.length === 0) {\n\t\treturn `${hash}`;\n\t}\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i);\n\t\thash = (hash << 5) - hash + char;\n\t\thash = hash & hash;\n\t}\n\treturn `${hash}`;\n}\nfunction calculateSuiteHash(parent) {\n\tparent.tasks.forEach((t, idx) => {\n\t\tt.id = `${parent.id}_${idx}`;\n\t\tif (t.type === \"suite\") {\n\t\t\tcalculateSuiteHash(t);\n\t\t}\n\t});\n}\nfunction createFileTask(filepath, root, projectName, pool, viteEnvironment) {\n\tconst path = relative(root, filepath);\n\tconst file = {\n\t\tid: generateFileHash(path, projectName),\n\t\tname: path,\n\t\tfullName: path,\n\t\ttype: \"suite\",\n\t\tmode: \"queued\",\n\t\tfilepath,\n\t\ttasks: [],\n\t\tmeta: Object.create(null),\n\t\tprojectName,\n\t\tfile: undefined,\n\t\tpool,\n\t\tviteEnvironment\n\t};\n\tfile.file = file;\n\treturn file;\n}\n/**\n* Generate a unique ID for a file based on its path and project name\n* @param file File relative to the root of the project to keep ID the same between different machines\n* @param projectName The name of the test project\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction generateFileHash(file, projectName) {\n\treturn /* @__PURE__ */ generateHash(`${file}${projectName || \"\"}`);\n}\nfunction findTestFileStackTrace(testFilePath, error) {\n\t// first line is the error message\n\tconst lines = error.split(\"\\n\").slice(1);\n\tfor (const line of lines) {\n\t\tconst stack = parseSingleStack(line);\n\t\tif (stack && stack.file === testFilePath) {\n\t\t\treturn stack;\n\t\t}\n\t}\n}\n\n/**\n* Return a function for running multiple async operations with limited concurrency.\n*/\nfunction limitConcurrency(concurrency = Infinity) {\n\t// The number of currently active + pending tasks.\n\tlet count = 0;\n\t// The head and tail of the pending task queue, built using a singly linked list.\n\t// Both head and tail are initially undefined, signifying an empty queue.\n\t// They both become undefined again whenever there are no pending tasks.\n\tlet head;\n\tlet tail;\n\t// A bookkeeping function executed whenever a task has been run to completion.\n\tconst finish = () => {\n\t\tcount--;\n\t\t// Check if there are further pending tasks in the queue.\n\t\tif (head) {\n\t\t\t// Allow the next pending task to run and pop it from the queue.\n\t\t\thead[0]();\n\t\t\thead = head[1];\n\t\t\t// The head may now be undefined if there are no further pending tasks.\n\t\t\t// In that case, set tail to undefined as well.\n\t\t\ttail = head && tail;\n\t\t}\n\t};\n\tconst acquire = () => {\n\t\tlet released = false;\n\t\tconst release = () => {\n\t\t\tif (!released) {\n\t\t\t\treleased = true;\n\t\t\t\tfinish();\n\t\t\t}\n\t\t};\n\t\tif (count++ < concurrency) {\n\t\t\treturn release;\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tif (tail) {\n\t\t\t\t// There are pending tasks, so append to the queue.\n\t\t\t\ttail = tail[1] = [() => resolve(release)];\n\t\t\t} else {\n\t\t\t\t// No other pending tasks, initialize the queue with a new tail and head.\n\t\t\t\thead = tail = [() => resolve(release)];\n\t\t\t}\n\t\t});\n\t};\n\tconst limiterFn = (func, ...args) => {\n\t\tfunction run(release) {\n\t\t\ttry {\n\t\t\t\tconst result = func(...args);\n\t\t\t\tif (result instanceof Promise) {\n\t\t\t\t\treturn result.finally(release);\n\t\t\t\t}\n\t\t\t\trelease();\n\t\t\t\treturn Promise.resolve(result);\n\t\t\t} catch (error) {\n\t\t\t\trelease();\n\t\t\t\treturn Promise.reject(error);\n\t\t\t}\n\t\t}\n\t\tconst release = acquire();\n\t\treturn release instanceof Promise ? release.then(run) : run(release);\n\t};\n\treturn Object.assign(limiterFn, { acquire });\n}\n\n/**\n* Partition in tasks groups by consecutive concurrent\n*/\nfunction partitionSuiteChildren(suite) {\n\tlet tasksGroup = [];\n\tconst tasksGroups = [];\n\tfor (const c of suite.tasks) {\n\t\tif (tasksGroup.length === 0 || c.concurrent === tasksGroup[0].concurrent) {\n\t\t\ttasksGroup.push(c);\n\t\t} else {\n\t\t\ttasksGroups.push(tasksGroup);\n\t\t\ttasksGroup = [c];\n\t\t}\n\t}\n\tif (tasksGroup.length > 0) {\n\t\ttasksGroups.push(tasksGroup);\n\t}\n\treturn tasksGroups;\n}\n\nconst filterMap = new WeakMap();\n/**\n* @experimental\n*/\nfunction matchesTags(testTags) {\n\tconst runner = getRunner();\n\tconst tagsFilter = runner._currentSpecification?.testTagsFilter ?? runner.config.tagsFilter;\n\tif (!tagsFilter) {\n\t\treturn true;\n\t}\n\tlet tagsFilterPredicate = filterMap.get(tagsFilter);\n\tif (!tagsFilterPredicate) {\n\t\ttagsFilterPredicate = createTagsFilter(tagsFilter, runner.config.tags);\n\t\tfilterMap.set(tagsFilter, tagsFilterPredicate);\n\t}\n\treturn tagsFilterPredicate(testTags);\n}\nfunction validateTags(config, tags) {\n\tif (!config.strictTags) {\n\t\treturn;\n\t}\n\tconst availableTags = new Set(config.tags.map((tag) => tag.name));\n\tfor (const tag of tags) {\n\t\tif (!availableTags.has(tag)) {\n\t\t\tthrow createNoTagsError(config.tags, tag);\n\t\t}\n\t}\n}\nfunction createNoTagsError(availableTags, tag, prefix = \"tag\") {\n\tif (!availableTags.length) {\n\t\tthrow new Error(`The Vitest config does't define any \"tags\", cannot apply \"${tag}\" ${prefix} for this test. See: https://vitest.dev/guide/test-tags`);\n\t}\n\tthrow new Error(`The ${prefix} \"${tag}\" is not defined in the configuration. Available tags are:\\n${availableTags.map((t) => `- ${t.name}${t.description ? `: ${t.description}` : \"\"}`).join(\"\\n\")}`);\n}\nfunction createTagsFilter(tagsExpr, availableTags) {\n\tconst matchers = tagsExpr.map((expr) => parseTagsExpression(expr, availableTags));\n\treturn (testTags) => {\n\t\treturn matchers.every((matcher) => matcher(testTags));\n\t};\n}\nfunction parseTagsExpression(expr, availableTags) {\n\tconst tokens = tokenize(expr);\n\tconst stream = new TokenStream(tokens, expr);\n\tconst ast = parseOrExpression(stream, availableTags);\n\tif (stream.peek().type !== \"EOF\") {\n\t\tthrow new Error(`Invalid tags expression: unexpected \"${formatToken(stream.peek())}\" in \"${expr}\"`);\n\t}\n\treturn (tags) => evaluateNode(ast, tags);\n}\nfunction formatToken(token) {\n\tswitch (token.type) {\n\t\tcase \"TAG\": return token.value;\n\t\tdefault: return formatTokenType(token.type);\n\t}\n}\nfunction tokenize(expr) {\n\tconst tokens = [];\n\tlet i = 0;\n\twhile (i < expr.length) {\n\t\tif (expr[i] === \" \" || expr[i] === \"\t\") {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (expr[i] === \"(\") {\n\t\t\ttokens.push({ type: \"LPAREN\" });\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (expr[i] === \")\") {\n\t\t\ttokens.push({ type: \"RPAREN\" });\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (expr[i] === \"!\") {\n\t\t\ttokens.push({ type: \"NOT\" });\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (expr.slice(i, i + 2) === \"&&\") {\n\t\t\ttokens.push({ type: \"AND\" });\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tif (expr.slice(i, i + 2) === \"||\") {\n\t\t\ttokens.push({ type: \"OR\" });\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/^and(?:\\s|\\)|$)/i.test(expr.slice(i))) {\n\t\t\ttokens.push({ type: \"AND\" });\n\t\t\ti += 3;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/^or(?:\\s|\\)|$)/i.test(expr.slice(i))) {\n\t\t\ttokens.push({ type: \"OR\" });\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/^not\\s/i.test(expr.slice(i))) {\n\t\t\ttokens.push({ type: \"NOT\" });\n\t\t\ti += 3;\n\t\t\tcontinue;\n\t\t}\n\t\tlet tag = \"\";\n\t\twhile (i < expr.length && expr[i] !== \" \" && expr[i] !== \"\t\" && expr[i] !== \"(\" && expr[i] !== \")\" && expr[i] !== \"!\" && expr[i] !== \"&\" && expr[i] !== \"|\") {\n\t\t\tconst remaining = expr.slice(i);\n\t\t\t// Only treat and/or/not as operators if we're at the start of a tag (after whitespace)\n\t\t\t// This allows tags like \"demand\", \"editor\", \"cannot\" to work correctly\n\t\t\tif (tag === \"\" && (/^and(?:\\s|\\)|$)/i.test(remaining) || /^or(?:\\s|\\)|$)/i.test(remaining) || /^not\\s/i.test(remaining))) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ttag += expr[i];\n\t\t\ti++;\n\t\t}\n\t\tif (tag) {\n\t\t\ttokens.push({\n\t\t\t\ttype: \"TAG\",\n\t\t\t\tvalue: tag\n\t\t\t});\n\t\t}\n\t}\n\ttokens.push({ type: \"EOF\" });\n\treturn tokens;\n}\nclass TokenStream {\n\tpos = 0;\n\tconstructor(tokens, expr) {\n\t\tthis.tokens = tokens;\n\t\tthis.expr = expr;\n\t}\n\tpeek() {\n\t\treturn this.tokens[this.pos];\n\t}\n\tnext() {\n\t\treturn this.tokens[this.pos++];\n\t}\n\texpect(type) {\n\t\tconst token = this.next();\n\t\tif (token.type !== type) {\n\t\t\tif (type === \"RPAREN\" && token.type === \"EOF\") {\n\t\t\t\tthrow new Error(`Invalid tags expression: missing closing \")\" in \"${this.expr}\"`);\n\t\t\t}\n\t\t\tthrow new Error(`Invalid tags expression: expected \"${formatTokenType(type)}\" but got \"${formatToken(token)}\" in \"${this.expr}\"`);\n\t\t}\n\t\treturn token;\n\t}\n\tunexpectedToken() {\n\t\tconst token = this.peek();\n\t\tif (token.type === \"EOF\") {\n\t\t\tthrow new Error(`Invalid tags expression: unexpected end of expression in \"${this.expr}\"`);\n\t\t}\n\t\tthrow new Error(`Invalid tags expression: unexpected \"${formatToken(token)}\" in \"${this.expr}\"`);\n\t}\n}\nfunction formatTokenType(type) {\n\tswitch (type) {\n\t\tcase \"TAG\": return \"tag\";\n\t\tcase \"AND\": return \"and\";\n\t\tcase \"OR\": return \"or\";\n\t\tcase \"NOT\": return \"not\";\n\t\tcase \"LPAREN\": return \"(\";\n\t\tcase \"RPAREN\": return \")\";\n\t\tcase \"EOF\": return \"end of expression\";\n\t}\n}\nfunction parseOrExpression(stream, availableTags) {\n\tlet left = parseAndExpression(stream, availableTags);\n\twhile (stream.peek().type === \"OR\") {\n\t\tstream.next();\n\t\tconst right = parseAndExpression(stream, availableTags);\n\t\tleft = {\n\t\t\ttype: \"or\",\n\t\t\tleft,\n\t\t\tright\n\t\t};\n\t}\n\treturn left;\n}\nfunction parseAndExpression(stream, availableTags) {\n\tlet left = parseUnaryExpression(stream, availableTags);\n\twhile (stream.peek().type === \"AND\") {\n\t\tstream.next();\n\t\tconst right = parseUnaryExpression(stream, availableTags);\n\t\tleft = {\n\t\t\ttype: \"and\",\n\t\t\tleft,\n\t\t\tright\n\t\t};\n\t}\n\treturn left;\n}\nfunction parseUnaryExpression(stream, availableTags) {\n\tif (stream.peek().type === \"NOT\") {\n\t\tstream.next();\n\t\tconst operand = parseUnaryExpression(stream, availableTags);\n\t\treturn {\n\t\t\ttype: \"not\",\n\t\t\toperand\n\t\t};\n\t}\n\treturn parsePrimaryExpression(stream, availableTags);\n}\nfunction parsePrimaryExpression(stream, availableTags) {\n\tconst token = stream.peek();\n\tif (token.type === \"LPAREN\") {\n\t\tstream.next();\n\t\tconst expr = parseOrExpression(stream, availableTags);\n\t\tstream.expect(\"RPAREN\");\n\t\treturn expr;\n\t}\n\tif (token.type === \"TAG\") {\n\t\tstream.next();\n\t\tconst tagValue = token.value;\n\t\tconst pattern = resolveTagPattern(tagValue, availableTags);\n\t\treturn {\n\t\t\ttype: \"tag\",\n\t\t\tvalue: tagValue,\n\t\t\tpattern\n\t\t};\n\t}\n\tstream.unexpectedToken();\n}\nfunction createWildcardRegex(pattern) {\n\treturn new RegExp(`^${pattern.replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\\*/g, \".*\")}$`);\n}\nfunction resolveTagPattern(tagPattern, availableTags) {\n\tif (tagPattern.includes(\"*\")) {\n\t\tconst regex = createWildcardRegex(tagPattern);\n\t\tconst hasMatch = availableTags.some((tag) => regex.test(tag.name));\n\t\tif (!hasMatch) {\n\t\t\tthrow createNoTagsError(availableTags, tagPattern, \"tag pattern\");\n\t\t}\n\t\treturn regex;\n\t}\n\tif (!availableTags.length || !availableTags.some((tag) => tag.name === tagPattern)) {\n\t\tthrow createNoTagsError(availableTags, tagPattern, \"tag pattern\");\n\t}\n\treturn null;\n}\nfunction evaluateNode(node, tags) {\n\tswitch (node.type) {\n\t\tcase \"tag\":\n\t\t\tif (node.pattern) {\n\t\t\t\treturn tags.some((tag) => node.pattern.test(tag));\n\t\t\t}\n\t\t\treturn tags.includes(node.value);\n\t\tcase \"not\": return !evaluateNode(node.operand, tags);\n\t\tcase \"and\": return evaluateNode(node.left, tags) && evaluateNode(node.right, tags);\n\t\tcase \"or\": return evaluateNode(node.left, tags) || evaluateNode(node.right, tags);\n\t}\n}\n\nfunction isTestCase(s) {\n\treturn s.type === \"test\";\n}\nfunction getTests(suite) {\n\tconst tests = [];\n\tconst arraySuites = toArray(suite);\n\tfor (const s of arraySuites) {\n\t\tif (isTestCase(s)) {\n\t\t\ttests.push(s);\n\t\t} else {\n\t\t\tfor (const task of s.tasks) {\n\t\t\t\tif (isTestCase(task)) {\n\t\t\t\t\ttests.push(task);\n\t\t\t\t} else {\n\t\t\t\t\tconst taskTests = getTests(task);\n\t\t\t\t\tfor (const test of taskTests) {\n\t\t\t\t\t\ttests.push(test);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn tests;\n}\nfunction getTasks(tasks = []) {\n\treturn toArray(tasks).flatMap((s) => isTestCase(s) ? [s] : [s, ...getTasks(s.tasks)]);\n}\nfunction getSuites(suite) {\n\treturn toArray(suite).flatMap((s) => s.type === \"suite\" ? [s, ...getSuites(s.tasks)] : []);\n}\nfunction hasTests(suite) {\n\treturn toArray(suite).some((s) => s.tasks.some((c) => isTestCase(c) || hasTests(c)));\n}\nfunction hasFailed(suite) {\n\treturn toArray(suite).some((s) => s.result?.state === \"fail\" || s.type === \"suite\" && hasFailed(s.tasks));\n}\nfunction getNames(task) {\n\tconst names = [task.name];\n\tlet current = task;\n\twhile (current?.suite) {\n\t\tcurrent = current.suite;\n\t\tif (current?.name) {\n\t\t\tnames.unshift(current.name);\n\t\t}\n\t}\n\tif (current !== task.file) {\n\t\tnames.unshift(task.file.name);\n\t}\n\treturn names;\n}\nfunction getFullName(task, separator = \" > \") {\n\treturn getNames(task).join(separator);\n}\nfunction getTestName(task, separator = \" > \") {\n\treturn getNames(task).slice(1).join(separator);\n}\nfunction createTaskName(names, separator = \" > \") {\n\treturn names.filter((name) => name !== undefined).join(separator);\n}\n\n/**\n* Creates a suite of tests, allowing for grouping and hierarchical organization of tests.\n* Suites can contain both tests and other suites, enabling complex test structures.\n*\n* @param {string} name - The name of the suite, used for identification and reporting.\n* @param {Function} fn - A function that defines the tests and suites within this suite.\n* @example\n* ```ts\n* // Define a suite with two tests\n* suite('Math operations', () => {\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n*\n* test('should subtract two numbers', () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* });\n* ```\n* @example\n* ```ts\n* // Define nested suites\n* suite('String operations', () => {\n* suite('Trimming', () => {\n* test('should trim whitespace from start and end', () => {\n* expect(' hello '.trim()).toBe('hello');\n* });\n* });\n*\n* suite('Concatenation', () => {\n* test('should concatenate two strings', () => {\n* expect('hello' + ' ' + 'world').toBe('hello world');\n* });\n* });\n* });\n* ```\n*/\nconst suite = createSuite();\n/**\n* Defines a test case with a given name and test function. The test function can optionally be configured with test options.\n*\n* @param {string | Function} name - The name of the test or a function that will be used as a test name.\n* @param {TestOptions | TestFunction} [optionsOrFn] - Optional. The test options or the test function if no explicit name is provided.\n* @param {number | TestOptions | TestFunction} [optionsOrTest] - Optional. The test function or options, depending on the previous parameters.\n* @throws {Error} If called inside another test function.\n* @example\n* ```ts\n* // Define a simple test\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n* ```\n* @example\n* ```ts\n* // Define a test with options\n* test('should subtract two numbers', { retry: 3 }, () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* ```\n*/\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n\tif (getCurrentTest()) {\n\t\tthrow new Error(\"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\t}\n\tgetCurrentSuite().test.fn.call(this, formatName(name), optionsOrFn, optionsOrTest);\n});\n/**\n* Creates a suite of tests, allowing for grouping and hierarchical organization of tests.\n* Suites can contain both tests and other suites, enabling complex test structures.\n*\n* @param {string} name - The name of the suite, used for identification and reporting.\n* @param {Function} fn - A function that defines the tests and suites within this suite.\n* @example\n* ```ts\n* // Define a suite with two tests\n* describe('Math operations', () => {\n* test('should add two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n*\n* test('should subtract two numbers', () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* });\n* ```\n* @example\n* ```ts\n* // Define nested suites\n* describe('String operations', () => {\n* describe('Trimming', () => {\n* test('should trim whitespace from start and end', () => {\n* expect(' hello '.trim()).toBe('hello');\n* });\n* });\n*\n* describe('Concatenation', () => {\n* test('should concatenate two strings', () => {\n* expect('hello' + ' ' + 'world').toBe('hello world');\n* });\n* });\n* });\n* ```\n*/\nconst describe = suite;\n/**\n* Defines a test case with a given name and test function. The test function can optionally be configured with test options.\n*\n* @param {string | Function} name - The name of the test or a function that will be used as a test name.\n* @param {TestOptions | TestFunction} [optionsOrFn] - Optional. The test options or the test function if no explicit name is provided.\n* @param {number | TestOptions | TestFunction} [optionsOrTest] - Optional. The test function or options, depending on the previous parameters.\n* @throws {Error} If called inside another test function.\n* @example\n* ```ts\n* // Define a simple test\n* it('adds two numbers', () => {\n* expect(add(1, 2)).toBe(3);\n* });\n* ```\n* @example\n* ```ts\n* // Define a test with options\n* it('subtracts two numbers', { retry: 3 }, () => {\n* expect(subtract(5, 2)).toBe(3);\n* });\n* ```\n*/\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction assert(condition, message) {\n\tif (!condition) {\n\t\tthrow new Error(`Vitest failed to find ${message}. One of the following is possible:` + \"\\n- \\\"vitest\\\" is imported directly without running \\\"vitest\\\" command\" + \"\\n- \\\"vitest\\\" is imported inside \\\"globalSetup\\\" (to fix this, use \\\"setupFiles\\\" instead, because \\\"globalSetup\\\" runs in a different context)\" + \"\\n- \\\"vitest\\\" is imported inside Vite / Vitest config file\" + \"\\n- Otherwise, it might be a Vitest bug. Please report it to https://github.com/vitest-dev/vitest/issues\\n\");\n\t}\n}\nfunction getDefaultSuite() {\n\tassert(defaultSuite, \"the default suite\");\n\treturn defaultSuite;\n}\nfunction getRunner() {\n\tassert(runner, \"the runner\");\n\treturn runner;\n}\nfunction createDefaultSuite(runner) {\n\tconst config = runner.config.sequence;\n\tconst options = {};\n\tif (config.concurrent != null) {\n\t\toptions.concurrent = config.concurrent;\n\t}\n\tconst collector = suite(\"\", options, () => {});\n\t// no parent suite for top-level tests\n\tdelete collector.suite;\n\treturn collector;\n}\nfunction clearCollectorContext(file, currentRunner) {\n\tcurrentTestFilepath = file.filepath;\n\trunner = currentRunner;\n\tif (!defaultSuite) {\n\t\tdefaultSuite = createDefaultSuite(currentRunner);\n\t}\n\tdefaultSuite.file = file;\n\tcollectorContext.tasks.length = 0;\n\tdefaultSuite.clear();\n\tcollectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n\tconst currentSuite = collectorContext.currentSuite || defaultSuite;\n\tassert(currentSuite, \"the current suite\");\n\treturn currentSuite;\n}\nfunction createSuiteHooks() {\n\treturn {\n\t\tbeforeAll: [],\n\t\tafterAll: [],\n\t\tbeforeEach: [],\n\t\tafterEach: [],\n\t\taroundEach: [],\n\t\taroundAll: []\n\t};\n}\nconst POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\nfunction parseArguments(optionsOrFn, timeoutOrTest) {\n\tif (timeoutOrTest != null && typeof timeoutOrTest === \"object\") {\n\t\tthrow new TypeError(`Signature \"test(name, fn, { ... })\" was deprecated in Vitest 3 and removed in Vitest 4. Please, provide options as a second argument instead.`);\n\t}\n\tlet options = {};\n\tlet fn;\n\t// it('', () => {}, 1000)\n\tif (typeof timeoutOrTest === \"number\") {\n\t\toptions = { timeout: timeoutOrTest };\n\t} else if (typeof optionsOrFn === \"object\") {\n\t\toptions = optionsOrFn;\n\t}\n\tif (typeof optionsOrFn === \"function\") {\n\t\tif (typeof timeoutOrTest === \"function\") {\n\t\t\tthrow new TypeError(\"Cannot use two functions as arguments. Please use the second argument for options.\");\n\t\t}\n\t\tfn = optionsOrFn;\n\t} else if (typeof timeoutOrTest === \"function\") {\n\t\tfn = timeoutOrTest;\n\t}\n\treturn {\n\t\toptions,\n\t\thandler: fn\n\t};\n}\n// implementations\nfunction createSuiteCollector(name, factory = () => {}, mode, each, suiteOptions) {\n\tconst tasks = [];\n\tlet suite;\n\tinitSuite(true);\n\tconst task = function(name = \"\", options = {}) {\n\t\tconst currentSuite = collectorContext.currentSuite?.suite;\n\t\tconst parentTask = currentSuite ?? collectorContext.currentSuite?.file;\n\t\tconst parentTags = parentTask?.tags || [];\n\t\tconst testTags = unique([...parentTags, ...toArray(options.tags)]);\n\t\tconst tagsOptions = testTags.map((tag) => {\n\t\t\tconst tagDefinition = runner.config.tags?.find((t) => t.name === tag);\n\t\t\tif (!tagDefinition && runner.config.strictTags) {\n\t\t\t\tthrow createNoTagsError(runner.config.tags, tag);\n\t\t\t}\n\t\t\treturn tagDefinition;\n\t\t}).filter((r) => r != null).sort((tag1, tag2) => (tag2.priority ?? POSITIVE_INFINITY) - (tag1.priority ?? POSITIVE_INFINITY)).reduce((acc, tag) => {\n\t\t\tconst { name, description, priority, meta, ...options } = tag;\n\t\t\tObject.assign(acc, options);\n\t\t\tif (meta) {\n\t\t\t\tacc.meta = Object.assign(acc.meta ?? Object.create(null), meta);\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {});\n\t\tconst testOwnMeta = options.meta;\n\t\toptions = {\n\t\t\t...tagsOptions,\n\t\t\t...options\n\t\t};\n\t\tconst timeout = options.timeout ?? runner.config.testTimeout;\n\t\tconst parentMeta = currentSuite?.meta;\n\t\tconst tagMeta = tagsOptions.meta;\n\t\tconst testMeta = Object.create(null);\n\t\tif (tagMeta) {\n\t\t\tObject.assign(testMeta, tagMeta);\n\t\t}\n\t\tif (parentMeta) {\n\t\t\tObject.assign(testMeta, parentMeta);\n\t\t}\n\t\tif (testOwnMeta) {\n\t\t\tObject.assign(testMeta, testOwnMeta);\n\t\t}\n\t\tconst task = {\n\t\t\tid: \"\",\n\t\t\tname,\n\t\t\tfullName: createTaskName([currentSuite?.fullName ?? collectorContext.currentSuite?.file?.fullName, name]),\n\t\t\tfullTestName: createTaskName([currentSuite?.fullTestName, name]),\n\t\t\tsuite: currentSuite,\n\t\t\teach: options.each,\n\t\t\tfails: options.fails,\n\t\t\tcontext: undefined,\n\t\t\ttype: \"test\",\n\t\t\tfile: currentSuite?.file ?? collectorContext.currentSuite?.file,\n\t\t\ttimeout,\n\t\t\tretry: options.retry ?? runner.config.retry,\n\t\t\trepeats: options.repeats,\n\t\t\tmode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n\t\t\tmeta: testMeta,\n\t\t\tannotations: [],\n\t\t\tartifacts: [],\n\t\t\ttags: testTags\n\t\t};\n\t\tconst handler = options.handler;\n\t\tif (task.mode === \"run\" && !handler) {\n\t\t\ttask.mode = \"todo\";\n\t\t}\n\t\tif (options.concurrent ?? (!options.sequential && runner.config.sequence.concurrent)) {\n\t\t\ttask.concurrent = true;\n\t\t}\n\t\ttask.shuffle = suiteOptions?.shuffle;\n\t\tconst context = createTestContext(task, runner);\n\t\t// create test context\n\t\tObject.defineProperty(task, \"context\", {\n\t\t\tvalue: context,\n\t\t\tenumerable: false\n\t\t});\n\t\tsetTestFixture(context, options.fixtures ?? new TestFixtures());\n\t\tconst limit = Error.stackTraceLimit;\n\t\tError.stackTraceLimit = 10;\n\t\tconst stackTraceError = new Error(\"STACK_TRACE_ERROR\");\n\t\tError.stackTraceLimit = limit;\n\t\tif (handler) {\n\t\t\tsetFn(task, withTimeout(withCancel(withAwaitAsyncAssertions(withFixtures(handler, { context }), task), task.context.signal), timeout, false, stackTraceError, (_, error) => abortIfTimeout([context], error)));\n\t\t}\n\t\tif (runner.config.includeTaskLocation) {\n\t\t\tconst error = stackTraceError.stack;\n\t\t\tconst stack = findTestFileStackTrace(currentTestFilepath, error);\n\t\t\tif (stack) {\n\t\t\t\ttask.location = {\n\t\t\t\t\tline: stack.line,\n\t\t\t\t\tcolumn: stack.column\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\ttasks.push(task);\n\t\treturn task;\n\t};\n\tconst test = createTest(function(name, optionsOrFn, timeoutOrTest) {\n\t\tlet { options, handler } = parseArguments(optionsOrFn, timeoutOrTest);\n\t\t// inherit repeats, retry, timeout from suite\n\t\tif (typeof suiteOptions === \"object\") {\n\t\t\toptions = Object.assign({}, suiteOptions, options);\n\t\t}\n\t\t// inherit concurrent / sequential from suite\n\t\tconst concurrent = this.concurrent ?? (!this.sequential && options?.concurrent);\n\t\tif (options.concurrent != null && concurrent != null) {\n\t\t\toptions.concurrent = concurrent;\n\t\t}\n\t\tconst sequential = this.sequential ?? (!this.concurrent && options?.sequential);\n\t\tif (options.sequential != null && sequential != null) {\n\t\t\toptions.sequential = sequential;\n\t\t}\n\t\tconst test = task(formatName(name), {\n\t\t\t...this,\n\t\t\t...options,\n\t\t\thandler\n\t\t});\n\t\ttest.type = \"test\";\n\t});\n\tconst collector = {\n\t\ttype: \"collector\",\n\t\tname,\n\t\tmode,\n\t\tsuite,\n\t\toptions: suiteOptions,\n\t\ttest,\n\t\tfile: suite.file,\n\t\ttasks,\n\t\tcollect,\n\t\ttask,\n\t\tclear,\n\t\ton: addHook\n\t};\n\tfunction addHook(name, ...fn) {\n\t\tgetHooks(suite)[name].push(...fn);\n\t}\n\tfunction initSuite(includeLocation) {\n\t\tif (typeof suiteOptions === \"number\") {\n\t\t\tsuiteOptions = { timeout: suiteOptions };\n\t\t}\n\t\tconst currentSuite = collectorContext.currentSuite?.suite;\n\t\tconst parentTask = currentSuite ?? collectorContext.currentSuite?.file;\n\t\tconst suiteTags = toArray(suiteOptions?.tags);\n\t\tvalidateTags(runner.config, suiteTags);\n\t\tsuite = {\n\t\t\tid: \"\",\n\t\t\ttype: \"suite\",\n\t\t\tname,\n\t\t\tfullName: createTaskName([currentSuite?.fullName ?? collectorContext.currentSuite?.file?.fullName, name]),\n\t\t\tfullTestName: createTaskName([currentSuite?.fullTestName, name]),\n\t\t\tsuite: currentSuite,\n\t\t\tmode,\n\t\t\teach,\n\t\t\tfile: currentSuite?.file ?? collectorContext.currentSuite?.file,\n\t\t\tshuffle: suiteOptions?.shuffle,\n\t\t\ttasks: [],\n\t\t\tmeta: suiteOptions?.meta ?? Object.create(null),\n\t\t\tconcurrent: suiteOptions?.concurrent,\n\t\t\ttags: unique([...parentTask?.tags || [], ...suiteTags])\n\t\t};\n\t\tif (runner && includeLocation && runner.config.includeTaskLocation) {\n\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\tError.stackTraceLimit = 15;\n\t\t\tconst error = new Error(\"stacktrace\").stack;\n\t\t\tError.stackTraceLimit = limit;\n\t\t\tconst stack = findTestFileStackTrace(currentTestFilepath, error);\n\t\t\tif (stack) {\n\t\t\t\tsuite.location = {\n\t\t\t\t\tline: stack.line,\n\t\t\t\t\tcolumn: stack.column\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tsetHooks(suite, createSuiteHooks());\n\t}\n\tfunction clear() {\n\t\ttasks.length = 0;\n\t\tinitSuite(false);\n\t}\n\tasync function collect(file) {\n\t\tif (!file) {\n\t\t\tthrow new TypeError(\"File is required to collect tasks.\");\n\t\t}\n\t\tif (factory) {\n\t\t\tawait runWithSuite(collector, () => factory(test));\n\t\t}\n\t\tconst allChildren = [];\n\t\tfor (const i of tasks) {\n\t\t\tallChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n\t\t}\n\t\tsuite.tasks = allChildren;\n\t\treturn suite;\n\t}\n\tcollectTask(collector);\n\treturn collector;\n}\nfunction withAwaitAsyncAssertions(fn, task) {\n\treturn (async (...args) => {\n\t\tconst fnResult = await fn(...args);\n\t\t// some async expect will be added to this array, in case user forget to await them\n\t\tif (task.promises) {\n\t\t\tconst result = await Promise.allSettled(task.promises);\n\t\t\tconst errors = result.map((r) => r.status === \"rejected\" ? r.reason : undefined).filter(Boolean);\n\t\t\tif (errors.length) {\n\t\t\t\tthrow errors;\n\t\t\t}\n\t\t}\n\t\treturn fnResult;\n\t});\n}\nfunction createSuite() {\n\tfunction suiteFn(name, factoryOrOptions, optionsOrFactory) {\n\t\tif (getCurrentTest()) {\n\t\t\tthrow new Error(\"Calling the suite function inside test function is not allowed. It can be only called at the top level or inside another suite function.\");\n\t\t}\n\t\tconst currentSuite = collectorContext.currentSuite || defaultSuite;\n\t\tlet { options, handler: factory } = parseArguments(factoryOrOptions, optionsOrFactory);\n\t\tconst isConcurrentSpecified = options.concurrent || this.concurrent || options.sequential === false;\n\t\tconst isSequentialSpecified = options.sequential || this.sequential || options.concurrent === false;\n\t\tconst { meta: parentMeta, ...parentOptions } = currentSuite?.options || {};\n\t\t// inherit options from current suite\n\t\toptions = {\n\t\t\t...parentOptions,\n\t\t\t...options\n\t\t};\n\t\tconst shuffle = this.shuffle ?? options.shuffle ?? currentSuite?.options?.shuffle ?? runner?.config.sequence.shuffle;\n\t\tif (shuffle != null) {\n\t\t\toptions.shuffle = shuffle;\n\t\t}\n\t\tlet mode = this.only ?? options.only ? \"only\" : this.skip ?? options.skip ? \"skip\" : this.todo ?? options.todo ? \"todo\" : \"run\";\n\t\t// passed as test(name), assume it's a \"todo\"\n\t\tif (mode === \"run\" && !factory) {\n\t\t\tmode = \"todo\";\n\t\t}\n\t\t// inherit concurrent / sequential from suite\n\t\tconst isConcurrent = isConcurrentSpecified || options.concurrent && !isSequentialSpecified;\n\t\tconst isSequential = isSequentialSpecified || options.sequential && !isConcurrentSpecified;\n\t\tif (isConcurrent != null) {\n\t\t\toptions.concurrent = isConcurrent && !isSequential;\n\t\t}\n\t\tif (isSequential != null) {\n\t\t\toptions.sequential = isSequential && !isConcurrent;\n\t\t}\n\t\tif (parentMeta) {\n\t\t\toptions.meta = Object.assign(Object.create(null), parentMeta, options.meta);\n\t\t}\n\t\treturn createSuiteCollector(formatName(name), factory, mode, this.each, options);\n\t}\n\tsuiteFn.each = function(cases, ...args) {\n\t\tconst context = getChainableContext(this);\n\t\tconst suite = context.withContext();\n\t\tcontext.setContext(\"each\", true);\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst arrayOnlyCases = cases.every(Array.isArray);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tconst fnFirst = typeof optionsOrFn === \"function\";\n\t\t\tcases.forEach((i, idx) => {\n\t\t\t\tconst items = Array.isArray(i) ? i : [i];\n\t\t\t\tif (fnFirst) {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), handler ? () => handler(...items) : undefined, options.timeout);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), handler ? () => handler(i) : undefined, options.timeout);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), options, handler ? () => handler(...items) : undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuite(formatTitle(_name, items, idx), options, handler ? () => handler(i) : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontext.setContext(\"each\", undefined);\n\t\t};\n\t};\n\tsuiteFn.for = function(cases, ...args) {\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst name_ = formatName(name);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tcases.forEach((item, idx) => {\n\t\t\t\tsuite(formatTitle(name_, toArray(item), idx), options, handler ? () => handler(item) : undefined);\n\t\t\t});\n\t\t};\n\t};\n\tsuiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n\tsuiteFn.runIf = (condition) => condition ? suite : suite.skip;\n\treturn createChainable([\n\t\t\"concurrent\",\n\t\t\"sequential\",\n\t\t\"shuffle\",\n\t\t\"skip\",\n\t\t\"only\",\n\t\t\"todo\"\n\t], suiteFn);\n}\nfunction createTaskCollector(fn) {\n\tconst taskFn = fn;\n\ttaskFn.each = function(cases, ...args) {\n\t\tconst context = getChainableContext(this);\n\t\tconst test = context.withContext();\n\t\tcontext.setContext(\"each\", true);\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst arrayOnlyCases = cases.every(Array.isArray);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tconst fnFirst = typeof optionsOrFn === \"function\";\n\t\t\tcases.forEach((i, idx) => {\n\t\t\t\tconst items = Array.isArray(i) ? i : [i];\n\t\t\t\tif (fnFirst) {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), handler ? () => handler(...items) : undefined, options.timeout);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), handler ? () => handler(i) : undefined, options.timeout);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (arrayOnlyCases) {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), options, handler ? () => handler(...items) : undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttest(formatTitle(_name, items, idx), options, handler ? () => handler(i) : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontext.setContext(\"each\", undefined);\n\t\t};\n\t};\n\ttaskFn.for = function(cases, ...args) {\n\t\tconst context = getChainableContext(this);\n\t\tconst test = context.withContext();\n\t\tif (Array.isArray(cases) && args.length) {\n\t\t\tcases = formatTemplateString(cases, args);\n\t\t}\n\t\treturn (name, optionsOrFn, fnOrOptions) => {\n\t\t\tconst _name = formatName(name);\n\t\t\tconst { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n\t\t\tcases.forEach((item, idx) => {\n\t\t\t\t// monkey-patch handler to allow parsing fixture\n\t\t\t\tconst handlerWrapper = handler ? (ctx) => handler(item, ctx) : undefined;\n\t\t\t\tif (handlerWrapper) {\n\t\t\t\t\tconfigureProps(handlerWrapper, {\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t\toriginal: handler\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttest(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n\t\t\t});\n\t\t};\n\t};\n\ttaskFn.skipIf = function(condition) {\n\t\treturn condition ? this.skip : this;\n\t};\n\ttaskFn.runIf = function(condition) {\n\t\treturn condition ? this : this.skip;\n\t};\n\t/**\n\t* Parse builder pattern arguments into a fixtures object.\n\t* Handles both builder pattern (name, options?, value) and object syntax.\n\t*/\n\tfunction parseBuilderFixtures(fixturesOrName, optionsOrFn, maybeFn) {\n\t\t// Object syntax: just return as-is\n\t\tif (typeof fixturesOrName !== \"string\") {\n\t\t\treturn fixturesOrName;\n\t\t}\n\t\tconst fixtureName = fixturesOrName;\n\t\tlet fixtureOptions;\n\t\tlet fixtureValue;\n\t\tif (maybeFn !== undefined) {\n\t\t\t// (name, options, value) or (name, options, fn)\n\t\t\tfixtureOptions = optionsOrFn;\n\t\t\tfixtureValue = maybeFn;\n\t\t} else {\n\t\t\t// (name, value) or (name, fn)\n\t\t\t// Check if optionsOrFn looks like fixture options (has scope or auto)\n\t\t\tif (optionsOrFn !== null && typeof optionsOrFn === \"object\" && !Array.isArray(optionsOrFn) && TestFixtures.isFixtureOptions(optionsOrFn)) {\n\t\t\t\t// (name, options) with no value - treat as empty object fixture\n\t\t\t\tfixtureOptions = optionsOrFn;\n\t\t\t\tfixtureValue = {};\n\t\t\t} else {\n\t\t\t\t// (name, value) or (name, fn)\n\t\t\t\tfixtureOptions = undefined;\n\t\t\t\tfixtureValue = optionsOrFn;\n\t\t\t}\n\t\t}\n\t\t// Function value: wrap with onCleanup pattern\n\t\tif (typeof fixtureValue === \"function\") {\n\t\t\tconst builderFn = fixtureValue;\n\t\t\t// Wrap builder pattern function (returns value) to use() pattern\n\t\t\tconst fixture = async (ctx, use) => {\n\t\t\t\tlet cleanup;\n\t\t\t\tconst onCleanup = (fn) => {\n\t\t\t\t\tif (cleanup !== undefined) {\n\t\t\t\t\t\tthrow new Error(`onCleanup can only be called once per fixture. ` + `Define separate fixtures if you need multiple cleanup functions.`);\n\t\t\t\t\t}\n\t\t\t\t\tcleanup = fn;\n\t\t\t\t};\n\t\t\t\tconst value = await builderFn(ctx, { onCleanup });\n\t\t\t\tawait use(value);\n\t\t\t\tif (cleanup) {\n\t\t\t\t\tawait cleanup();\n\t\t\t\t}\n\t\t\t};\n\t\t\tconfigureProps(fixture, { original: builderFn });\n\t\t\tif (fixtureOptions) {\n\t\t\t\treturn { [fixtureName]: [fixture, fixtureOptions] };\n\t\t\t}\n\t\t\treturn { [fixtureName]: fixture };\n\t\t}\n\t\t// Non-function value: use directly\n\t\tif (fixtureOptions) {\n\t\t\treturn { [fixtureName]: [fixtureValue, fixtureOptions] };\n\t\t}\n\t\treturn { [fixtureName]: fixtureValue };\n\t}\n\ttaskFn.override = function(fixturesOrName, optionsOrFn, maybeFn) {\n\t\tconst userFixtures = parseBuilderFixtures(fixturesOrName, optionsOrFn, maybeFn);\n\t\tgetChainableContext(this).getFixtures().override(runner, userFixtures);\n\t\treturn this;\n\t};\n\ttaskFn.scoped = function(fixtures) {\n\t\tconsole.warn(`test.scoped() is deprecated and will be removed in future versions. Please use test.override() instead.`);\n\t\treturn this.override(fixtures);\n\t};\n\ttaskFn.extend = function(fixturesOrName, optionsOrFn, maybeFn) {\n\t\tconst userFixtures = parseBuilderFixtures(fixturesOrName, optionsOrFn, maybeFn);\n\t\tconst fixtures = getChainableContext(this).getFixtures().extend(runner, userFixtures);\n\t\tconst _test = createTest(function(name, optionsOrFn, optionsOrTest) {\n\t\t\tfn.call(this, formatName(name), optionsOrFn, optionsOrTest);\n\t\t});\n\t\tgetChainableContext(_test).mergeContext({ fixtures });\n\t\treturn _test;\n\t};\n\ttaskFn.describe = suite;\n\ttaskFn.suite = suite;\n\ttaskFn.beforeEach = beforeEach;\n\ttaskFn.afterEach = afterEach;\n\ttaskFn.beforeAll = beforeAll;\n\ttaskFn.afterAll = afterAll;\n\ttaskFn.aroundEach = aroundEach;\n\ttaskFn.aroundAll = aroundAll;\n\tconst _test = createChainable([\n\t\t\"concurrent\",\n\t\t\"sequential\",\n\t\t\"skip\",\n\t\t\"only\",\n\t\t\"todo\",\n\t\t\"fails\"\n\t], taskFn, { fixtures: new TestFixtures() });\n\treturn _test;\n}\nfunction createTest(fn) {\n\treturn createTaskCollector(fn);\n}\nfunction formatName(name) {\n\treturn typeof name === \"string\" ? name : typeof name === \"function\" ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n\tif (template.includes(\"%#\") || template.includes(\"%$\")) {\n\t\t// '%#' match index of the test case\n\t\ttemplate = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/%\\$/g, `${idx + 1}`).replace(/__vitest_escaped_%__/g, \"%%\");\n\t}\n\tconst count = template.split(\"%\").length - 1;\n\tif (template.includes(\"%f\")) {\n\t\tconst placeholders = template.match(/%f/g) || [];\n\t\tplaceholders.forEach((_, i) => {\n\t\t\tif (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n\t\t\t\t// Replace the i-th occurrence of '%f' with '-%f'\n\t\t\t\tlet occurrence = 0;\n\t\t\t\ttemplate = template.replace(/%f/g, (match) => {\n\t\t\t\t\toccurrence++;\n\t\t\t\t\treturn occurrence === i + 1 ? \"-%f\" : match;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tconst isObjectItem = isObject(items[0]);\n\tfunction formatAttribute(s) {\n\t\treturn s.replace(/\\$([$\\w.]+)/g, (_, key) => {\n\t\t\tconst isArrayKey = /^\\d+$/.test(key);\n\t\t\tif (!isObjectItem && !isArrayKey) {\n\t\t\t\treturn `$${key}`;\n\t\t\t}\n\t\t\tconst arrayElement = isArrayKey ? objectAttr(items, key) : undefined;\n\t\t\tconst value = isObjectItem ? objectAttr(items[0], key, arrayElement) : arrayElement;\n\t\t\treturn objDisplay(value, { truncate: runner?.config?.chaiConfig?.truncateThreshold });\n\t\t});\n\t}\n\tlet output = \"\";\n\tlet i = 0;\n\thandleRegexMatch(\n\t\ttemplate,\n\t\tformatRegExp,\n\t\t// format \"%\"\n\t\t(match) => {\n\t\t\tif (i < count) {\n\t\t\t\toutput += format(match[0], items[i++]);\n\t\t\t} else {\n\t\t\t\toutput += match[0];\n\t\t\t}\n\t\t},\n\t\t// format \"$\"\n\t\t(nonMatch) => {\n\t\t\toutput += formatAttribute(nonMatch);\n\t\t}\n\t);\n\treturn output;\n}\n// based on https://github.com/unocss/unocss/blob/2e74b31625bbe3b9c8351570749aa2d3f799d919/packages/autocomplete/src/parse.ts#L11\nfunction handleRegexMatch(input, regex, onMatch, onNonMatch) {\n\tlet lastIndex = 0;\n\tfor (const m of input.matchAll(regex)) {\n\t\tif (lastIndex < m.index) {\n\t\t\tonNonMatch(input.slice(lastIndex, m.index));\n\t\t}\n\t\tonMatch(m);\n\t\tlastIndex = m.index + m[0].length;\n\t}\n\tif (lastIndex < input.length) {\n\t\tonNonMatch(input.slice(lastIndex));\n\t}\n}\nfunction formatTemplateString(cases, args) {\n\tconst header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n\tconst res = [];\n\tfor (let i = 0; i < Math.floor(args.length / header.length); i++) {\n\t\tconst oneCase = {};\n\t\tfor (let j = 0; j < header.length; j++) {\n\t\t\toneCase[header[j]] = args[i * header.length + j];\n\t\t}\n\t\tres.push(oneCase);\n\t}\n\treturn res;\n}\n\nconst now$2 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst collectorContext = {\n\ttasks: [],\n\tcurrentSuite: null\n};\nfunction collectTask(task) {\n\tcollectorContext.currentSuite?.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n\tconst prev = collectorContext.currentSuite;\n\tcollectorContext.currentSuite = suite;\n\tawait fn();\n\tcollectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false, stackTraceError, onTimeout) {\n\tif (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n\t\treturn fn;\n\t}\n\tconst { setTimeout, clearTimeout } = getSafeTimers();\n\t// this function name is used to filter error in test/cli/test/fails.test.ts\n\treturn (function runWithTimeout(...args) {\n\t\tconst startTime = now$2();\n\t\tconst runner = getRunner();\n\t\trunner._currentTaskStartTime = startTime;\n\t\trunner._currentTaskTimeout = timeout;\n\t\treturn new Promise((resolve_, reject_) => {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\trejectTimeoutError();\n\t\t\t}, timeout);\n\t\t\t// `unref` might not exist in browser\n\t\t\ttimer.unref?.();\n\t\t\tfunction rejectTimeoutError() {\n\t\t\t\tconst error = makeTimeoutError(isHook, timeout, stackTraceError);\n\t\t\t\tonTimeout?.(args, error);\n\t\t\t\treject_(error);\n\t\t\t}\n\t\t\tfunction resolve(result) {\n\t\t\t\trunner._currentTaskStartTime = undefined;\n\t\t\t\trunner._currentTaskTimeout = undefined;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\t// if test/hook took too long in microtask, setTimeout won't be triggered,\n\t\t\t\t// but we still need to fail the test, see\n\t\t\t\t// https://github.com/vitest-dev/vitest/issues/2920\n\t\t\t\tif (now$2() - startTime >= timeout) {\n\t\t\t\t\trejectTimeoutError();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve_(result);\n\t\t\t}\n\t\t\tfunction reject(error) {\n\t\t\t\trunner._currentTaskStartTime = undefined;\n\t\t\t\trunner._currentTaskTimeout = undefined;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject_(error);\n\t\t\t}\n\t\t\t// sync test/hook will be caught by try/catch\n\t\t\ttry {\n\t\t\t\tconst result = fn(...args);\n\t\t\t\t// the result is a thenable, we don't wrap this in Promise.resolve\n\t\t\t\t// to avoid creating new promises\n\t\t\t\tif (typeof result === \"object\" && result != null && typeof result.then === \"function\") {\n\t\t\t\t\tresult.then(resolve, reject);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t} \n\t\t\t// user sync test/hook throws an error\ncatch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t});\n}\nfunction withCancel(fn, signal) {\n\treturn (function runWithCancel(...args) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsignal.addEventListener(\"abort\", () => reject(signal.reason));\n\t\t\ttry {\n\t\t\t\tconst result = fn(...args);\n\t\t\t\tif (typeof result === \"object\" && result != null && typeof result.then === \"function\") {\n\t\t\t\t\tresult.then(resolve, reject);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t});\n}\nconst abortControllers = new WeakMap();\nfunction abortIfTimeout([context], error) {\n\tif (context) {\n\t\tabortContextSignal(context, error);\n\t}\n}\nfunction abortContextSignal(context, error) {\n\tconst abortController = abortControllers.get(context);\n\tabortController?.abort(error);\n}\nfunction createTestContext(test, runner) {\n\tconst context = function() {\n\t\tthrow new Error(\"done() callback is deprecated, use promise instead\");\n\t};\n\tlet abortController = abortControllers.get(context);\n\tif (!abortController) {\n\t\tabortController = new AbortController();\n\t\tabortControllers.set(context, abortController);\n\t}\n\tcontext.signal = abortController.signal;\n\tcontext.task = test;\n\tcontext.skip = (condition, note) => {\n\t\tif (condition === false) {\n\t\t\t// do nothing\n\t\t\treturn undefined;\n\t\t}\n\t\ttest.result ??= { state: \"skip\" };\n\t\ttest.result.pending = true;\n\t\tthrow new PendingError(\"test is skipped; abort execution\", test, typeof condition === \"string\" ? condition : note);\n\t};\n\tcontext.annotate = ((message, type, attachment) => {\n\t\tif (test.result && test.result.state !== \"run\") {\n\t\t\tthrow new Error(`Cannot annotate tests outside of the test run. The test \"${test.name}\" finished running with the \"${test.result.state}\" state already.`);\n\t\t}\n\t\tconst annotation = {\n\t\t\tmessage,\n\t\t\ttype: typeof type === \"object\" || type === undefined ? \"notice\" : type\n\t\t};\n\t\tconst annotationAttachment = typeof type === \"object\" ? type : attachment;\n\t\tif (annotationAttachment) {\n\t\t\tannotation.attachment = annotationAttachment;\n\t\t\tmanageArtifactAttachment(annotation.attachment);\n\t\t}\n\t\treturn recordAsyncOperation(test, recordArtifact(test, {\n\t\t\ttype: \"internal:annotation\",\n\t\t\tannotation\n\t\t}).then(async ({ annotation }) => {\n\t\t\tif (!runner.onTestAnnotate) {\n\t\t\t\tthrow new Error(`Test runner doesn't support test annotations.`);\n\t\t\t}\n\t\t\tawait finishSendTasksUpdate(runner);\n\t\t\tconst resolvedAnnotation = await runner.onTestAnnotate(test, annotation);\n\t\t\ttest.annotations.push(resolvedAnnotation);\n\t\t\treturn resolvedAnnotation;\n\t\t}));\n\t});\n\tcontext.onTestFailed = (handler, timeout) => {\n\t\ttest.onFailed ||= [];\n\t\ttest.onFailed.push(withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"), (_, error) => abortController.abort(error)));\n\t};\n\tcontext.onTestFinished = (handler, timeout) => {\n\t\ttest.onFinished ||= [];\n\t\ttest.onFinished.push(withTimeout(handler, timeout ?? runner.config.hookTimeout, true, new Error(\"STACK_TRACE_ERROR\"), (_, error) => abortController.abort(error)));\n\t};\n\treturn runner.extendTaskContext?.(context) || context;\n}\nfunction makeTimeoutError(isHook, timeout, stackTraceError) {\n\tconst 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\tconst error = new Error(message);\n\tif (stackTraceError?.stack) {\n\t\terror.stack = stackTraceError.stack.replace(error.message, stackTraceError.message);\n\t}\n\treturn error;\n}\n\nasync function runSetupFiles(config, files, runner) {\n\tif (config.sequence.setupFiles === \"parallel\") {\n\t\tawait Promise.all(files.map(async (fsPath) => {\n\t\t\tawait runner.importFile(fsPath, \"setup\");\n\t\t}));\n\t} else {\n\t\tfor (const fsPath of files) {\n\t\t\tawait runner.importFile(fsPath, \"setup\");\n\t\t}\n\t}\n}\n\nconst now$1 = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nasync function collectTests(specs, runner) {\n\tconst files = [];\n\tconst config = runner.config;\n\tconst $ = runner.trace;\n\tlet defaultTagsFilter;\n\tfor (const spec of specs) {\n\t\tconst filepath = typeof spec === \"string\" ? spec : spec.filepath;\n\t\tawait $(\"collect_spec\", { \"code.file.path\": filepath }, async () => {\n\t\t\trunner._currentSpecification = typeof spec === \"string\" ? { filepath: spec } : spec;\n\t\t\tconst testLocations = typeof spec === \"string\" ? undefined : spec.testLocations;\n\t\t\tconst testNamePattern = typeof spec === \"string\" ? undefined : spec.testNamePattern;\n\t\t\tconst testIds = typeof spec === \"string\" ? undefined : spec.testIds;\n\t\t\tconst testTagsFilter = typeof spec === \"object\" && spec.testTagsFilter ? createTagsFilter(spec.testTagsFilter, config.tags) : undefined;\n\t\t\tconst fileTags = typeof spec === \"string\" ? [] : spec.fileTags || [];\n\t\t\tconst file = createFileTask(filepath, config.root, config.name, runner.pool, runner.viteEnvironment);\n\t\t\tfile.tags = fileTags;\n\t\t\tfile.shuffle = config.sequence.shuffle;\n\t\t\ttry {\n\t\t\t\tvalidateTags(runner.config, fileTags);\n\t\t\t\trunner.onCollectStart?.(file);\n\t\t\t\tclearCollectorContext(file, runner);\n\t\t\t\tconst setupFiles = toArray(config.setupFiles);\n\t\t\t\tif (setupFiles.length) {\n\t\t\t\t\tconst setupStart = now$1();\n\t\t\t\t\tawait runSetupFiles(config, setupFiles, runner);\n\t\t\t\t\tconst setupEnd = now$1();\n\t\t\t\t\tfile.setupDuration = setupEnd - setupStart;\n\t\t\t\t} else {\n\t\t\t\t\tfile.setupDuration = 0;\n\t\t\t\t}\n\t\t\t\tconst collectStart = now$1();\n\t\t\t\tawait runner.importFile(filepath, \"collect\");\n\t\t\t\tconst durations = runner.getImportDurations?.();\n\t\t\t\tif (durations) {\n\t\t\t\t\tfile.importDurations = durations;\n\t\t\t\t}\n\t\t\t\tconst defaultTasks = await getDefaultSuite().collect(file);\n\t\t\t\tconst fileHooks = createSuiteHooks();\n\t\t\t\tmergeHooks(fileHooks, getHooks(defaultTasks));\n\t\t\t\tfor (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n\t\t\t\t\tif (c.type === \"test\" || c.type === \"suite\") {\n\t\t\t\t\t\tfile.tasks.push(c);\n\t\t\t\t\t} else if (c.type === \"collector\") {\n\t\t\t\t\t\tconst suite = await c.collect(file);\n\t\t\t\t\t\tif (suite.name || suite.tasks.length) {\n\t\t\t\t\t\t\tmergeHooks(fileHooks, getHooks(suite));\n\t\t\t\t\t\t\tfile.tasks.push(suite);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// check that types are exhausted\n\t\t\t\t\t\tc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetHooks(file, fileHooks);\n\t\t\t\tfile.collectDuration = now$1() - collectStart;\n\t\t\t} catch (e) {\n\t\t\t\tconst errors = e instanceof AggregateError ? e.errors.map((e) => processError(e, runner.config.diffOptions)) : [processError(e, runner.config.diffOptions)];\n\t\t\t\tfile.result = {\n\t\t\t\t\tstate: \"fail\",\n\t\t\t\t\terrors\n\t\t\t\t};\n\t\t\t\tconst durations = runner.getImportDurations?.();\n\t\t\t\tif (durations) {\n\t\t\t\t\tfile.importDurations = durations;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcalculateSuiteHash(file);\n\t\t\tconst hasOnlyTasks = someTasksAreOnly(file);\n\t\t\tif (!testTagsFilter && !defaultTagsFilter && config.tagsFilter) {\n\t\t\t\tdefaultTagsFilter = createTagsFilter(config.tagsFilter, config.tags);\n\t\t\t}\n\t\t\tinterpretTaskModes(file, testNamePattern ?? config.testNamePattern, testLocations, testIds, testTagsFilter ?? defaultTagsFilter, hasOnlyTasks, false, config.allowOnly);\n\t\t\tif (file.mode === \"queued\") {\n\t\t\t\tfile.mode = \"run\";\n\t\t\t}\n\t\t\tfiles.push(file);\n\t\t});\n\t}\n\treturn files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n\tfor (const _key in hooks) {\n\t\tconst key = _key;\n\t\tbaseHooks[key].push(...hooks[key]);\n\t}\n\treturn baseHooks;\n}\n\nconst now = globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;\nconst unixNow = Date.now;\nconst { clearTimeout, setTimeout } = getSafeTimers();\nlet limitMaxConcurrency;\n/**\n* Normalizes retry configuration to extract individual values.\n* Handles both number and object forms.\n*/\nfunction getRetryCount(retry) {\n\tif (retry === undefined) {\n\t\treturn 0;\n\t}\n\tif (typeof retry === \"number\") {\n\t\treturn retry;\n\t}\n\treturn retry.count ?? 0;\n}\nfunction getRetryDelay(retry) {\n\tif (retry === undefined) {\n\t\treturn 0;\n\t}\n\tif (typeof retry === \"number\") {\n\t\treturn 0;\n\t}\n\treturn retry.delay ?? 0;\n}\nfunction getRetryCondition(retry) {\n\tif (retry === undefined) {\n\t\treturn undefined;\n\t}\n\tif (typeof retry === \"number\") {\n\t\treturn undefined;\n\t}\n\treturn retry.condition;\n}\nfunction updateSuiteHookState(task, name, state, runner) {\n\tif (!task.result) {\n\t\ttask.result = { state: \"run\" };\n\t}\n\tif (!task.result.hooks) {\n\t\ttask.result.hooks = {};\n\t}\n\tconst suiteHooks = task.result.hooks;\n\tif (suiteHooks) {\n\t\tsuiteHooks[name] = state;\n\t\tlet event = state === \"run\" ? \"before-hook-start\" : \"before-hook-end\";\n\t\tif (name === \"afterAll\" || name === \"afterEach\") {\n\t\t\tevent = state === \"run\" ? \"after-hook-start\" : \"after-hook-end\";\n\t\t}\n\t\tupdateTask(event, task, runner);\n\t}\n}\nfunction getSuiteHooks(suite, name, sequence) {\n\tconst hooks = getHooks(suite)[name];\n\tif (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n\t\treturn hooks.slice().reverse();\n\t}\n\treturn hooks;\n}\nasync function callTestHooks(runner, test, hooks, sequence) {\n\tif (sequence === \"stack\") {\n\t\thooks = hooks.slice().reverse();\n\t}\n\tif (!hooks.length) {\n\t\treturn;\n\t}\n\tconst context = test.context;\n\tconst onTestFailed = test.context.onTestFailed;\n\tconst onTestFinished = test.context.onTestFinished;\n\tcontext.onTestFailed = () => {\n\t\tthrow new Error(`Cannot call \"onTestFailed\" inside a test hook.`);\n\t};\n\tcontext.onTestFinished = () => {\n\t\tthrow new Error(`Cannot call \"onTestFinished\" inside a test hook.`);\n\t};\n\tif (sequence === \"parallel\") {\n\t\ttry {\n\t\t\tawait Promise.all(hooks.map((fn) => limitMaxConcurrency(() => fn(test.context))));\n\t\t} catch (e) {\n\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t}\n\t} else {\n\t\tfor (const fn of hooks) {\n\t\t\ttry {\n\t\t\t\tawait limitMaxConcurrency(() => fn(test.context));\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t}\n\t}\n\tcontext.onTestFailed = onTestFailed;\n\tcontext.onTestFinished = onTestFinished;\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n\tconst sequence = runner.config.sequence.hooks;\n\tconst callbacks = [];\n\t// stop at file level\n\tconst parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n\tif (name === \"beforeEach\" && parentSuite) {\n\t\tcallbacks.push(...await callSuiteHook(parentSuite, currentTask, name, runner, args));\n\t}\n\tconst hooks = getSuiteHooks(suite, name, sequence);\n\tif (hooks.length > 0) {\n\t\tupdateSuiteHookState(currentTask, name, \"run\", runner);\n\t}\n\tasync function runHook(hook) {\n\t\treturn limitMaxConcurrency(async () => {\n\t\t\treturn getBeforeHookCleanupCallback(hook, await hook(...args), name === \"beforeEach\" ? args[0] : undefined);\n\t\t});\n\t}\n\tif (sequence === \"parallel\") {\n\t\tcallbacks.push(...await Promise.all(hooks.map((hook) => runHook(hook))));\n\t} else {\n\t\tfor (const hook of hooks) {\n\t\t\tcallbacks.push(await runHook(hook));\n\t\t}\n\t}\n\tif (hooks.length > 0) {\n\t\tupdateSuiteHookState(currentTask, name, \"pass\", runner);\n\t}\n\tif (name === \"afterEach\" && parentSuite) {\n\t\tcallbacks.push(...await callSuiteHook(parentSuite, currentTask, name, runner, args));\n\t}\n\treturn callbacks;\n}\nfunction getAroundEachHooks(suite) {\n\tconst hooks = [];\n\tconst parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n\tif (parentSuite) {\n\t\thooks.push(...getAroundEachHooks(parentSuite));\n\t}\n\thooks.push(...getHooks(suite).aroundEach);\n\treturn hooks;\n}\nfunction getAroundAllHooks(suite) {\n\treturn getHooks(suite).aroundAll;\n}\nfunction makeAroundHookTimeoutError(hookName, phase, timeout, stackTraceError) {\n\tconst message = `The ${phase} phase of \"${hookName}\" hook timed out after ${timeout}ms.`;\n\tconst ErrorClass = phase === \"setup\" ? AroundHookSetupError : AroundHookTeardownError;\n\tconst error = new ErrorClass(message);\n\tif (stackTraceError?.stack) {\n\t\terror.stack = stackTraceError.stack.replace(stackTraceError.message, error.message);\n\t}\n\treturn error;\n}\nasync function callAroundHooks(runInner, options) {\n\tconst { hooks, hookName, callbackName, onTimeout, invokeHook } = options;\n\tif (!hooks.length) {\n\t\tawait runInner();\n\t\treturn;\n\t}\n\tconst hookErrors = [];\n\tconst createTimeoutPromise = (timeout, phase, stackTraceError) => {\n\t\tlet timer;\n\t\tlet timedout = false;\n\t\tconst promise = new Promise((_, reject) => {\n\t\t\tif (timeout > 0 && timeout !== Number.POSITIVE_INFINITY) {\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\ttimedout = true;\n\t\t\t\t\tconst error = makeAroundHookTimeoutError(hookName, phase, timeout, stackTraceError);\n\t\t\t\t\tonTimeout?.(error);\n\t\t\t\t\treject(error);\n\t\t\t\t}, timeout);\n\t\t\t\ttimer.unref?.();\n\t\t\t}\n\t\t});\n\t\tconst clear = () => {\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = undefined;\n\t\t\t}\n\t\t};\n\t\treturn {\n\t\t\tpromise,\n\t\t\tclear,\n\t\t\tisTimedOut: () => timedout\n\t\t};\n\t};\n\tconst runNextHook = async (index) => {\n\t\tif (index >= hooks.length) {\n\t\t\treturn runInner();\n\t\t}\n\t\tconst hook = hooks[index];\n\t\tconst timeout = getAroundHookTimeout(hook);\n\t\tconst stackTraceError = getAroundHookStackTrace(hook);\n\t\tlet useCalled = false;\n\t\tlet setupTimeout;\n\t\tlet teardownTimeout;\n\t\tlet setupLimitConcurrencyRelease;\n\t\tlet teardownLimitConcurrencyRelease;\n\t\t// Promise that resolves when use() is called (setup phase complete)\n\t\tlet resolveUseCalled;\n\t\tconst useCalledPromise = new Promise((resolve) => {\n\t\t\tresolveUseCalled = resolve;\n\t\t});\n\t\t// Promise that resolves when use() returns (inner hooks complete, teardown phase starts)\n\t\tlet resolveUseReturned;\n\t\tconst useReturnedPromise = new Promise((resolve) => {\n\t\t\tresolveUseReturned = resolve;\n\t\t});\n\t\t// Promise that resolves when hook completes\n\t\tlet resolveHookComplete;\n\t\tlet rejectHookComplete;\n\t\tconst hookCompletePromise = new Promise((resolve, reject) => {\n\t\t\tresolveHookComplete = resolve;\n\t\t\trejectHookComplete = reject;\n\t\t});\n\t\tconst use = async () => {\n\t\t\t// shouldn't continue to next (runTest/Suite or inner aroundEach/All) when aroundEach/All setup timed out.\n\t\t\tif (setupTimeout.isTimedOut()) {\n\t\t\t\t// we can throw any error to bail out.\n\t\t\t\t// this error is not seen by end users since `runNextHook` already rejected with timeout error\n\t\t\t\t// and this error is caught by `rejectHookComplete`.\n\t\t\t\tthrow new Error(\"__VITEST_INTERNAL_AROUND_HOOK_ABORT__\");\n\t\t\t}\n\t\t\tif (useCalled) {\n\t\t\t\tthrow new AroundHookMultipleCallsError(`The \\`${callbackName}\\` callback was called multiple times in the \\`${hookName}\\` hook. ` + `The callback can only be called once per hook.`);\n\t\t\t}\n\t\t\tuseCalled = true;\n\t\t\tresolveUseCalled();\n\t\t\t// Setup phase completed - clear setup timer\n\t\t\tsetupTimeout.clear();\n\t\t\tsetupLimitConcurrencyRelease?.();\n\t\t\t// Run inner hooks - don't time this against our teardown timeout\n\t\t\tawait runNextHook(index + 1).catch((e) => hookErrors.push(e));\n\t\t\tteardownLimitConcurrencyRelease = await limitMaxConcurrency.acquire();\n\t\t\t// Start teardown timer after inner hooks complete - only times this hook's teardown code\n\t\t\tteardownTimeout = createTimeoutPromise(timeout, \"teardown\", stackTraceError);\n\t\t\t// Signal that use() is returning (teardown phase starting)\n\t\t\tresolveUseReturned();\n\t\t};\n\t\tsetupLimitConcurrencyRelease = await limitMaxConcurrency.acquire();\n\t\t// Start setup timeout\n\t\tsetupTimeout = createTimeoutPromise(timeout, \"setup\", stackTraceError);\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait invokeHook(hook, use);\n\t\t\t\tif (!useCalled) {\n\t\t\t\t\tthrow new AroundHookSetupError(`The \\`${callbackName}\\` callback was not called in the \\`${hookName}\\` hook. ` + `Make sure to call \\`${callbackName}\\` to run the ${hookName === \"aroundEach\" ? \"test\" : \"suite\"}.`);\n\t\t\t\t}\n\t\t\t\tresolveHookComplete();\n\t\t\t} catch (error) {\n\t\t\t\trejectHookComplete(error);\n\t\t\t} finally {\n\t\t\t\tsetupLimitConcurrencyRelease?.();\n\t\t\t\tteardownLimitConcurrencyRelease?.();\n\t\t\t}\n\t\t})();\n\t\t// Wait for either: use() to be called OR hook to complete (error) OR setup timeout\n\t\ttry {\n\t\t\tawait Promise.race([\n\t\t\t\tuseCalledPromise,\n\t\t\t\thookCompletePromise,\n\t\t\t\tsetupTimeout.promise\n\t\t\t]);\n\t\t} finally {\n\t\t\tsetupLimitConcurrencyRelease?.();\n\t\t\tsetupTimeout.clear();\n\t\t}\n\t\t// Wait for use() to return (inner hooks complete) OR hook to complete (error during inner hooks)\n\t\tawait Promise.race([useReturnedPromise, hookCompletePromise]);\n\t\t// Now teardownTimeout is guaranteed to be set\n\t\t// Wait for hook to complete (teardown) OR teardown timeout\n\t\ttry {\n\t\t\tawait Promise.race([hookCompletePromise, teardownTimeout?.promise]);\n\t\t} finally {\n\t\t\tteardownLimitConcurrencyRelease?.();\n\t\t\tteardownTimeout?.clear();\n\t\t}\n\t};\n\tawait runNextHook(0).catch((e) => hookErrors.push(e));\n\tif (hookErrors.length > 0) {\n\t\tthrow hookErrors;\n\t}\n}\nasync function callAroundAllHooks(suite, runSuiteInner) {\n\tawait callAroundHooks(runSuiteInner, {\n\t\thooks: getAroundAllHooks(suite),\n\t\thookName: \"aroundAll\",\n\t\tcallbackName: \"runSuite()\",\n\t\tinvokeHook: (hook, use) => hook(use, suite)\n\t});\n}\nasync function callAroundEachHooks(suite, test, runTest) {\n\tawait callAroundHooks(\n\t\t// Take checkpoint right before runTest - at this point all aroundEach fixtures\n\t\t// have been resolved, so we can correctly identify which fixtures belong to\n\t\t// aroundEach (before checkpoint) vs inside runTest (after checkpoint)\n\t\t() => runTest(getFixtureCleanupCount(test.context)),\n\t\t{\n\t\t\thooks: getAroundEachHooks(suite),\n\t\t\thookName: \"aroundEach\",\n\t\t\tcallbackName: \"runTest()\",\n\t\t\tonTimeout: (error) => abortContextSignal(test.context, error),\n\t\t\tinvokeHook: (hook, use) => hook(use, test.context, suite)\n\t\t}\n\t);\n}\nconst packs = new Map();\nconst eventsPacks = [];\nconst pendingTasksUpdates = [];\nfunction sendTasksUpdate(runner) {\n\tif (packs.size) {\n\t\tconst taskPacks = Array.from(packs).map(([id, task]) => {\n\t\t\treturn [\n\t\t\t\tid,\n\t\t\t\ttask[0],\n\t\t\t\ttask[1]\n\t\t\t];\n\t\t});\n\t\tconst p = runner.onTaskUpdate?.(taskPacks, eventsPacks);\n\t\tif (p) {\n\t\t\tpendingTasksUpdates.push(p);\n\t\t\t// remove successful promise to not grow array indefinitely,\n\t\t\t// but keep rejections so finishSendTasksUpdate can handle them\n\t\t\tp.then(() => pendingTasksUpdates.splice(pendingTasksUpdates.indexOf(p), 1), () => {});\n\t\t}\n\t\teventsPacks.length = 0;\n\t\tpacks.clear();\n\t}\n}\nasync function finishSendTasksUpdate(runner) {\n\tsendTasksUpdate(runner);\n\tawait Promise.all(pendingTasksUpdates);\n}\nfunction throttle(fn, ms) {\n\tlet last = 0;\n\tlet pendingCall;\n\treturn function call(...args) {\n\t\tconst now = unixNow();\n\t\tif (now - last > ms) {\n\t\t\tlast = now;\n\t\t\tclearTimeout(pendingCall);\n\t\t\tpendingCall = undefined;\n\t\t\treturn fn.apply(this, args);\n\t\t}\n\t\t// Make sure fn is still called even if there are no further calls\n\t\tpendingCall ??= setTimeout(() => call.bind(this)(...args), ms);\n\t};\n}\n// throttle based on summary reporter's DURATION_UPDATE_INTERVAL_MS\nconst sendTasksUpdateThrottled = throttle(sendTasksUpdate, 100);\nfunction updateTask(event, task, runner) {\n\teventsPacks.push([\n\t\ttask.id,\n\t\tevent,\n\t\tundefined\n\t]);\n\tpacks.set(task.id, [task.result, task.meta]);\n\tsendTasksUpdateThrottled(runner);\n}\nasync function callCleanupHooks(runner, cleanups) {\n\tconst sequence = runner.config.sequence.hooks;\n\tif (sequence === \"stack\") {\n\t\tcleanups = cleanups.slice().reverse();\n\t}\n\tif (sequence === \"parallel\") {\n\t\tawait Promise.all(cleanups.map(async (fn) => {\n\t\t\tif (typeof fn !== \"function\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait limitMaxConcurrency(() => fn());\n\t\t}));\n\t} else {\n\t\tfor (const fn of cleanups) {\n\t\t\tif (typeof fn !== \"function\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tawait limitMaxConcurrency(() => fn());\n\t\t}\n\t}\n}\n/**\n* Determines if a test should be retried based on its retryCondition configuration\n*/\nfunction passesRetryCondition(test, errors) {\n\tconst condition = getRetryCondition(test.retry);\n\tif (!errors || errors.length === 0) {\n\t\treturn false;\n\t}\n\tif (!condition) {\n\t\treturn true;\n\t}\n\tconst error = errors[errors.length - 1];\n\tif (condition instanceof RegExp) {\n\t\treturn condition.test(error.message || \"\");\n\t} else if (typeof condition === \"function\") {\n\t\treturn condition(error);\n\t}\n\treturn false;\n}\nasync function runTest(test, runner) {\n\tawait runner.onBeforeRunTask?.(test);\n\tif (test.mode !== \"run\" && test.mode !== \"queued\") {\n\t\tupdateTask(\"test-prepare\", test, runner);\n\t\tupdateTask(\"test-finished\", test, runner);\n\t\treturn;\n\t}\n\tif (test.result?.state === \"fail\") {\n\t\t// should not be possible to get here, I think this is just copy pasted from suite\n\t\t// TODO: maybe someone fails tests in `beforeAll` hooks?\n\t\t// https://github.com/vitest-dev/vitest/pull/7069\n\t\tupdateTask(\"test-failed-early\", test, runner);\n\t\treturn;\n\t}\n\tconst start = now();\n\ttest.result = {\n\t\tstate: \"run\",\n\t\tstartTime: unixNow(),\n\t\tretryCount: 0\n\t};\n\tupdateTask(\"test-prepare\", test, runner);\n\tconst cleanupRunningTest = addRunningTest(test);\n\tsetCurrentTest(test);\n\tconst suite = test.suite || test.file;\n\tconst $ = runner.trace;\n\tconst repeats = test.repeats ?? 0;\n\tfor (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n\t\tconst retry = getRetryCount(test.retry);\n\t\tfor (let retryCount = 0; retryCount <= retry; retryCount++) {\n\t\t\tlet beforeEachCleanups = [];\n\t\t\t// fixtureCheckpoint is passed by callAroundEachHooks - it represents the count\n\t\t\t// of fixture cleanup functions AFTER all aroundEach fixtures have been resolved\n\t\t\t// but BEFORE the test runs. This allows us to clean up only fixtures created\n\t\t\t// inside runTest while preserving aroundEach fixtures for teardown.\n\t\t\tawait callAroundEachHooks(suite, test, async (fixtureCheckpoint) => {\n\t\t\t\ttry {\n\t\t\t\t\tawait runner.onBeforeTryTask?.(test, {\n\t\t\t\t\t\tretry: retryCount,\n\t\t\t\t\t\trepeats: repeatCount\n\t\t\t\t\t});\n\t\t\t\t\ttest.result.repeatCount = repeatCount;\n\t\t\t\t\tbeforeEachCleanups = await $(\"test.beforeEach\", () => callSuiteHook(suite, test, \"beforeEach\", runner, [test.context, suite]));\n\t\t\t\t\tif (runner.runTask) {\n\t\t\t\t\t\tawait $(\"test.callback\", () => limitMaxConcurrency(() => runner.runTask(test)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst fn = getFn(test);\n\t\t\t\t\t\tif (!fn) {\n\t\t\t\t\t\t\tthrow new Error(\"Test function is not found. Did you add it using `setFn`?\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait $(\"test.callback\", () => limitMaxConcurrency(() => fn()));\n\t\t\t\t\t}\n\t\t\t\t\tawait runner.onAfterTryTask?.(test, {\n\t\t\t\t\t\tretry: retryCount,\n\t\t\t\t\t\trepeats: repeatCount\n\t\t\t\t\t});\n\t\t\t\t\tif (test.result.state !== \"fail\") {\n\t\t\t\t\t\ttest.result.state = \"pass\";\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tawait runner.onTaskFinished?.(test);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tawait $(\"test.afterEach\", () => callSuiteHook(suite, test, \"afterEach\", runner, [test.context, suite]));\n\t\t\t\t\tif (beforeEachCleanups.length) {\n\t\t\t\t\t\tawait $(\"test.cleanup\", () => callCleanupHooks(runner, beforeEachCleanups));\n\t\t\t\t\t}\n\t\t\t\t\t// Only clean up fixtures created inside runTest (after the checkpoint)\n\t\t\t\t\t// Fixtures created for aroundEach will be cleaned up after aroundEach teardown\n\t\t\t\t\tawait callFixtureCleanupFrom(test.context, fixtureCheckpoint);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t\t}\n\t\t\t\tif (test.onFinished?.length) {\n\t\t\t\t\tawait $(\"test.onFinished\", () => callTestHooks(runner, test, test.onFinished, \"stack\"));\n\t\t\t\t}\n\t\t\t\tif (test.result.state === \"fail\" && test.onFailed?.length) {\n\t\t\t\t\tawait $(\"test.onFailed\", () => callTestHooks(runner, test, test.onFailed, runner.config.sequence.hooks));\n\t\t\t\t}\n\t\t\t\ttest.onFailed = undefined;\n\t\t\t\ttest.onFinished = undefined;\n\t\t\t\tawait runner.onAfterRetryTask?.(test, {\n\t\t\t\t\tretry: retryCount,\n\t\t\t\t\trepeats: repeatCount\n\t\t\t\t});\n\t\t\t}).catch((error) => {\n\t\t\t\tfailTask(test.result, error, runner.config.diffOptions);\n\t\t\t});\n\t\t\t// Clean up fixtures that were created for aroundEach (before the checkpoint)\n\t\t\t// This runs after aroundEach teardown has completed\n\t\t\ttry {\n\t\t\t\tawait callFixtureCleanup(test.context);\n\t\t\t} catch (e) {\n\t\t\t\tfailTask(test.result, e, runner.config.diffOptions);\n\t\t\t}\n\t\t\t// skipped with new PendingError\n\t\t\tif (test.result?.pending || test.result?.state === \"skip\") {\n\t\t\t\ttest.mode = \"skip\";\n\t\t\t\ttest.result = {\n\t\t\t\t\tstate: \"skip\",\n\t\t\t\t\tnote: test.result?.note,\n\t\t\t\t\tpending: true,\n\t\t\t\t\tduration: now() - start\n\t\t\t\t};\n\t\t\t\tupdateTask(\"test-finished\", test, runner);\n\t\t\t\tsetCurrentTest(undefined);\n\t\t\t\tcleanupRunningTest();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (test.result.state === \"pass\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (retryCount < retry) {\n\t\t\t\tconst shouldRetry = passesRetryCondition(test, test.result.errors);\n\t\t\t\tif (!shouldRetry) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttest.result.state = \"run\";\n\t\t\t\ttest.result.retryCount = (test.result.retryCount ?? 0) + 1;\n\t\t\t\tconst delay = getRetryDelay(test.retry);\n\t\t\t\tif (delay > 0) {\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, delay));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// update retry info\n\t\t\tupdateTask(\"test-retried\", test, runner);\n\t\t}\n\t}\n\t// if test is marked to be failed, flip the result\n\tif (test.fails) {\n\t\tif (test.result.state === \"pass\") {\n\t\t\tconst error = processError(new Error(\"Expect test to fail\"));\n\t\t\ttest.result.state = \"fail\";\n\t\t\ttest.result.errors = [error];\n\t\t} else {\n\t\t\ttest.result.state = \"pass\";\n\t\t\ttest.result.errors = undefined;\n\t\t}\n\t}\n\tcleanupRunningTest();\n\tsetCurrentTest(undefined);\n\ttest.result.duration = now() - start;\n\tawait runner.onAfterRunTask?.(test);\n\tupdateTask(\"test-finished\", test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n\tif (err instanceof PendingError) {\n\t\tresult.state = \"skip\";\n\t\tresult.note = err.note;\n\t\tresult.pending = true;\n\t\treturn;\n\t}\n\tif (err instanceof TestRunAbortError) {\n\t\tresult.state = \"skip\";\n\t\tresult.note = err.message;\n\t\treturn;\n\t}\n\tresult.state = \"fail\";\n\tconst errors = Array.isArray(err) ? err : [err];\n\tfor (const e of errors) {\n\t\tconst errors = e instanceof AggregateError ? e.errors.map((e) => processError(e, diffOptions)) : [processError(e, diffOptions)];\n\t\tresult.errors ??= [];\n\t\tresult.errors.push(...errors);\n\t}\n}\nfunction markTasksAsSkipped(suite, runner) {\n\tsuite.tasks.forEach((t) => {\n\t\tt.mode = \"skip\";\n\t\tt.result = {\n\t\t\t...t.result,\n\t\t\tstate: \"skip\"\n\t\t};\n\t\tupdateTask(\"test-finished\", t, runner);\n\t\tif (t.type === \"suite\") {\n\t\t\tmarkTasksAsSkipped(t, runner);\n\t\t}\n\t});\n}\nfunction markPendingTasksAsSkipped(suite, runner, note) {\n\tsuite.tasks.forEach((t) => {\n\t\tif (!t.result || t.result.state === \"run\") {\n\t\t\tt.mode = \"skip\";\n\t\t\tt.result = {\n\t\t\t\t...t.result,\n\t\t\t\tstate: \"skip\",\n\t\t\t\tnote\n\t\t\t};\n\t\t\tupdateTask(\"test-cancel\", t, runner);\n\t\t}\n\t\tif (t.type === \"suite\") {\n\t\t\tmarkPendingTasksAsSkipped(t, runner, note);\n\t\t}\n\t});\n}\nasync function runSuite(suite, runner) {\n\tawait runner.onBeforeRunSuite?.(suite);\n\tif (suite.result?.state === \"fail\") {\n\t\tmarkTasksAsSkipped(suite, runner);\n\t\t// failed during collection\n\t\tupdateTask(\"suite-failed-early\", suite, runner);\n\t\treturn;\n\t}\n\tconst start = now();\n\tconst mode = suite.mode;\n\tsuite.result = {\n\t\tstate: mode === \"skip\" || mode === \"todo\" ? mode : \"run\",\n\t\tstartTime: unixNow()\n\t};\n\tconst $ = runner.trace;\n\tupdateTask(\"suite-prepare\", suite, runner);\n\tlet beforeAllCleanups = [];\n\tif (suite.mode === \"skip\") {\n\t\tsuite.result.state = \"skip\";\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t} else if (suite.mode === \"todo\") {\n\t\tsuite.result.state = \"todo\";\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t} else {\n\t\tlet suiteRan = false;\n\t\ttry {\n\t\t\tawait callAroundAllHooks(suite, async () => {\n\t\t\t\tsuiteRan = true;\n\t\t\t\ttry {\n\t\t\t\t\t// beforeAll\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbeforeAllCleanups = await $(\"suite.beforeAll\", () => callSuiteHook(suite, suite, \"beforeAll\", runner, [suite]));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tfailTask(suite.result, e, runner.config.diffOptions);\n\t\t\t\t\t\tmarkTasksAsSkipped(suite, runner);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// run suite children\n\t\t\t\t\tif (runner.runSuite) {\n\t\t\t\t\t\tawait runner.runSuite(suite);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let tasksGroup of partitionSuiteChildren(suite)) {\n\t\t\t\t\t\t\tif (tasksGroup[0].concurrent === true) {\n\t\t\t\t\t\t\t\tconst groupLimiter = limitConcurrency(runner.config.maxConcurrency);\n\t\t\t\t\t\t\t\tawait Promise.all(tasksGroup.map((c) => groupLimiter(() => runSuiteChild(c, runner))));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst { sequence } = runner.config;\n\t\t\t\t\t\t\t\tif (suite.shuffle) {\n\t\t\t\t\t\t\t\t\t// run describe block independently from tests\n\t\t\t\t\t\t\t\t\tconst suites = tasksGroup.filter((group) => group.type === \"suite\");\n\t\t\t\t\t\t\t\t\tconst tests = tasksGroup.filter((group) => group.type === \"test\");\n\t\t\t\t\t\t\t\t\tconst groups = shuffle([suites, tests], sequence.seed);\n\t\t\t\t\t\t\t\t\ttasksGroup = groups.flatMap((group) => shuffle(group, sequence.seed));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor (const c of tasksGroup) {\n\t\t\t\t\t\t\t\t\tawait runSuiteChild(c, runner);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\t// afterAll runs even if beforeAll or suite children fail\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait $(\"suite.afterAll\", () => callSuiteHook(suite, suite, \"afterAll\", runner, [suite]));\n\t\t\t\t\t\tif (beforeAllCleanups.length) {\n\t\t\t\t\t\t\tawait $(\"suite.cleanup\", () => callCleanupHooks(runner, beforeAllCleanups));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (suite.file === suite) {\n\t\t\t\t\t\t\tconst contexts = TestFixtures.getFileContexts(suite.file);\n\t\t\t\t\t\t\tawait Promise.all(contexts.map((context) => callFixtureCleanup(context)));\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tfailTask(suite.result, e, runner.config.diffOptions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (e) {\n\t\t\t// mark tasks as skipped if aroundAll failed before the suite callback was executed\n\t\t\tif (!suiteRan) {\n\t\t\t\tmarkTasksAsSkipped(suite, runner);\n\t\t\t}\n\t\t\tfailTask(suite.result, e, runner.config.diffOptions);\n\t\t}\n\t\tif (suite.mode === \"run\" || suite.mode === \"queued\") {\n\t\t\tif (!runner.config.passWithNoTests && !hasTests(suite)) {\n\t\t\t\tsuite.result.state = \"fail\";\n\t\t\t\tif (!suite.result.errors?.length) {\n\t\t\t\t\tconst error = processError(new Error(`No test found in suite ${suite.name}`));\n\t\t\t\t\tsuite.result.errors = [error];\n\t\t\t\t}\n\t\t\t} else if (hasFailed(suite)) {\n\t\t\t\tsuite.result.state = \"fail\";\n\t\t\t} else {\n\t\t\t\tsuite.result.state = \"pass\";\n\t\t\t}\n\t\t}\n\t\tsuite.result.duration = now() - start;\n\t\tawait runner.onAfterRunSuite?.(suite);\n\t\tupdateTask(\"suite-finished\", suite, runner);\n\t}\n}\nasync function runSuiteChild(c, runner) {\n\tconst $ = runner.trace;\n\tif (c.type === \"test\") {\n\t\treturn $(\"run.test\", {\n\t\t\t\"vitest.test.id\": c.id,\n\t\t\t\"vitest.test.name\": c.name,\n\t\t\t\"vitest.test.mode\": c.mode,\n\t\t\t\"vitest.test.timeout\": c.timeout,\n\t\t\t\"code.file.path\": c.file.filepath,\n\t\t\t\"code.line.number\": c.location?.line,\n\t\t\t\"code.column.number\": c.location?.column\n\t\t}, () => runTest(c, runner));\n\t} else if (c.type === \"suite\") {\n\t\treturn $(\"run.suite\", {\n\t\t\t\"vitest.suite.id\": c.id,\n\t\t\t\"vitest.suite.name\": c.name,\n\t\t\t\"vitest.suite.mode\": c.mode,\n\t\t\t\"code.file.path\": c.file.filepath,\n\t\t\t\"code.line.number\": c.location?.line,\n\t\t\t\"code.column.number\": c.location?.column\n\t\t}, () => runSuite(c, runner));\n\t}\n}\nasync function runFiles(files, runner) {\n\tlimitMaxConcurrency ??= limitConcurrency(runner.config.maxConcurrency);\n\tfor (const file of files) {\n\t\tif (!file.tasks.length && !runner.config.passWithNoTests) {\n\t\t\tif (!file.result?.errors?.length) {\n\t\t\t\tconst error = processError(new Error(`No test suite found in file ${file.filepath}`));\n\t\t\t\tfile.result = {\n\t\t\t\t\tstate: \"fail\",\n\t\t\t\t\terrors: [error]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tawait runner.trace(\"run.spec\", {\n\t\t\t\"code.file.path\": file.filepath,\n\t\t\t\"vitest.suite.tasks.length\": file.tasks.length\n\t\t}, () => runSuite(file, runner));\n\t}\n}\nconst workerRunners = new WeakSet();\nfunction defaultTrace(_, attributes, cb) {\n\tif (typeof attributes === \"function\") {\n\t\treturn attributes();\n\t}\n\treturn cb();\n}\nasync function startTests(specs, runner) {\n\trunner.trace ??= defaultTrace;\n\tconst cancel = runner.cancel?.bind(runner);\n\t// Ideally, we need to have an event listener for this, but only have a runner here.\n\t// Adding another onCancel felt wrong (maybe it needs to be refactored)\n\trunner.cancel = (reason) => {\n\t\t// We intentionally create only one error since there is only one test run that can be cancelled\n\t\tconst error = new TestRunAbortError(\"The test run was aborted by the user.\", reason);\n\t\tgetRunningTests().forEach((test) => {\n\t\t\tabortContextSignal(test.context, error);\n\t\t\tmarkPendingTasksAsSkipped(test.file, runner, error.message);\n\t\t});\n\t\treturn cancel?.(reason);\n\t};\n\tif (!workerRunners.has(runner)) {\n\t\trunner.onCleanupWorkerContext?.(async () => {\n\t\t\tawait Promise.all([...TestFixtures.getWorkerContexts()].map((context) => callFixtureCleanup(context))).finally(() => {\n\t\t\t\tTestFixtures.clearDefinitions();\n\t\t\t});\n\t\t});\n\t\tworkerRunners.add(runner);\n\t}\n\ttry {\n\t\tconst paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n\t\tawait runner.onBeforeCollect?.(paths);\n\t\tconst files = await collectTests(specs, runner);\n\t\tawait runner.onCollected?.(files);\n\t\tawait runner.onBeforeRunFiles?.(files);\n\t\tawait runFiles(files, runner);\n\t\tawait runner.onAfterRunFiles?.(files);\n\t\tawait finishSendTasksUpdate(runner);\n\t\treturn files;\n\t} finally {\n\t\trunner.cancel = cancel;\n\t}\n}\nasync function publicCollect(specs, runner) {\n\trunner.trace ??= defaultTrace;\n\tconst paths = specs.map((f) => typeof f === \"string\" ? f : f.filepath);\n\tawait runner.onBeforeCollect?.(paths);\n\tconst files = await collectTests(specs, runner);\n\tawait runner.onCollected?.(files);\n\treturn files;\n}\n\n/**\n* @experimental\n* @advanced\n*\n* Records a custom test artifact during test execution.\n*\n* This function allows you to attach structured data, files, or metadata to a test.\n*\n* Vitest automatically injects the source location where the artifact was created and manages any attachments you include.\n*\n* **Note:** artifacts must be recorded before the task is reported. Any artifacts recorded after that will not be included in the task.\n*\n* @param task - The test task context, typically accessed via `this.task` in custom matchers or `context.task` in tests\n* @param artifact - The artifact to record. Must extend {@linkcode TestArtifactBase}\n*\n* @returns A promise that resolves to the recorded artifact with location injected\n*\n* @throws {Error} If the test runner doesn't support artifacts\n*\n* @example\n* ```ts\n* // In a custom assertion\n* async function toHaveValidSchema(this: MatcherState, actual: unknown) {\n* const validation = validateSchema(actual)\n*\n* await recordArtifact(this.task, {\n* type: 'my-plugin:schema-validation',\n* passed: validation.valid,\n* errors: validation.errors,\n* })\n*\n* return { pass: validation.valid, message: () => '...' }\n* }\n* ```\n*/\nasync function recordArtifact(task, artifact) {\n\tconst runner = getRunner();\n\tconst stack = findTestFileStackTrace(task.file.filepath, new Error(\"STACK_TRACE\").stack);\n\tif (stack) {\n\t\tartifact.location = {\n\t\t\tfile: stack.file,\n\t\t\tline: stack.line,\n\t\t\tcolumn: stack.column\n\t\t};\n\t\tif (artifact.type === \"internal:annotation\") {\n\t\t\tartifact.annotation.location = artifact.location;\n\t\t}\n\t}\n\tif (Array.isArray(artifact.attachments)) {\n\t\tfor (const attachment of artifact.attachments) {\n\t\t\tmanageArtifactAttachment(attachment);\n\t\t}\n\t}\n\t// annotations won't resolve as artifacts for backwards compatibility until next major\n\tif (artifact.type === \"internal:annotation\") {\n\t\treturn artifact;\n\t}\n\tif (!runner.onTestArtifactRecord) {\n\t\tthrow new Error(`Test runner doesn't support test artifacts.`);\n\t}\n\tawait finishSendTasksUpdate(runner);\n\tconst resolvedArtifact = await runner.onTestArtifactRecord(task, artifact);\n\ttask.artifacts.push(resolvedArtifact);\n\treturn resolvedArtifact;\n}\nconst table = [];\nfor (let i = 65; i < 91; i++) {\n\ttable.push(String.fromCharCode(i));\n}\nfor (let i = 97; i < 123; i++) {\n\ttable.push(String.fromCharCode(i));\n}\nfor (let i = 0; i < 10; i++) {\n\ttable.push(i.toString(10));\n}\ntable.push(\"+\", \"/\");\nfunction encodeUint8Array(bytes) {\n\tlet base64 = \"\";\n\tconst len = bytes.byteLength;\n\tfor (let i = 0; i < len; i += 3) {\n\t\tif (len === i + 1) {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += \"==\";\n\t\t} else if (len === i + 2) {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4 | (bytes[i + 1] & 240) >> 4;\n\t\t\tconst c = (bytes[i + 1] & 15) << 2;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += table[c];\n\t\t\tbase64 += \"=\";\n\t\t} else {\n\t\t\tconst a = (bytes[i] & 252) >> 2;\n\t\t\tconst b = (bytes[i] & 3) << 4 | (bytes[i + 1] & 240) >> 4;\n\t\t\tconst c = (bytes[i + 1] & 15) << 2 | (bytes[i + 2] & 192) >> 6;\n\t\t\tconst d = bytes[i + 2] & 63;\n\t\t\tbase64 += table[a];\n\t\t\tbase64 += table[b];\n\t\t\tbase64 += table[c];\n\t\t\tbase64 += table[d];\n\t\t}\n\t}\n\treturn base64;\n}\n/**\n* Records an async operation associated with a test task.\n*\n* This function tracks promises that should be awaited before a test completes.\n* The promise is automatically removed from the test's promise list once it settles.\n*/\nfunction recordAsyncOperation(test, promise) {\n\t// if promise is explicitly awaited, remove it from the list\n\tpromise = promise.finally(() => {\n\t\tif (!test.promises) {\n\t\t\treturn;\n\t\t}\n\t\tconst index = test.promises.indexOf(promise);\n\t\tif (index !== -1) {\n\t\t\ttest.promises.splice(index, 1);\n\t\t}\n\t});\n\t// record promise\n\tif (!test.promises) {\n\t\ttest.promises = [];\n\t}\n\ttest.promises.push(promise);\n\treturn promise;\n}\n/**\n* Validates and prepares a test attachment for serialization.\n*\n* This function ensures attachments have either `body` or `path` set (but not both), and converts `Uint8Array` bodies to base64-encoded strings for easier serialization.\n*\n* @param attachment - The attachment to validate and prepare\n*\n* @throws {TypeError} If neither `body` nor `path` is provided\n* @throws {TypeError} If both `body` and `path` are provided\n*/\nfunction manageArtifactAttachment(attachment) {\n\tif (attachment.body == null && !attachment.path) {\n\t\tthrow new TypeError(`Test attachment requires \"body\" or \"path\" to be set. Both are missing.`);\n\t}\n\tif (attachment.body && attachment.path) {\n\t\tthrow new TypeError(`Test attachment requires only one of \"body\" or \"path\" to be set. Both are specified.`);\n\t}\n\tif (attachment.path && attachment.bodyEncoding) {\n\t\tthrow new TypeError(`Test attachment with \"path\" should not have \"bodyEncoding\" specified.`);\n\t}\n\t// convert to a string so it's easier to serialise\n\tif (attachment.body instanceof Uint8Array) {\n\t\tattachment.body = encodeUint8Array(attachment.body);\n\t}\n\tif (attachment.body != null) {\n\t\tattachment.bodyEncoding ??= \"base64\";\n\t}\n}\n\nexport { createTagsFilter as A, createTaskName as B, findTestFileStackTrace as C, generateFileHash as D, generateHash as E, getFullName as F, getNames as G, getSuites as H, getTasks as I, getTestName as J, getTests as K, hasFailed as L, hasTests as M, interpretTaskModes as N, isTestCase as O, limitConcurrency as P, matchesTags as Q, partitionSuiteChildren as R, someTasksAreOnly as S, validateTags as T, afterAll as a, afterEach as b, aroundAll as c, aroundEach as d, beforeAll as e, beforeEach as f, createTaskCollector as g, describe as h, getCurrentSuite as i, getCurrentTest as j, getFn as k, getHooks as l, it as m, onTestFinished as n, onTestFailed as o, publicCollect as p, setHooks as q, recordArtifact as r, setFn as s, startTests as t, suite as u, test as v, updateTask as w, calculateSuiteHash as x, createChainable as y, createFileTask as z };\n","import { afterAll, afterEach, beforeAll, beforeEach, describe, it } from 'vitest';\n\nexport function createSpec<T extends Spec>(spec: T) {\n const proto: FunctionConstructor = Object.getPrototypeOf(spec);\n let describeFn: typeof describe | typeof describe.only | typeof describe.skip;\n const specName = proto.constructor.name;\n\n if (specName.startsWith('fff')) {\n describeFn = describe.only;\n } else if (specName.startsWith('xxx')) {\n describeFn = describe.skip;\n } else {\n describeFn = describe;\n }\n\n describeFn(specName, () => createTestCases(spec));\n}\n\nfunction createTestCases(spec: Record<string, unknown>) {\n let proto: FunctionConstructor = Object.getPrototypeOf(spec);\n\n const processedMethodsMap: { [k: string]: true } = {};\n\n while (proto.constructor !== Object) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const isProcessed = processedMethodsMap[key];\n processedMethodsMap[key] = true;\n const method = spec[key];\n if (isProcessed || key === 'constructor' || typeof method !== 'function') {\n continue;\n }\n const callback = (method as () => void | Promise<void>).bind(spec);\n const hookFn = hooks[key as keyof typeof hooks];\n if (hookFn) {\n hookFn(callback);\n } else if (key.startsWith('should')) {\n it(key, callback);\n } else if (key.startsWith('fffShould')) {\n it.only(key, callback);\n } else if (key.startsWith('xxxShould')) {\n it.skip(key, callback);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n}\n\nconst hooks = {\n beforeAll,\n beforeEach,\n afterEach,\n afterAll,\n} as const;\n\ntype SpecHooks = Partial<typeof hooks>;\n\nexport type Spec = SpecHooks & {\n // biome-ignore lint/suspicious/noExplicitAny: `any` is required — `unknown` makes index signature incompatible with concrete spec classes\n readonly [k: string]: (() => void | Promise<void>) | any;\n};\n"],"names":["id","companyId","company","creatorId","creator","createdAt","updatedAt","BaseEntity","name","description","kind","pk","picture","email","password","profile","users","parentLedgerId","parentLedger","percentage","categoryId","category","measureUnits","deletedAt","address","code","buyLedgerAccountId","buyLedgerAccount","saleLedgerAccountId","saleLedgerAccount","taxId","tax","measureUnitId","measureUnit","salePrice","inventoryable","tags","tagsCount","items","itemsCount","itemId","tagId","itemAdjustments","date","item","number","buyPrice","storehouseId","storehouse","inventoryAdjustmentId","inventoryAdjustment","vec","Id","Field","references","Company","ManyToOne","entity","User","onInsert","Date","now","onUpdate","Entity","type","Profile","updatable","eager","OneToOne","mappedBy","cascade","OneToMany","UserWithNonUpdatableId","LedgerAccount","randomUUID","TaxCategory","Tax","softDelete","MeasureUnit","onDelete","MeasureUnitCategory","Storehouse","ManyToMany","Tag","through","ItemTag","virtual","raw","ctx","escapedPrefix","dialect","append","count","$where","innerCtx","escapeId","autoPrefix","Item","ItemAdjustment","rel","InventoryAdjustment","dimensions","VectorItem","DEFAULT_LOG_LEVELS","DefaultLogger","logQuery","query","values","duration","time","undefined","params","length","JSON","stringify","console","log","logSlowQuery","logParams","warn","logWarn","message","logError","error","logInfo","info","logSchema","logMigration","logSkippedMigration","LoggerWrapper","options","slowQuery","levels","Set","logger","Array","isArray","loggerFunction","threshold","has","level","method","charAt","toUpperCase","slice","args","logFn","holder","globalThis","metaKey","Symbol","for","metas","Map","getEntities","entries","reduce","acc","key","val","push","ensureMeta","meta","get","fields","relations","set","getMeta","TypeError","processed","fillRelations","relKey","relOpts","fillInverseSideRelations","relEntity","relMeta","cardinality","idKey","relIdKey","idName","relIdName","source","lowerFirst","upperFirst","target","local","foreign","fillThroughRelations","getMappedByRelationKey","mappedByRelation","reverse","map","getKeys","field","keyMap","getRelationKeyMap","keys","createTables","querier","primaryKeyType","entities","sql","getDdlForTable","run","dropTables","clearTables","createContext","delete","insertableIdType","defaultType","escapeIdChar","columns","propSql","isId","Number","features","supportsJsonb","join","loadTsDefaultExportWithJiti","uqlOrmPackageRoot","dir","mkdtemp","tmpdir","filePath","writeFile","jiti","createJiti","import","default","rm","recursive","force","createMockQuerierPool","getQuerier","pool","transaction","callback","_opts","withQuerier","release","end","getMigrationQuerier","b","reset","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","i","e","String","open","close","B","process","r","env","a","FORCE_TTY","l","argv","includes","platform","TERM","window","chrome","C","t","o","u","n","g","s","substring","indexOf","h","c","isColorSupported","f","d","y","_mergeNamespaces","m","forEach","Object","k","getOwnPropertyDescriptor","defineProperty","enumerable","freeze","getKeysOfEnumerableProperties","object","compareKeys","rawKeys","sort","getOwnPropertySymbols","symbol","printIteratorEntries","iterator","config","indentation","depth","refs","printer","separator","result","width","current","next","done","spacingOuter","indentationNext","indent","maxWidth","value","spacingInner","min","printIteratorValues","printListItems","list","ArrayBuffer","DataView","isDataView","byteLength","getInt8","printObjectProperties","asymmetricMatcher","SPACE$2","serialize$5","stringedValue","toString","maxDepth","sample","toAsymmetricMatcher","test$5","$$typeof","plugin$5","serialize","test","SPACE$1","OBJECT_NAMES","ARRAY_REGEXP","testName","test$4","isNamedNodeMap","collection","serialize$4","props","attribute","plugin$4","escapeHTML","str","replaceAll","printProps","colors","startsWith","match","printed","prop","printChildren","children","child","printText","printShadowRoot","text","contentColor","content","printComment","comment","commentColor","printElement","printedProps","printedChildren","tagColor","tag","printElementAsLeaf","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","FRAGMENT_NODE","ELEMENT_REGEXP","testHasAttribute","hasAttribute","testNode","constructorName","nodeType","tagName","isCustomElement","test$3","nodeIsText","node","nodeIsComment","nodeIsFragment","filterChildren","filterNode","filtered","filter","data","trim","serializeDOM","toLowerCase","prototype","call","childNodes","shadowChildren","shadowRoot","resolvedChildren","resolvedShadowChildren","from","attributes","attr","serialize$3","createDOMElementFilter","plugin$3","IS_ITERABLE_SENTINEL","IS_LIST_SENTINEL","IS_KEYED_SENTINEL","IS_MAP_SENTINEL","IS_ORDERED_SENTINEL","IS_RECORD_SENTINEL","IS_SEQ_SENTINEL","IS_SET_SENTINEL","IS_STACK_SENTINEL","getImmutableName","printAsLeaf","SPACE","LAZY","printImmutableEntries","getRecordEntries","_keys","printImmutableRecord","_name","printImmutableSeq","_iter","_object","_array","_collection","_iterable","printImmutableValues","serialize$2","test$2","plugin$2","getDefaultExportFromCjs","x","__esModule","hasOwnProperty","reactIs$1","exports","reactIs_production","hasRequiredReactIs_production","requireReactIs_production","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","typeOf","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","isValidElementType","getModuleId","hasRequiredReactIs$1","requireReactIs$1","reactIsExports$1","index$1","ReactIs19","__proto__","reactIs","reactIs_production_min","hasRequiredReactIs_production_min","requireReactIs_production_min","p","q","v","isAsyncMode","isConcurrentMode","hasRequiredReactIs","requireReactIs","reactIsExports","index","ReactIs18","reactIsMethods","ReactIs","fromEntries","getChildren","arg","getType","element","displayName","functionName","render","getPropKeys$1","serialize$1","test$1","plugin$1","testSymbol","getPropKeys","plugin","toISOString","errorToString","Error","regExpToString","RegExp","getConstructorName","isWindow","SYMBOL_REGEXP","NEWLINE_REGEXP","PrettyFormatPluginError","stack","isToStringedArrayType","toStringed","printNumber","is","printBigInt","printFunction","printFunctionName","printSymbol","replace","printError","printBasicValue","escapeRegex","escapeString","isNaN","printComplexValue","hasCalledToJSON","hitMaxDepth","callToJSON","toJSON","printBasicPrototype","isNewPlugin","printPlugin","print","valChild","edgeSpacing","spacing","findPlugin","plugins","basicResult","_outputLengthPerDepth","maxOutputLength","DEFAULT_THEME","DEFAULT_THEME_KEYS","DEFAULT_OPTIONS","highlight","POSITIVE_INFINITY","theme","validateOptions","hasOwn","getColorsHighlight","color","styles","create","getColorsEmpty","getPrintFunctionName","getEscapeRegex","getEscapeString","getConfig","createIndent","format","AsymmetricMatcher","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","ansiColors","strike","brightblack","brightred","brightgreen","brightyellow","brightblue","brightmagenta","brightcyan","brightwhite","grey","special","bigint","boolean","null","string","regexp","truncator","colorise","styleType","normaliseOptions","showHidden","customInspect","showProxy","maxArrayLength","Infinity","breakLength","seen","truncate","stylize","inspect","Boolean","isHighSurrogate","char","tail","tailLength","stringLength","inspectList","inspectItem","size","originalLength","output","peek","truncated","last","secondToLast","nextLength","truncatedLength","quoteComplexKey","inspectProperty","inspectArray","array","nonIndexProperties","listContents","propertyContents","getArrayName","Buffer","toStringTag","inspectTypedArray","inspectDate","dateObject","stringRepresentation","split","inspectFunction","func","functionType","inspectMapEntry","mapToEntries","inspectMap","inspectNumber","inspectBigInt","nums","inspectRegExp","flags","sourceLength","arrayFromSet","inspectSet","stringEscapeChars","escapeCharacters","hex","escape","charCodeAt","inspectString","inspectSymbol","getPromiseValue","inspectObject$1","properties","getOwnPropertyNames","symbols","symbolContents","pop","sep","inspectClass","inspectArguments","errorKeys","inspectObject","unshift","inspectAttribute","inspectNodeCollection","inspectNode","inspectHTML","getAttributeNames","head","headClose","getAttribute","symbolsSupported","chaiInspect","nodeInspect","constructorMap","WeakMap","stringTagMap","baseTypesMap","BigInt","function","Function","Promise","WeakSet","Arguments","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Generator","HTMLCollection","NodeList","inspectCustom","inspectFn","inspect$1","opts","proto","getPrototypeOf","HTMLElement","PLUGINS","maxLength","MAX_LENGTH","filterFn","createNodeFilterFromSelector","format$1","Math","floor","MAX_SAFE_INTEGER","selector","matches","formatRegExp","baseFormat","formatArg","inspecOptions","prettifyObject","objects","len","template","parseInt","parseFloat","err","obj","objDisplay","fn","kstr","splice","assertTypes","types","receivedType","pass","filterOutComments","commentState","toArray","isObject","objectAttr","path","defaultValue","paths","createDefer","resolve","reject","_resolve","_reject","isNegativeNaN","f64","u32","buffer","isNegative","ordinal","j","unique","SAFE_TIMERS_SYMBOL","getSafeTimers","setTimeout","safeSetTimeout","setInterval","safeSetInterval","clearInterval","safeClearInterval","clearTimeout","safeClearTimeout","setImmediate","safeSetImmediate","clearImmediate","safeClearImmediate","queueMicrotask","safeQueueMicrotask","nextTick","safeNextTick","_DRIVE_LETTER_START_RE","normalizeWindowsPath","input","_IS_ABSOLUTE_RE","cwd","arguments_","argument","resolvedPath","resolvedAbsolute","isAbsolute","normalizeString","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","lastSlashIndex","lastIndexOf","chars","intToChar","charToInt","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","NOW_LENGTH","REGEXP_VITEST","extractLocation","urlLike","regExp","parts","exec","url","urlObj","URL","searchParams","pathname","hash","search","isWindows","parseSingleFFOrSafariStack","line","atIndex","locationPart","candidateLocation","lineNumber","columnNumber","file","column","parseSingleStack","parseSingleV8Stack","sanitizedLine","location","PendingError","task","note","taskId","FixtureDependencyError","FixtureAccessError","FixtureParseError","fnMap","testFixtureMap","hooksMap","setFn","setTestFixture","fixture","getTestFixtures","setHooks","hooks","getHooks","FIXTURE_STACK_TRACE_KEY","TestFixtures","_definitions","_builtinFixtures","_fixtureOptionKeys","_fixtureScopes","_workerContextSuite","clearDefinitions","getWorkerContexts","getWorkerContext","getFileContexts","getFileContext","isFixtureOptions","some","registrations","_overrides","_registrations","_suiteContexts","extend","runner","userFixtures","suite","getCurrentSuite","isTopLevel","parseUserFixtures","currentSuite","overrides","override","suiteRegistrations","supportNonTest","errors","_options","auto","scope","injected","injectValue","parent","deps","isFixtureFunction","getUsedProps","assign","depName","dep","AggregateError","cleanupFnArrayMap","contextHasFixturesCache","withFixtures","collector","hookContext","context","suiteHook","validateSuiteHook","stackTraceError","fixtures","usedFixtures","usedProps","isAutoFixture","cleanupFnArray","pendingFixtures","resolveDeps","testScopedFixtures","fixtureNames","alternativeHook","aroundAll","beforeAll","afterAll","cachedFixtures","add","resolvedValue","resolveTestFixtureValue","resolveScopeFixtureValue","resolveFixtureFunction","scopedFixturePromiseCache","workerContext","fileContext","fixtureContext","cleanupFnFileArray","promise","then","fixtureFn","fixtureName","useFnArgPromise","isUseFnArgResolved","fixtureReturn","useFnArg","useReturnPromise","catch","depSet","clear","hook","suiteError","sourceError","kPropsSymbol","kPropNamesSymbol","configureProps","memoProps","fixturesIndex","original","implementation","fnString","splitByComma","fixturesArgument","endsWith","ordinalArgument","_first","at","start","token","lastToken","kChainableContext","getChainableContext","chainable","createChainable","chain","apply","withContext","bind","getFixtures","setContext","mergeContext","getDefaultHookTimeout","getRunner","hookTimeout","CLEANUP_TIMEOUT_KEY","CLEANUP_STACK_TRACE_KEY","AROUND_TIMEOUT_KEY","AROUND_STACK_TRACE_KEY","timeout","on","withTimeout","withSuiteFixtures","beforeEach","wrapper","fixtureResolver","abortIfTimeout","afterEach","resolvedTimeout","aroundEach","runTest","innerFn","contextIndex","prefix","fixtured","findTestFileStackTrace","testFilePath","lines","validateTags","strictTags","availableTags","createNoTagsError","createTaskName","names","createSuite","createTest","optionsOrFn","optionsOrTest","formatName","describe","it","defaultSuite","currentTestFilepath","assert","condition","collectorContext","createSuiteHooks","parseArguments","timeoutOrTest","handler","createSuiteCollector","factory","mode","each","suiteOptions","tasks","initSuite","parentTask","parentTags","testTags","tagsOptions","tagDefinition","find","tag1","tag2","priority","testOwnMeta","testTimeout","parentMeta","tagMeta","testMeta","fullName","fullTestName","fails","retry","repeats","only","skip","todo","annotations","artifacts","concurrent","sequential","sequence","shuffle","createTestContext","limit","stackTraceLimit","withCancel","withAwaitAsyncAssertions","signal","_","includeTaskLocation","collect","addHook","includeLocation","suiteTags","runWithSuite","allChildren","collectTask","fnResult","promises","allSettled","status","reason","suiteFn","factoryOrOptions","optionsOrFactory","isConcurrentSpecified","isSequentialSpecified","parentOptions","isConcurrent","isSequential","cases","formatTemplateString","fnOrOptions","arrayOnlyCases","every","fnFirst","idx","formatTitle","name_","skipIf","runIf","createTaskCollector","taskFn","handlerWrapper","parseBuilderFixtures","fixturesOrName","maybeFn","fixtureOptions","fixtureValue","builderFn","use","cleanup","onCleanup","scoped","_test","placeholders","occurrence","isObjectItem","formatAttribute","isArrayKey","arrayElement","chaiConfig","truncateThreshold","handleRegexMatch","nonMatch","regex","onMatch","onNonMatch","lastIndex","matchAll","header","oneCase","now$2","performance","prev","isHook","onTimeout","runWithTimeout","startTime","_currentTaskStartTime","_currentTaskTimeout","resolve_","reject_","timer","rejectTimeoutError","unref","makeTimeoutError","runWithCancel","addEventListener","abortControllers","abortContextSignal","abortController","abort","AbortController","state","pending","annotate","attachment","annotation","annotationAttachment","manageArtifactAttachment","recordAsyncOperation","recordArtifact","onTestAnnotate","finishSendTasksUpdate","resolvedAnnotation","onTestFailed","onFailed","onTestFinished","onFinished","extendTaskContext","packs","eventsPacks","pendingTasksUpdates","sendTasksUpdate","taskPacks","onTaskUpdate","all","artifact","filepath","attachments","onTestArtifactRecord","resolvedArtifact","table","fromCharCode","encodeUint8Array","bytes","base64","finally","body","bodyEncoding","createSpec","spec","describeFn","specName","createTestCases","processedMethodsMap","isProcessed","hookFn"],"mappings":"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","x_google_ignoreList":[6,7,8,9,10,11,12,13]}