@reifydb/core 0.0.1-alpha.2 → 0.0.1-alpha.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.
- package/dist/index.d.ts +9 -9
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1221,19 +1221,19 @@ interface Frame {
|
|
|
1221
1221
|
}
|
|
1222
1222
|
interface DiagnosticColumn {
|
|
1223
1223
|
name: string;
|
|
1224
|
-
|
|
1224
|
+
type: Type;
|
|
1225
1225
|
}
|
|
1226
|
-
interface
|
|
1227
|
-
|
|
1228
|
-
line
|
|
1229
|
-
|
|
1226
|
+
interface Fragment {
|
|
1227
|
+
text: string;
|
|
1228
|
+
line?: number;
|
|
1229
|
+
column?: number;
|
|
1230
1230
|
}
|
|
1231
1231
|
interface Diagnostic {
|
|
1232
1232
|
code: string;
|
|
1233
1233
|
statement?: string;
|
|
1234
1234
|
message: string;
|
|
1235
1235
|
column?: DiagnosticColumn;
|
|
1236
|
-
|
|
1236
|
+
fragment?: Fragment;
|
|
1237
1237
|
label?: string;
|
|
1238
1238
|
help?: string;
|
|
1239
1239
|
notes: Array<string>;
|
|
@@ -1241,7 +1241,7 @@ interface Diagnostic {
|
|
|
1241
1241
|
}
|
|
1242
1242
|
interface Column {
|
|
1243
1243
|
name: string;
|
|
1244
|
-
|
|
1244
|
+
type: Type;
|
|
1245
1245
|
data: string[];
|
|
1246
1246
|
}
|
|
1247
1247
|
interface ErrorResponse {
|
|
@@ -1255,7 +1255,7 @@ declare class ReifyError extends Error {
|
|
|
1255
1255
|
readonly code: string;
|
|
1256
1256
|
readonly statement?: string;
|
|
1257
1257
|
readonly column?: DiagnosticColumn;
|
|
1258
|
-
readonly
|
|
1258
|
+
readonly fragment?: Fragment;
|
|
1259
1259
|
readonly label?: string;
|
|
1260
1260
|
readonly help?: string;
|
|
1261
1261
|
readonly notes: string[];
|
|
@@ -1277,4 +1277,4 @@ type SingleFrameResult<S extends SchemaNode> = InferSchema<S>[];
|
|
|
1277
1277
|
*/
|
|
1278
1278
|
declare function asFrameResults<S extends readonly SchemaNode[]>(results: any): FrameResults<S>;
|
|
1279
1279
|
|
|
1280
|
-
export { type ArraySchemaNode, BlobValue, BoolValue, type Column, DateTimeValue, DateValue, type Diagnostic, type DiagnosticColumn, type ErrorResponse, Float4Value, Float8Value, type Frame, type FrameResults, IdentityIdValue, type InferSchema, type InferSchemas, Int16Value, Int1Value, Int2Value, Int4Value, Int8Value, IntervalValue, type ObjectSchemaNode, type OptionalSchemaNode, type Params, type PrimitiveSchemaNode, type PrimitiveToTS, type PrimitiveToValue, ReifyError, RowNumberValue, Schema, SchemaBuilder, type SchemaNode, type SingleFrameResult,
|
|
1280
|
+
export { type ArraySchemaNode, BlobValue, BoolValue, type Column, DateTimeValue, DateValue, type Diagnostic, type DiagnosticColumn, type ErrorResponse, Float4Value, Float8Value, type Fragment, type Frame, type FrameResults, IdentityIdValue, type InferSchema, type InferSchemas, Int16Value, Int1Value, Int2Value, Int4Value, Int8Value, IntervalValue, type ObjectSchemaNode, type OptionalSchemaNode, type Params, type PrimitiveSchemaNode, type PrimitiveToTS, type PrimitiveToValue, ReifyError, RowNumberValue, Schema, SchemaBuilder, type SchemaNode, type SingleFrameResult, TimeValue, type Type, type TypeValuePair, UNDEFINED_VALUE, Uint16Value, Uint1Value, Uint2Value, Uint4Value, Uint8Value, UndefinedValue, Utf8Value, Uuid4Value, Uuid7Value, Value, type ValueSchemaNode, asFrameResults, decode, parseValue, validateSchema };
|
package/dist/index.js
CHANGED
|
@@ -3048,7 +3048,7 @@ var ReifyError = class extends Error {
|
|
|
3048
3048
|
this.code = diagnostic.code;
|
|
3049
3049
|
this.statement = diagnostic.statement;
|
|
3050
3050
|
this.column = diagnostic.column;
|
|
3051
|
-
this.
|
|
3051
|
+
this.fragment = diagnostic.fragment;
|
|
3052
3052
|
this.label = diagnostic.label;
|
|
3053
3053
|
this.help = diagnostic.help;
|
|
3054
3054
|
this.notes = diagnostic.notes ?? [];
|
|
@@ -3056,7 +3056,7 @@ var ReifyError = class extends Error {
|
|
|
3056
3056
|
Object.setPrototypeOf(this, new.target.prototype);
|
|
3057
3057
|
}
|
|
3058
3058
|
toString() {
|
|
3059
|
-
const position = this.
|
|
3059
|
+
const position = this.fragment ? `line ${this.fragment.line}, offset ${this.fragment.column}` : "unknown position";
|
|
3060
3060
|
const notes = this.notes.length ? `
|
|
3061
3061
|
Notes:
|
|
3062
3062
|
- ${this.notes.join("\n- ")}` : "";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constant.ts","../src/value/blob.ts","../src/value/bool.ts","../src/value/date.ts","../src/value/time.ts","../src/value/datetime.ts","../src/value/float4.ts","../src/value/float8.ts","../src/value/int1.ts","../src/value/int2.ts","../src/value/int4.ts","../src/value/int8.ts","../src/value/int16.ts","../src/value/interval.ts","../src/value/uint1.ts","../src/value/uint2.ts","../src/value/uint4.ts","../src/value/uint8.ts","../src/value/uint16.ts","../src/value/rownumber.ts","../src/value/undefined.ts","../src/value/utf8.ts","../src/value/uuid4.ts","../src/value/uuid7.ts","../src/value/identityid.ts","../src/value/index.ts","../src/decoder.ts","../src/schema/builder.ts","../src/schema/parser.ts","../src/schema/validator.ts","../src/types.ts"],"sourcesContent":["/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nexport const UNDEFINED_VALUE = \"⟪undefined⟫\";","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * A binary large object (BLOB) value that can hold arbitrary byte data.\n */\nexport class BlobValue implements Value {\n readonly type: Type = \"Blob\" as const;\n private readonly bytes?: Uint8Array;\n\n constructor(value?: Uint8Array | ArrayBuffer | string | number[]) {\n if (value !== undefined) {\n if (value instanceof Uint8Array) {\n this.bytes = new Uint8Array(value);\n } else if (value instanceof ArrayBuffer) {\n this.bytes = new Uint8Array(value);\n } else if (typeof value === 'string') {\n // Try to parse as hex or base64\n const parsed = BlobValue.parseString(value);\n if (parsed === null) {\n throw new Error(`Invalid blob string: ${value}`);\n }\n this.bytes = parsed;\n } else if (Array.isArray(value)) {\n // Array of numbers (bytes)\n for (const byte of value) {\n if (!Number.isInteger(byte) || byte < 0 || byte > 255) {\n throw new Error(`Invalid byte value: ${byte}`);\n }\n }\n this.bytes = new Uint8Array(value);\n } else {\n throw new Error(`Blob value must be a Uint8Array, ArrayBuffer, string, or number[], got ${typeof value}`);\n }\n } else {\n this.bytes = undefined;\n }\n }\n\n /**\n * Create a new BLOB from raw bytes\n */\n static new(bytes: Uint8Array | number[]): BlobValue {\n return new BlobValue(bytes);\n }\n\n /**\n * Create an empty BLOB\n */\n static empty(): BlobValue {\n return new BlobValue(new Uint8Array(0));\n }\n\n /**\n * Create a BLOB from a byte array\n */\n static fromBytes(bytes: number[]): BlobValue {\n return new BlobValue(bytes);\n }\n\n /**\n * Create a BLOB from a hex string\n */\n static fromHex(hex: string): BlobValue {\n // Remove 0x prefix if present\n const cleanHex = hex.startsWith('0x') || hex.startsWith('0X')\n ? hex.substring(2)\n : hex;\n\n if (cleanHex.length % 2 !== 0) {\n throw new Error(`Invalid hex string: odd length`);\n }\n\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n const byte = parseInt(cleanHex.substring(i, i + 2), 16);\n if (isNaN(byte)) {\n throw new Error(`Invalid hex string: ${hex}`);\n }\n bytes[i / 2] = byte;\n }\n return new BlobValue(bytes);\n }\n\n /**\n * Create a BLOB from a base64 string\n */\n static fromBase64(base64: string): BlobValue {\n // Validate base64 format\n if (!/^[A-Za-z0-9+/]*={0,2}$/.test(base64)) {\n throw new Error(`Invalid base64 string: ${base64}`);\n }\n\n try {\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n const buffer = Buffer.from(base64, 'base64');\n return new BlobValue(new Uint8Array(buffer));\n } else {\n // Browser environment\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new BlobValue(bytes);\n }\n } catch (e) {\n throw new Error(`Invalid base64 string: ${base64}`);\n }\n }\n\n /**\n * Create a BLOB from a UTF-8 string\n */\n static fromUtf8(str: string): BlobValue {\n const encoder = new TextEncoder();\n return new BlobValue(encoder.encode(str));\n }\n\n /**\n * Parse a blob string (hex or undefined)\n */\n static parse(str: string): BlobValue {\n const trimmed = str.trim();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new BlobValue(undefined);\n }\n\n const parsed = BlobValue.parseString(trimmed);\n if (parsed === null) {\n throw new Error(`Cannot parse \"${str}\" as Blob`);\n }\n\n return new BlobValue(parsed);\n }\n\n /**\n * Get the raw bytes\n */\n asBytes(): Uint8Array | undefined {\n return this.bytes ? new Uint8Array(this.bytes) : undefined;\n }\n\n /**\n * Get the length in bytes\n */\n length(): number {\n return this.bytes?.length ?? 0;\n }\n\n /**\n * Check if the BLOB is empty\n */\n isEmpty(): boolean {\n return this.bytes?.length === 0;\n }\n\n /**\n * Convert to hex string with 0x prefix\n */\n toHex(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n const hex = Array.from(this.bytes)\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('');\n return '0x' + hex;\n }\n\n /**\n * Convert to base64 string\n */\n toBase64(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(this.bytes).toString('base64');\n } else {\n // Browser environment\n const binaryString = Array.from(this.bytes)\n .map(byte => String.fromCharCode(byte))\n .join('');\n return btoa(binaryString);\n }\n }\n\n /**\n * Convert to UTF-8 string\n */\n toUtf8(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n const decoder = new TextDecoder();\n return decoder.decode(this.bytes);\n }\n\n /**\n * Format as hex string with 0x prefix\n */\n toString(): string {\n if (this.bytes === undefined) {\n return 'undefined';\n }\n return this.toHex()!;\n }\n\n valueOf(): Uint8Array | undefined {\n return this.bytes ? new Uint8Array(this.bytes) : undefined;\n }\n\n /**\n * Get the internal representation\n */\n get value(): Uint8Array | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two blobs for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherBlob = other as BlobValue;\n if (this.bytes === undefined || otherBlob.bytes === undefined) {\n return this.bytes === otherBlob.bytes;\n }\n\n if (this.bytes.length !== otherBlob.bytes.length) {\n return false;\n }\n\n for (let i = 0; i < this.bytes.length; i++) {\n if (this.bytes[i] !== otherBlob.bytes[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Helper to parse a string as hex\n */\n private static parseString(str: string): Uint8Array | null {\n // Try hex first (with or without 0x prefix)\n if (str.startsWith('0x') || str.startsWith('0X')) {\n try {\n return BlobValue.fromHex(str).bytes!;\n } catch {\n return null;\n }\n }\n\n // Check if it looks like hex (all hex digits)\n if (/^[0-9a-fA-F]+$/.test(str) && str.length % 2 === 0) {\n try {\n return BlobValue.fromHex(str).bytes!;\n } catch {\n return null;\n }\n }\n\n return null;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class BoolValue implements Value {\n readonly type: Type = \"Bool\" as const;\n public readonly value?: boolean;\n\n constructor(value?: boolean) {\n if (value !== undefined) {\n if (typeof value !== 'boolean') {\n throw new Error(`Bool value must be a boolean, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): BoolValue {\n const trimmed = str.trim().toLowerCase();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new BoolValue(undefined);\n }\n\n if (trimmed === 'true') {\n return new BoolValue(true);\n }\n\n if (trimmed === 'false') {\n return new BoolValue(false);\n }\n\n throw new Error(`Cannot parse \"${str}\" as Bool`);\n }\n\n valueOf(): boolean | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two boolean values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherBool = other as BoolValue;\n return this.value === otherBool.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * A date value representing a calendar date (year, month, day) without time information.\n * Always interpreted in UTC.\n * Internally stored as months and days.\n */\nexport class DateValue implements Value {\n readonly type: Type = \"Date\" as const;\n private readonly months?: number; // years*12 + months\n private readonly days?: number; // day of month (1-31)\n\n constructor(value?: Date | string | number) {\n if (value !== undefined) {\n if (value instanceof Date) {\n // Remove time component - set to UTC midnight\n const year = value.getUTCFullYear();\n const month = value.getUTCMonth() + 1; // Convert to 1-based\n const day = value.getUTCDate();\n \n this.months = year * 12 + (month - 1);\n this.days = day;\n } else if (typeof value === 'string') {\n // Parse YYYY-MM-DD format\n const parsed = DateValue.parseDate(value);\n if (!parsed) {\n throw new Error(`Invalid date string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n } else if (typeof value === 'number') {\n // Interpret as days since epoch\n const date = DateValue.fromDaysSinceEpochToComponents(value);\n if (!date) {\n throw new Error(`Invalid days since epoch: ${value}`);\n }\n this.months = date.months;\n this.days = date.days;\n } else {\n throw new Error(`Date value must be a Date, string, or number, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n }\n }\n\n /**\n * Create a DateValue from year, month (1-12), and day (1-31)\n */\n static fromYMD(year: number, month: number, day: number): DateValue {\n // Validate the date is valid\n if (!DateValue.isValidDate(year, month, day)) {\n throw new Error(`Invalid date: ${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`);\n }\n \n const result = new DateValue(undefined);\n (result as any).months = year * 12 + (month - 1);\n (result as any).days = day;\n return result;\n }\n\n /**\n * Get today's date (in UTC)\n */\n static today(): DateValue {\n const now = new Date();\n return DateValue.fromYMD(\n now.getUTCFullYear(),\n now.getUTCMonth() + 1,\n now.getUTCDate()\n );\n }\n\n /**\n * Parse a date string in YYYY-MM-DD format\n */\n static parse(str: string): DateValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new DateValue(undefined);\n }\n\n const parsed = DateValue.parseDate(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as Date`);\n }\n\n const result = new DateValue(undefined);\n (result as any).months = parsed.months;\n (result as any).days = parsed.days;\n return result;\n }\n\n /**\n * Convert to days since Unix epoch (1970-01-01) for storage\n */\n toDaysSinceEpoch(): number | undefined {\n if (this.months === undefined || this.days === undefined) {\n return undefined;\n }\n \n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n \n // Create date with special handling for years < 100\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days));\n }\n \n const epoch = new Date(Date.UTC(1970, 0, 1));\n const diffMs = date.getTime() - epoch.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n\n /**\n * Create from days since Unix epoch\n */\n static fromDaysSinceEpochToComponents(days: number): { months: number; days: number } | null {\n const epoch = new Date(Date.UTC(1970, 0, 1));\n const ms = days * 24 * 60 * 60 * 1000;\n const date = new Date(epoch.getTime() + ms);\n \n // Check for valid date\n if (!isFinite(date.getTime())) {\n return null;\n }\n \n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n \n return {\n months: year * 12 + (month - 1),\n days: day\n };\n }\n\n /**\n * Get the year component\n */\n year(): number | undefined {\n if (this.months === undefined) return undefined;\n return Math.floor(this.months / 12);\n }\n\n /**\n * Get the month component (1-12)\n */\n month(): number | undefined {\n if (this.months === undefined) return undefined;\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n return m + 1;\n }\n\n /**\n * Get the day component (1-31)\n */\n day(): number | undefined {\n return this.days;\n }\n\n /**\n * Format as YYYY-MM-DD string\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined) {\n return 'undefined';\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = String(m + 1).padStart(2, '0');\n const day = String(this.days).padStart(2, '0');\n \n // Handle negative years (BC dates)\n if (year < 0) {\n const absYear = Math.abs(year);\n return `-${String(absYear).padStart(4, '0')}-${month}-${day}`;\n } else {\n return `${String(year).padStart(4, '0')}-${month}-${day}`;\n }\n }\n\n valueOf(): Date | undefined {\n if (this.months === undefined || this.days === undefined) {\n return undefined;\n }\n \n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n \n // Handle years < 100 specially\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days));\n }\n \n return date;\n }\n \n /**\n * Get the internal representation\n */\n get value(): Date | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse YYYY-MM-DD format\n */\n private static parseDate(str: string): { months: number; days: number } | null {\n // Match YYYY-MM-DD format, including negative years\n const match = str.match(/^(-?\\d{1,4})-(\\d{2})-(\\d{2})$/);\n if (!match) {\n return null;\n }\n\n const year = parseInt(match[1], 10);\n const month = parseInt(match[2], 10);\n const day = parseInt(match[3], 10);\n\n // Validate month and day ranges\n if (month < 1 || month > 12) {\n return null;\n }\n if (day < 1 || day > 31) {\n return null;\n }\n\n // Validate the date is valid (e.g., no Feb 30)\n if (!DateValue.isValidDate(year, month, day)) {\n return null;\n }\n\n return {\n months: year * 12 + (month - 1),\n days: day\n };\n }\n \n /**\n * Helper to validate a date\n */\n private static isValidDate(year: number, month: number, day: number): boolean {\n // Create a date and check if components match\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, day));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, day));\n }\n \n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day;\n }\n\n /**\n * Compare two dates for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherDate = other as DateValue;\n if (this.months === undefined || otherDate.months === undefined) {\n return this.months === otherDate.months && this.days === otherDate.days;\n }\n \n return this.months === otherDate.months && this.days === otherDate.days;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A time value representing time of day (hour, minute, second, nanosecond) without date information.\n * Internally stored as nanoseconds since midnight.\n */\nexport class TimeValue implements Value {\n readonly type: Type = \"Time\" as const;\n public readonly value?: bigint; // nanoseconds since midnight\n\n private static readonly NANOS_PER_SECOND = 1_000_000_000n;\n private static readonly NANOS_PER_MINUTE = 60_000_000_000n;\n private static readonly NANOS_PER_HOUR = 3_600_000_000_000n;\n private static readonly NANOS_PER_DAY = 86_400_000_000_000n;\n\n constructor(value?: bigint | string | number) {\n if (value !== undefined) {\n if (typeof value === 'bigint') {\n // Validate range (0 to 24 hours in nanoseconds)\n if (value < 0n || value >= TimeValue.NANOS_PER_DAY) {\n throw new Error(`Time value must be between 0 and ${TimeValue.NANOS_PER_DAY - 1n} nanoseconds`);\n }\n this.value = value;\n } else if (typeof value === 'string') {\n // Parse HH:MM:SS[.nnnnnnnnn] format\n const parsed = TimeValue.parseTime(value);\n if (parsed === null) {\n throw new Error(`Invalid time string: ${value}`);\n }\n this.value = parsed;\n } else if (typeof value === 'number') {\n // Accept number as nanoseconds since midnight\n const bigintValue = BigInt(Math.floor(value));\n if (bigintValue < 0n || bigintValue >= TimeValue.NANOS_PER_DAY) {\n throw new Error(`Time value must be between 0 and ${TimeValue.NANOS_PER_DAY - 1n} nanoseconds`);\n }\n this.value = bigintValue;\n } else {\n throw new Error(`Time value must be a bigint, string, or number, got ${typeof value}`);\n }\n } else {\n this.value = undefined;\n }\n }\n\n /**\n * Create a TimeValue from hour, minute, second, and nanosecond\n */\n static fromHMSN(hour: number, minute: number, second: number, nano: number = 0): TimeValue {\n // Validate inputs\n if (hour < 0 || hour > 23) {\n throw new Error(`Invalid hour: ${hour}`);\n }\n if (minute < 0 || minute > 59) {\n throw new Error(`Invalid minute: ${minute}`);\n }\n if (second < 0 || second > 59) {\n throw new Error(`Invalid second: ${second}`);\n }\n if (nano < 0 || nano > 999_999_999) {\n throw new Error(`Invalid nanosecond: ${nano}`);\n }\n\n const nanos = BigInt(hour) * TimeValue.NANOS_PER_HOUR +\n BigInt(minute) * TimeValue.NANOS_PER_MINUTE +\n BigInt(second) * TimeValue.NANOS_PER_SECOND +\n BigInt(nano);\n\n return new TimeValue(nanos);\n }\n\n /**\n * Create a TimeValue from hour, minute, and second (no fractional seconds)\n */\n static fromHMS(hour: number, minute: number, second: number): TimeValue {\n return TimeValue.fromHMSN(hour, minute, second, 0);\n }\n\n /**\n * Create midnight (00:00:00.000000000)\n */\n static midnight(): TimeValue {\n return new TimeValue(0n);\n }\n\n /**\n * Create noon (12:00:00.000000000)\n */\n static noon(): TimeValue {\n return new TimeValue(12n * TimeValue.NANOS_PER_HOUR);\n }\n\n /**\n * Parse a time string in HH:MM:SS[.nnnnnnnnn] format\n */\n static parse(str: string): TimeValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new TimeValue(undefined);\n }\n\n const parsed = TimeValue.parseTime(trimmed);\n if (parsed === null) {\n throw new Error(`Cannot parse \"${str}\" as Time`);\n }\n\n return new TimeValue(parsed);\n }\n\n /**\n * Get the hour component (0-23)\n */\n hour(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value / TimeValue.NANOS_PER_HOUR);\n }\n\n /**\n * Get the minute component (0-59)\n */\n minute(): number | undefined {\n if (this.value === undefined) return undefined;\n const remainingAfterHours = this.value % TimeValue.NANOS_PER_HOUR;\n return Number(remainingAfterHours / TimeValue.NANOS_PER_MINUTE);\n }\n\n /**\n * Get the second component (0-59)\n */\n second(): number | undefined {\n if (this.value === undefined) return undefined;\n const remainingAfterHours = this.value % TimeValue.NANOS_PER_HOUR;\n const remainingAfterMinutes = remainingAfterHours % TimeValue.NANOS_PER_MINUTE;\n return Number(remainingAfterMinutes / TimeValue.NANOS_PER_SECOND);\n }\n\n /**\n * Get the nanosecond component (0-999999999)\n */\n nanosecond(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value % TimeValue.NANOS_PER_SECOND);\n }\n\n /**\n * Convert to nanoseconds since midnight for storage\n */\n toNanosSinceMidnight(): bigint | undefined {\n return this.value;\n }\n\n /**\n * Create from nanoseconds since midnight\n */\n static fromNanosSinceMidnight(nanos: bigint | number): TimeValue {\n return new TimeValue(typeof nanos === 'number' ? BigInt(nanos) : nanos);\n }\n\n /**\n * Format as HH:MM:SS.nnnnnnnnn string\n */\n toString(): string {\n if (this.value === undefined) {\n return 'undefined';\n }\n\n const hour = this.hour()!;\n const minute = this.minute()!;\n const second = this.second()!;\n const nano = this.nanosecond()!;\n\n const hourStr = String(hour).padStart(2, '0');\n const minuteStr = String(minute).padStart(2, '0');\n const secondStr = String(second).padStart(2, '0');\n const nanoStr = String(nano).padStart(9, '0');\n\n return `${hourStr}:${minuteStr}:${secondStr}.${nanoStr}`;\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n /**\n * Helper to parse HH:MM:SS[.nnnnnnnnn] format\n */\n private static parseTime(str: string): bigint | null {\n // Match HH:MM:SS or HH:MM:SS.fractional\n const match = str.match(/^(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,9}))?$/);\n if (!match) {\n return null;\n }\n\n const hour = parseInt(match[1], 10);\n const minute = parseInt(match[2], 10);\n const second = parseInt(match[3], 10);\n \n // Parse fractional seconds if present\n let nano = 0;\n if (match[4]) {\n // Pad or truncate to 9 digits\n const fracStr = match[4].padEnd(9, '0').substring(0, 9);\n nano = parseInt(fracStr, 10);\n }\n\n // Validate ranges\n if (hour < 0 || hour > 23) {\n return null;\n }\n if (minute < 0 || minute > 59) {\n return null;\n }\n if (second < 0 || second > 59) {\n return null;\n }\n\n const nanos = BigInt(hour) * TimeValue.NANOS_PER_HOUR +\n BigInt(minute) * TimeValue.NANOS_PER_MINUTE +\n BigInt(second) * TimeValue.NANOS_PER_SECOND +\n BigInt(nano);\n\n return nanos;\n }\n\n /**\n * Compare two Time values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherTime = other as TimeValue;\n return this.value === otherTime.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\nimport {DateValue} from \"./date\";\nimport {TimeValue} from \"./time\";\n\n/**\n * A date and time value with nanosecond precision.\n * Always in UTC timezone.\n * Internally stored as months, days, and nanoseconds.\n */\nexport class DateTimeValue implements Value {\n readonly type: Type = \"DateTime\" as const;\n private readonly months?: number; // years*12 + months \n private readonly days?: number; // day of month (1-31)\n private readonly nanos?: bigint; // nanoseconds since midnight\n\n constructor(value?: Date | string | number | bigint) {\n if (value !== undefined) {\n if (value instanceof Date) {\n // Store as UTC with millisecond precision from Date\n const year = value.getUTCFullYear();\n const month = value.getUTCMonth() + 1;\n const day = value.getUTCDate();\n const hour = value.getUTCHours();\n const minute = value.getUTCMinutes();\n const second = value.getUTCSeconds();\n const millis = value.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(millis) * 1_000_000n;\n } else if (typeof value === 'string') {\n // Parse ISO 8601 format\n const parsed = DateTimeValue.parseDateTime(value);\n if (!parsed) {\n throw new Error(`Invalid datetime string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n this.nanos = parsed.nanos;\n } else if (typeof value === 'number') {\n // Interpret as milliseconds since epoch\n const date = new Date(value);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n const hour = date.getUTCHours();\n const minute = date.getUTCMinutes();\n const second = date.getUTCSeconds();\n const millis = date.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(millis) * 1_000_000n;\n } else if (typeof value === 'bigint') {\n // Interpret as nanoseconds since epoch\n const millis = Number(value / 1_000_000n);\n const extraNanos = value % 1_000_000n;\n const date = new Date(millis);\n\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n const hour = date.getUTCHours();\n const minute = date.getUTCMinutes();\n const second = date.getUTCSeconds();\n const dateMillis = date.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(dateMillis) * 1_000_000n +\n extraNanos;\n } else {\n throw new Error(`DateTime value must be a Date, string, number, or bigint, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n this.nanos = undefined;\n }\n }\n\n /**\n * Create a DateTimeValue from year, month, day, hour, minute, second, nanosecond\n */\n static fromYMDHMSN(\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number,\n nano: number = 0\n ): DateTimeValue {\n // Validate inputs\n if (hour < 0 || hour > 23) {\n throw new Error(`Invalid hour: ${hour}`);\n }\n if (minute < 0 || minute > 59) {\n throw new Error(`Invalid minute: ${minute}`);\n }\n if (second < 0 || second > 59) {\n throw new Error(`Invalid second: ${second}`);\n }\n if (nano < 0 || nano > 999_999_999) {\n throw new Error(`Invalid nanosecond: ${nano}`);\n }\n\n // Validate the date\n if (!DateTimeValue.isValidDate(year, month, day)) {\n throw new Error(`Invalid datetime: ${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}:${String(second).padStart(2, '0')}`);\n }\n\n const result = new DateTimeValue(undefined);\n (result as any).months = year * 12 + (month - 1);\n (result as any).days = day;\n (result as any).nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(nano);\n return result;\n }\n\n /**\n * Create a DateTimeValue from year, month, day, hour, minute, second (no fractional)\n */\n static fromYMDHMS(\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number\n ): DateTimeValue {\n return DateTimeValue.fromYMDHMSN(year, month, day, hour, minute, second, 0);\n }\n\n /**\n * Create from Unix timestamp in seconds\n */\n static fromTimestamp(seconds: number): DateTimeValue {\n return new DateTimeValue(seconds * 1000);\n }\n\n /**\n * Create from Unix timestamp in milliseconds\n */\n static fromTimestampMillis(millis: number): DateTimeValue {\n return new DateTimeValue(millis);\n }\n\n /**\n * Create from nanoseconds since Unix epoch\n */\n static fromNanosSinceEpoch(nanos: bigint): DateTimeValue {\n return new DateTimeValue(nanos);\n }\n\n /**\n * Create from separate seconds and nanoseconds\n */\n static fromParts(seconds: number, nanos: number): DateTimeValue {\n if (nanos < 0 || nanos > 999_999_999) {\n throw new Error(`Invalid nanoseconds: ${nanos}`);\n }\n const millis = seconds * 1000 + Math.floor(nanos / 1_000_000);\n const extraNanos = nanos % 1_000_000;\n const result = new DateTimeValue(millis);\n\n // Add the extra nanoseconds\n if (result.nanos !== undefined) {\n (result as any).nanos = result.nanos + BigInt(extraNanos);\n }\n return result;\n }\n\n /**\n * Get current datetime\n */\n static now(): DateTimeValue {\n return new DateTimeValue(new Date());\n }\n\n /**\n * Get default datetime (Unix epoch)\n */\n static default(): DateTimeValue {\n return DateTimeValue.fromYMDHMS(1970, 1, 1, 0, 0, 0);\n }\n\n /**\n * Parse a datetime string in ISO 8601 format\n */\n static parse(str: string): DateTimeValue {\n const trimmed = str.trim();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new DateTimeValue(undefined);\n }\n\n const parsed = DateTimeValue.parseDateTime(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as DateTime`);\n }\n\n const result = new DateTimeValue(undefined);\n (result as any).months = parsed.months;\n (result as any).days = parsed.days;\n (result as any).nanos = parsed.nanos;\n return result;\n }\n\n /**\n * Get Unix timestamp in seconds\n */\n timestamp(): number | undefined {\n const date = this.valueOf();\n if (date === undefined) return undefined;\n return Math.floor(date.getTime() / 1000);\n }\n\n /**\n * Get Unix timestamp in nanoseconds\n */\n timestampNanos(): bigint | undefined {\n const date = this.valueOf();\n if (date === undefined || this.nanos === undefined) return undefined;\n\n // Convert date to epoch nanoseconds\n const epochNanos = BigInt(date.getTime()) * 1_000_000n;\n\n // The nanos field stores time-of-day, but we already included millis in epochNanos\n // So we need to add only the sub-millisecond portion\n const subMillisNanos = this.nanos % 1_000_000n;\n\n return epochNanos + subMillisNanos;\n }\n\n /**\n * Convert to nanoseconds since Unix epoch for storage\n */\n toNanosSinceEpoch(): bigint | undefined {\n return this.timestampNanos();\n }\n\n /**\n * Get separate seconds and nanoseconds for storage\n */\n toParts(): [number, number] | undefined {\n const date = this.valueOf();\n if (date === undefined || this.nanos === undefined) return undefined;\n\n const seconds = Math.floor(date.getTime() / 1000);\n const millis = date.getTime() % 1000;\n const subMillisNanos = Number(this.nanos % 1_000_000n);\n const nanos = millis * 1_000_000 + subMillisNanos;\n return [seconds, nanos];\n }\n\n /**\n * Get the date component\n */\n date(): DateValue | undefined {\n if (this.months === undefined || this.days === undefined) return undefined;\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n return DateValue.fromYMD(year, month, this.days);\n }\n\n /**\n * Get the time component\n */\n time(): TimeValue | undefined {\n if (this.nanos === undefined) return undefined;\n return new TimeValue(this.nanos);\n }\n\n /**\n * Format as ISO 8601 string with nanosecond precision and Z suffix\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return 'undefined';\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = String(m + 1).padStart(2, '0');\n const day = String(this.days).padStart(2, '0');\n\n // Extract time components from nanos\n const totalNanos = this.nanos;\n const hours = totalNanos / 3_600_000_000_000n;\n const remainingAfterHours = totalNanos % 3_600_000_000_000n;\n const minutes = remainingAfterHours / 60_000_000_000n;\n const remainingAfterMinutes = remainingAfterHours % 60_000_000_000n;\n const seconds = remainingAfterMinutes / 1_000_000_000n;\n const nanosFraction = remainingAfterMinutes % 1_000_000_000n;\n\n const hour = String(Number(hours)).padStart(2, '0');\n const minute = String(Number(minutes)).padStart(2, '0');\n const second = String(Number(seconds)).padStart(2, '0');\n const nanoStr = String(Number(nanosFraction)).padStart(9, '0');\n\n // Handle negative years (BC dates)\n let yearStr: string;\n if (year < 0) {\n const absYear = Math.abs(year);\n yearStr = `-${String(absYear).padStart(4, '0')}`;\n } else {\n yearStr = String(year).padStart(4, '0');\n }\n\n return `${yearStr}-${month}-${day}T${hour}:${minute}:${second}.${nanoStr}Z`;\n }\n\n valueOf(): Date | undefined {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return undefined;\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n\n // Extract time components\n const totalNanos = this.nanos;\n const hours = Number(totalNanos / 3_600_000_000_000n);\n const remainingAfterHours = totalNanos % 3_600_000_000_000n;\n const minutes = Number(remainingAfterHours / 60_000_000_000n);\n const remainingAfterMinutes = remainingAfterHours % 60_000_000_000n;\n const seconds = Number(remainingAfterMinutes / 1_000_000_000n);\n const nanosFraction = remainingAfterMinutes % 1_000_000_000n;\n const millis = Number(nanosFraction / 1_000_000n);\n\n // Handle years < 100 specially\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days, hours, minutes, seconds, millis));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days, hours, minutes, seconds, millis));\n }\n\n return date;\n }\n\n /**\n * Get the internal representation as a Date\n */\n get value(): Date | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse ISO 8601 datetime format\n */\n private static parseDateTime(str: string): { months: number; days: number; nanos: bigint } | null {\n // Match ISO 8601 format: YYYY-MM-DDTHH:MM:SS[.nnnnnnnnn]Z\n const match = str.match(/^(-?\\d{1,4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,9}))?Z$/);\n if (!match) {\n return null;\n }\n\n const year = parseInt(match[1], 10);\n const month = parseInt(match[2], 10);\n const day = parseInt(match[3], 10);\n const hour = parseInt(match[4], 10);\n const minute = parseInt(match[5], 10);\n const second = parseInt(match[6], 10);\n\n // Parse fractional seconds if present\n let nanosFraction = 0n;\n if (match[7]) {\n // Pad or truncate to 9 digits\n const fracStr = match[7].padEnd(9, '0').substring(0, 9);\n nanosFraction = BigInt(fracStr);\n }\n\n // Validate ranges\n if (month < 1 || month > 12) {\n return null;\n }\n if (day < 1 || day > 31) {\n return null;\n }\n if (hour < 0 || hour > 23) {\n return null;\n }\n if (minute < 0 || minute > 59) {\n return null;\n }\n if (second < 0 || second > 59) {\n return null;\n }\n\n // Validate the date is valid\n if (!DateTimeValue.isValidDate(year, month, day)) {\n return null;\n }\n\n const months = year * 12 + (month - 1);\n const nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n nanosFraction;\n\n return {months, days: day, nanos};\n }\n\n /**\n * Helper to validate a date\n */\n private static isValidDate(year: number, month: number, day: number): boolean {\n // Create a date and check if components match\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, day));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, day));\n }\n\n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day;\n }\n\n /**\n * Compare two datetimes for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherDateTime = other as DateTimeValue;\n if (this.months === undefined || otherDateTime.months === undefined) {\n return this.months === otherDateTime.months && \n this.days === otherDateTime.days && \n this.nanos === otherDateTime.nanos;\n }\n \n return this.months === otherDateTime.months && \n this.days === otherDateTime.days && \n this.nanos === otherDateTime.nanos;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Float4Value implements Value {\n\n private static readonly MAX_VALUE = 3.4028235e+38;\n private static readonly MIN_VALUE = -3.4028235e+38;\n private static readonly MIN_POSITIVE = 1.175494e-38;\n\n readonly type: Type = \"Float4\" as const;\n public readonly value?: number;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (typeof value !== 'number') {\n throw new Error(`Float4 value must be a number, got ${typeof value}`);\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n this.value = undefined;\n } else {\n // Clamp to Float32 range\n if (value !== 0 && Math.abs(value) < Float4Value.MIN_POSITIVE) {\n // Underflow to zero\n this.value = 0;\n } else if (value > Float4Value.MAX_VALUE) {\n throw new Error(`Float4 overflow: value ${value} exceeds maximum ${Float4Value.MAX_VALUE}`);\n } else if (value < Float4Value.MIN_VALUE) {\n throw new Error(`Float4 underflow: value ${value} exceeds minimum ${Float4Value.MIN_VALUE}`);\n } else {\n // Convert to Float32 precision\n const float32Array = new Float32Array(1);\n float32Array[0] = value;\n this.value = float32Array[0];\n }\n }\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Float4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Float4Value(undefined);\n }\n\n const num = Number(trimmed);\n\n if (Number.isNaN(num) && trimmed.toLowerCase() !== 'nan') {\n throw new Error(`Cannot parse \"${str}\" as Float4`);\n }\n\n return new Float4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Float4 values for equality with limited precision\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherFloat = other as Float4Value;\n if (this.value === undefined || otherFloat.value === undefined) {\n return this.value === otherFloat.value;\n }\n \n // For Float4, use approximate comparison due to limited precision\n const epsilon = 1e-6; // Float32 has about 7 decimal digits of precision\n return Math.abs(this.value - otherFloat.value) <= epsilon;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Float8Value implements Value {\n readonly type: Type = \"Float8\" as const;\n public readonly value?: number;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (typeof value !== 'number') {\n throw new Error(`Float8 value must be a number, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Float8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Float8Value(undefined);\n }\n\n const num = Number(trimmed);\n\n if (Number.isNaN(num) && trimmed.toLowerCase() !== 'nan') {\n throw new Error(`Cannot parse \"${str}\" as Float8`);\n }\n\n return new Float8Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Float8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherFloat = other as Float8Value;\n return this.value === otherFloat.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}\n","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int1Value implements Value {\n readonly type: Type = \"Int1\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -128;\n private static readonly MAX_VALUE = 127;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int1 value must be an integer, got ${value}`);\n }\n if (value < Int1Value.MIN_VALUE || value > Int1Value.MAX_VALUE) {\n throw new Error(`Int1 value must be between ${Int1Value.MIN_VALUE} and ${Int1Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int1Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int1Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int1`);\n }\n \n return new Int1Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int1 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int1Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int2Value implements Value {\n readonly type: Type = \"Int2\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -32768;\n private static readonly MAX_VALUE = 32767;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int2 value must be an integer, got ${value}`);\n }\n if (value < Int2Value.MIN_VALUE || value > Int2Value.MAX_VALUE) {\n throw new Error(`Int2 value must be between ${Int2Value.MIN_VALUE} and ${Int2Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int2Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int2Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int2`);\n }\n \n return new Int2Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int2 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int2Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int4Value implements Value {\n readonly type: Type = \"Int4\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -2147483648;\n private static readonly MAX_VALUE = 2147483647;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int4 value must be an integer, got ${value}`);\n }\n if (value < Int4Value.MIN_VALUE || value > Int4Value.MAX_VALUE) {\n throw new Error(`Int4 value must be between ${Int4Value.MIN_VALUE} and ${Int4Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int4Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int4`);\n }\n \n return new Int4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int4Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int8Value implements Value {\n readonly type: Type = \"Int8\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(\"-9223372036854775808\");\n private static readonly MAX_VALUE = BigInt(\"9223372036854775807\");\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n \n if (bigintValue < Int8Value.MIN_VALUE || bigintValue > Int8Value.MAX_VALUE) {\n throw new Error(`Int8 value must be between ${Int8Value.MIN_VALUE} and ${Int8Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Int8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int8Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Int8`);\n }\n \n if (value < Int8Value.MIN_VALUE || value > Int8Value.MAX_VALUE) {\n throw new Error(`Int8 value must be between ${Int8Value.MIN_VALUE} and ${Int8Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Int8Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int8Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int16Value implements Value {\n readonly type: Type = \"Int16\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(\"-170141183460469231731687303715884105728\");\n private static readonly MAX_VALUE = BigInt(\"170141183460469231731687303715884105727\");\n\n constructor(value?: bigint | number | string) {\n if (value !== undefined) {\n let bigintValue: bigint;\n \n if (typeof value === 'string') {\n try {\n bigintValue = BigInt(value);\n } catch (e) {\n throw new Error(`Int16 value must be a valid integer, got ${value}`);\n }\n } else if (typeof value === 'number') {\n bigintValue = BigInt(Math.trunc(value));\n } else {\n bigintValue = value;\n }\n \n if (bigintValue < Int16Value.MIN_VALUE || bigintValue > Int16Value.MAX_VALUE) {\n throw new Error(`Int16 value must be between ${Int16Value.MIN_VALUE} and ${Int16Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Int16Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int16Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Int16`);\n }\n \n if (value < Int16Value.MIN_VALUE || value > Int16Value.MAX_VALUE) {\n throw new Error(`Int16 value must be between ${Int16Value.MIN_VALUE} and ${Int16Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Int16Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int16 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int16Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * An interval value representing a duration between two points in time.\n * Internally stored as months, days, and nanoseconds.\n */\nexport class IntervalValue implements Value {\n readonly type: Type = \"Interval\" as const;\n private readonly months?: number; // years*12 + months\n private readonly days?: number; // separate days (don't normalize due to variable month length)\n private readonly nanos?: bigint; // all time components as nanoseconds\n\n constructor(value?: { months: number; days: number; nanos: bigint } | string) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n // Parse ISO 8601 duration format\n const parsed = IntervalValue.parseDuration(value);\n if (!parsed) {\n throw new Error(`Invalid interval string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n this.nanos = parsed.nanos;\n } else if (typeof value === 'object' && value !== null) {\n this.months = value.months;\n this.days = value.days;\n this.nanos = value.nanos;\n } else {\n throw new Error(`Interval value must be an object or string, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n this.nanos = undefined;\n }\n }\n\n /**\n * Create a new interval from months, days, and nanoseconds\n */\n static new(months: number, days: number, nanos: bigint): IntervalValue {\n return new IntervalValue({ months, days, nanos });\n }\n\n /**\n * Create an interval from seconds\n */\n static fromSeconds(seconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(seconds) * 1_000_000_000n });\n }\n\n /**\n * Create an interval from milliseconds\n */\n static fromMilliseconds(milliseconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(milliseconds) * 1_000_000n });\n }\n\n /**\n * Create an interval from microseconds\n */\n static fromMicroseconds(microseconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(microseconds) * 1_000n });\n }\n\n /**\n * Create an interval from nanoseconds\n */\n static fromNanoseconds(nanoseconds: bigint): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: nanoseconds });\n }\n\n /**\n * Create an interval from minutes\n */\n static fromMinutes(minutes: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(minutes) * 60n * 1_000_000_000n });\n }\n\n /**\n * Create an interval from hours\n */\n static fromHours(hours: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(hours) * 60n * 60n * 1_000_000_000n });\n }\n\n /**\n * Create an interval from days\n */\n static fromDays(days: number): IntervalValue {\n return new IntervalValue({ months: 0, days, nanos: 0n });\n }\n\n /**\n * Create an interval from weeks\n */\n static fromWeeks(weeks: number): IntervalValue {\n return new IntervalValue({ months: 0, days: weeks * 7, nanos: 0n });\n }\n\n /**\n * Create an interval from months\n */\n static fromMonths(months: number): IntervalValue {\n return new IntervalValue({ months, days: 0, nanos: 0n });\n }\n\n /**\n * Create an interval from years\n */\n static fromYears(years: number): IntervalValue {\n return new IntervalValue({ months: years * 12, days: 0, nanos: 0n });\n }\n\n /**\n * Create a zero interval\n */\n static zero(): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: 0n });\n }\n\n /**\n * Get default interval (zero)\n */\n static default(): IntervalValue {\n return IntervalValue.zero();\n }\n\n /**\n * Parse an interval string in ISO 8601 duration format\n */\n static parse(str: string): IntervalValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new IntervalValue(undefined);\n }\n\n const parsed = IntervalValue.parseDuration(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as Interval`);\n }\n\n return new IntervalValue({ months: parsed.months, days: parsed.days, nanos: parsed.nanos });\n }\n\n /**\n * Get total seconds (truncated)\n */\n seconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000_000_000n;\n }\n\n /**\n * Get total milliseconds (truncated)\n */\n milliseconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000_000n;\n }\n\n /**\n * Get total microseconds (truncated)\n */\n microseconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000n;\n }\n\n /**\n * Get total nanoseconds\n */\n nanoseconds(): bigint | undefined {\n return this.nanos;\n }\n\n /**\n * Get months component\n */\n getMonths(): number | undefined {\n return this.months;\n }\n\n /**\n * Get days component\n */\n getDays(): number | undefined {\n return this.days;\n }\n\n /**\n * Get nanoseconds component\n */\n getNanos(): bigint | undefined {\n return this.nanos;\n }\n\n /**\n * Check if interval is positive (any component > 0)\n */\n isPositive(): boolean {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return false;\n }\n return this.months > 0 || this.days > 0 || this.nanos > 0n;\n }\n\n /**\n * Check if interval is negative (any component < 0)\n */\n isNegative(): boolean {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return false;\n }\n return this.months < 0 || this.days < 0 || this.nanos < 0n;\n }\n\n /**\n * Get absolute value of interval\n */\n abs(): IntervalValue {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return new IntervalValue(undefined);\n }\n return new IntervalValue({\n months: Math.abs(this.months),\n days: Math.abs(this.days),\n nanos: this.nanos < 0n ? -this.nanos : this.nanos\n });\n }\n\n /**\n * Negate the interval\n */\n negate(): IntervalValue {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return new IntervalValue(undefined);\n }\n return new IntervalValue({\n months: -this.months,\n days: -this.days,\n nanos: -this.nanos\n });\n }\n\n /**\n * Format as ISO 8601 duration string\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return 'undefined';\n }\n\n // Handle zero interval\n if (this.months === 0 && this.days === 0 && this.nanos === 0n) {\n return 'PT0S';\n }\n\n let result = 'P';\n\n // Extract years and months\n const years = Math.floor(this.months / 12);\n const months = this.months % 12;\n\n if (years !== 0) {\n result += `${years}Y`;\n }\n\n if (months !== 0) {\n result += `${months}M`;\n }\n\n // Time components from nanos with normalization\n const totalSeconds = this.nanos / 1_000_000_000n;\n const remainingNanos = this.nanos % 1_000_000_000n;\n\n // Normalize to days if hours >= 24\n const extraDays = totalSeconds / 86400n; // 24 * 60 * 60\n const remainingSeconds = totalSeconds % 86400n;\n\n const displayDays = this.days + Number(extraDays);\n const hours = remainingSeconds / 3600n;\n const minutes = (remainingSeconds % 3600n) / 60n;\n const seconds = remainingSeconds % 60n;\n\n if (displayDays !== 0) {\n result += `${displayDays}D`;\n }\n\n // Add time components if any\n if (hours !== 0n || minutes !== 0n || seconds !== 0n || remainingNanos !== 0n) {\n result += 'T';\n\n if (hours !== 0n) {\n result += `${hours}H`;\n }\n\n if (minutes !== 0n) {\n result += `${minutes}M`;\n }\n\n if (seconds !== 0n || remainingNanos !== 0n) {\n if (remainingNanos !== 0n) {\n // Format fractional seconds with trailing zeros removed\n const fractional = Number(remainingNanos) / 1_000_000_000;\n const totalSecondsFloat = Number(seconds) + fractional;\n // Format with 9 decimal places then remove trailing zeros\n const formatted = totalSecondsFloat.toFixed(9).replace(/0+$/, '').replace(/\\.$/, '');\n result += `${formatted}S`;\n } else {\n result += `${seconds}S`;\n }\n }\n }\n\n return result;\n }\n\n valueOf(): { months: number; days: number; nanos: bigint } | undefined {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return undefined;\n }\n return { months: this.months, days: this.days, nanos: this.nanos };\n }\n\n /**\n * Get the internal representation\n */\n get value(): { months: number; days: number; nanos: bigint } | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse ISO 8601 duration format\n */\n private static parseDuration(str: string): { months: number; days: number; nanos: bigint } | null {\n // Match ISO 8601 duration format: P[n]Y[n]M[n]DT[n]H[n]M[n.n]S\n // Also handle negative durations\n const negative = str.startsWith('-');\n const cleanStr = negative ? str.substring(1) : str;\n \n if (!cleanStr.startsWith('P')) {\n return null;\n }\n\n const match = cleanStr.match(/^P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$/);\n if (!match) {\n return null;\n }\n \n // Check if the match has at least one value\n if (!match[1] && !match[2] && !match[3] && !match[4] && !match[5] && !match[6]) {\n return null; // Invalid: P without any values\n }\n\n const years = parseInt(match[1] || '0', 10);\n const months = parseInt(match[2] || '0', 10);\n const days = parseInt(match[3] || '0', 10);\n const hours = parseInt(match[4] || '0', 10);\n const minutes = parseInt(match[5] || '0', 10);\n const secondsStr = match[6] || '0';\n\n // Parse seconds and fractional seconds\n const secondsParts = secondsStr.split('.');\n const wholeSeconds = parseInt(secondsParts[0] || '0', 10);\n let fracNanos = 0n;\n if (secondsParts.length > 1) {\n // Pad fractional part to 9 digits\n const fracStr = secondsParts[1].padEnd(9, '0').substring(0, 9);\n fracNanos = BigInt(fracStr);\n }\n\n // Calculate total nanoseconds\n const totalNanos = BigInt(hours) * 3600n * 1_000_000_000n +\n BigInt(minutes) * 60n * 1_000_000_000n +\n BigInt(wholeSeconds) * 1_000_000_000n +\n fracNanos;\n\n const totalMonths = years * 12 + months;\n\n if (negative) {\n return {\n months: -totalMonths,\n days: -days,\n nanos: -totalNanos\n };\n } else {\n return {\n months: totalMonths,\n days: days,\n nanos: totalNanos\n };\n }\n }\n\n /**\n * Compare two intervals for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInterval = other as IntervalValue;\n if (this.months === undefined || otherInterval.months === undefined) {\n return this.months === otherInterval.months && \n this.days === otherInterval.days && \n this.nanos === otherInterval.nanos;\n }\n \n return this.months === otherInterval.months && \n this.days === otherInterval.days && \n this.nanos === otherInterval.nanos;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint1Value implements Value {\n readonly type: Type = \"Uint1\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 255;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint1 value must be an integer, got ${value}`);\n }\n if (value < Uint1Value.MIN_VALUE || value > Uint1Value.MAX_VALUE) {\n throw new Error(`Uint1 value must be between ${Uint1Value.MIN_VALUE} and ${Uint1Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint1Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint1Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint1`);\n }\n \n return new Uint1Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint1 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint1Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint2Value implements Value {\n readonly type: Type = \"Uint2\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 65535;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint2 value must be an integer, got ${value}`);\n }\n if (value < Uint2Value.MIN_VALUE || value > Uint2Value.MAX_VALUE) {\n throw new Error(`Uint2 value must be between ${Uint2Value.MIN_VALUE} and ${Uint2Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint2Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint2Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint2`);\n }\n \n return new Uint2Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint2 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint2Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint4Value implements Value {\n readonly type: Type = \"Uint4\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 4294967295;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint4 value must be an integer, got ${value}`);\n }\n if (value < Uint4Value.MIN_VALUE || value > Uint4Value.MAX_VALUE) {\n throw new Error(`Uint4 value must be between ${Uint4Value.MIN_VALUE} and ${Uint4Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint4Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint4`);\n }\n \n return new Uint4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint4Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint8Value implements Value {\n readonly type: Type = \"Uint8\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"18446744073709551615\");\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n \n if (bigintValue < Uint8Value.MIN_VALUE || bigintValue > Uint8Value.MAX_VALUE) {\n throw new Error(`Uint8 value must be between ${Uint8Value.MIN_VALUE} and ${Uint8Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Uint8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint8Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Uint8`);\n }\n \n if (value < Uint8Value.MIN_VALUE || value > Uint8Value.MAX_VALUE) {\n throw new Error(`Uint8 value must be between ${Uint8Value.MIN_VALUE} and ${Uint8Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Uint8Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toNumber(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value);\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint8Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint16Value implements Value {\n readonly type: Type = \"Uint16\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"340282366920938463463374607431768211455\");\n\n constructor(value?: bigint | number | string) {\n if (value !== undefined) {\n let bigintValue: bigint;\n \n if (typeof value === 'string') {\n try {\n bigintValue = BigInt(value);\n } catch (e) {\n throw new Error(`Uint16 value must be a valid integer, got ${value}`);\n }\n } else if (typeof value === 'number') {\n bigintValue = BigInt(Math.trunc(value));\n } else {\n bigintValue = value;\n }\n \n if (bigintValue < Uint16Value.MIN_VALUE || bigintValue > Uint16Value.MAX_VALUE) {\n throw new Error(`Uint16 value must be between ${Uint16Value.MIN_VALUE} and ${Uint16Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Uint16Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint16Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Uint16`);\n }\n \n if (value < Uint16Value.MIN_VALUE || value > Uint16Value.MAX_VALUE) {\n throw new Error(`Uint16 value must be between ${Uint16Value.MIN_VALUE} and ${Uint16Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Uint16Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint16 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint16Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class RowNumberValue implements Value {\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"18446744073709551615\");\n readonly type: Type = \"RowNumber\" as const;\n public readonly value?: bigint;\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n\n if (bigintValue < RowNumberValue.MIN_VALUE || bigintValue > RowNumberValue.MAX_VALUE) {\n throw new Error(`RowNumber value must be between ${RowNumberValue.MIN_VALUE} and ${RowNumberValue.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): RowNumberValue {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new RowNumberValue(undefined);\n }\n\n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as RowNumber`);\n }\n\n if (value < RowNumberValue.MIN_VALUE || value > RowNumberValue.MAX_VALUE) {\n throw new Error(`RowNumber value must be between ${RowNumberValue.MIN_VALUE} and ${RowNumberValue.MAX_VALUE}, got ${value}`);\n }\n\n return new RowNumberValue(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two RowNumber values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherRowNumber = other as RowNumberValue;\n return this.value === otherRowNumber.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * An undefined value wrapper type\n */\nexport class UndefinedValue implements Value {\n readonly type: Type = \"Undefined\" as const;\n\n constructor() {\n // Always undefined, no parameters needed\n }\n\n /**\n * Create a new UndefinedValue\n */\n static new(): UndefinedValue {\n return new UndefinedValue();\n }\n\n /**\n * Get default UndefinedValue\n */\n static default(): UndefinedValue {\n return new UndefinedValue();\n }\n\n /**\n * Parse a string as undefined\n */\n static parse(str: string): UndefinedValue {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE || trimmed === 'undefined') {\n return new UndefinedValue();\n }\n throw new Error(`Cannot parse \"${str}\" as Undefined`);\n }\n\n /**\n * Check if this value is undefined (always true)\n */\n isUndefined(): boolean {\n return true;\n }\n\n /**\n * Format as string\n */\n toString(): string {\n return 'undefined';\n }\n\n valueOf(): undefined {\n return undefined;\n }\n\n /**\n * Get the internal representation (always undefined)\n */\n get value(): undefined {\n return undefined;\n }\n\n /**\n * Compare two undefined values (always equal)\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n return true;\n }\n\n /**\n * Compare two undefined values for ordering (always equal)\n */\n compare(other: UndefinedValue): number {\n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Utf8Value implements Value {\n readonly type: Type = \"Utf8\" as const;\n public readonly value?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Utf8 value must be a string, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Utf8Value {\n if (str === UNDEFINED_VALUE) {\n return new Utf8Value(undefined);\n }\n \n return new Utf8Value(str);\n }\n\n valueOf(): string | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value;\n }\n\n /**\n * Compare two Utf8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUtf8 = other as Utf8Value;\n return this.value === otherUtf8.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v4 as uuidv4, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A UUID version 4 (random) value type\n */\nexport class Uuid4Value implements Value {\n readonly type: Type = \"Uuid4\" as const;\n private readonly uuid?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Uuid4 value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format: ${value}`);\n }\n \n // Check version (allow v4 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 4) {\n throw new Error(`Invalid UUID version for Uuid4: expected v4, got v${ver}`);\n }\n \n this.uuid = value.toLowerCase();\n } else {\n this.uuid = undefined;\n }\n }\n\n /**\n * Generate a new random UUID v4\n */\n static generate(): Uuid4Value {\n return new Uuid4Value(uuidv4());\n }\n\n /**\n * Create a new Uuid4Value from a string\n */\n static new(uuid: string): Uuid4Value {\n return new Uuid4Value(uuid);\n }\n\n /**\n * Get the nil UUID (all zeros)\n */\n static nil(): Uuid4Value {\n return new Uuid4Value(NIL_UUID);\n }\n\n /**\n * Get default Uuid4Value (nil UUID)\n */\n static default(): Uuid4Value {\n return Uuid4Value.nil();\n }\n\n /**\n * Parse a UUID string\n */\n static parse(str: string): Uuid4Value {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uuid4Value(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as Uuid4`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 4) {\n throw new Error(`Cannot parse \"${str}\" as Uuid4: wrong version (v${ver})`);\n }\n\n return new Uuid4Value(trimmed);\n }\n\n /**\n * Get the UUID string\n */\n asString(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the UUID as bytes (16-byte array)\n */\n asBytes(): Uint8Array | undefined {\n if (this.uuid === undefined) return undefined;\n \n // Remove hyphens and convert hex to bytes\n const hex = this.uuid.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.uuid === NIL_UUID;\n }\n\n /**\n * Get the UUID version\n */\n getVersion(): number | undefined {\n if (this.uuid === undefined) return undefined;\n return version(this.uuid);\n }\n\n /**\n * Format as string\n */\n toString(): string {\n if (this.uuid === undefined) {\n return 'undefined';\n }\n return this.uuid;\n }\n\n valueOf(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the internal representation\n */\n get value(): string | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two UUID4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUuid = other as Uuid4Value;\n return this.uuid === otherUuid.uuid;\n }\n\n /**\n * Compare two UUID4 values (for ordering)\n */\n compare(other: Uuid4Value): number {\n if (this.uuid === undefined || other.uuid === undefined) {\n if (this.uuid === other.uuid) return 0;\n if (this.uuid === undefined) return -1;\n return 1;\n }\n \n // Compare as bytes for consistent ordering\n const thisBytes = this.asBytes()!;\n const otherBytes = other.asBytes()!;\n \n for (let i = 0; i < 16; i++) {\n if (thisBytes[i] < otherBytes[i]) return -1;\n if (thisBytes[i] > otherBytes[i]) return 1;\n }\n \n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v7 as uuidv7, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A UUID version 7 (timestamp-based) value type\n */\nexport class Uuid7Value implements Value {\n readonly type: Type = \"Uuid7\" as const;\n private readonly uuid?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Uuid7 value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format: ${value}`);\n }\n \n // Check version (allow v7 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 7) {\n throw new Error(`Invalid UUID version for Uuid7: expected v7, got v${ver}`);\n }\n \n this.uuid = value.toLowerCase();\n } else {\n this.uuid = undefined;\n }\n }\n\n /**\n * Generate a new timestamp-based UUID v7\n */\n static generate(): Uuid7Value {\n return new Uuid7Value(uuidv7());\n }\n\n /**\n * Create a new Uuid7Value from a string\n */\n static new(uuid: string): Uuid7Value {\n return new Uuid7Value(uuid);\n }\n\n /**\n * Get the nil UUID (all zeros)\n */\n static nil(): Uuid7Value {\n return new Uuid7Value(NIL_UUID);\n }\n\n /**\n * Get default Uuid7Value (nil UUID)\n */\n static default(): Uuid7Value {\n return Uuid7Value.nil();\n }\n\n /**\n * Parse a UUID string\n */\n static parse(str: string): Uuid7Value {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uuid7Value(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as Uuid7`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 7) {\n throw new Error(`Cannot parse \"${str}\" as Uuid7: wrong version (v${ver})`);\n }\n\n return new Uuid7Value(trimmed);\n }\n\n /**\n * Get the UUID string\n */\n asString(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the UUID as bytes (16-byte array)\n */\n asBytes(): Uint8Array | undefined {\n if (this.uuid === undefined) return undefined;\n \n // Remove hyphens and convert hex to bytes\n const hex = this.uuid.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n /**\n * Extract the timestamp from UUID v7 (milliseconds since Unix epoch)\n */\n getTimestamp(): number | undefined {\n if (this.uuid === undefined || this.uuid === NIL_UUID) return undefined;\n \n // UUID v7 has a 48-bit timestamp in the first 6 bytes\n const hex = this.uuid.replace(/-/g, '');\n const timestampHex = hex.substring(0, 12);\n const timestamp = parseInt(timestampHex, 16);\n return timestamp;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.uuid === NIL_UUID;\n }\n\n /**\n * Get the UUID version\n */\n getVersion(): number | undefined {\n if (this.uuid === undefined) return undefined;\n return version(this.uuid);\n }\n\n /**\n * Format as string\n */\n toString(): string {\n if (this.uuid === undefined) {\n return 'undefined';\n }\n return this.uuid;\n }\n\n valueOf(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the internal representation\n */\n get value(): string | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two UUID7 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUuid = other as Uuid7Value;\n return this.uuid === otherUuid.uuid;\n }\n\n /**\n * Compare two UUID7 values (for ordering)\n * UUID v7 has timestamp-based ordering for UUIDs generated close in time\n */\n compare(other: Uuid7Value): number {\n if (this.uuid === undefined || other.uuid === undefined) {\n if (this.uuid === other.uuid) return 0;\n if (this.uuid === undefined) return -1;\n return 1;\n }\n \n // Compare as bytes for consistent ordering\n const thisBytes = this.asBytes()!;\n const otherBytes = other.asBytes()!;\n \n for (let i = 0; i < 16; i++) {\n if (thisBytes[i] < otherBytes[i]) return -1;\n if (thisBytes[i] > otherBytes[i]) return 1;\n }\n \n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v7 as uuidv7, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * An IdentityId value type that wraps a UUID v7\n */\nexport class IdentityIdValue implements Value {\n readonly type: Type = \"IdentityId\" as const;\n public readonly value?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`IdentityId value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format for IdentityId: ${value}`);\n }\n \n // Check version (allow v7 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 7) {\n throw new Error(`Invalid UUID version for IdentityId: expected v7, got v${ver}`);\n }\n \n this.value = value.toLowerCase();\n } else {\n this.value = undefined;\n }\n }\n\n /**\n * Generate a new IdentityId with a UUID v7\n */\n static generate(): IdentityIdValue {\n return new IdentityIdValue(uuidv7());\n }\n\n /**\n * Get the nil IdentityId (all zeros)\n */\n static nil(): IdentityIdValue {\n return new IdentityIdValue(NIL_UUID);\n }\n\n /**\n * Parse a string as an IdentityId\n */\n static parse(str: string): IdentityIdValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new IdentityIdValue(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as IdentityId`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 7) {\n throw new Error(`Cannot parse \"${str}\" as IdentityId: wrong UUID version (v${ver})`);\n }\n\n return new IdentityIdValue(trimmed);\n }\n\n /**\n * Get the UUID string value\n */\n valueOf(): string | undefined {\n return this.value;\n }\n\n /**\n * Format as string\n */\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value;\n }\n\n /**\n * Extract the timestamp from the UUID v7 (milliseconds since Unix epoch)\n */\n getTimestamp(): number | undefined {\n if (this.value === undefined || this.value === NIL_UUID) return undefined;\n \n // UUID v7 has a 48-bit timestamp in the first 6 bytes\n const hex = this.value.replace(/-/g, '');\n const timestampHex = hex.substring(0, 12);\n const timestamp = parseInt(timestampHex, 16);\n return timestamp;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.value === NIL_UUID;\n }\n\n /**\n * Compare two IdentityId values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherIdentityId = other as IdentityIdValue;\n return this.value === otherIdentityId.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nexport {BlobValue} from './blob';\nexport {BoolValue} from './bool';\nexport {DateValue} from './date';\nexport {DateTimeValue} from './datetime';\nexport {Float4Value} from './float4';\nexport {Float8Value} from './float8';\nexport {Int1Value} from './int1';\nexport {Int2Value} from './int2';\nexport {Int4Value} from './int4';\nexport {Int8Value} from './int8';\nexport {Int16Value} from './int16';\nexport {IntervalValue} from './interval';\nexport {TimeValue} from './time';\nexport {Uint1Value} from './uint1';\nexport {Uint2Value} from './uint2';\nexport {Uint4Value} from './uint4';\nexport {Uint8Value} from './uint8';\nexport {Uint16Value} from './uint16';\nexport {RowNumberValue} from './rownumber';\nexport {UndefinedValue} from './undefined';\nexport {Utf8Value} from './utf8';\nexport {Uuid4Value} from './uuid4';\nexport {Uuid7Value} from './uuid7';\nexport {IdentityIdValue} from './identityid';\n\nexport type Type =\n | \"Blob\"\n | \"Bool\"\n | \"Float4\" | \"Float8\"\n | \"Int1\" | \"Int2\" | \"Int4\" | \"Int8\" | \"Int16\"\n | \"Uint1\" | \"Uint2\" | \"Uint4\" | \"Uint8\" | \"Uint16\"\n | \"Utf8\"\n | \"Date\" | \"DateTime\" | \"Time\" | \"Interval\"\n | \"Uuid4\" | \"Uuid7\"\n | \"Undefined\"\n | \"RowNumber\"\n | \"IdentityId\";\n\nexport interface TypeValuePair {\n type: Type;\n value: string;\n}\n\nexport abstract class Value {\n abstract readonly type: Type;\n\n public abstract encode(): TypeValuePair;\n public abstract equals(other: Value): boolean;\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n BlobValue, BoolValue, DateValue, DateTimeValue, Float4Value, Float8Value,\n Int1Value, Int2Value, Int4Value, Int8Value, Int16Value, IntervalValue,\n RowNumberValue, TimeValue, Uint1Value, Uint2Value, Uint4Value, Uint8Value,\n Uint16Value, UndefinedValue, Utf8Value, Uuid4Value, Uuid7Value, IdentityIdValue,\n Value, TypeValuePair\n} from './value';\n\n\nexport function decode(pair: TypeValuePair): Value {\n switch (pair.type) {\n case \"Blob\":\n return BlobValue.parse(pair.value);\n case \"Bool\":\n return BoolValue.parse(pair.value);\n case \"Date\":\n return DateValue.parse(pair.value);\n case \"DateTime\":\n return DateTimeValue.parse(pair.value);\n case \"Float4\":\n return Float4Value.parse(pair.value);\n case \"Float8\":\n return Float8Value.parse(pair.value);\n case \"Int1\":\n return Int1Value.parse(pair.value);\n case \"Int2\":\n return Int2Value.parse(pair.value);\n case \"Int4\":\n return Int4Value.parse(pair.value);\n case \"Int8\":\n return Int8Value.parse(pair.value);\n case \"Int16\":\n return Int16Value.parse(pair.value);\n case \"Interval\":\n return IntervalValue.parse(pair.value);\n case \"RowNumber\":\n return RowNumberValue.parse(pair.value);\n case \"Time\":\n return TimeValue.parse(pair.value);\n case \"Uint1\":\n return Uint1Value.parse(pair.value);\n case \"Uint2\":\n return Uint2Value.parse(pair.value);\n case \"Uint4\":\n return Uint4Value.parse(pair.value);\n case \"Uint8\":\n return Uint8Value.parse(pair.value);\n case \"Uint16\":\n return Uint16Value.parse(pair.value);\n case \"Undefined\":\n return UndefinedValue.parse(pair.value);\n case \"Utf8\":\n return Utf8Value.parse(pair.value);\n case \"Uuid4\":\n return Uuid4Value.parse(pair.value);\n case \"Uuid7\":\n return Uuid7Value.parse(pair.value);\n case \"IdentityId\":\n return IdentityIdValue.parse(pair.value);\n default:\n throw new Error(`Unsupported type: ${pair.type}`);\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n PrimitiveSchemaNode, ObjectSchemaNode, ArraySchemaNode,\n OptionalSchemaNode, ValueSchemaNode, SchemaNode\n} from '.';\n\nexport class SchemaBuilder {\n\n static blob(): PrimitiveSchemaNode<'Blob'> {\n return {kind: 'primitive', type: 'Blob'};\n }\n\n static bool(): PrimitiveSchemaNode<'Bool'> {\n return {kind: 'primitive', type: 'Bool'};\n }\n\n static boolean(): PrimitiveSchemaNode<'Bool'> {\n return {kind: 'primitive', type: 'Bool'};\n }\n\n static float4(): PrimitiveSchemaNode<'Float4'> {\n return {kind: 'primitive', type: 'Float4'};\n }\n\n static float8(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static float(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static double(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static int1(): PrimitiveSchemaNode<'Int1'> {\n return {kind: 'primitive', type: 'Int1'};\n }\n\n static int2(): PrimitiveSchemaNode<'Int2'> {\n return {kind: 'primitive', type: 'Int2'};\n }\n\n static int4(): PrimitiveSchemaNode<'Int4'> {\n return {kind: 'primitive', type: 'Int4'};\n }\n\n static int8(): PrimitiveSchemaNode<'Int8'> {\n return {kind: 'primitive', type: 'Int8'};\n }\n\n static int16(): PrimitiveSchemaNode<'Int16'> {\n return {kind: 'primitive', type: 'Int16'};\n }\n\n static int(): PrimitiveSchemaNode<'Int4'> {\n return {kind: 'primitive', type: 'Int4'};\n }\n\n static bigint(): PrimitiveSchemaNode<'Int8'> {\n return {kind: 'primitive', type: 'Int8'};\n }\n\n static uint1(): PrimitiveSchemaNode<'Uint1'> {\n return {kind: 'primitive', type: 'Uint1'};\n }\n\n static uint2(): PrimitiveSchemaNode<'Uint2'> {\n return {kind: 'primitive', type: 'Uint2'};\n }\n\n static uint4(): PrimitiveSchemaNode<'Uint4'> {\n return {kind: 'primitive', type: 'Uint4'};\n }\n\n static uint8(): PrimitiveSchemaNode<'Uint8'> {\n return {kind: 'primitive', type: 'Uint8'};\n }\n\n static uint16(): PrimitiveSchemaNode<'Uint16'> {\n return {kind: 'primitive', type: 'Uint16'};\n }\n\n static utf8(): PrimitiveSchemaNode<'Utf8'> {\n return {kind: 'primitive', type: 'Utf8'};\n }\n\n static string(): PrimitiveSchemaNode<'Utf8'> {\n return {kind: 'primitive', type: 'Utf8'};\n }\n\n static date(): PrimitiveSchemaNode<'Date'> {\n return {kind: 'primitive', type: 'Date'};\n }\n\n static datetime(): PrimitiveSchemaNode<'DateTime'> {\n return {kind: 'primitive', type: 'DateTime'};\n }\n\n static time(): PrimitiveSchemaNode<'Time'> {\n return {kind: 'primitive', type: 'Time'};\n }\n\n static interval(): PrimitiveSchemaNode<'Interval'> {\n return {kind: 'primitive', type: 'Interval'};\n }\n\n static uuid4(): PrimitiveSchemaNode<'Uuid4'> {\n return {kind: 'primitive', type: 'Uuid4'};\n }\n\n static uuid7(): PrimitiveSchemaNode<'Uuid7'> {\n return {kind: 'primitive', type: 'Uuid7'};\n }\n\n static uuid(): PrimitiveSchemaNode<'Uuid7'> {\n return {kind: 'primitive', type: 'Uuid7'};\n }\n\n static undefined(): PrimitiveSchemaNode<'Undefined'> {\n return {kind: 'primitive', type: 'Undefined'};\n }\n\n static rownumber(): PrimitiveSchemaNode<'RowNumber'> {\n return {kind: 'primitive', type: 'RowNumber'};\n }\n\n static identityid(): PrimitiveSchemaNode<'IdentityId'> {\n return {kind: 'primitive', type: 'IdentityId'};\n }\n\n static object<P extends Record<string, SchemaNode>>(properties: P): ObjectSchemaNode<P> {\n return {kind: 'object', properties};\n }\n\n static array<T extends SchemaNode>(items: T): ArraySchemaNode<T> {\n return {kind: 'array', items};\n }\n\n static optional<T extends SchemaNode>(schema: T): OptionalSchemaNode<T> {\n return {kind: 'optional', schema};\n }\n \n static number(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static boolValue(): ValueSchemaNode<'Bool'> {\n return {kind: 'value', type: 'Bool'};\n }\n\n static int1Value(): ValueSchemaNode<'Int1'> {\n return {kind: 'value', type: 'Int1'};\n }\n\n static int2Value(): ValueSchemaNode<'Int2'> {\n return {kind: 'value', type: 'Int2'};\n }\n\n static int4Value(): ValueSchemaNode<'Int4'> {\n return {kind: 'value', type: 'Int4'};\n }\n\n static int8Value(): ValueSchemaNode<'Int8'> {\n return {kind: 'value', type: 'Int8'};\n }\n\n static int16Value(): ValueSchemaNode<'Int16'> {\n return {kind: 'value', type: 'Int16'};\n }\n\n static uint1Value(): ValueSchemaNode<'Uint1'> {\n return {kind: 'value', type: 'Uint1'};\n }\n\n static uint2Value(): ValueSchemaNode<'Uint2'> {\n return {kind: 'value', type: 'Uint2'};\n }\n\n static uint4Value(): ValueSchemaNode<'Uint4'> {\n return {kind: 'value', type: 'Uint4'};\n }\n\n static uint8Value(): ValueSchemaNode<'Uint8'> {\n return {kind: 'value', type: 'Uint8'};\n }\n\n static uint16Value(): ValueSchemaNode<'Uint16'> {\n return {kind: 'value', type: 'Uint16'};\n }\n\n static float4Value(): ValueSchemaNode<'Float4'> {\n return {kind: 'value', type: 'Float4'};\n }\n\n static float8Value(): ValueSchemaNode<'Float8'> {\n return {kind: 'value', type: 'Float8'};\n }\n\n static utf8Value(): ValueSchemaNode<'Utf8'> {\n return {kind: 'value', type: 'Utf8'};\n }\n\n static dateValue(): ValueSchemaNode<'Date'> {\n return {kind: 'value', type: 'Date'};\n }\n\n static dateTimeValue(): ValueSchemaNode<'DateTime'> {\n return {kind: 'value', type: 'DateTime'};\n }\n\n static timeValue(): ValueSchemaNode<'Time'> {\n return {kind: 'value', type: 'Time'};\n }\n\n static intervalValue(): ValueSchemaNode<'Interval'> {\n return {kind: 'value', type: 'Interval'};\n }\n\n static uuid4Value(): ValueSchemaNode<'Uuid4'> {\n return {kind: 'value', type: 'Uuid4'};\n }\n\n static uuid7Value(): ValueSchemaNode<'Uuid7'> {\n return {kind: 'value', type: 'Uuid7'};\n }\n\n static undefinedValue(): ValueSchemaNode<'Undefined'> {\n return {kind: 'value', type: 'Undefined'};\n }\n\n static blobValue(): ValueSchemaNode<'Blob'> {\n return {kind: 'value', type: 'Blob'};\n }\n\n static rowIdValue(): ValueSchemaNode<'RowNumber'> {\n return {kind: 'value', type: 'RowNumber'};\n }\n\n static identityIdValue(): ValueSchemaNode<'IdentityId'> {\n return {kind: 'value', type: 'IdentityId'};\n }\n}\n\nexport const Schema = SchemaBuilder;","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n BlobValue, BoolValue, DateValue, DateTimeValue,\n Float4Value, Float8Value,\n Int1Value, Int2Value, Int4Value, Int8Value, Int16Value,\n IntervalValue, TimeValue,\n Uint1Value, Uint2Value, Uint4Value, Uint8Value, Uint16Value,\n RowNumberValue, UndefinedValue, Utf8Value,\n Uuid4Value, Uuid7Value,\n Type\n} from '../value';\nimport {SchemaNode} from '.';\nimport {PrimitiveToValue} from './inference';\n\nfunction createValueInstance<T extends Type>(type: T, value: any): PrimitiveToValue<T> {\n switch (type) {\n case 'Blob':\n return new BlobValue(value) as PrimitiveToValue<T>;\n case 'Bool':\n return new BoolValue(value) as PrimitiveToValue<T>;\n case 'Float4':\n return new Float4Value(value) as PrimitiveToValue<T>;\n case 'Float8':\n return new Float8Value(value) as PrimitiveToValue<T>;\n case 'Int1':\n return new Int1Value(value) as PrimitiveToValue<T>;\n case 'Int2':\n return new Int2Value(value) as PrimitiveToValue<T>;\n case 'Int4':\n return new Int4Value(value) as PrimitiveToValue<T>;\n case 'Int8':\n return new Int8Value(value) as PrimitiveToValue<T>;\n case 'Int16':\n return new Int16Value(value) as PrimitiveToValue<T>;\n case 'Uint1':\n return new Uint1Value(value) as PrimitiveToValue<T>;\n case 'Uint2':\n return new Uint2Value(value) as PrimitiveToValue<T>;\n case 'Uint4':\n return new Uint4Value(value) as PrimitiveToValue<T>;\n case 'Uint8':\n return new Uint8Value(value) as PrimitiveToValue<T>;\n case 'Uint16':\n return new Uint16Value(value) as PrimitiveToValue<T>;\n case 'Utf8':\n return new Utf8Value(value) as PrimitiveToValue<T>;\n case 'Date':\n return new DateValue(value) as PrimitiveToValue<T>;\n case 'DateTime':\n return new DateTimeValue(value) as PrimitiveToValue<T>;\n case 'Time':\n return new TimeValue(value) as PrimitiveToValue<T>;\n case 'Interval':\n return new IntervalValue(value) as PrimitiveToValue<T>;\n case 'Uuid4':\n return new Uuid4Value(value) as PrimitiveToValue<T>;\n case 'Uuid7':\n return new Uuid7Value(value) as PrimitiveToValue<T>;\n case 'Undefined':\n return new UndefinedValue() as PrimitiveToValue<T>;\n case 'RowNumber':\n return new RowNumberValue(value) as PrimitiveToValue<T>;\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n}\n\nexport function parseValue(schema: SchemaNode, value: any): any {\n if (schema.kind === 'primitive') {\n if (value === null || value === undefined) {\n return undefined;\n }\n return createValueInstance(schema.type as Type, value);\n }\n\n if (schema.kind === 'object') {\n if (value === null || value === undefined) {\n return undefined;\n }\n const result: Record<string, any> = {};\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n result[key] = parseValue(propSchema, value[key]);\n }\n return result;\n }\n\n if (schema.kind === 'array') {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => parseValue(schema.items, item));\n }\n\n if (schema.kind === 'optional') {\n if (value === undefined) {\n return undefined;\n }\n return parseValue(schema.schema, value);\n }\n\n throw new Error(`Unknown schema kind: ${(schema as any).kind}`);\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type} from '../value';\nimport {SchemaNode} from '.';\n\nexport function validateSchema(schema: SchemaNode, value: any): boolean {\n if (schema.kind === 'primitive') {\n const schemaType = schema.type as Type;\n if (value === null || value === undefined) {\n return schemaType === 'Undefined';\n }\n\n switch (schemaType) {\n case 'Bool':\n return typeof value === 'boolean';\n case 'Float4':\n case 'Float8':\n case 'Int1':\n case 'Int2':\n case 'Int4':\n return typeof value === 'number';\n case 'Int8':\n case 'Int16':\n case 'Uint8':\n case 'Uint16':\n return typeof value === 'bigint' || typeof value === 'number';\n case 'Uint1':\n case 'Uint2':\n case 'Uint4':\n return typeof value === 'number' && value >= 0;\n case 'Utf8':\n case 'Time':\n case 'Interval':\n case 'Uuid4':\n case 'Uuid7':\n case 'RowNumber':\n return typeof value === 'string';\n case 'Date':\n case 'DateTime':\n return value instanceof Date || typeof value === 'string';\n case 'Blob':\n return value instanceof Uint8Array || value instanceof ArrayBuffer;\n case 'Undefined':\n return value === undefined;\n default:\n return false;\n }\n }\n\n if (schema.kind === 'object') {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n if (!validateSchema(propSchema, value[key])) {\n return false;\n }\n }\n return true;\n }\n\n if (schema.kind === 'array') {\n if (!Array.isArray(value)) {\n return false;\n }\n return value.every(item => validateSchema(schema.items, item));\n }\n\n if (schema.kind === 'optional') {\n if (value === undefined) {\n return true;\n }\n return validateSchema(schema.schema, value);\n }\n\n return false;\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Type, TypeValuePair } from './value';\nimport { SchemaNode, InferSchema } from './schema';\n\nexport type Params = (TypeValuePair | null)[] | Record<string, TypeValuePair | null>;\n\nexport interface Frame {\n columns: Column[];\n}\n\nexport interface DiagnosticColumn {\n name: string,\n ty: Type,\n}\n\nexport interface Span {\n offset: number,\n line: number,\n fragment: string\n}\n\nexport interface Diagnostic {\n code: string,\n statement?: string;\n message: string,\n column?: DiagnosticColumn,\n span?: Span,\n label?: string,\n help?: string,\n notes: Array<string>,\n cause?: Diagnostic,\n}\n\nexport interface Column {\n name: string;\n ty: Type;\n data: string[];\n}\n\nexport interface ErrorResponse {\n id: string;\n type: \"Err\";\n payload: {\n diagnostic: Diagnostic;\n };\n}\n\nexport class ReifyError extends Error {\n public readonly code: string;\n public readonly statement?: string;\n public readonly column?: DiagnosticColumn;\n public readonly span?: Span;\n public readonly label?: string;\n public readonly help?: string;\n public readonly notes: string[];\n public readonly cause?: Diagnostic;\n\n constructor(response: ErrorResponse) {\n const diagnostic = response.payload.diagnostic;\n const message = `[${diagnostic.code}] ${diagnostic.message}` +\n (diagnostic.label ? ` — ${diagnostic.label}` : \"\");\n\n super(message);\n\n this.name = \"ReifyError\";\n this.code = diagnostic.code;\n this.statement = diagnostic.statement;\n this.column = diagnostic.column;\n this.span = diagnostic.span;\n this.label = diagnostic.label;\n this.help = diagnostic.help;\n this.notes = diagnostic.notes ?? [];\n this.cause = diagnostic.cause;\n\n // Required for instanceof checks to work properly\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n toString(): string {\n const position = this.span\n ? `line ${this.span.line}, offset ${this.span.offset}`\n : \"unknown position\";\n\n const notes = this.notes.length\n ? `\\nNotes:\\n- ${this.notes.join(\"\\n- \")}`\n : \"\";\n\n const help = this.help\n ? `\\nHelp: ${this.help}`\n : \"\";\n\n return `${this.name}: ${this.message}\\nAt ${position}${help}${notes}`;\n }\n}\n\n/**\n * Simplified type for inferring frame results to avoid deep instantiation\n * This provides a workaround for TypeScript's limitation with deeply nested types\n */\nexport type FrameResults<S extends readonly SchemaNode[]> = \n S extends readonly [infer First, ...infer Rest]\n ? First extends SchemaNode\n ? Rest extends readonly SchemaNode[]\n ? [InferSchema<First>[], ...FrameResults<Rest>]\n : [InferSchema<First>[]]\n : never\n : [];\n\n/**\n * Helper type to extract a single frame result\n */\nexport type SingleFrameResult<S extends SchemaNode> = InferSchema<S>[];\n\n/**\n * Type-safe cast helper for frame results\n */\nexport function asFrameResults<S extends readonly SchemaNode[]>(\n results: any\n): FrameResults<S> {\n return results as FrameResults<S>;\n}"],"mappings":"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","names":["NIL_UUID","validate","version","validate","version","NIL_UUID","uuidv7","NIL_UUID","validate","version","validate","version","NIL_UUID","uuidv7"]}
|
|
1
|
+
{"version":3,"sources":["../src/constant.ts","../src/value/blob.ts","../src/value/bool.ts","../src/value/date.ts","../src/value/time.ts","../src/value/datetime.ts","../src/value/float4.ts","../src/value/float8.ts","../src/value/int1.ts","../src/value/int2.ts","../src/value/int4.ts","../src/value/int8.ts","../src/value/int16.ts","../src/value/interval.ts","../src/value/uint1.ts","../src/value/uint2.ts","../src/value/uint4.ts","../src/value/uint8.ts","../src/value/uint16.ts","../src/value/rownumber.ts","../src/value/undefined.ts","../src/value/utf8.ts","../src/value/uuid4.ts","../src/value/uuid7.ts","../src/value/identityid.ts","../src/value/index.ts","../src/decoder.ts","../src/schema/builder.ts","../src/schema/parser.ts","../src/schema/validator.ts","../src/types.ts"],"sourcesContent":["/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nexport const UNDEFINED_VALUE = \"⟪undefined⟫\";","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * A binary large object (BLOB) value that can hold arbitrary byte data.\n */\nexport class BlobValue implements Value {\n readonly type: Type = \"Blob\" as const;\n private readonly bytes?: Uint8Array;\n\n constructor(value?: Uint8Array | ArrayBuffer | string | number[]) {\n if (value !== undefined) {\n if (value instanceof Uint8Array) {\n this.bytes = new Uint8Array(value);\n } else if (value instanceof ArrayBuffer) {\n this.bytes = new Uint8Array(value);\n } else if (typeof value === 'string') {\n // Try to parse as hex or base64\n const parsed = BlobValue.parseString(value);\n if (parsed === null) {\n throw new Error(`Invalid blob string: ${value}`);\n }\n this.bytes = parsed;\n } else if (Array.isArray(value)) {\n // Array of numbers (bytes)\n for (const byte of value) {\n if (!Number.isInteger(byte) || byte < 0 || byte > 255) {\n throw new Error(`Invalid byte value: ${byte}`);\n }\n }\n this.bytes = new Uint8Array(value);\n } else {\n throw new Error(`Blob value must be a Uint8Array, ArrayBuffer, string, or number[], got ${typeof value}`);\n }\n } else {\n this.bytes = undefined;\n }\n }\n\n /**\n * Create a new BLOB from raw bytes\n */\n static new(bytes: Uint8Array | number[]): BlobValue {\n return new BlobValue(bytes);\n }\n\n /**\n * Create an empty BLOB\n */\n static empty(): BlobValue {\n return new BlobValue(new Uint8Array(0));\n }\n\n /**\n * Create a BLOB from a byte array\n */\n static fromBytes(bytes: number[]): BlobValue {\n return new BlobValue(bytes);\n }\n\n /**\n * Create a BLOB from a hex string\n */\n static fromHex(hex: string): BlobValue {\n // Remove 0x prefix if present\n const cleanHex = hex.startsWith('0x') || hex.startsWith('0X')\n ? hex.substring(2)\n : hex;\n\n if (cleanHex.length % 2 !== 0) {\n throw new Error(`Invalid hex string: odd length`);\n }\n\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n const byte = parseInt(cleanHex.substring(i, i + 2), 16);\n if (isNaN(byte)) {\n throw new Error(`Invalid hex string: ${hex}`);\n }\n bytes[i / 2] = byte;\n }\n return new BlobValue(bytes);\n }\n\n /**\n * Create a BLOB from a base64 string\n */\n static fromBase64(base64: string): BlobValue {\n // Validate base64 format\n if (!/^[A-Za-z0-9+/]*={0,2}$/.test(base64)) {\n throw new Error(`Invalid base64 string: ${base64}`);\n }\n\n try {\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n const buffer = Buffer.from(base64, 'base64');\n return new BlobValue(new Uint8Array(buffer));\n } else {\n // Browser environment\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new BlobValue(bytes);\n }\n } catch (e) {\n throw new Error(`Invalid base64 string: ${base64}`);\n }\n }\n\n /**\n * Create a BLOB from a UTF-8 string\n */\n static fromUtf8(str: string): BlobValue {\n const encoder = new TextEncoder();\n return new BlobValue(encoder.encode(str));\n }\n\n /**\n * Parse a blob string (hex or undefined)\n */\n static parse(str: string): BlobValue {\n const trimmed = str.trim();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new BlobValue(undefined);\n }\n\n const parsed = BlobValue.parseString(trimmed);\n if (parsed === null) {\n throw new Error(`Cannot parse \"${str}\" as Blob`);\n }\n\n return new BlobValue(parsed);\n }\n\n /**\n * Get the raw bytes\n */\n asBytes(): Uint8Array | undefined {\n return this.bytes ? new Uint8Array(this.bytes) : undefined;\n }\n\n /**\n * Get the length in bytes\n */\n length(): number {\n return this.bytes?.length ?? 0;\n }\n\n /**\n * Check if the BLOB is empty\n */\n isEmpty(): boolean {\n return this.bytes?.length === 0;\n }\n\n /**\n * Convert to hex string with 0x prefix\n */\n toHex(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n const hex = Array.from(this.bytes)\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('');\n return '0x' + hex;\n }\n\n /**\n * Convert to base64 string\n */\n toBase64(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(this.bytes).toString('base64');\n } else {\n // Browser environment\n const binaryString = Array.from(this.bytes)\n .map(byte => String.fromCharCode(byte))\n .join('');\n return btoa(binaryString);\n }\n }\n\n /**\n * Convert to UTF-8 string\n */\n toUtf8(): string | undefined {\n if (this.bytes === undefined) return undefined;\n\n const decoder = new TextDecoder();\n return decoder.decode(this.bytes);\n }\n\n /**\n * Format as hex string with 0x prefix\n */\n toString(): string {\n if (this.bytes === undefined) {\n return 'undefined';\n }\n return this.toHex()!;\n }\n\n valueOf(): Uint8Array | undefined {\n return this.bytes ? new Uint8Array(this.bytes) : undefined;\n }\n\n /**\n * Get the internal representation\n */\n get value(): Uint8Array | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two blobs for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherBlob = other as BlobValue;\n if (this.bytes === undefined || otherBlob.bytes === undefined) {\n return this.bytes === otherBlob.bytes;\n }\n\n if (this.bytes.length !== otherBlob.bytes.length) {\n return false;\n }\n\n for (let i = 0; i < this.bytes.length; i++) {\n if (this.bytes[i] !== otherBlob.bytes[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Helper to parse a string as hex\n */\n private static parseString(str: string): Uint8Array | null {\n // Try hex first (with or without 0x prefix)\n if (str.startsWith('0x') || str.startsWith('0X')) {\n try {\n return BlobValue.fromHex(str).bytes!;\n } catch {\n return null;\n }\n }\n\n // Check if it looks like hex (all hex digits)\n if (/^[0-9a-fA-F]+$/.test(str) && str.length % 2 === 0) {\n try {\n return BlobValue.fromHex(str).bytes!;\n } catch {\n return null;\n }\n }\n\n return null;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class BoolValue implements Value {\n readonly type: Type = \"Bool\" as const;\n public readonly value?: boolean;\n\n constructor(value?: boolean) {\n if (value !== undefined) {\n if (typeof value !== 'boolean') {\n throw new Error(`Bool value must be a boolean, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): BoolValue {\n const trimmed = str.trim().toLowerCase();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new BoolValue(undefined);\n }\n\n if (trimmed === 'true') {\n return new BoolValue(true);\n }\n\n if (trimmed === 'false') {\n return new BoolValue(false);\n }\n\n throw new Error(`Cannot parse \"${str}\" as Bool`);\n }\n\n valueOf(): boolean | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two boolean values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherBool = other as BoolValue;\n return this.value === otherBool.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * A date value representing a calendar date (year, month, day) without time information.\n * Always interpreted in UTC.\n * Internally stored as months and days.\n */\nexport class DateValue implements Value {\n readonly type: Type = \"Date\" as const;\n private readonly months?: number; // years*12 + months\n private readonly days?: number; // day of month (1-31)\n\n constructor(value?: Date | string | number) {\n if (value !== undefined) {\n if (value instanceof Date) {\n // Remove time component - set to UTC midnight\n const year = value.getUTCFullYear();\n const month = value.getUTCMonth() + 1; // Convert to 1-based\n const day = value.getUTCDate();\n \n this.months = year * 12 + (month - 1);\n this.days = day;\n } else if (typeof value === 'string') {\n // Parse YYYY-MM-DD format\n const parsed = DateValue.parseDate(value);\n if (!parsed) {\n throw new Error(`Invalid date string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n } else if (typeof value === 'number') {\n // Interpret as days since epoch\n const date = DateValue.fromDaysSinceEpochToComponents(value);\n if (!date) {\n throw new Error(`Invalid days since epoch: ${value}`);\n }\n this.months = date.months;\n this.days = date.days;\n } else {\n throw new Error(`Date value must be a Date, string, or number, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n }\n }\n\n /**\n * Create a DateValue from year, month (1-12), and day (1-31)\n */\n static fromYMD(year: number, month: number, day: number): DateValue {\n // Validate the date is valid\n if (!DateValue.isValidDate(year, month, day)) {\n throw new Error(`Invalid date: ${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`);\n }\n \n const result = new DateValue(undefined);\n (result as any).months = year * 12 + (month - 1);\n (result as any).days = day;\n return result;\n }\n\n /**\n * Get today's date (in UTC)\n */\n static today(): DateValue {\n const now = new Date();\n return DateValue.fromYMD(\n now.getUTCFullYear(),\n now.getUTCMonth() + 1,\n now.getUTCDate()\n );\n }\n\n /**\n * Parse a date string in YYYY-MM-DD format\n */\n static parse(str: string): DateValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new DateValue(undefined);\n }\n\n const parsed = DateValue.parseDate(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as Date`);\n }\n\n const result = new DateValue(undefined);\n (result as any).months = parsed.months;\n (result as any).days = parsed.days;\n return result;\n }\n\n /**\n * Convert to days since Unix epoch (1970-01-01) for storage\n */\n toDaysSinceEpoch(): number | undefined {\n if (this.months === undefined || this.days === undefined) {\n return undefined;\n }\n \n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n \n // Create date with special handling for years < 100\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days));\n }\n \n const epoch = new Date(Date.UTC(1970, 0, 1));\n const diffMs = date.getTime() - epoch.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n\n /**\n * Create from days since Unix epoch\n */\n static fromDaysSinceEpochToComponents(days: number): { months: number; days: number } | null {\n const epoch = new Date(Date.UTC(1970, 0, 1));\n const ms = days * 24 * 60 * 60 * 1000;\n const date = new Date(epoch.getTime() + ms);\n \n // Check for valid date\n if (!isFinite(date.getTime())) {\n return null;\n }\n \n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n \n return {\n months: year * 12 + (month - 1),\n days: day\n };\n }\n\n /**\n * Get the year component\n */\n year(): number | undefined {\n if (this.months === undefined) return undefined;\n return Math.floor(this.months / 12);\n }\n\n /**\n * Get the month component (1-12)\n */\n month(): number | undefined {\n if (this.months === undefined) return undefined;\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n return m + 1;\n }\n\n /**\n * Get the day component (1-31)\n */\n day(): number | undefined {\n return this.days;\n }\n\n /**\n * Format as YYYY-MM-DD string\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined) {\n return 'undefined';\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = String(m + 1).padStart(2, '0');\n const day = String(this.days).padStart(2, '0');\n \n // Handle negative years (BC dates)\n if (year < 0) {\n const absYear = Math.abs(year);\n return `-${String(absYear).padStart(4, '0')}-${month}-${day}`;\n } else {\n return `${String(year).padStart(4, '0')}-${month}-${day}`;\n }\n }\n\n valueOf(): Date | undefined {\n if (this.months === undefined || this.days === undefined) {\n return undefined;\n }\n \n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n \n // Handle years < 100 specially\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days));\n }\n \n return date;\n }\n \n /**\n * Get the internal representation\n */\n get value(): Date | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse YYYY-MM-DD format\n */\n private static parseDate(str: string): { months: number; days: number } | null {\n // Match YYYY-MM-DD format, including negative years\n const match = str.match(/^(-?\\d{1,4})-(\\d{2})-(\\d{2})$/);\n if (!match) {\n return null;\n }\n\n const year = parseInt(match[1], 10);\n const month = parseInt(match[2], 10);\n const day = parseInt(match[3], 10);\n\n // Validate month and day ranges\n if (month < 1 || month > 12) {\n return null;\n }\n if (day < 1 || day > 31) {\n return null;\n }\n\n // Validate the date is valid (e.g., no Feb 30)\n if (!DateValue.isValidDate(year, month, day)) {\n return null;\n }\n\n return {\n months: year * 12 + (month - 1),\n days: day\n };\n }\n \n /**\n * Helper to validate a date\n */\n private static isValidDate(year: number, month: number, day: number): boolean {\n // Create a date and check if components match\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, day));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, day));\n }\n \n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day;\n }\n\n /**\n * Compare two dates for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherDate = other as DateValue;\n if (this.months === undefined || otherDate.months === undefined) {\n return this.months === otherDate.months && this.days === otherDate.days;\n }\n \n return this.months === otherDate.months && this.days === otherDate.days;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A time value representing time of day (hour, minute, second, nanosecond) without date information.\n * Internally stored as nanoseconds since midnight.\n */\nexport class TimeValue implements Value {\n readonly type: Type = \"Time\" as const;\n public readonly value?: bigint; // nanoseconds since midnight\n\n private static readonly NANOS_PER_SECOND = 1_000_000_000n;\n private static readonly NANOS_PER_MINUTE = 60_000_000_000n;\n private static readonly NANOS_PER_HOUR = 3_600_000_000_000n;\n private static readonly NANOS_PER_DAY = 86_400_000_000_000n;\n\n constructor(value?: bigint | string | number) {\n if (value !== undefined) {\n if (typeof value === 'bigint') {\n // Validate range (0 to 24 hours in nanoseconds)\n if (value < 0n || value >= TimeValue.NANOS_PER_DAY) {\n throw new Error(`Time value must be between 0 and ${TimeValue.NANOS_PER_DAY - 1n} nanoseconds`);\n }\n this.value = value;\n } else if (typeof value === 'string') {\n // Parse HH:MM:SS[.nnnnnnnnn] format\n const parsed = TimeValue.parseTime(value);\n if (parsed === null) {\n throw new Error(`Invalid time string: ${value}`);\n }\n this.value = parsed;\n } else if (typeof value === 'number') {\n // Accept number as nanoseconds since midnight\n const bigintValue = BigInt(Math.floor(value));\n if (bigintValue < 0n || bigintValue >= TimeValue.NANOS_PER_DAY) {\n throw new Error(`Time value must be between 0 and ${TimeValue.NANOS_PER_DAY - 1n} nanoseconds`);\n }\n this.value = bigintValue;\n } else {\n throw new Error(`Time value must be a bigint, string, or number, got ${typeof value}`);\n }\n } else {\n this.value = undefined;\n }\n }\n\n /**\n * Create a TimeValue from hour, minute, second, and nanosecond\n */\n static fromHMSN(hour: number, minute: number, second: number, nano: number = 0): TimeValue {\n // Validate inputs\n if (hour < 0 || hour > 23) {\n throw new Error(`Invalid hour: ${hour}`);\n }\n if (minute < 0 || minute > 59) {\n throw new Error(`Invalid minute: ${minute}`);\n }\n if (second < 0 || second > 59) {\n throw new Error(`Invalid second: ${second}`);\n }\n if (nano < 0 || nano > 999_999_999) {\n throw new Error(`Invalid nanosecond: ${nano}`);\n }\n\n const nanos = BigInt(hour) * TimeValue.NANOS_PER_HOUR +\n BigInt(minute) * TimeValue.NANOS_PER_MINUTE +\n BigInt(second) * TimeValue.NANOS_PER_SECOND +\n BigInt(nano);\n\n return new TimeValue(nanos);\n }\n\n /**\n * Create a TimeValue from hour, minute, and second (no fractional seconds)\n */\n static fromHMS(hour: number, minute: number, second: number): TimeValue {\n return TimeValue.fromHMSN(hour, minute, second, 0);\n }\n\n /**\n * Create midnight (00:00:00.000000000)\n */\n static midnight(): TimeValue {\n return new TimeValue(0n);\n }\n\n /**\n * Create noon (12:00:00.000000000)\n */\n static noon(): TimeValue {\n return new TimeValue(12n * TimeValue.NANOS_PER_HOUR);\n }\n\n /**\n * Parse a time string in HH:MM:SS[.nnnnnnnnn] format\n */\n static parse(str: string): TimeValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new TimeValue(undefined);\n }\n\n const parsed = TimeValue.parseTime(trimmed);\n if (parsed === null) {\n throw new Error(`Cannot parse \"${str}\" as Time`);\n }\n\n return new TimeValue(parsed);\n }\n\n /**\n * Get the hour component (0-23)\n */\n hour(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value / TimeValue.NANOS_PER_HOUR);\n }\n\n /**\n * Get the minute component (0-59)\n */\n minute(): number | undefined {\n if (this.value === undefined) return undefined;\n const remainingAfterHours = this.value % TimeValue.NANOS_PER_HOUR;\n return Number(remainingAfterHours / TimeValue.NANOS_PER_MINUTE);\n }\n\n /**\n * Get the second component (0-59)\n */\n second(): number | undefined {\n if (this.value === undefined) return undefined;\n const remainingAfterHours = this.value % TimeValue.NANOS_PER_HOUR;\n const remainingAfterMinutes = remainingAfterHours % TimeValue.NANOS_PER_MINUTE;\n return Number(remainingAfterMinutes / TimeValue.NANOS_PER_SECOND);\n }\n\n /**\n * Get the nanosecond component (0-999999999)\n */\n nanosecond(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value % TimeValue.NANOS_PER_SECOND);\n }\n\n /**\n * Convert to nanoseconds since midnight for storage\n */\n toNanosSinceMidnight(): bigint | undefined {\n return this.value;\n }\n\n /**\n * Create from nanoseconds since midnight\n */\n static fromNanosSinceMidnight(nanos: bigint | number): TimeValue {\n return new TimeValue(typeof nanos === 'number' ? BigInt(nanos) : nanos);\n }\n\n /**\n * Format as HH:MM:SS.nnnnnnnnn string\n */\n toString(): string {\n if (this.value === undefined) {\n return 'undefined';\n }\n\n const hour = this.hour()!;\n const minute = this.minute()!;\n const second = this.second()!;\n const nano = this.nanosecond()!;\n\n const hourStr = String(hour).padStart(2, '0');\n const minuteStr = String(minute).padStart(2, '0');\n const secondStr = String(second).padStart(2, '0');\n const nanoStr = String(nano).padStart(9, '0');\n\n return `${hourStr}:${minuteStr}:${secondStr}.${nanoStr}`;\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n /**\n * Helper to parse HH:MM:SS[.nnnnnnnnn] format\n */\n private static parseTime(str: string): bigint | null {\n // Match HH:MM:SS or HH:MM:SS.fractional\n const match = str.match(/^(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,9}))?$/);\n if (!match) {\n return null;\n }\n\n const hour = parseInt(match[1], 10);\n const minute = parseInt(match[2], 10);\n const second = parseInt(match[3], 10);\n \n // Parse fractional seconds if present\n let nano = 0;\n if (match[4]) {\n // Pad or truncate to 9 digits\n const fracStr = match[4].padEnd(9, '0').substring(0, 9);\n nano = parseInt(fracStr, 10);\n }\n\n // Validate ranges\n if (hour < 0 || hour > 23) {\n return null;\n }\n if (minute < 0 || minute > 59) {\n return null;\n }\n if (second < 0 || second > 59) {\n return null;\n }\n\n const nanos = BigInt(hour) * TimeValue.NANOS_PER_HOUR +\n BigInt(minute) * TimeValue.NANOS_PER_MINUTE +\n BigInt(second) * TimeValue.NANOS_PER_SECOND +\n BigInt(nano);\n\n return nanos;\n }\n\n /**\n * Compare two Time values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherTime = other as TimeValue;\n return this.value === otherTime.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\nimport {DateValue} from \"./date\";\nimport {TimeValue} from \"./time\";\n\n/**\n * A date and time value with nanosecond precision.\n * Always in UTC timezone.\n * Internally stored as months, days, and nanoseconds.\n */\nexport class DateTimeValue implements Value {\n readonly type: Type = \"DateTime\" as const;\n private readonly months?: number; // years*12 + months \n private readonly days?: number; // day of month (1-31)\n private readonly nanos?: bigint; // nanoseconds since midnight\n\n constructor(value?: Date | string | number | bigint) {\n if (value !== undefined) {\n if (value instanceof Date) {\n // Store as UTC with millisecond precision from Date\n const year = value.getUTCFullYear();\n const month = value.getUTCMonth() + 1;\n const day = value.getUTCDate();\n const hour = value.getUTCHours();\n const minute = value.getUTCMinutes();\n const second = value.getUTCSeconds();\n const millis = value.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(millis) * 1_000_000n;\n } else if (typeof value === 'string') {\n // Parse ISO 8601 format\n const parsed = DateTimeValue.parseDateTime(value);\n if (!parsed) {\n throw new Error(`Invalid datetime string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n this.nanos = parsed.nanos;\n } else if (typeof value === 'number') {\n // Interpret as milliseconds since epoch\n const date = new Date(value);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n const hour = date.getUTCHours();\n const minute = date.getUTCMinutes();\n const second = date.getUTCSeconds();\n const millis = date.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(millis) * 1_000_000n;\n } else if (typeof value === 'bigint') {\n // Interpret as nanoseconds since epoch\n const millis = Number(value / 1_000_000n);\n const extraNanos = value % 1_000_000n;\n const date = new Date(millis);\n\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n const hour = date.getUTCHours();\n const minute = date.getUTCMinutes();\n const second = date.getUTCSeconds();\n const dateMillis = date.getUTCMilliseconds();\n\n this.months = year * 12 + (month - 1);\n this.days = day;\n this.nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(dateMillis) * 1_000_000n +\n extraNanos;\n } else {\n throw new Error(`DateTime value must be a Date, string, number, or bigint, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n this.nanos = undefined;\n }\n }\n\n /**\n * Create a DateTimeValue from year, month, day, hour, minute, second, nanosecond\n */\n static fromYMDHMSN(\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number,\n nano: number = 0\n ): DateTimeValue {\n // Validate inputs\n if (hour < 0 || hour > 23) {\n throw new Error(`Invalid hour: ${hour}`);\n }\n if (minute < 0 || minute > 59) {\n throw new Error(`Invalid minute: ${minute}`);\n }\n if (second < 0 || second > 59) {\n throw new Error(`Invalid second: ${second}`);\n }\n if (nano < 0 || nano > 999_999_999) {\n throw new Error(`Invalid nanosecond: ${nano}`);\n }\n\n // Validate the date\n if (!DateTimeValue.isValidDate(year, month, day)) {\n throw new Error(`Invalid datetime: ${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}:${String(second).padStart(2, '0')}`);\n }\n\n const result = new DateTimeValue(undefined);\n (result as any).months = year * 12 + (month - 1);\n (result as any).days = day;\n (result as any).nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n BigInt(nano);\n return result;\n }\n\n /**\n * Create a DateTimeValue from year, month, day, hour, minute, second (no fractional)\n */\n static fromYMDHMS(\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number\n ): DateTimeValue {\n return DateTimeValue.fromYMDHMSN(year, month, day, hour, minute, second, 0);\n }\n\n /**\n * Create from Unix timestamp in seconds\n */\n static fromTimestamp(seconds: number): DateTimeValue {\n return new DateTimeValue(seconds * 1000);\n }\n\n /**\n * Create from Unix timestamp in milliseconds\n */\n static fromTimestampMillis(millis: number): DateTimeValue {\n return new DateTimeValue(millis);\n }\n\n /**\n * Create from nanoseconds since Unix epoch\n */\n static fromNanosSinceEpoch(nanos: bigint): DateTimeValue {\n return new DateTimeValue(nanos);\n }\n\n /**\n * Create from separate seconds and nanoseconds\n */\n static fromParts(seconds: number, nanos: number): DateTimeValue {\n if (nanos < 0 || nanos > 999_999_999) {\n throw new Error(`Invalid nanoseconds: ${nanos}`);\n }\n const millis = seconds * 1000 + Math.floor(nanos / 1_000_000);\n const extraNanos = nanos % 1_000_000;\n const result = new DateTimeValue(millis);\n\n // Add the extra nanoseconds\n if (result.nanos !== undefined) {\n (result as any).nanos = result.nanos + BigInt(extraNanos);\n }\n return result;\n }\n\n /**\n * Get current datetime\n */\n static now(): DateTimeValue {\n return new DateTimeValue(new Date());\n }\n\n /**\n * Get default datetime (Unix epoch)\n */\n static default(): DateTimeValue {\n return DateTimeValue.fromYMDHMS(1970, 1, 1, 0, 0, 0);\n }\n\n /**\n * Parse a datetime string in ISO 8601 format\n */\n static parse(str: string): DateTimeValue {\n const trimmed = str.trim();\n\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new DateTimeValue(undefined);\n }\n\n const parsed = DateTimeValue.parseDateTime(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as DateTime`);\n }\n\n const result = new DateTimeValue(undefined);\n (result as any).months = parsed.months;\n (result as any).days = parsed.days;\n (result as any).nanos = parsed.nanos;\n return result;\n }\n\n /**\n * Get Unix timestamp in seconds\n */\n timestamp(): number | undefined {\n const date = this.valueOf();\n if (date === undefined) return undefined;\n return Math.floor(date.getTime() / 1000);\n }\n\n /**\n * Get Unix timestamp in nanoseconds\n */\n timestampNanos(): bigint | undefined {\n const date = this.valueOf();\n if (date === undefined || this.nanos === undefined) return undefined;\n\n // Convert date to epoch nanoseconds\n const epochNanos = BigInt(date.getTime()) * 1_000_000n;\n\n // The nanos field stores time-of-day, but we already included millis in epochNanos\n // So we need to add only the sub-millisecond portion\n const subMillisNanos = this.nanos % 1_000_000n;\n\n return epochNanos + subMillisNanos;\n }\n\n /**\n * Convert to nanoseconds since Unix epoch for storage\n */\n toNanosSinceEpoch(): bigint | undefined {\n return this.timestampNanos();\n }\n\n /**\n * Get separate seconds and nanoseconds for storage\n */\n toParts(): [number, number] | undefined {\n const date = this.valueOf();\n if (date === undefined || this.nanos === undefined) return undefined;\n\n const seconds = Math.floor(date.getTime() / 1000);\n const millis = date.getTime() % 1000;\n const subMillisNanos = Number(this.nanos % 1_000_000n);\n const nanos = millis * 1_000_000 + subMillisNanos;\n return [seconds, nanos];\n }\n\n /**\n * Get the date component\n */\n date(): DateValue | undefined {\n if (this.months === undefined || this.days === undefined) return undefined;\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n return DateValue.fromYMD(year, month, this.days);\n }\n\n /**\n * Get the time component\n */\n time(): TimeValue | undefined {\n if (this.nanos === undefined) return undefined;\n return new TimeValue(this.nanos);\n }\n\n /**\n * Format as ISO 8601 string with nanosecond precision and Z suffix\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return 'undefined';\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = String(m + 1).padStart(2, '0');\n const day = String(this.days).padStart(2, '0');\n\n // Extract time components from nanos\n const totalNanos = this.nanos;\n const hours = totalNanos / 3_600_000_000_000n;\n const remainingAfterHours = totalNanos % 3_600_000_000_000n;\n const minutes = remainingAfterHours / 60_000_000_000n;\n const remainingAfterMinutes = remainingAfterHours % 60_000_000_000n;\n const seconds = remainingAfterMinutes / 1_000_000_000n;\n const nanosFraction = remainingAfterMinutes % 1_000_000_000n;\n\n const hour = String(Number(hours)).padStart(2, '0');\n const minute = String(Number(minutes)).padStart(2, '0');\n const second = String(Number(seconds)).padStart(2, '0');\n const nanoStr = String(Number(nanosFraction)).padStart(9, '0');\n\n // Handle negative years (BC dates)\n let yearStr: string;\n if (year < 0) {\n const absYear = Math.abs(year);\n yearStr = `-${String(absYear).padStart(4, '0')}`;\n } else {\n yearStr = String(year).padStart(4, '0');\n }\n\n return `${yearStr}-${month}-${day}T${hour}:${minute}:${second}.${nanoStr}Z`;\n }\n\n valueOf(): Date | undefined {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return undefined;\n }\n\n const year = Math.floor(this.months / 12);\n // Handle negative months correctly\n let m = this.months % 12;\n if (m < 0) m += 12;\n const month = m + 1;\n\n // Extract time components\n const totalNanos = this.nanos;\n const hours = Number(totalNanos / 3_600_000_000_000n);\n const remainingAfterHours = totalNanos % 3_600_000_000_000n;\n const minutes = Number(remainingAfterHours / 60_000_000_000n);\n const remainingAfterMinutes = remainingAfterHours % 60_000_000_000n;\n const seconds = Number(remainingAfterMinutes / 1_000_000_000n);\n const nanosFraction = remainingAfterMinutes % 1_000_000_000n;\n const millis = Number(nanosFraction / 1_000_000n);\n\n // Handle years < 100 specially\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, this.days, hours, minutes, seconds, millis));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, this.days, hours, minutes, seconds, millis));\n }\n\n return date;\n }\n\n /**\n * Get the internal representation as a Date\n */\n get value(): Date | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse ISO 8601 datetime format\n */\n private static parseDateTime(str: string): { months: number; days: number; nanos: bigint } | null {\n // Match ISO 8601 format: YYYY-MM-DDTHH:MM:SS[.nnnnnnnnn]Z\n const match = str.match(/^(-?\\d{1,4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,9}))?Z$/);\n if (!match) {\n return null;\n }\n\n const year = parseInt(match[1], 10);\n const month = parseInt(match[2], 10);\n const day = parseInt(match[3], 10);\n const hour = parseInt(match[4], 10);\n const minute = parseInt(match[5], 10);\n const second = parseInt(match[6], 10);\n\n // Parse fractional seconds if present\n let nanosFraction = 0n;\n if (match[7]) {\n // Pad or truncate to 9 digits\n const fracStr = match[7].padEnd(9, '0').substring(0, 9);\n nanosFraction = BigInt(fracStr);\n }\n\n // Validate ranges\n if (month < 1 || month > 12) {\n return null;\n }\n if (day < 1 || day > 31) {\n return null;\n }\n if (hour < 0 || hour > 23) {\n return null;\n }\n if (minute < 0 || minute > 59) {\n return null;\n }\n if (second < 0 || second > 59) {\n return null;\n }\n\n // Validate the date is valid\n if (!DateTimeValue.isValidDate(year, month, day)) {\n return null;\n }\n\n const months = year * 12 + (month - 1);\n const nanos = BigInt(hour) * 3_600_000_000_000n +\n BigInt(minute) * 60_000_000_000n +\n BigInt(second) * 1_000_000_000n +\n nanosFraction;\n\n return {months, days: day, nanos};\n }\n\n /**\n * Helper to validate a date\n */\n private static isValidDate(year: number, month: number, day: number): boolean {\n // Create a date and check if components match\n let date: Date;\n if (year >= 0 && year < 100) {\n date = new Date(Date.UTC(2000, month - 1, day));\n date.setUTCFullYear(year);\n } else {\n date = new Date(Date.UTC(year, month - 1, day));\n }\n\n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day;\n }\n\n /**\n * Compare two datetimes for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherDateTime = other as DateTimeValue;\n if (this.months === undefined || otherDateTime.months === undefined) {\n return this.months === otherDateTime.months && \n this.days === otherDateTime.days && \n this.nanos === otherDateTime.nanos;\n }\n \n return this.months === otherDateTime.months && \n this.days === otherDateTime.days && \n this.nanos === otherDateTime.nanos;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Float4Value implements Value {\n\n private static readonly MAX_VALUE = 3.4028235e+38;\n private static readonly MIN_VALUE = -3.4028235e+38;\n private static readonly MIN_POSITIVE = 1.175494e-38;\n\n readonly type: Type = \"Float4\" as const;\n public readonly value?: number;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (typeof value !== 'number') {\n throw new Error(`Float4 value must be a number, got ${typeof value}`);\n }\n\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n this.value = undefined;\n } else {\n // Clamp to Float32 range\n if (value !== 0 && Math.abs(value) < Float4Value.MIN_POSITIVE) {\n // Underflow to zero\n this.value = 0;\n } else if (value > Float4Value.MAX_VALUE) {\n throw new Error(`Float4 overflow: value ${value} exceeds maximum ${Float4Value.MAX_VALUE}`);\n } else if (value < Float4Value.MIN_VALUE) {\n throw new Error(`Float4 underflow: value ${value} exceeds minimum ${Float4Value.MIN_VALUE}`);\n } else {\n // Convert to Float32 precision\n const float32Array = new Float32Array(1);\n float32Array[0] = value;\n this.value = float32Array[0];\n }\n }\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Float4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Float4Value(undefined);\n }\n\n const num = Number(trimmed);\n\n if (Number.isNaN(num) && trimmed.toLowerCase() !== 'nan') {\n throw new Error(`Cannot parse \"${str}\" as Float4`);\n }\n\n return new Float4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Float4 values for equality with limited precision\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherFloat = other as Float4Value;\n if (this.value === undefined || otherFloat.value === undefined) {\n return this.value === otherFloat.value;\n }\n \n // For Float4, use approximate comparison due to limited precision\n const epsilon = 1e-6; // Float32 has about 7 decimal digits of precision\n return Math.abs(this.value - otherFloat.value) <= epsilon;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Float8Value implements Value {\n readonly type: Type = \"Float8\" as const;\n public readonly value?: number;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (typeof value !== 'number') {\n throw new Error(`Float8 value must be a number, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Float8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Float8Value(undefined);\n }\n\n const num = Number(trimmed);\n\n if (Number.isNaN(num) && trimmed.toLowerCase() !== 'nan') {\n throw new Error(`Cannot parse \"${str}\" as Float8`);\n }\n\n return new Float8Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Float8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherFloat = other as Float8Value;\n return this.value === otherFloat.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}\n","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int1Value implements Value {\n readonly type: Type = \"Int1\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -128;\n private static readonly MAX_VALUE = 127;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int1 value must be an integer, got ${value}`);\n }\n if (value < Int1Value.MIN_VALUE || value > Int1Value.MAX_VALUE) {\n throw new Error(`Int1 value must be between ${Int1Value.MIN_VALUE} and ${Int1Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int1Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int1Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int1`);\n }\n \n return new Int1Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int1 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int1Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int2Value implements Value {\n readonly type: Type = \"Int2\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -32768;\n private static readonly MAX_VALUE = 32767;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int2 value must be an integer, got ${value}`);\n }\n if (value < Int2Value.MIN_VALUE || value > Int2Value.MAX_VALUE) {\n throw new Error(`Int2 value must be between ${Int2Value.MIN_VALUE} and ${Int2Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int2Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int2Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int2`);\n }\n \n return new Int2Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int2 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int2Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int4Value implements Value {\n readonly type: Type = \"Int4\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = -2147483648;\n private static readonly MAX_VALUE = 2147483647;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Int4 value must be an integer, got ${value}`);\n }\n if (value < Int4Value.MIN_VALUE || value > Int4Value.MAX_VALUE) {\n throw new Error(`Int4 value must be between ${Int4Value.MIN_VALUE} and ${Int4Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Int4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int4Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Int4`);\n }\n \n return new Int4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int4Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int8Value implements Value {\n readonly type: Type = \"Int8\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(\"-9223372036854775808\");\n private static readonly MAX_VALUE = BigInt(\"9223372036854775807\");\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n \n if (bigintValue < Int8Value.MIN_VALUE || bigintValue > Int8Value.MAX_VALUE) {\n throw new Error(`Int8 value must be between ${Int8Value.MIN_VALUE} and ${Int8Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Int8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int8Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Int8`);\n }\n \n if (value < Int8Value.MIN_VALUE || value > Int8Value.MAX_VALUE) {\n throw new Error(`Int8 value must be between ${Int8Value.MIN_VALUE} and ${Int8Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Int8Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int8Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Int16Value implements Value {\n readonly type: Type = \"Int16\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(\"-170141183460469231731687303715884105728\");\n private static readonly MAX_VALUE = BigInt(\"170141183460469231731687303715884105727\");\n\n constructor(value?: bigint | number | string) {\n if (value !== undefined) {\n let bigintValue: bigint;\n \n if (typeof value === 'string') {\n try {\n bigintValue = BigInt(value);\n } catch (e) {\n throw new Error(`Int16 value must be a valid integer, got ${value}`);\n }\n } else if (typeof value === 'number') {\n bigintValue = BigInt(Math.trunc(value));\n } else {\n bigintValue = value;\n }\n \n if (bigintValue < Int16Value.MIN_VALUE || bigintValue > Int16Value.MAX_VALUE) {\n throw new Error(`Int16 value must be between ${Int16Value.MIN_VALUE} and ${Int16Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Int16Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Int16Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Int16`);\n }\n \n if (value < Int16Value.MIN_VALUE || value > Int16Value.MAX_VALUE) {\n throw new Error(`Int16 value must be between ${Int16Value.MIN_VALUE} and ${Int16Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Int16Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Int16 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInt = other as Int16Value;\n return this.value === otherInt.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * An interval value representing a duration between two points in time.\n * Internally stored as months, days, and nanoseconds.\n */\nexport class IntervalValue implements Value {\n readonly type: Type = \"Interval\" as const;\n private readonly months?: number; // years*12 + months\n private readonly days?: number; // separate days (don't normalize due to variable month length)\n private readonly nanos?: bigint; // all time components as nanoseconds\n\n constructor(value?: { months: number; days: number; nanos: bigint } | string) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n // Parse ISO 8601 duration format\n const parsed = IntervalValue.parseDuration(value);\n if (!parsed) {\n throw new Error(`Invalid interval string: ${value}`);\n }\n this.months = parsed.months;\n this.days = parsed.days;\n this.nanos = parsed.nanos;\n } else if (typeof value === 'object' && value !== null) {\n this.months = value.months;\n this.days = value.days;\n this.nanos = value.nanos;\n } else {\n throw new Error(`Interval value must be an object or string, got ${typeof value}`);\n }\n } else {\n this.months = undefined;\n this.days = undefined;\n this.nanos = undefined;\n }\n }\n\n /**\n * Create a new interval from months, days, and nanoseconds\n */\n static new(months: number, days: number, nanos: bigint): IntervalValue {\n return new IntervalValue({ months, days, nanos });\n }\n\n /**\n * Create an interval from seconds\n */\n static fromSeconds(seconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(seconds) * 1_000_000_000n });\n }\n\n /**\n * Create an interval from milliseconds\n */\n static fromMilliseconds(milliseconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(milliseconds) * 1_000_000n });\n }\n\n /**\n * Create an interval from microseconds\n */\n static fromMicroseconds(microseconds: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(microseconds) * 1_000n });\n }\n\n /**\n * Create an interval from nanoseconds\n */\n static fromNanoseconds(nanoseconds: bigint): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: nanoseconds });\n }\n\n /**\n * Create an interval from minutes\n */\n static fromMinutes(minutes: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(minutes) * 60n * 1_000_000_000n });\n }\n\n /**\n * Create an interval from hours\n */\n static fromHours(hours: number): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: BigInt(hours) * 60n * 60n * 1_000_000_000n });\n }\n\n /**\n * Create an interval from days\n */\n static fromDays(days: number): IntervalValue {\n return new IntervalValue({ months: 0, days, nanos: 0n });\n }\n\n /**\n * Create an interval from weeks\n */\n static fromWeeks(weeks: number): IntervalValue {\n return new IntervalValue({ months: 0, days: weeks * 7, nanos: 0n });\n }\n\n /**\n * Create an interval from months\n */\n static fromMonths(months: number): IntervalValue {\n return new IntervalValue({ months, days: 0, nanos: 0n });\n }\n\n /**\n * Create an interval from years\n */\n static fromYears(years: number): IntervalValue {\n return new IntervalValue({ months: years * 12, days: 0, nanos: 0n });\n }\n\n /**\n * Create a zero interval\n */\n static zero(): IntervalValue {\n return new IntervalValue({ months: 0, days: 0, nanos: 0n });\n }\n\n /**\n * Get default interval (zero)\n */\n static default(): IntervalValue {\n return IntervalValue.zero();\n }\n\n /**\n * Parse an interval string in ISO 8601 duration format\n */\n static parse(str: string): IntervalValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new IntervalValue(undefined);\n }\n\n const parsed = IntervalValue.parseDuration(trimmed);\n if (!parsed) {\n throw new Error(`Cannot parse \"${str}\" as Interval`);\n }\n\n return new IntervalValue({ months: parsed.months, days: parsed.days, nanos: parsed.nanos });\n }\n\n /**\n * Get total seconds (truncated)\n */\n seconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000_000_000n;\n }\n\n /**\n * Get total milliseconds (truncated)\n */\n milliseconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000_000n;\n }\n\n /**\n * Get total microseconds (truncated)\n */\n microseconds(): bigint | undefined {\n if (this.nanos === undefined) return undefined;\n return this.nanos / 1_000n;\n }\n\n /**\n * Get total nanoseconds\n */\n nanoseconds(): bigint | undefined {\n return this.nanos;\n }\n\n /**\n * Get months component\n */\n getMonths(): number | undefined {\n return this.months;\n }\n\n /**\n * Get days component\n */\n getDays(): number | undefined {\n return this.days;\n }\n\n /**\n * Get nanoseconds component\n */\n getNanos(): bigint | undefined {\n return this.nanos;\n }\n\n /**\n * Check if interval is positive (any component > 0)\n */\n isPositive(): boolean {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return false;\n }\n return this.months > 0 || this.days > 0 || this.nanos > 0n;\n }\n\n /**\n * Check if interval is negative (any component < 0)\n */\n isNegative(): boolean {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return false;\n }\n return this.months < 0 || this.days < 0 || this.nanos < 0n;\n }\n\n /**\n * Get absolute value of interval\n */\n abs(): IntervalValue {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return new IntervalValue(undefined);\n }\n return new IntervalValue({\n months: Math.abs(this.months),\n days: Math.abs(this.days),\n nanos: this.nanos < 0n ? -this.nanos : this.nanos\n });\n }\n\n /**\n * Negate the interval\n */\n negate(): IntervalValue {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return new IntervalValue(undefined);\n }\n return new IntervalValue({\n months: -this.months,\n days: -this.days,\n nanos: -this.nanos\n });\n }\n\n /**\n * Format as ISO 8601 duration string\n */\n toString(): string {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return 'undefined';\n }\n\n // Handle zero interval\n if (this.months === 0 && this.days === 0 && this.nanos === 0n) {\n return 'PT0S';\n }\n\n let result = 'P';\n\n // Extract years and months\n const years = Math.floor(this.months / 12);\n const months = this.months % 12;\n\n if (years !== 0) {\n result += `${years}Y`;\n }\n\n if (months !== 0) {\n result += `${months}M`;\n }\n\n // Time components from nanos with normalization\n const totalSeconds = this.nanos / 1_000_000_000n;\n const remainingNanos = this.nanos % 1_000_000_000n;\n\n // Normalize to days if hours >= 24\n const extraDays = totalSeconds / 86400n; // 24 * 60 * 60\n const remainingSeconds = totalSeconds % 86400n;\n\n const displayDays = this.days + Number(extraDays);\n const hours = remainingSeconds / 3600n;\n const minutes = (remainingSeconds % 3600n) / 60n;\n const seconds = remainingSeconds % 60n;\n\n if (displayDays !== 0) {\n result += `${displayDays}D`;\n }\n\n // Add time components if any\n if (hours !== 0n || minutes !== 0n || seconds !== 0n || remainingNanos !== 0n) {\n result += 'T';\n\n if (hours !== 0n) {\n result += `${hours}H`;\n }\n\n if (minutes !== 0n) {\n result += `${minutes}M`;\n }\n\n if (seconds !== 0n || remainingNanos !== 0n) {\n if (remainingNanos !== 0n) {\n // Format fractional seconds with trailing zeros removed\n const fractional = Number(remainingNanos) / 1_000_000_000;\n const totalSecondsFloat = Number(seconds) + fractional;\n // Format with 9 decimal places then remove trailing zeros\n const formatted = totalSecondsFloat.toFixed(9).replace(/0+$/, '').replace(/\\.$/, '');\n result += `${formatted}S`;\n } else {\n result += `${seconds}S`;\n }\n }\n }\n\n return result;\n }\n\n valueOf(): { months: number; days: number; nanos: bigint } | undefined {\n if (this.months === undefined || this.days === undefined || this.nanos === undefined) {\n return undefined;\n }\n return { months: this.months, days: this.days, nanos: this.nanos };\n }\n\n /**\n * Get the internal representation\n */\n get value(): { months: number; days: number; nanos: bigint } | undefined {\n return this.valueOf();\n }\n\n /**\n * Helper to parse ISO 8601 duration format\n */\n private static parseDuration(str: string): { months: number; days: number; nanos: bigint } | null {\n // Match ISO 8601 duration format: P[n]Y[n]M[n]DT[n]H[n]M[n.n]S\n // Also handle negative durations\n const negative = str.startsWith('-');\n const cleanStr = negative ? str.substring(1) : str;\n \n if (!cleanStr.startsWith('P')) {\n return null;\n }\n\n const match = cleanStr.match(/^P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$/);\n if (!match) {\n return null;\n }\n \n // Check if the match has at least one value\n if (!match[1] && !match[2] && !match[3] && !match[4] && !match[5] && !match[6]) {\n return null; // Invalid: P without any values\n }\n\n const years = parseInt(match[1] || '0', 10);\n const months = parseInt(match[2] || '0', 10);\n const days = parseInt(match[3] || '0', 10);\n const hours = parseInt(match[4] || '0', 10);\n const minutes = parseInt(match[5] || '0', 10);\n const secondsStr = match[6] || '0';\n\n // Parse seconds and fractional seconds\n const secondsParts = secondsStr.split('.');\n const wholeSeconds = parseInt(secondsParts[0] || '0', 10);\n let fracNanos = 0n;\n if (secondsParts.length > 1) {\n // Pad fractional part to 9 digits\n const fracStr = secondsParts[1].padEnd(9, '0').substring(0, 9);\n fracNanos = BigInt(fracStr);\n }\n\n // Calculate total nanoseconds\n const totalNanos = BigInt(hours) * 3600n * 1_000_000_000n +\n BigInt(minutes) * 60n * 1_000_000_000n +\n BigInt(wholeSeconds) * 1_000_000_000n +\n fracNanos;\n\n const totalMonths = years * 12 + months;\n\n if (negative) {\n return {\n months: -totalMonths,\n days: -days,\n nanos: -totalNanos\n };\n } else {\n return {\n months: totalMonths,\n days: days,\n nanos: totalNanos\n };\n }\n }\n\n /**\n * Compare two intervals for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherInterval = other as IntervalValue;\n if (this.months === undefined || otherInterval.months === undefined) {\n return this.months === otherInterval.months && \n this.days === otherInterval.days && \n this.nanos === otherInterval.nanos;\n }\n \n return this.months === otherInterval.months && \n this.days === otherInterval.days && \n this.nanos === otherInterval.nanos;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint1Value implements Value {\n readonly type: Type = \"Uint1\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 255;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint1 value must be an integer, got ${value}`);\n }\n if (value < Uint1Value.MIN_VALUE || value > Uint1Value.MAX_VALUE) {\n throw new Error(`Uint1 value must be between ${Uint1Value.MIN_VALUE} and ${Uint1Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint1Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint1Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint1`);\n }\n \n return new Uint1Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint1 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint1Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint2Value implements Value {\n readonly type: Type = \"Uint2\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 65535;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint2 value must be an integer, got ${value}`);\n }\n if (value < Uint2Value.MIN_VALUE || value > Uint2Value.MAX_VALUE) {\n throw new Error(`Uint2 value must be between ${Uint2Value.MIN_VALUE} and ${Uint2Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint2Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint2Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint2`);\n }\n \n return new Uint2Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint2 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint2Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint4Value implements Value {\n readonly type: Type = \"Uint4\" as const;\n public readonly value?: number;\n\n private static readonly MIN_VALUE = 0;\n private static readonly MAX_VALUE = 4294967295;\n\n constructor(value?: number) {\n if (value !== undefined) {\n if (!Number.isInteger(value)) {\n throw new Error(`Uint4 value must be an integer, got ${value}`);\n }\n if (value < Uint4Value.MIN_VALUE || value > Uint4Value.MAX_VALUE) {\n throw new Error(`Uint4 value must be between ${Uint4Value.MIN_VALUE} and ${Uint4Value.MAX_VALUE}, got ${value}`);\n }\n }\n this.value = value;\n }\n\n static parse(str: string): Uint4Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint4Value(undefined);\n }\n \n const num = Number(trimmed);\n \n if (isNaN(num)) {\n throw new Error(`Cannot parse \"${str}\" as Uint4`);\n }\n \n return new Uint4Value(num);\n }\n\n valueOf(): number | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint4Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint8Value implements Value {\n readonly type: Type = \"Uint8\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"18446744073709551615\");\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n \n if (bigintValue < Uint8Value.MIN_VALUE || bigintValue > Uint8Value.MAX_VALUE) {\n throw new Error(`Uint8 value must be between ${Uint8Value.MIN_VALUE} and ${Uint8Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Uint8Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint8Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Uint8`);\n }\n \n if (value < Uint8Value.MIN_VALUE || value > Uint8Value.MAX_VALUE) {\n throw new Error(`Uint8 value must be between ${Uint8Value.MIN_VALUE} and ${Uint8Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Uint8Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toNumber(): number | undefined {\n if (this.value === undefined) return undefined;\n return Number(this.value);\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint8Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Uint16Value implements Value {\n readonly type: Type = \"Uint16\" as const;\n public readonly value?: bigint;\n\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"340282366920938463463374607431768211455\");\n\n constructor(value?: bigint | number | string) {\n if (value !== undefined) {\n let bigintValue: bigint;\n \n if (typeof value === 'string') {\n try {\n bigintValue = BigInt(value);\n } catch (e) {\n throw new Error(`Uint16 value must be a valid integer, got ${value}`);\n }\n } else if (typeof value === 'number') {\n bigintValue = BigInt(Math.trunc(value));\n } else {\n bigintValue = value;\n }\n \n if (bigintValue < Uint16Value.MIN_VALUE || bigintValue > Uint16Value.MAX_VALUE) {\n throw new Error(`Uint16 value must be between ${Uint16Value.MIN_VALUE} and ${Uint16Value.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Uint16Value {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uint16Value(undefined);\n }\n \n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as Uint16`);\n }\n \n if (value < Uint16Value.MIN_VALUE || value > Uint16Value.MAX_VALUE) {\n throw new Error(`Uint16 value must be between ${Uint16Value.MIN_VALUE} and ${Uint16Value.MAX_VALUE}, got ${value}`);\n }\n \n return new Uint16Value(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two Uint16 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUint = other as Uint16Value;\n return this.value === otherUint.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class RowNumberValue implements Value {\n private static readonly MIN_VALUE = BigInt(0);\n private static readonly MAX_VALUE = BigInt(\"18446744073709551615\");\n readonly type: Type = \"RowNumber\" as const;\n public readonly value?: bigint;\n\n constructor(value?: bigint | number) {\n if (value !== undefined) {\n const bigintValue = typeof value === 'number' ? BigInt(Math.trunc(value)) : value;\n\n if (bigintValue < RowNumberValue.MIN_VALUE || bigintValue > RowNumberValue.MAX_VALUE) {\n throw new Error(`RowNumber value must be between ${RowNumberValue.MIN_VALUE} and ${RowNumberValue.MAX_VALUE}, got ${bigintValue}`);\n }\n this.value = bigintValue;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): RowNumberValue {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new RowNumberValue(undefined);\n }\n\n let value: bigint;\n try {\n value = BigInt(trimmed);\n } catch (e) {\n throw new Error(`Cannot parse \"${str}\" as RowNumber`);\n }\n\n if (value < RowNumberValue.MIN_VALUE || value > RowNumberValue.MAX_VALUE) {\n throw new Error(`RowNumber value must be between ${RowNumberValue.MIN_VALUE} and ${RowNumberValue.MAX_VALUE}, got ${value}`);\n }\n\n return new RowNumberValue(value);\n }\n\n valueOf(): bigint | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value.toString();\n }\n\n /**\n * Compare two RowNumber values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherRowNumber = other as RowNumberValue;\n return this.value === otherRowNumber.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\n/**\n * An undefined value wrapper type\n */\nexport class UndefinedValue implements Value {\n readonly type: Type = \"Undefined\" as const;\n\n constructor() {\n // Always undefined, no parameters needed\n }\n\n /**\n * Create a new UndefinedValue\n */\n static new(): UndefinedValue {\n return new UndefinedValue();\n }\n\n /**\n * Get default UndefinedValue\n */\n static default(): UndefinedValue {\n return new UndefinedValue();\n }\n\n /**\n * Parse a string as undefined\n */\n static parse(str: string): UndefinedValue {\n const trimmed = str.trim();\n if (trimmed === '' || trimmed === UNDEFINED_VALUE || trimmed === 'undefined') {\n return new UndefinedValue();\n }\n throw new Error(`Cannot parse \"${str}\" as Undefined`);\n }\n\n /**\n * Check if this value is undefined (always true)\n */\n isUndefined(): boolean {\n return true;\n }\n\n /**\n * Format as string\n */\n toString(): string {\n return 'undefined';\n }\n\n valueOf(): undefined {\n return undefined;\n }\n\n /**\n * Get the internal representation (always undefined)\n */\n get value(): undefined {\n return undefined;\n }\n\n /**\n * Compare two undefined values (always equal)\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n return true;\n }\n\n /**\n * Compare two undefined values for ordering (always equal)\n */\n compare(other: UndefinedValue): number {\n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, Value, TypeValuePair} from \".\";\nimport {UNDEFINED_VALUE} from \"../constant\";\n\nexport class Utf8Value implements Value {\n readonly type: Type = \"Utf8\" as const;\n public readonly value?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Utf8 value must be a string, got ${typeof value}`);\n }\n this.value = value;\n } else {\n this.value = undefined;\n }\n }\n\n static parse(str: string): Utf8Value {\n if (str === UNDEFINED_VALUE) {\n return new Utf8Value(undefined);\n }\n \n return new Utf8Value(str);\n }\n\n valueOf(): string | undefined {\n return this.value;\n }\n\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value;\n }\n\n /**\n * Compare two Utf8 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUtf8 = other as Utf8Value;\n return this.value === otherUtf8.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v4 as uuidv4, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A UUID version 4 (random) value type\n */\nexport class Uuid4Value implements Value {\n readonly type: Type = \"Uuid4\" as const;\n private readonly uuid?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Uuid4 value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format: ${value}`);\n }\n \n // Check version (allow v4 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 4) {\n throw new Error(`Invalid UUID version for Uuid4: expected v4, got v${ver}`);\n }\n \n this.uuid = value.toLowerCase();\n } else {\n this.uuid = undefined;\n }\n }\n\n /**\n * Generate a new random UUID v4\n */\n static generate(): Uuid4Value {\n return new Uuid4Value(uuidv4());\n }\n\n /**\n * Create a new Uuid4Value from a string\n */\n static new(uuid: string): Uuid4Value {\n return new Uuid4Value(uuid);\n }\n\n /**\n * Get the nil UUID (all zeros)\n */\n static nil(): Uuid4Value {\n return new Uuid4Value(NIL_UUID);\n }\n\n /**\n * Get default Uuid4Value (nil UUID)\n */\n static default(): Uuid4Value {\n return Uuid4Value.nil();\n }\n\n /**\n * Parse a UUID string\n */\n static parse(str: string): Uuid4Value {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uuid4Value(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as Uuid4`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 4) {\n throw new Error(`Cannot parse \"${str}\" as Uuid4: wrong version (v${ver})`);\n }\n\n return new Uuid4Value(trimmed);\n }\n\n /**\n * Get the UUID string\n */\n asString(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the UUID as bytes (16-byte array)\n */\n asBytes(): Uint8Array | undefined {\n if (this.uuid === undefined) return undefined;\n \n // Remove hyphens and convert hex to bytes\n const hex = this.uuid.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.uuid === NIL_UUID;\n }\n\n /**\n * Get the UUID version\n */\n getVersion(): number | undefined {\n if (this.uuid === undefined) return undefined;\n return version(this.uuid);\n }\n\n /**\n * Format as string\n */\n toString(): string {\n if (this.uuid === undefined) {\n return 'undefined';\n }\n return this.uuid;\n }\n\n valueOf(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the internal representation\n */\n get value(): string | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two UUID4 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUuid = other as Uuid4Value;\n return this.uuid === otherUuid.uuid;\n }\n\n /**\n * Compare two UUID4 values (for ordering)\n */\n compare(other: Uuid4Value): number {\n if (this.uuid === undefined || other.uuid === undefined) {\n if (this.uuid === other.uuid) return 0;\n if (this.uuid === undefined) return -1;\n return 1;\n }\n \n // Compare as bytes for consistent ordering\n const thisBytes = this.asBytes()!;\n const otherBytes = other.asBytes()!;\n \n for (let i = 0; i < 16; i++) {\n if (thisBytes[i] < otherBytes[i]) return -1;\n if (thisBytes[i] > otherBytes[i]) return 1;\n }\n \n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v7 as uuidv7, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * A UUID version 7 (timestamp-based) value type\n */\nexport class Uuid7Value implements Value {\n readonly type: Type = \"Uuid7\" as const;\n private readonly uuid?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`Uuid7 value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format: ${value}`);\n }\n \n // Check version (allow v7 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 7) {\n throw new Error(`Invalid UUID version for Uuid7: expected v7, got v${ver}`);\n }\n \n this.uuid = value.toLowerCase();\n } else {\n this.uuid = undefined;\n }\n }\n\n /**\n * Generate a new timestamp-based UUID v7\n */\n static generate(): Uuid7Value {\n return new Uuid7Value(uuidv7());\n }\n\n /**\n * Create a new Uuid7Value from a string\n */\n static new(uuid: string): Uuid7Value {\n return new Uuid7Value(uuid);\n }\n\n /**\n * Get the nil UUID (all zeros)\n */\n static nil(): Uuid7Value {\n return new Uuid7Value(NIL_UUID);\n }\n\n /**\n * Get default Uuid7Value (nil UUID)\n */\n static default(): Uuid7Value {\n return Uuid7Value.nil();\n }\n\n /**\n * Parse a UUID string\n */\n static parse(str: string): Uuid7Value {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new Uuid7Value(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as Uuid7`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 7) {\n throw new Error(`Cannot parse \"${str}\" as Uuid7: wrong version (v${ver})`);\n }\n\n return new Uuid7Value(trimmed);\n }\n\n /**\n * Get the UUID string\n */\n asString(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the UUID as bytes (16-byte array)\n */\n asBytes(): Uint8Array | undefined {\n if (this.uuid === undefined) return undefined;\n \n // Remove hyphens and convert hex to bytes\n const hex = this.uuid.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n /**\n * Extract the timestamp from UUID v7 (milliseconds since Unix epoch)\n */\n getTimestamp(): number | undefined {\n if (this.uuid === undefined || this.uuid === NIL_UUID) return undefined;\n \n // UUID v7 has a 48-bit timestamp in the first 6 bytes\n const hex = this.uuid.replace(/-/g, '');\n const timestampHex = hex.substring(0, 12);\n const timestamp = parseInt(timestampHex, 16);\n return timestamp;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.uuid === NIL_UUID;\n }\n\n /**\n * Get the UUID version\n */\n getVersion(): number | undefined {\n if (this.uuid === undefined) return undefined;\n return version(this.uuid);\n }\n\n /**\n * Format as string\n */\n toString(): string {\n if (this.uuid === undefined) {\n return 'undefined';\n }\n return this.uuid;\n }\n\n valueOf(): string | undefined {\n return this.uuid;\n }\n\n /**\n * Get the internal representation\n */\n get value(): string | undefined {\n return this.valueOf();\n }\n\n /**\n * Compare two UUID7 values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherUuid = other as Uuid7Value;\n return this.uuid === otherUuid.uuid;\n }\n\n /**\n * Compare two UUID7 values (for ordering)\n * UUID v7 has timestamp-based ordering for UUIDs generated close in time\n */\n compare(other: Uuid7Value): number {\n if (this.uuid === undefined || other.uuid === undefined) {\n if (this.uuid === other.uuid) return 0;\n if (this.uuid === undefined) return -1;\n return 1;\n }\n \n // Compare as bytes for consistent ordering\n const thisBytes = this.asBytes()!;\n const otherBytes = other.asBytes()!;\n \n for (let i = 0; i < 16; i++) {\n if (thisBytes[i] < otherBytes[i]) return -1;\n if (thisBytes[i] > otherBytes[i]) return 1;\n }\n \n return 0;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { v7 as uuidv7, NIL as NIL_UUID, validate, version } from 'uuid';\nimport { Type, Value, TypeValuePair } from \".\";\nimport { UNDEFINED_VALUE } from \"../constant\";\n\n/**\n * An IdentityId value type that wraps a UUID v7\n */\nexport class IdentityIdValue implements Value {\n readonly type: Type = \"IdentityId\" as const;\n public readonly value?: string;\n\n constructor(value?: string) {\n if (value !== undefined) {\n if (typeof value !== 'string') {\n throw new Error(`IdentityId value must be a string, got ${typeof value}`);\n }\n \n // Validate UUID format\n if (!validate(value)) {\n throw new Error(`Invalid UUID format for IdentityId: ${value}`);\n }\n \n // Check version (allow v7 or nil UUID)\n const ver = version(value);\n if (value !== NIL_UUID && ver !== 7) {\n throw new Error(`Invalid UUID version for IdentityId: expected v7, got v${ver}`);\n }\n \n this.value = value.toLowerCase();\n } else {\n this.value = undefined;\n }\n }\n\n /**\n * Generate a new IdentityId with a UUID v7\n */\n static generate(): IdentityIdValue {\n return new IdentityIdValue(uuidv7());\n }\n\n /**\n * Get the nil IdentityId (all zeros)\n */\n static nil(): IdentityIdValue {\n return new IdentityIdValue(NIL_UUID);\n }\n\n /**\n * Parse a string as an IdentityId\n */\n static parse(str: string): IdentityIdValue {\n const trimmed = str.trim();\n \n if (trimmed === '' || trimmed === UNDEFINED_VALUE) {\n return new IdentityIdValue(undefined);\n }\n\n // Try to parse as UUID\n if (!validate(trimmed)) {\n throw new Error(`Cannot parse \"${str}\" as IdentityId`);\n }\n\n const ver = version(trimmed);\n if (trimmed !== NIL_UUID && ver !== 7) {\n throw new Error(`Cannot parse \"${str}\" as IdentityId: wrong UUID version (v${ver})`);\n }\n\n return new IdentityIdValue(trimmed);\n }\n\n /**\n * Get the UUID string value\n */\n valueOf(): string | undefined {\n return this.value;\n }\n\n /**\n * Format as string\n */\n toString(): string {\n return this.value === undefined ? 'undefined' : this.value;\n }\n\n /**\n * Extract the timestamp from the UUID v7 (milliseconds since Unix epoch)\n */\n getTimestamp(): number | undefined {\n if (this.value === undefined || this.value === NIL_UUID) return undefined;\n \n // UUID v7 has a 48-bit timestamp in the first 6 bytes\n const hex = this.value.replace(/-/g, '');\n const timestampHex = hex.substring(0, 12);\n const timestamp = parseInt(timestampHex, 16);\n return timestamp;\n }\n\n /**\n * Check if this is the nil UUID\n */\n isNil(): boolean {\n return this.value === NIL_UUID;\n }\n\n /**\n * Compare two IdentityId values for equality\n */\n equals(other: Value): boolean {\n if (other.type !== this.type) {\n return false;\n }\n \n const otherIdentityId = other as IdentityIdValue;\n return this.value === otherIdentityId.value;\n }\n\n encode(): TypeValuePair {\n return {\n type: this.type,\n value: this.value === undefined ? UNDEFINED_VALUE : this.toString()\n };\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nexport {BlobValue} from './blob';\nexport {BoolValue} from './bool';\nexport {DateValue} from './date';\nexport {DateTimeValue} from './datetime';\nexport {Float4Value} from './float4';\nexport {Float8Value} from './float8';\nexport {Int1Value} from './int1';\nexport {Int2Value} from './int2';\nexport {Int4Value} from './int4';\nexport {Int8Value} from './int8';\nexport {Int16Value} from './int16';\nexport {IntervalValue} from './interval';\nexport {TimeValue} from './time';\nexport {Uint1Value} from './uint1';\nexport {Uint2Value} from './uint2';\nexport {Uint4Value} from './uint4';\nexport {Uint8Value} from './uint8';\nexport {Uint16Value} from './uint16';\nexport {RowNumberValue} from './rownumber';\nexport {UndefinedValue} from './undefined';\nexport {Utf8Value} from './utf8';\nexport {Uuid4Value} from './uuid4';\nexport {Uuid7Value} from './uuid7';\nexport {IdentityIdValue} from './identityid';\n\nexport type Type =\n | \"Blob\"\n | \"Bool\"\n | \"Float4\" | \"Float8\"\n | \"Int1\" | \"Int2\" | \"Int4\" | \"Int8\" | \"Int16\"\n | \"Uint1\" | \"Uint2\" | \"Uint4\" | \"Uint8\" | \"Uint16\"\n | \"Utf8\"\n | \"Date\" | \"DateTime\" | \"Time\" | \"Interval\"\n | \"Uuid4\" | \"Uuid7\"\n | \"Undefined\"\n | \"RowNumber\"\n | \"IdentityId\";\n\nexport interface TypeValuePair {\n type: Type;\n value: string;\n}\n\nexport abstract class Value {\n abstract readonly type: Type;\n\n public abstract encode(): TypeValuePair;\n public abstract equals(other: Value): boolean;\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n BlobValue, BoolValue, DateValue, DateTimeValue, Float4Value, Float8Value,\n Int1Value, Int2Value, Int4Value, Int8Value, Int16Value, IntervalValue,\n RowNumberValue, TimeValue, Uint1Value, Uint2Value, Uint4Value, Uint8Value,\n Uint16Value, UndefinedValue, Utf8Value, Uuid4Value, Uuid7Value, IdentityIdValue,\n Value, TypeValuePair\n} from './value';\n\n\nexport function decode(pair: TypeValuePair): Value {\n switch (pair.type) {\n case \"Blob\":\n return BlobValue.parse(pair.value);\n case \"Bool\":\n return BoolValue.parse(pair.value);\n case \"Date\":\n return DateValue.parse(pair.value);\n case \"DateTime\":\n return DateTimeValue.parse(pair.value);\n case \"Float4\":\n return Float4Value.parse(pair.value);\n case \"Float8\":\n return Float8Value.parse(pair.value);\n case \"Int1\":\n return Int1Value.parse(pair.value);\n case \"Int2\":\n return Int2Value.parse(pair.value);\n case \"Int4\":\n return Int4Value.parse(pair.value);\n case \"Int8\":\n return Int8Value.parse(pair.value);\n case \"Int16\":\n return Int16Value.parse(pair.value);\n case \"Interval\":\n return IntervalValue.parse(pair.value);\n case \"RowNumber\":\n return RowNumberValue.parse(pair.value);\n case \"Time\":\n return TimeValue.parse(pair.value);\n case \"Uint1\":\n return Uint1Value.parse(pair.value);\n case \"Uint2\":\n return Uint2Value.parse(pair.value);\n case \"Uint4\":\n return Uint4Value.parse(pair.value);\n case \"Uint8\":\n return Uint8Value.parse(pair.value);\n case \"Uint16\":\n return Uint16Value.parse(pair.value);\n case \"Undefined\":\n return UndefinedValue.parse(pair.value);\n case \"Utf8\":\n return Utf8Value.parse(pair.value);\n case \"Uuid4\":\n return Uuid4Value.parse(pair.value);\n case \"Uuid7\":\n return Uuid7Value.parse(pair.value);\n case \"IdentityId\":\n return IdentityIdValue.parse(pair.value);\n default:\n throw new Error(`Unsupported type: ${pair.type}`);\n }\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n PrimitiveSchemaNode, ObjectSchemaNode, ArraySchemaNode,\n OptionalSchemaNode, ValueSchemaNode, SchemaNode\n} from '.';\n\nexport class SchemaBuilder {\n\n static blob(): PrimitiveSchemaNode<'Blob'> {\n return {kind: 'primitive', type: 'Blob'};\n }\n\n static bool(): PrimitiveSchemaNode<'Bool'> {\n return {kind: 'primitive', type: 'Bool'};\n }\n\n static boolean(): PrimitiveSchemaNode<'Bool'> {\n return {kind: 'primitive', type: 'Bool'};\n }\n\n static float4(): PrimitiveSchemaNode<'Float4'> {\n return {kind: 'primitive', type: 'Float4'};\n }\n\n static float8(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static float(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static double(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static int1(): PrimitiveSchemaNode<'Int1'> {\n return {kind: 'primitive', type: 'Int1'};\n }\n\n static int2(): PrimitiveSchemaNode<'Int2'> {\n return {kind: 'primitive', type: 'Int2'};\n }\n\n static int4(): PrimitiveSchemaNode<'Int4'> {\n return {kind: 'primitive', type: 'Int4'};\n }\n\n static int8(): PrimitiveSchemaNode<'Int8'> {\n return {kind: 'primitive', type: 'Int8'};\n }\n\n static int16(): PrimitiveSchemaNode<'Int16'> {\n return {kind: 'primitive', type: 'Int16'};\n }\n\n static int(): PrimitiveSchemaNode<'Int4'> {\n return {kind: 'primitive', type: 'Int4'};\n }\n\n static bigint(): PrimitiveSchemaNode<'Int8'> {\n return {kind: 'primitive', type: 'Int8'};\n }\n\n static uint1(): PrimitiveSchemaNode<'Uint1'> {\n return {kind: 'primitive', type: 'Uint1'};\n }\n\n static uint2(): PrimitiveSchemaNode<'Uint2'> {\n return {kind: 'primitive', type: 'Uint2'};\n }\n\n static uint4(): PrimitiveSchemaNode<'Uint4'> {\n return {kind: 'primitive', type: 'Uint4'};\n }\n\n static uint8(): PrimitiveSchemaNode<'Uint8'> {\n return {kind: 'primitive', type: 'Uint8'};\n }\n\n static uint16(): PrimitiveSchemaNode<'Uint16'> {\n return {kind: 'primitive', type: 'Uint16'};\n }\n\n static utf8(): PrimitiveSchemaNode<'Utf8'> {\n return {kind: 'primitive', type: 'Utf8'};\n }\n\n static string(): PrimitiveSchemaNode<'Utf8'> {\n return {kind: 'primitive', type: 'Utf8'};\n }\n\n static date(): PrimitiveSchemaNode<'Date'> {\n return {kind: 'primitive', type: 'Date'};\n }\n\n static datetime(): PrimitiveSchemaNode<'DateTime'> {\n return {kind: 'primitive', type: 'DateTime'};\n }\n\n static time(): PrimitiveSchemaNode<'Time'> {\n return {kind: 'primitive', type: 'Time'};\n }\n\n static interval(): PrimitiveSchemaNode<'Interval'> {\n return {kind: 'primitive', type: 'Interval'};\n }\n\n static uuid4(): PrimitiveSchemaNode<'Uuid4'> {\n return {kind: 'primitive', type: 'Uuid4'};\n }\n\n static uuid7(): PrimitiveSchemaNode<'Uuid7'> {\n return {kind: 'primitive', type: 'Uuid7'};\n }\n\n static uuid(): PrimitiveSchemaNode<'Uuid7'> {\n return {kind: 'primitive', type: 'Uuid7'};\n }\n\n static undefined(): PrimitiveSchemaNode<'Undefined'> {\n return {kind: 'primitive', type: 'Undefined'};\n }\n\n static rownumber(): PrimitiveSchemaNode<'RowNumber'> {\n return {kind: 'primitive', type: 'RowNumber'};\n }\n\n static identityid(): PrimitiveSchemaNode<'IdentityId'> {\n return {kind: 'primitive', type: 'IdentityId'};\n }\n\n static object<P extends Record<string, SchemaNode>>(properties: P): ObjectSchemaNode<P> {\n return {kind: 'object', properties};\n }\n\n static array<T extends SchemaNode>(items: T): ArraySchemaNode<T> {\n return {kind: 'array', items};\n }\n\n static optional<T extends SchemaNode>(schema: T): OptionalSchemaNode<T> {\n return {kind: 'optional', schema};\n }\n \n static number(): PrimitiveSchemaNode<'Float8'> {\n return {kind: 'primitive', type: 'Float8'};\n }\n\n static boolValue(): ValueSchemaNode<'Bool'> {\n return {kind: 'value', type: 'Bool'};\n }\n\n static int1Value(): ValueSchemaNode<'Int1'> {\n return {kind: 'value', type: 'Int1'};\n }\n\n static int2Value(): ValueSchemaNode<'Int2'> {\n return {kind: 'value', type: 'Int2'};\n }\n\n static int4Value(): ValueSchemaNode<'Int4'> {\n return {kind: 'value', type: 'Int4'};\n }\n\n static int8Value(): ValueSchemaNode<'Int8'> {\n return {kind: 'value', type: 'Int8'};\n }\n\n static int16Value(): ValueSchemaNode<'Int16'> {\n return {kind: 'value', type: 'Int16'};\n }\n\n static uint1Value(): ValueSchemaNode<'Uint1'> {\n return {kind: 'value', type: 'Uint1'};\n }\n\n static uint2Value(): ValueSchemaNode<'Uint2'> {\n return {kind: 'value', type: 'Uint2'};\n }\n\n static uint4Value(): ValueSchemaNode<'Uint4'> {\n return {kind: 'value', type: 'Uint4'};\n }\n\n static uint8Value(): ValueSchemaNode<'Uint8'> {\n return {kind: 'value', type: 'Uint8'};\n }\n\n static uint16Value(): ValueSchemaNode<'Uint16'> {\n return {kind: 'value', type: 'Uint16'};\n }\n\n static float4Value(): ValueSchemaNode<'Float4'> {\n return {kind: 'value', type: 'Float4'};\n }\n\n static float8Value(): ValueSchemaNode<'Float8'> {\n return {kind: 'value', type: 'Float8'};\n }\n\n static utf8Value(): ValueSchemaNode<'Utf8'> {\n return {kind: 'value', type: 'Utf8'};\n }\n\n static dateValue(): ValueSchemaNode<'Date'> {\n return {kind: 'value', type: 'Date'};\n }\n\n static dateTimeValue(): ValueSchemaNode<'DateTime'> {\n return {kind: 'value', type: 'DateTime'};\n }\n\n static timeValue(): ValueSchemaNode<'Time'> {\n return {kind: 'value', type: 'Time'};\n }\n\n static intervalValue(): ValueSchemaNode<'Interval'> {\n return {kind: 'value', type: 'Interval'};\n }\n\n static uuid4Value(): ValueSchemaNode<'Uuid4'> {\n return {kind: 'value', type: 'Uuid4'};\n }\n\n static uuid7Value(): ValueSchemaNode<'Uuid7'> {\n return {kind: 'value', type: 'Uuid7'};\n }\n\n static undefinedValue(): ValueSchemaNode<'Undefined'> {\n return {kind: 'value', type: 'Undefined'};\n }\n\n static blobValue(): ValueSchemaNode<'Blob'> {\n return {kind: 'value', type: 'Blob'};\n }\n\n static rowIdValue(): ValueSchemaNode<'RowNumber'> {\n return {kind: 'value', type: 'RowNumber'};\n }\n\n static identityIdValue(): ValueSchemaNode<'IdentityId'> {\n return {kind: 'value', type: 'IdentityId'};\n }\n}\n\nexport const Schema = SchemaBuilder;","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {\n BlobValue, BoolValue, DateValue, DateTimeValue,\n Float4Value, Float8Value,\n Int1Value, Int2Value, Int4Value, Int8Value, Int16Value,\n IntervalValue, TimeValue,\n Uint1Value, Uint2Value, Uint4Value, Uint8Value, Uint16Value,\n RowNumberValue, UndefinedValue, Utf8Value,\n Uuid4Value, Uuid7Value,\n Type\n} from '../value';\nimport {SchemaNode} from '.';\nimport {PrimitiveToValue} from './inference';\n\nfunction createValueInstance<T extends Type>(type: T, value: any): PrimitiveToValue<T> {\n switch (type) {\n case 'Blob':\n return new BlobValue(value) as PrimitiveToValue<T>;\n case 'Bool':\n return new BoolValue(value) as PrimitiveToValue<T>;\n case 'Float4':\n return new Float4Value(value) as PrimitiveToValue<T>;\n case 'Float8':\n return new Float8Value(value) as PrimitiveToValue<T>;\n case 'Int1':\n return new Int1Value(value) as PrimitiveToValue<T>;\n case 'Int2':\n return new Int2Value(value) as PrimitiveToValue<T>;\n case 'Int4':\n return new Int4Value(value) as PrimitiveToValue<T>;\n case 'Int8':\n return new Int8Value(value) as PrimitiveToValue<T>;\n case 'Int16':\n return new Int16Value(value) as PrimitiveToValue<T>;\n case 'Uint1':\n return new Uint1Value(value) as PrimitiveToValue<T>;\n case 'Uint2':\n return new Uint2Value(value) as PrimitiveToValue<T>;\n case 'Uint4':\n return new Uint4Value(value) as PrimitiveToValue<T>;\n case 'Uint8':\n return new Uint8Value(value) as PrimitiveToValue<T>;\n case 'Uint16':\n return new Uint16Value(value) as PrimitiveToValue<T>;\n case 'Utf8':\n return new Utf8Value(value) as PrimitiveToValue<T>;\n case 'Date':\n return new DateValue(value) as PrimitiveToValue<T>;\n case 'DateTime':\n return new DateTimeValue(value) as PrimitiveToValue<T>;\n case 'Time':\n return new TimeValue(value) as PrimitiveToValue<T>;\n case 'Interval':\n return new IntervalValue(value) as PrimitiveToValue<T>;\n case 'Uuid4':\n return new Uuid4Value(value) as PrimitiveToValue<T>;\n case 'Uuid7':\n return new Uuid7Value(value) as PrimitiveToValue<T>;\n case 'Undefined':\n return new UndefinedValue() as PrimitiveToValue<T>;\n case 'RowNumber':\n return new RowNumberValue(value) as PrimitiveToValue<T>;\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n}\n\nexport function parseValue(schema: SchemaNode, value: any): any {\n if (schema.kind === 'primitive') {\n if (value === null || value === undefined) {\n return undefined;\n }\n return createValueInstance(schema.type as Type, value);\n }\n\n if (schema.kind === 'object') {\n if (value === null || value === undefined) {\n return undefined;\n }\n const result: Record<string, any> = {};\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n result[key] = parseValue(propSchema, value[key]);\n }\n return result;\n }\n\n if (schema.kind === 'array') {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map(item => parseValue(schema.items, item));\n }\n\n if (schema.kind === 'optional') {\n if (value === undefined) {\n return undefined;\n }\n return parseValue(schema.schema, value);\n }\n\n throw new Error(`Unknown schema kind: ${(schema as any).kind}`);\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type} from '../value';\nimport {SchemaNode} from '.';\n\nexport function validateSchema(schema: SchemaNode, value: any): boolean {\n if (schema.kind === 'primitive') {\n const schemaType = schema.type as Type;\n if (value === null || value === undefined) {\n return schemaType === 'Undefined';\n }\n\n switch (schemaType) {\n case 'Bool':\n return typeof value === 'boolean';\n case 'Float4':\n case 'Float8':\n case 'Int1':\n case 'Int2':\n case 'Int4':\n return typeof value === 'number';\n case 'Int8':\n case 'Int16':\n case 'Uint8':\n case 'Uint16':\n return typeof value === 'bigint' || typeof value === 'number';\n case 'Uint1':\n case 'Uint2':\n case 'Uint4':\n return typeof value === 'number' && value >= 0;\n case 'Utf8':\n case 'Time':\n case 'Interval':\n case 'Uuid4':\n case 'Uuid7':\n case 'RowNumber':\n return typeof value === 'string';\n case 'Date':\n case 'DateTime':\n return value instanceof Date || typeof value === 'string';\n case 'Blob':\n return value instanceof Uint8Array || value instanceof ArrayBuffer;\n case 'Undefined':\n return value === undefined;\n default:\n return false;\n }\n }\n\n if (schema.kind === 'object') {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n if (!validateSchema(propSchema, value[key])) {\n return false;\n }\n }\n return true;\n }\n\n if (schema.kind === 'array') {\n if (!Array.isArray(value)) {\n return false;\n }\n return value.every(item => validateSchema(schema.items, item));\n }\n\n if (schema.kind === 'optional') {\n if (value === undefined) {\n return true;\n }\n return validateSchema(schema.schema, value);\n }\n\n return false;\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, TypeValuePair} from './value';\nimport {SchemaNode, InferSchema} from './schema';\n\nexport type Params = (TypeValuePair | null)[] | Record<string, TypeValuePair | null>;\n\nexport interface Frame {\n columns: Column[];\n}\n\nexport interface DiagnosticColumn {\n name: string,\n type: Type,\n}\n\nexport interface Fragment {\n text: string\n line?: number,\n column?: number,\n}\n\nexport interface Diagnostic {\n code: string,\n statement?: string;\n message: string,\n column?: DiagnosticColumn,\n fragment?: Fragment,\n label?: string,\n help?: string,\n notes: Array<string>,\n cause?: Diagnostic,\n}\n\nexport interface Column {\n name: string;\n type: Type;\n data: string[];\n}\n\nexport interface ErrorResponse {\n id: string;\n type: \"Err\";\n payload: {\n diagnostic: Diagnostic;\n };\n}\n\nexport class ReifyError extends Error {\n public readonly code: string;\n public readonly statement?: string;\n public readonly column?: DiagnosticColumn;\n public readonly fragment?: Fragment;\n public readonly label?: string;\n public readonly help?: string;\n public readonly notes: string[];\n public readonly cause?: Diagnostic;\n\n constructor(response: ErrorResponse) {\n const diagnostic = response.payload.diagnostic;\n const message = `[${diagnostic.code}] ${diagnostic.message}` +\n (diagnostic.label ? ` — ${diagnostic.label}` : \"\");\n\n super(message);\n\n this.name = \"ReifyError\";\n this.code = diagnostic.code;\n this.statement = diagnostic.statement;\n this.column = diagnostic.column;\n this.fragment = diagnostic.fragment;\n this.label = diagnostic.label;\n this.help = diagnostic.help;\n this.notes = diagnostic.notes ?? [];\n this.cause = diagnostic.cause;\n\n // Required for instanceof checks to work properly\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n toString(): string {\n const position = this.fragment\n ? `line ${this.fragment.line}, offset ${this.fragment.column}`\n : \"unknown position\";\n\n const notes = this.notes.length\n ? `\\nNotes:\\n- ${this.notes.join(\"\\n- \")}`\n : \"\";\n\n const help = this.help\n ? `\\nHelp: ${this.help}`\n : \"\";\n\n return `${this.name}: ${this.message}\\nAt ${position}${help}${notes}`;\n }\n}\n\n/**\n * Simplified type for inferring frame results to avoid deep instantiation\n * This provides a workaround for TypeScript's limitation with deeply nested types\n */\nexport type FrameResults<S extends readonly SchemaNode[]> =\n S extends readonly [infer First, ...infer Rest]\n ? First extends SchemaNode\n ? Rest extends readonly SchemaNode[]\n ? [InferSchema<First>[], ...FrameResults<Rest>]\n : [InferSchema<First>[]]\n : never\n : [];\n\n/**\n * Helper type to extract a single frame result\n */\nexport type SingleFrameResult<S extends SchemaNode> = InferSchema<S>[];\n\n/**\n * Type-safe cast helper for frame results\n */\nexport function asFrameResults<S extends readonly SchemaNode[]>(\n results: any\n): FrameResults<S> {\n return results as FrameResults<S>;\n}"],"mappings":"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","names":["NIL_UUID","validate","version","validate","version","NIL_UUID","uuidv7","NIL_UUID","validate","version","validate","version","NIL_UUID","uuidv7"]}
|