@reifydb/core 0.0.1-alpha.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/constant.d.ts +7 -0
  2. package/dist/constant.d.ts.map +1 -0
  3. package/dist/constant.js +7 -0
  4. package/dist/constant.js.map +1 -0
  5. package/dist/decoder.d.ts +8 -0
  6. package/dist/decoder.d.ts.map +1 -0
  7. package/dist/decoder.js +59 -0
  8. package/dist/decoder.js.map +1 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +59 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/schema/builder.d.ts +45 -0
  14. package/dist/schema/builder.d.ts.map +1 -0
  15. package/dist/schema/builder.js +114 -0
  16. package/dist/schema/builder.js.map +1 -0
  17. package/dist/schema/index.d.ts +11 -0
  18. package/dist/schema/index.d.ts.map +1 -0
  19. package/dist/schema/index.js +12 -0
  20. package/dist/schema/index.js.map +1 -0
  21. package/dist/schema/inference.d.ts +16 -0
  22. package/dist/schema/inference.d.ts.map +1 -0
  23. package/dist/schema/inference.js +7 -0
  24. package/dist/schema/inference.js.map +1 -0
  25. package/dist/schema/parser.d.ts +8 -0
  26. package/dist/schema/parser.d.ts.map +1 -0
  27. package/dist/schema/parser.js +96 -0
  28. package/dist/schema/parser.js.map +1 -0
  29. package/dist/schema/simple-test.d.ts +7 -0
  30. package/dist/schema/simple-test.d.ts.map +1 -0
  31. package/dist/schema/simple-test.js +26 -0
  32. package/dist/schema/simple-test.js.map +1 -0
  33. package/dist/schema/test-refactor.d.ts +7 -0
  34. package/dist/schema/test-refactor.d.ts.map +1 -0
  35. package/dist/schema/test-refactor.js +97 -0
  36. package/dist/schema/test-refactor.js.map +1 -0
  37. package/dist/schema/types.d.ts +27 -0
  38. package/dist/schema/types.d.ts.map +1 -0
  39. package/dist/schema/types.js +7 -0
  40. package/dist/schema/types.js.map +1 -0
  41. package/dist/schema/validator.d.ts +8 -0
  42. package/dist/schema/validator.d.ts.map +1 -0
  43. package/dist/schema/validator.js +79 -0
  44. package/dist/schema/validator.js.map +1 -0
  45. package/dist/value/blob.d.ts +85 -0
  46. package/dist/value/blob.d.ts.map +1 -0
  47. package/dist/value/blob.js +255 -0
  48. package/dist/value/blob.js.map +1 -0
  49. package/dist/value/bool.d.ts +16 -0
  50. package/dist/value/bool.d.ts.map +1 -0
  51. package/dist/value/bool.js +46 -0
  52. package/dist/value/bool.js.map +1 -0
  53. package/dist/value/date.d.ts +71 -0
  54. package/dist/value/date.d.ts.map +1 -0
  55. package/dist/value/date.js +261 -0
  56. package/dist/value/date.js.map +1 -0
  57. package/dist/value/datetime.d.ts +99 -0
  58. package/dist/value/datetime.d.ts.map +1 -0
  59. package/dist/value/datetime.js +401 -0
  60. package/dist/value/datetime.js.map +1 -0
  61. package/dist/value/float4.d.ts +19 -0
  62. package/dist/value/float4.d.ts.map +1 -0
  63. package/dist/value/float4.js +68 -0
  64. package/dist/value/float4.js.map +1 -0
  65. package/dist/value/float8.d.ts +16 -0
  66. package/dist/value/float8.d.ts.map +1 -0
  67. package/dist/value/float8.js +44 -0
  68. package/dist/value/float8.js.map +1 -0
  69. package/dist/value/index.d.ts +38 -0
  70. package/dist/value/index.d.ts.map +1 -0
  71. package/dist/value/index.js +31 -0
  72. package/dist/value/index.js.map +1 -0
  73. package/dist/value/int1.d.ts +18 -0
  74. package/dist/value/int1.d.ts.map +1 -0
  75. package/dist/value/int1.js +46 -0
  76. package/dist/value/int1.js.map +1 -0
  77. package/dist/value/int16.d.ts +18 -0
  78. package/dist/value/int16.d.ts.map +1 -0
  79. package/dist/value/int16.js +67 -0
  80. package/dist/value/int16.js.map +1 -0
  81. package/dist/value/int2.d.ts +18 -0
  82. package/dist/value/int2.d.ts.map +1 -0
  83. package/dist/value/int2.js +46 -0
  84. package/dist/value/int2.js.map +1 -0
  85. package/dist/value/int4.d.ts +18 -0
  86. package/dist/value/int4.d.ts.map +1 -0
  87. package/dist/value/int4.js +46 -0
  88. package/dist/value/int4.js.map +1 -0
  89. package/dist/value/int8.d.ts +18 -0
  90. package/dist/value/int8.d.ts.map +1 -0
  91. package/dist/value/int8.js +53 -0
  92. package/dist/value/int8.js.map +1 -0
  93. package/dist/value/interval.d.ts +144 -0
  94. package/dist/value/interval.d.ts.map +1 -0
  95. package/dist/value/interval.js +357 -0
  96. package/dist/value/interval.js.map +1 -0
  97. package/dist/value/rowid.d.ts +18 -0
  98. package/dist/value/rowid.d.ts.map +1 -0
  99. package/dist/value/rowid.js +53 -0
  100. package/dist/value/rowid.js.map +1 -0
  101. package/dist/value/time.d.ts +74 -0
  102. package/dist/value/time.d.ts.map +1 -0
  103. package/dist/value/time.js +214 -0
  104. package/dist/value/time.js.map +1 -0
  105. package/dist/value/uint1.d.ts +18 -0
  106. package/dist/value/uint1.d.ts.map +1 -0
  107. package/dist/value/uint1.js +46 -0
  108. package/dist/value/uint1.js.map +1 -0
  109. package/dist/value/uint16.d.ts +18 -0
  110. package/dist/value/uint16.d.ts.map +1 -0
  111. package/dist/value/uint16.js +67 -0
  112. package/dist/value/uint16.js.map +1 -0
  113. package/dist/value/uint2.d.ts +18 -0
  114. package/dist/value/uint2.d.ts.map +1 -0
  115. package/dist/value/uint2.js +46 -0
  116. package/dist/value/uint2.js.map +1 -0
  117. package/dist/value/uint4.d.ts +18 -0
  118. package/dist/value/uint4.d.ts.map +1 -0
  119. package/dist/value/uint4.js +46 -0
  120. package/dist/value/uint4.js.map +1 -0
  121. package/dist/value/uint8.d.ts +19 -0
  122. package/dist/value/uint8.d.ts.map +1 -0
  123. package/dist/value/uint8.js +58 -0
  124. package/dist/value/uint8.js.map +1 -0
  125. package/dist/value/undefined.d.ts +48 -0
  126. package/dist/value/undefined.d.ts.map +1 -0
  127. package/dist/value/undefined.js +77 -0
  128. package/dist/value/undefined.js.map +1 -0
  129. package/dist/value/utf8.d.ts +16 -0
  130. package/dist/value/utf8.d.ts.map +1 -0
  131. package/dist/value/utf8.js +39 -0
  132. package/dist/value/utf8.js.map +1 -0
  133. package/dist/value/uuid4.d.ts +69 -0
  134. package/dist/value/uuid4.d.ts.map +1 -0
  135. package/dist/value/uuid4.js +162 -0
  136. package/dist/value/uuid4.js.map +1 -0
  137. package/dist/value/uuid7.d.ts +74 -0
  138. package/dist/value/uuid7.d.ts.map +1 -0
  139. package/dist/value/uuid7.js +175 -0
  140. package/dist/value/uuid7.js.map +1 -0
  141. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ export function validateSchema(schema, value) {
7
+ if (schema.kind === 'primitive') {
8
+ const schemaType = schema.type;
9
+ if (value === null || value === undefined) {
10
+ return schemaType === 'Undefined';
11
+ }
12
+ switch (schemaType) {
13
+ case 'Bool':
14
+ return typeof value === 'boolean';
15
+ case 'Float4':
16
+ case 'Float8':
17
+ case 'Int1':
18
+ case 'Int2':
19
+ case 'Int4':
20
+ return typeof value === 'number';
21
+ case 'Int8':
22
+ case 'Int16':
23
+ case 'Uint8':
24
+ case 'Uint16':
25
+ return typeof value === 'bigint' || typeof value === 'number';
26
+ case 'Uint1':
27
+ case 'Uint2':
28
+ case 'Uint4':
29
+ return typeof value === 'number' && value >= 0;
30
+ case 'Utf8':
31
+ case 'Time':
32
+ case 'Interval':
33
+ case 'Uuid4':
34
+ case 'Uuid7':
35
+ case 'RowId':
36
+ return typeof value === 'string';
37
+ case 'Date':
38
+ case 'DateTime':
39
+ return value instanceof Date || typeof value === 'string';
40
+ case 'Blob':
41
+ return value instanceof Uint8Array || value instanceof ArrayBuffer;
42
+ case 'Undefined':
43
+ return value === undefined;
44
+ default:
45
+ return false;
46
+ }
47
+ }
48
+ if (schema.kind === 'object') {
49
+ if (typeof value !== 'object' || value === null) {
50
+ return false;
51
+ }
52
+ for (const [key, propSchema] of Object.entries(schema.properties)) {
53
+ if (!validateSchema(propSchema, value[key])) {
54
+ return false;
55
+ }
56
+ }
57
+ return true;
58
+ }
59
+ if (schema.kind === 'array') {
60
+ if (!Array.isArray(value)) {
61
+ return false;
62
+ }
63
+ return value.every(item => validateSchema(schema.items, item));
64
+ }
65
+ if (schema.kind === 'optional') {
66
+ if (value === undefined) {
67
+ return true;
68
+ }
69
+ return validateSchema(schema.schema, value);
70
+ }
71
+ if (schema.kind === 'nullable') {
72
+ if (value === null) {
73
+ return true;
74
+ }
75
+ return validateSchema(schema.schema, value);
76
+ }
77
+ return false;
78
+ }
79
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ import { Type, Value, TypeValuePair } from ".";
7
+ /**
8
+ * A binary large object (BLOB) value that can hold arbitrary byte data.
9
+ */
10
+ export declare class BlobValue implements Value {
11
+ readonly type: Type;
12
+ private readonly bytes?;
13
+ constructor(value?: Uint8Array | ArrayBuffer | string | number[]);
14
+ /**
15
+ * Create a new BLOB from raw bytes
16
+ */
17
+ static new(bytes: Uint8Array | number[]): BlobValue;
18
+ /**
19
+ * Create an empty BLOB
20
+ */
21
+ static empty(): BlobValue;
22
+ /**
23
+ * Create a BLOB from a byte array
24
+ */
25
+ static fromBytes(bytes: number[]): BlobValue;
26
+ /**
27
+ * Create a BLOB from a hex string
28
+ */
29
+ static fromHex(hex: string): BlobValue;
30
+ /**
31
+ * Create a BLOB from a base64 string
32
+ */
33
+ static fromBase64(base64: string): BlobValue;
34
+ /**
35
+ * Create a BLOB from a UTF-8 string
36
+ */
37
+ static fromUtf8(str: string): BlobValue;
38
+ /**
39
+ * Parse a blob string (hex or undefined)
40
+ */
41
+ static parse(str: string): BlobValue;
42
+ /**
43
+ * Get the raw bytes
44
+ */
45
+ asBytes(): Uint8Array | undefined;
46
+ /**
47
+ * Get the length in bytes
48
+ */
49
+ length(): number;
50
+ /**
51
+ * Check if the BLOB is empty
52
+ */
53
+ isEmpty(): boolean;
54
+ /**
55
+ * Convert to hex string with 0x prefix
56
+ */
57
+ toHex(): string | undefined;
58
+ /**
59
+ * Convert to base64 string
60
+ */
61
+ toBase64(): string | undefined;
62
+ /**
63
+ * Convert to UTF-8 string
64
+ */
65
+ toUtf8(): string | undefined;
66
+ /**
67
+ * Format as hex string with 0x prefix
68
+ */
69
+ toString(): string;
70
+ valueOf(): Uint8Array | undefined;
71
+ /**
72
+ * Get the internal representation
73
+ */
74
+ get value(): Uint8Array | undefined;
75
+ /**
76
+ * Compare two blobs for equality
77
+ */
78
+ equals(other: BlobValue): boolean;
79
+ /**
80
+ * Helper to parse a string as hex
81
+ */
82
+ private static parseString;
83
+ encode(): TypeValuePair;
84
+ }
85
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/value/blob.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG,CAAC;AAG7C;;GAEG;AACH,qBAAa,SAAU,YAAW,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAa;gBAExB,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE;IA6BhE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,SAAS;IAInD;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,SAAS;IAIzB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS;IAI5C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAqBtC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAyB5C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAKvC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAepC;;OAEG;IACH,OAAO,IAAI,UAAU,GAAG,SAAS;IAIjC;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,MAAM,GAAG,SAAS;IAS3B;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAe9B;;OAEG;IACH,MAAM,IAAI,MAAM,GAAG,SAAS;IAO5B;;OAEG;IACH,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,UAAU,GAAG,SAAS;IAIjC;;OAEG;IACH,IAAI,KAAK,IAAI,UAAU,GAAG,SAAS,CAElC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAsB1B,MAAM,IAAI,aAAa;CAM1B"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ import { UNDEFINED_VALUE } from "../constant";
7
+ /**
8
+ * A binary large object (BLOB) value that can hold arbitrary byte data.
9
+ */
10
+ export class BlobValue {
11
+ constructor(value) {
12
+ this.type = "Blob";
13
+ if (value !== undefined) {
14
+ if (value instanceof Uint8Array) {
15
+ this.bytes = new Uint8Array(value);
16
+ }
17
+ else if (value instanceof ArrayBuffer) {
18
+ this.bytes = new Uint8Array(value);
19
+ }
20
+ else if (typeof value === 'string') {
21
+ // Try to parse as hex or base64
22
+ const parsed = BlobValue.parseString(value);
23
+ if (parsed === null) {
24
+ throw new Error(`Invalid blob string: ${value}`);
25
+ }
26
+ this.bytes = parsed;
27
+ }
28
+ else if (Array.isArray(value)) {
29
+ // Array of numbers (bytes)
30
+ for (const byte of value) {
31
+ if (!Number.isInteger(byte) || byte < 0 || byte > 255) {
32
+ throw new Error(`Invalid byte value: ${byte}`);
33
+ }
34
+ }
35
+ this.bytes = new Uint8Array(value);
36
+ }
37
+ else {
38
+ throw new Error(`Blob value must be a Uint8Array, ArrayBuffer, string, or number[], got ${typeof value}`);
39
+ }
40
+ }
41
+ else {
42
+ this.bytes = undefined;
43
+ }
44
+ }
45
+ /**
46
+ * Create a new BLOB from raw bytes
47
+ */
48
+ static new(bytes) {
49
+ return new BlobValue(bytes);
50
+ }
51
+ /**
52
+ * Create an empty BLOB
53
+ */
54
+ static empty() {
55
+ return new BlobValue(new Uint8Array(0));
56
+ }
57
+ /**
58
+ * Create a BLOB from a byte array
59
+ */
60
+ static fromBytes(bytes) {
61
+ return new BlobValue(bytes);
62
+ }
63
+ /**
64
+ * Create a BLOB from a hex string
65
+ */
66
+ static fromHex(hex) {
67
+ // Remove 0x prefix if present
68
+ const cleanHex = hex.startsWith('0x') || hex.startsWith('0X')
69
+ ? hex.substring(2)
70
+ : hex;
71
+ if (cleanHex.length % 2 !== 0) {
72
+ throw new Error(`Invalid hex string: odd length`);
73
+ }
74
+ const bytes = new Uint8Array(cleanHex.length / 2);
75
+ for (let i = 0; i < cleanHex.length; i += 2) {
76
+ const byte = parseInt(cleanHex.substring(i, i + 2), 16);
77
+ if (isNaN(byte)) {
78
+ throw new Error(`Invalid hex string: ${hex}`);
79
+ }
80
+ bytes[i / 2] = byte;
81
+ }
82
+ return new BlobValue(bytes);
83
+ }
84
+ /**
85
+ * Create a BLOB from a base64 string
86
+ */
87
+ static fromBase64(base64) {
88
+ // Validate base64 format
89
+ if (!/^[A-Za-z0-9+/]*={0,2}$/.test(base64)) {
90
+ throw new Error(`Invalid base64 string: ${base64}`);
91
+ }
92
+ try {
93
+ if (typeof Buffer !== 'undefined') {
94
+ // Node.js environment
95
+ const buffer = Buffer.from(base64, 'base64');
96
+ return new BlobValue(new Uint8Array(buffer));
97
+ }
98
+ else {
99
+ // Browser environment
100
+ const binaryString = atob(base64);
101
+ const bytes = new Uint8Array(binaryString.length);
102
+ for (let i = 0; i < binaryString.length; i++) {
103
+ bytes[i] = binaryString.charCodeAt(i);
104
+ }
105
+ return new BlobValue(bytes);
106
+ }
107
+ }
108
+ catch (e) {
109
+ throw new Error(`Invalid base64 string: ${base64}`);
110
+ }
111
+ }
112
+ /**
113
+ * Create a BLOB from a UTF-8 string
114
+ */
115
+ static fromUtf8(str) {
116
+ const encoder = new TextEncoder();
117
+ return new BlobValue(encoder.encode(str));
118
+ }
119
+ /**
120
+ * Parse a blob string (hex or undefined)
121
+ */
122
+ static parse(str) {
123
+ const trimmed = str.trim();
124
+ if (trimmed === '' || trimmed === UNDEFINED_VALUE) {
125
+ return new BlobValue(undefined);
126
+ }
127
+ const parsed = BlobValue.parseString(trimmed);
128
+ if (parsed === null) {
129
+ throw new Error(`Cannot parse "${str}" as Blob`);
130
+ }
131
+ return new BlobValue(parsed);
132
+ }
133
+ /**
134
+ * Get the raw bytes
135
+ */
136
+ asBytes() {
137
+ return this.bytes ? new Uint8Array(this.bytes) : undefined;
138
+ }
139
+ /**
140
+ * Get the length in bytes
141
+ */
142
+ length() {
143
+ return this.bytes?.length ?? 0;
144
+ }
145
+ /**
146
+ * Check if the BLOB is empty
147
+ */
148
+ isEmpty() {
149
+ return this.bytes?.length === 0;
150
+ }
151
+ /**
152
+ * Convert to hex string with 0x prefix
153
+ */
154
+ toHex() {
155
+ if (this.bytes === undefined)
156
+ return undefined;
157
+ const hex = Array.from(this.bytes)
158
+ .map(byte => byte.toString(16).padStart(2, '0'))
159
+ .join('');
160
+ return '0x' + hex;
161
+ }
162
+ /**
163
+ * Convert to base64 string
164
+ */
165
+ toBase64() {
166
+ if (this.bytes === undefined)
167
+ return undefined;
168
+ if (typeof Buffer !== 'undefined') {
169
+ // Node.js environment
170
+ return Buffer.from(this.bytes).toString('base64');
171
+ }
172
+ else {
173
+ // Browser environment
174
+ const binaryString = Array.from(this.bytes)
175
+ .map(byte => String.fromCharCode(byte))
176
+ .join('');
177
+ return btoa(binaryString);
178
+ }
179
+ }
180
+ /**
181
+ * Convert to UTF-8 string
182
+ */
183
+ toUtf8() {
184
+ if (this.bytes === undefined)
185
+ return undefined;
186
+ const decoder = new TextDecoder();
187
+ return decoder.decode(this.bytes);
188
+ }
189
+ /**
190
+ * Format as hex string with 0x prefix
191
+ */
192
+ toString() {
193
+ if (this.bytes === undefined) {
194
+ return 'undefined';
195
+ }
196
+ return this.toHex();
197
+ }
198
+ valueOf() {
199
+ return this.bytes ? new Uint8Array(this.bytes) : undefined;
200
+ }
201
+ /**
202
+ * Get the internal representation
203
+ */
204
+ get value() {
205
+ return this.valueOf();
206
+ }
207
+ /**
208
+ * Compare two blobs for equality
209
+ */
210
+ equals(other) {
211
+ if (this.bytes === undefined || other.bytes === undefined) {
212
+ return this.bytes === other.bytes;
213
+ }
214
+ if (this.bytes.length !== other.bytes.length) {
215
+ return false;
216
+ }
217
+ for (let i = 0; i < this.bytes.length; i++) {
218
+ if (this.bytes[i] !== other.bytes[i]) {
219
+ return false;
220
+ }
221
+ }
222
+ return true;
223
+ }
224
+ /**
225
+ * Helper to parse a string as hex
226
+ */
227
+ static parseString(str) {
228
+ // Try hex first (with or without 0x prefix)
229
+ if (str.startsWith('0x') || str.startsWith('0X')) {
230
+ try {
231
+ return BlobValue.fromHex(str).bytes;
232
+ }
233
+ catch {
234
+ return null;
235
+ }
236
+ }
237
+ // Check if it looks like hex (all hex digits)
238
+ if (/^[0-9a-fA-F]+$/.test(str) && str.length % 2 === 0) {
239
+ try {
240
+ return BlobValue.fromHex(str).bytes;
241
+ }
242
+ catch {
243
+ return null;
244
+ }
245
+ }
246
+ return null;
247
+ }
248
+ encode() {
249
+ return {
250
+ type: this.type,
251
+ value: this.value === undefined ? UNDEFINED_VALUE : this.toString()
252
+ };
253
+ }
254
+ }
255
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/value/blob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ import { Type, Value, TypeValuePair } from ".";
7
+ export declare class BoolValue implements Value {
8
+ readonly type: Type;
9
+ readonly value?: boolean;
10
+ constructor(value?: boolean);
11
+ static parse(str: string): BoolValue;
12
+ valueOf(): boolean | undefined;
13
+ toString(): string;
14
+ encode(): TypeValuePair;
15
+ }
16
+ //# sourceMappingURL=bool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bool.d.ts","sourceRoot":"","sources":["../../src/value/bool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG,CAAC;AAG7C,qBAAa,SAAU,YAAW,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAmB;IACtC,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,KAAK,CAAC,EAAE,OAAO;IAW3B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAkBpC,OAAO,IAAI,OAAO,GAAG,SAAS;IAI9B,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,aAAa;CAM1B"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ import { UNDEFINED_VALUE } from "../constant";
7
+ export class BoolValue {
8
+ constructor(value) {
9
+ this.type = "Bool";
10
+ if (value !== undefined) {
11
+ if (typeof value !== 'boolean') {
12
+ throw new Error(`Bool value must be a boolean, got ${typeof value}`);
13
+ }
14
+ this.value = value;
15
+ }
16
+ else {
17
+ this.value = undefined;
18
+ }
19
+ }
20
+ static parse(str) {
21
+ const trimmed = str.trim().toLowerCase();
22
+ if (trimmed === '' || trimmed === UNDEFINED_VALUE) {
23
+ return new BoolValue(undefined);
24
+ }
25
+ if (trimmed === 'true') {
26
+ return new BoolValue(true);
27
+ }
28
+ if (trimmed === 'false') {
29
+ return new BoolValue(false);
30
+ }
31
+ throw new Error(`Cannot parse "${str}" as Bool`);
32
+ }
33
+ valueOf() {
34
+ return this.value;
35
+ }
36
+ toString() {
37
+ return this.value === undefined ? 'undefined' : this.value.toString();
38
+ }
39
+ encode() {
40
+ return {
41
+ type: this.type,
42
+ value: this.value === undefined ? UNDEFINED_VALUE : this.toString()
43
+ };
44
+ }
45
+ }
46
+ //# sourceMappingURL=bool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bool.js","sourceRoot":"","sources":["../../src/value/bool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAS;IAIlB,YAAY,KAAe;QAHlB,SAAI,GAAS,MAAe,CAAC;QAIlC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW;QACpB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChD,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM;QACF,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;SACtE,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * MIT License
3
+ * Copyright (c) 2025 ReifyDB
4
+ * See license.md file for full license text
5
+ */
6
+ import { Type, Value, TypeValuePair } from ".";
7
+ /**
8
+ * A date value representing a calendar date (year, month, day) without time information.
9
+ * Always interpreted in UTC.
10
+ * Internally stored as months and days.
11
+ */
12
+ export declare class DateValue implements Value {
13
+ readonly type: Type;
14
+ private readonly months?;
15
+ private readonly days?;
16
+ constructor(value?: Date | string | number);
17
+ /**
18
+ * Create a DateValue from year, month (1-12), and day (1-31)
19
+ */
20
+ static fromYMD(year: number, month: number, day: number): DateValue;
21
+ /**
22
+ * Get today's date (in UTC)
23
+ */
24
+ static today(): DateValue;
25
+ /**
26
+ * Parse a date string in YYYY-MM-DD format
27
+ */
28
+ static parse(str: string): DateValue;
29
+ /**
30
+ * Convert to days since Unix epoch (1970-01-01) for storage
31
+ */
32
+ toDaysSinceEpoch(): number | undefined;
33
+ /**
34
+ * Create from days since Unix epoch
35
+ */
36
+ static fromDaysSinceEpochToComponents(days: number): {
37
+ months: number;
38
+ days: number;
39
+ } | null;
40
+ /**
41
+ * Get the year component
42
+ */
43
+ year(): number | undefined;
44
+ /**
45
+ * Get the month component (1-12)
46
+ */
47
+ month(): number | undefined;
48
+ /**
49
+ * Get the day component (1-31)
50
+ */
51
+ day(): number | undefined;
52
+ /**
53
+ * Format as YYYY-MM-DD string
54
+ */
55
+ toString(): string;
56
+ valueOf(): Date | undefined;
57
+ /**
58
+ * Get the internal representation
59
+ */
60
+ get value(): Date | undefined;
61
+ /**
62
+ * Helper to parse YYYY-MM-DD format
63
+ */
64
+ private static parseDate;
65
+ /**
66
+ * Helper to validate a date
67
+ */
68
+ private static isValidDate;
69
+ encode(): TypeValuePair;
70
+ }
71
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/value/date.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG,CAAC;AAG7C;;;;GAIG;AACH,qBAAa,SAAU,YAAW,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAS;gBAEnB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM;IAmC1C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS;IAYnE;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,SAAS;IASzB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAkBpC;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAyBtC;;OAEG;IACH,MAAM,CAAC,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAoB5F;;OAEG;IACH,IAAI,IAAI,MAAM,GAAG,SAAS;IAK1B;;OAEG;IACH,KAAK,IAAI,MAAM,GAAG,SAAS;IAQ3B;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAqBlB,OAAO,IAAI,IAAI,GAAG,SAAS;IAuB3B;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,GAAG,SAAS,CAE5B;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA8BxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAe1B,MAAM,IAAI,aAAa;CAM1B"}