@jsonjoy.com/json-pack 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  High performance JSON serialization and deserialization library for JavaScript, Node.js, browser.
4
4
 
5
- `json-pack` contains implementations of various JSON codecs into binary formats, such as MessagePack, CBOR and other formats.
6
-
7
5
  ## Supported Formats
8
6
 
9
7
  This library implements the following serialization formats:
@@ -0,0 +1,30 @@
1
+ import type { IWriter, IWriterGrowable } from '@jsonjoy.com/util/lib/buffers';
2
+ import type { BinaryJsonEncoder } from '../types';
3
+ export declare class AvroEncoder implements BinaryJsonEncoder {
4
+ readonly writer: IWriter & IWriterGrowable;
5
+ constructor(writer: IWriter & IWriterGrowable);
6
+ encode(value: unknown): Uint8Array;
7
+ writeUnknown(value: unknown): void;
8
+ writeAny(value: unknown): void;
9
+ writeNull(): void;
10
+ writeBoolean(bool: boolean): void;
11
+ writeInt(int: number): void;
12
+ writeLong(long: number | bigint): void;
13
+ writeFloatAvro(float: number): void;
14
+ writeDouble(double: number): void;
15
+ writeBin(bytes: Uint8Array): void;
16
+ writeStr(str: string): void;
17
+ writeArr(arr: unknown[]): void;
18
+ writeObj(obj: Record<string, unknown>): void;
19
+ writeNumber(num: number): void;
20
+ writeInteger(int: number): void;
21
+ writeUInteger(uint: number): void;
22
+ writeFloat(float: number): void;
23
+ private writeFloatValue;
24
+ writeAsciiStr(str: string): void;
25
+ private writeVarIntSigned;
26
+ private writeVarIntUnsigned;
27
+ private writeVarLong;
28
+ private encodeZigZag32;
29
+ private encodeZigZag64;
30
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AvroEncoder = void 0;
4
+ class AvroEncoder {
5
+ constructor(writer) {
6
+ this.writer = writer;
7
+ }
8
+ encode(value) {
9
+ const writer = this.writer;
10
+ writer.reset();
11
+ this.writeAny(value);
12
+ return writer.flush();
13
+ }
14
+ writeUnknown(value) {
15
+ this.writeNull();
16
+ }
17
+ writeAny(value) {
18
+ switch (typeof value) {
19
+ case 'boolean':
20
+ return this.writeBoolean(value);
21
+ case 'number':
22
+ return this.writeNumber(value);
23
+ case 'string':
24
+ return this.writeStr(value);
25
+ case 'object': {
26
+ if (value === null)
27
+ return this.writeNull();
28
+ const constructor = value.constructor;
29
+ switch (constructor) {
30
+ case Object:
31
+ return this.writeObj(value);
32
+ case Array:
33
+ return this.writeArr(value);
34
+ case Uint8Array:
35
+ return this.writeBin(value);
36
+ default:
37
+ return this.writeUnknown(value);
38
+ }
39
+ }
40
+ case 'bigint':
41
+ return this.writeLong(value);
42
+ case 'undefined':
43
+ return this.writeNull();
44
+ default:
45
+ return this.writeUnknown(value);
46
+ }
47
+ }
48
+ writeNull() {
49
+ }
50
+ writeBoolean(bool) {
51
+ this.writer.u8(bool ? 1 : 0);
52
+ }
53
+ writeInt(int) {
54
+ this.writeVarIntSigned(this.encodeZigZag32(Math.trunc(int)));
55
+ }
56
+ writeLong(long) {
57
+ if (typeof long === 'bigint') {
58
+ this.writeVarLong(this.encodeZigZag64(long));
59
+ }
60
+ else {
61
+ this.writeVarLong(this.encodeZigZag64(BigInt(Math.trunc(long))));
62
+ }
63
+ }
64
+ writeFloatAvro(float) {
65
+ const writer = this.writer;
66
+ writer.ensureCapacity(4);
67
+ writer.view.setFloat32(writer.x, float, true);
68
+ writer.move(4);
69
+ }
70
+ writeDouble(double) {
71
+ const writer = this.writer;
72
+ writer.ensureCapacity(8);
73
+ writer.view.setFloat64(writer.x, double, true);
74
+ writer.move(8);
75
+ }
76
+ writeBin(bytes) {
77
+ this.writeVarIntUnsigned(bytes.length);
78
+ this.writer.buf(bytes, bytes.length);
79
+ }
80
+ writeStr(str) {
81
+ const writer = this.writer;
82
+ const maxSize = str.length * 4;
83
+ writer.ensureCapacity(5 + maxSize);
84
+ const lengthOffset = writer.x;
85
+ writer.x += 5;
86
+ const bytesWritten = writer.utf8(str);
87
+ const endPos = writer.x;
88
+ writer.x = lengthOffset;
89
+ this.writeVarIntUnsigned(bytesWritten);
90
+ const actualLengthSize = writer.x - lengthOffset;
91
+ if (actualLengthSize < 5) {
92
+ const stringStart = lengthOffset + 5;
93
+ const stringData = writer.uint8.slice(stringStart, endPos);
94
+ writer.x = lengthOffset + actualLengthSize;
95
+ writer.buf(stringData, stringData.length);
96
+ }
97
+ else {
98
+ writer.x = endPos;
99
+ }
100
+ }
101
+ writeArr(arr) {
102
+ this.writeVarIntUnsigned(arr.length);
103
+ const length = arr.length;
104
+ for (let i = 0; i < length; i++) {
105
+ this.writeAny(arr[i]);
106
+ }
107
+ this.writeVarIntUnsigned(0);
108
+ }
109
+ writeObj(obj) {
110
+ const entries = Object.entries(obj);
111
+ const length = entries.length;
112
+ this.writeVarIntUnsigned(length);
113
+ for (let i = 0; i < length; i++) {
114
+ const entry = entries[i];
115
+ this.writeStr(entry[0]);
116
+ this.writeAny(entry[1]);
117
+ }
118
+ this.writeVarIntUnsigned(0);
119
+ }
120
+ writeNumber(num) {
121
+ if (Number.isInteger(num)) {
122
+ if (num >= -2147483648 && num <= 2147483647) {
123
+ this.writeInt(num);
124
+ }
125
+ else {
126
+ this.writeLong(num);
127
+ }
128
+ }
129
+ else {
130
+ this.writeDouble(num);
131
+ }
132
+ }
133
+ writeInteger(int) {
134
+ this.writeInt(int);
135
+ }
136
+ writeUInteger(uint) {
137
+ this.writeInt(uint);
138
+ }
139
+ writeFloat(float) {
140
+ this.writeFloatValue(float);
141
+ }
142
+ writeFloatValue(float) {
143
+ const writer = this.writer;
144
+ writer.ensureCapacity(4);
145
+ writer.view.setFloat32(writer.x, float, true);
146
+ writer.move(4);
147
+ }
148
+ writeAsciiStr(str) {
149
+ const writer = this.writer;
150
+ this.writeVarIntUnsigned(str.length);
151
+ writer.ascii(str);
152
+ }
153
+ writeVarIntSigned(value) {
154
+ const writer = this.writer;
155
+ let n = value >>> 0;
156
+ while (n >= 0x80) {
157
+ writer.u8((n & 0x7f) | 0x80);
158
+ n >>>= 7;
159
+ }
160
+ writer.u8(n & 0x7f);
161
+ }
162
+ writeVarIntUnsigned(value) {
163
+ const writer = this.writer;
164
+ let n = value >>> 0;
165
+ while (n >= 0x80) {
166
+ writer.u8((n & 0x7f) | 0x80);
167
+ n >>>= 7;
168
+ }
169
+ writer.u8(n & 0x7f);
170
+ }
171
+ writeVarLong(value) {
172
+ const writer = this.writer;
173
+ let n = value;
174
+ const mask = BigInt(0x7f);
175
+ const shift = BigInt(7);
176
+ while (n >= BigInt(0x80)) {
177
+ writer.u8(Number((n & mask) | BigInt(0x80)));
178
+ n >>= shift;
179
+ }
180
+ writer.u8(Number(n & mask));
181
+ }
182
+ encodeZigZag32(value) {
183
+ return (value << 1) ^ (value >> 31);
184
+ }
185
+ encodeZigZag64(value) {
186
+ return (value << BigInt(1)) ^ (value >> BigInt(63));
187
+ }
188
+ }
189
+ exports.AvroEncoder = AvroEncoder;
190
+ //# sourceMappingURL=AvroEncoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroEncoder.js","sourceRoot":"","sources":["../../src/avro/AvroEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { IWriter, IWriterGrowable } from '@jsonjoy.com/util/lib/buffers';
2
+ import type { AvroSchema, AvroRecordSchema, AvroEnumSchema, AvroArraySchema, AvroMapSchema, AvroUnionSchema, AvroFixedSchema, AvroNullSchema } from './types';
3
+ export declare class AvroSchemaEncoder {
4
+ readonly writer: IWriter & IWriterGrowable;
5
+ private encoder;
6
+ private validator;
7
+ private namedSchemas;
8
+ constructor(writer: IWriter & IWriterGrowable);
9
+ encode(value: unknown, schema: AvroSchema, selectedIndex?: number): Uint8Array;
10
+ writeNull(schema: AvroNullSchema | AvroSchema): void;
11
+ writeBoolean(value: boolean, schema: AvroSchema): void;
12
+ writeInt(value: number, schema: AvroSchema): void;
13
+ writeLong(value: number | bigint, schema: AvroSchema): void;
14
+ writeFloat(value: number, schema: AvroSchema): void;
15
+ writeDouble(value: number, schema: AvroSchema): void;
16
+ writeBytes(value: Uint8Array, schema: AvroSchema): void;
17
+ writeString(value: string, schema: AvroSchema): void;
18
+ writeRecord(value: Record<string, unknown>, schema: AvroRecordSchema): void;
19
+ writeEnum(value: string, schema: AvroEnumSchema): void;
20
+ writeArray(value: unknown[], schema: AvroArraySchema): void;
21
+ writeMap(value: Record<string, unknown>, schema: AvroMapSchema): void;
22
+ writeUnion(value: unknown, schema: AvroUnionSchema, selectedIndex?: number): void;
23
+ writeFixed(value: Uint8Array, schema: AvroFixedSchema): void;
24
+ writeNumber(value: number, schema: AvroSchema): void;
25
+ private writeValue;
26
+ private validateSchemaType;
27
+ private resolveSchema;
28
+ private collectNamedSchemas;
29
+ private getFullName;
30
+ private writeVarIntUnsigned;
31
+ private writeVarIntSigned;
32
+ private encodeZigZag32;
33
+ }
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AvroSchemaEncoder = void 0;
4
+ const AvroEncoder_1 = require("./AvroEncoder");
5
+ const AvroSchemaValidator_1 = require("./AvroSchemaValidator");
6
+ class AvroSchemaEncoder {
7
+ constructor(writer) {
8
+ this.writer = writer;
9
+ this.namedSchemas = new Map();
10
+ this.encoder = new AvroEncoder_1.AvroEncoder(writer);
11
+ this.validator = new AvroSchemaValidator_1.AvroSchemaValidator();
12
+ }
13
+ encode(value, schema, selectedIndex) {
14
+ this.writer.reset();
15
+ this.namedSchemas.clear();
16
+ if (!this.validator.validateSchema(schema)) {
17
+ throw new Error('Invalid Avro schema');
18
+ }
19
+ if (!this.validator.validateValue(value, schema)) {
20
+ throw new Error('Value does not conform to schema');
21
+ }
22
+ this.collectNamedSchemas(schema);
23
+ if (Array.isArray(schema) && selectedIndex !== undefined) {
24
+ this.writeUnion(value, schema, selectedIndex);
25
+ }
26
+ else {
27
+ this.writeValue(value, schema);
28
+ }
29
+ return this.writer.flush();
30
+ }
31
+ writeNull(schema) {
32
+ this.validateSchemaType(schema, 'null');
33
+ this.encoder.writeNull();
34
+ }
35
+ writeBoolean(value, schema) {
36
+ this.validateSchemaType(schema, 'boolean');
37
+ this.encoder.writeBoolean(value);
38
+ }
39
+ writeInt(value, schema) {
40
+ this.validateSchemaType(schema, 'int');
41
+ if (!Number.isInteger(value) || value < -2147483648 || value > 2147483647) {
42
+ throw new Error('Value is not a valid 32-bit integer');
43
+ }
44
+ this.encoder.writeInt(value);
45
+ }
46
+ writeLong(value, schema) {
47
+ this.validateSchemaType(schema, 'long');
48
+ this.encoder.writeLong(value);
49
+ }
50
+ writeFloat(value, schema) {
51
+ this.validateSchemaType(schema, 'float');
52
+ this.encoder.writeFloat(value);
53
+ }
54
+ writeDouble(value, schema) {
55
+ this.validateSchemaType(schema, 'double');
56
+ this.encoder.writeDouble(value);
57
+ }
58
+ writeBytes(value, schema) {
59
+ this.validateSchemaType(schema, 'bytes');
60
+ this.encoder.writeBin(value);
61
+ }
62
+ writeString(value, schema) {
63
+ this.validateSchemaType(schema, 'string');
64
+ this.encoder.writeStr(value);
65
+ }
66
+ writeRecord(value, schema) {
67
+ if (typeof schema === 'object' && schema.type !== 'record') {
68
+ throw new Error('Schema is not a record schema');
69
+ }
70
+ const recordSchema = this.resolveSchema(schema);
71
+ if (recordSchema.type !== 'record') {
72
+ throw new Error('Schema is not a record schema');
73
+ }
74
+ for (let i = 0; i < recordSchema.fields.length; i++) {
75
+ const field = recordSchema.fields[i];
76
+ const fieldValue = value[field.name];
77
+ if (fieldValue !== undefined) {
78
+ this.writeValue(fieldValue, field.type);
79
+ }
80
+ else if (field.default !== undefined) {
81
+ this.writeValue(field.default, field.type);
82
+ }
83
+ else {
84
+ throw new Error(`Missing required field: ${field.name}`);
85
+ }
86
+ }
87
+ }
88
+ writeEnum(value, schema) {
89
+ if (typeof schema === 'object' && schema.type !== 'enum') {
90
+ throw new Error('Schema is not an enum schema');
91
+ }
92
+ const enumSchema = this.resolveSchema(schema);
93
+ if (enumSchema.type !== 'enum') {
94
+ throw new Error('Schema is not an enum schema');
95
+ }
96
+ const index = enumSchema.symbols.indexOf(value);
97
+ if (index === -1) {
98
+ throw new Error(`Invalid enum value: ${value}`);
99
+ }
100
+ this.writeVarIntSigned(this.encodeZigZag32(index));
101
+ }
102
+ writeArray(value, schema) {
103
+ if (typeof schema === 'object' && schema.type !== 'array') {
104
+ throw new Error('Schema is not an array schema');
105
+ }
106
+ const arraySchema = this.resolveSchema(schema);
107
+ if (arraySchema.type !== 'array') {
108
+ throw new Error('Schema is not an array schema');
109
+ }
110
+ this.writeVarIntUnsigned(value.length);
111
+ const length = value.length;
112
+ for (let i = 0; i < length; i++) {
113
+ this.writeValue(value[i], arraySchema.items);
114
+ }
115
+ this.writeVarIntUnsigned(0);
116
+ }
117
+ writeMap(value, schema) {
118
+ if (typeof schema === 'object' && schema.type !== 'map') {
119
+ throw new Error('Schema is not a map schema');
120
+ }
121
+ const mapSchema = this.resolveSchema(schema);
122
+ if (mapSchema.type !== 'map') {
123
+ throw new Error('Schema is not a map schema');
124
+ }
125
+ const entries = Object.entries(value);
126
+ this.writeVarIntUnsigned(entries.length);
127
+ const length = entries.length;
128
+ for (let i = 0; i < length; i++) {
129
+ const entry = entries[i];
130
+ this.encoder.writeStr(entry[0]);
131
+ this.writeValue(entry[1], mapSchema.values);
132
+ }
133
+ this.writeVarIntUnsigned(0);
134
+ }
135
+ writeUnion(value, schema, selectedIndex) {
136
+ if (!Array.isArray(schema)) {
137
+ throw new Error('Schema is not a union schema');
138
+ }
139
+ let index = selectedIndex;
140
+ if (index === undefined) {
141
+ index = schema.findIndex((subSchema) => this.validator.validateValue(value, subSchema));
142
+ if (index === -1) {
143
+ throw new Error('Value does not match any schema in the union');
144
+ }
145
+ }
146
+ if (index < 0 || index >= schema.length) {
147
+ throw new Error('Invalid union index');
148
+ }
149
+ this.writeVarIntSigned(this.encodeZigZag32(index));
150
+ this.writeValue(value, schema[index]);
151
+ }
152
+ writeFixed(value, schema) {
153
+ if (typeof schema === 'object' && schema.type !== 'fixed') {
154
+ throw new Error('Schema is not a fixed schema');
155
+ }
156
+ const fixedSchema = this.resolveSchema(schema);
157
+ if (fixedSchema.type !== 'fixed') {
158
+ throw new Error('Schema is not a fixed schema');
159
+ }
160
+ if (value.length !== fixedSchema.size) {
161
+ throw new Error(`Fixed value length ${value.length} does not match schema size ${fixedSchema.size}`);
162
+ }
163
+ this.writer.buf(value, value.length);
164
+ }
165
+ writeNumber(value, schema) {
166
+ const resolvedSchema = this.resolveSchema(schema);
167
+ const schemaType = typeof resolvedSchema === 'string'
168
+ ? resolvedSchema
169
+ : Array.isArray(resolvedSchema)
170
+ ? 'union'
171
+ : resolvedSchema.type;
172
+ switch (schemaType) {
173
+ case 'int':
174
+ this.writeInt(value, schema);
175
+ break;
176
+ case 'long':
177
+ this.writeLong(value, schema);
178
+ break;
179
+ case 'float':
180
+ this.writeFloat(value, schema);
181
+ break;
182
+ case 'double':
183
+ this.writeDouble(value, schema);
184
+ break;
185
+ default:
186
+ throw new Error(`Schema type ${schemaType} is not a numeric type`);
187
+ }
188
+ }
189
+ writeValue(value, schema) {
190
+ const resolvedSchema = this.resolveSchema(schema);
191
+ if (typeof resolvedSchema === 'string') {
192
+ switch (resolvedSchema) {
193
+ case 'null':
194
+ this.encoder.writeNull();
195
+ break;
196
+ case 'boolean':
197
+ this.encoder.writeBoolean(value);
198
+ break;
199
+ case 'int':
200
+ this.encoder.writeInt(value);
201
+ break;
202
+ case 'long':
203
+ this.encoder.writeLong(value);
204
+ break;
205
+ case 'float':
206
+ this.encoder.writeFloat(value);
207
+ break;
208
+ case 'double':
209
+ this.encoder.writeDouble(value);
210
+ break;
211
+ case 'bytes':
212
+ this.encoder.writeBin(value);
213
+ break;
214
+ case 'string':
215
+ this.encoder.writeStr(value);
216
+ break;
217
+ default:
218
+ throw new Error(`Unknown primitive type: ${resolvedSchema}`);
219
+ }
220
+ return;
221
+ }
222
+ if (Array.isArray(resolvedSchema)) {
223
+ this.writeUnion(value, resolvedSchema);
224
+ return;
225
+ }
226
+ switch (resolvedSchema.type) {
227
+ case 'record':
228
+ this.writeRecord(value, resolvedSchema);
229
+ break;
230
+ case 'enum':
231
+ this.writeEnum(value, resolvedSchema);
232
+ break;
233
+ case 'array':
234
+ this.writeArray(value, resolvedSchema);
235
+ break;
236
+ case 'map':
237
+ this.writeMap(value, resolvedSchema);
238
+ break;
239
+ case 'fixed':
240
+ this.writeFixed(value, resolvedSchema);
241
+ break;
242
+ default:
243
+ throw new Error(`Unknown schema type: ${resolvedSchema.type}`);
244
+ }
245
+ }
246
+ validateSchemaType(schema, expectedType) {
247
+ const resolvedSchema = this.resolveSchema(schema);
248
+ const actualType = typeof resolvedSchema === 'string'
249
+ ? resolvedSchema
250
+ : Array.isArray(resolvedSchema)
251
+ ? 'union'
252
+ : resolvedSchema.type;
253
+ if (actualType !== expectedType) {
254
+ throw new Error(`Expected schema type ${expectedType}, got ${actualType}`);
255
+ }
256
+ }
257
+ resolveSchema(schema) {
258
+ if (typeof schema === 'string') {
259
+ const namedSchema = this.namedSchemas.get(schema);
260
+ return namedSchema || schema;
261
+ }
262
+ return schema;
263
+ }
264
+ collectNamedSchemas(schema) {
265
+ if (typeof schema === 'string' || Array.isArray(schema)) {
266
+ return;
267
+ }
268
+ if (typeof schema === 'object' && schema !== null) {
269
+ switch (schema.type) {
270
+ case 'record':
271
+ const recordSchema = schema;
272
+ const recordFullName = this.getFullName(recordSchema.name, recordSchema.namespace);
273
+ this.namedSchemas.set(recordFullName, recordSchema);
274
+ recordSchema.fields.forEach((field) => this.collectNamedSchemas(field.type));
275
+ break;
276
+ case 'enum':
277
+ const enumSchema = schema;
278
+ const enumFullName = this.getFullName(enumSchema.name, enumSchema.namespace);
279
+ this.namedSchemas.set(enumFullName, enumSchema);
280
+ break;
281
+ case 'fixed':
282
+ const fixedSchema = schema;
283
+ const fixedFullName = this.getFullName(fixedSchema.name, fixedSchema.namespace);
284
+ this.namedSchemas.set(fixedFullName, fixedSchema);
285
+ break;
286
+ case 'array':
287
+ this.collectNamedSchemas(schema.items);
288
+ break;
289
+ case 'map':
290
+ this.collectNamedSchemas(schema.values);
291
+ break;
292
+ }
293
+ }
294
+ }
295
+ getFullName(name, namespace) {
296
+ return namespace ? `${namespace}.${name}` : name;
297
+ }
298
+ writeVarIntUnsigned(value) {
299
+ const writer = this.writer;
300
+ let n = value >>> 0;
301
+ while (n >= 0x80) {
302
+ writer.u8((n & 0x7f) | 0x80);
303
+ n >>>= 7;
304
+ }
305
+ writer.u8(n & 0x7f);
306
+ }
307
+ writeVarIntSigned(value) {
308
+ const writer = this.writer;
309
+ let n = value >>> 0;
310
+ while (n >= 0x80) {
311
+ writer.u8((n & 0x7f) | 0x80);
312
+ n >>>= 7;
313
+ }
314
+ writer.u8(n & 0x7f);
315
+ }
316
+ encodeZigZag32(value) {
317
+ return (value << 1) ^ (value >> 31);
318
+ }
319
+ }
320
+ exports.AvroSchemaEncoder = AvroSchemaEncoder;
321
+ //# sourceMappingURL=AvroSchemaEncoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroSchemaEncoder.js","sourceRoot":"","sources":["../../src/avro/AvroSchemaEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AvroSchema } from './types';
2
+ export declare class AvroSchemaValidator {
3
+ private namedSchemas;
4
+ validateSchema(schema: AvroSchema): boolean;
5
+ validateValue(value: unknown, schema: AvroSchema): boolean;
6
+ private validateSchemaInternal;
7
+ private validateStringSchema;
8
+ private validateUnionSchema;
9
+ private validateNullSchema;
10
+ private validateBooleanSchema;
11
+ private validateIntSchema;
12
+ private validateLongSchema;
13
+ private validateFloatSchema;
14
+ private validateDoubleSchema;
15
+ private validateBytesSchema;
16
+ private validateStringTypeSchema;
17
+ private validateRecordSchema;
18
+ private validateRecordField;
19
+ private validateEnumSchema;
20
+ private validateArraySchema;
21
+ private validateMapSchema;
22
+ private validateFixedSchema;
23
+ private validateValueAgainstSchema;
24
+ private validateValueAgainstStringSchema;
25
+ private validateValueAgainstRecord;
26
+ private validateValueAgainstEnum;
27
+ private validateValueAgainstArray;
28
+ private validateValueAgainstMap;
29
+ private validateValueAgainstFixed;
30
+ private getSchemaTypeName;
31
+ private getFullName;
32
+ }
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AvroSchemaValidator = void 0;
4
+ class AvroSchemaValidator {
5
+ constructor() {
6
+ this.namedSchemas = new Map();
7
+ }
8
+ validateSchema(schema) {
9
+ this.namedSchemas.clear();
10
+ return this.validateSchemaInternal(schema);
11
+ }
12
+ validateValue(value, schema) {
13
+ this.namedSchemas.clear();
14
+ this.validateSchemaInternal(schema);
15
+ return this.validateValueAgainstSchema(value, schema);
16
+ }
17
+ validateSchemaInternal(schema) {
18
+ if (typeof schema === 'string') {
19
+ return this.validateStringSchema(schema);
20
+ }
21
+ if (Array.isArray(schema)) {
22
+ return this.validateUnionSchema(schema);
23
+ }
24
+ if (typeof schema === 'object' && schema !== null) {
25
+ switch (schema.type) {
26
+ case 'null':
27
+ return this.validateNullSchema(schema);
28
+ case 'boolean':
29
+ return this.validateBooleanSchema(schema);
30
+ case 'int':
31
+ return this.validateIntSchema(schema);
32
+ case 'long':
33
+ return this.validateLongSchema(schema);
34
+ case 'float':
35
+ return this.validateFloatSchema(schema);
36
+ case 'double':
37
+ return this.validateDoubleSchema(schema);
38
+ case 'bytes':
39
+ return this.validateBytesSchema(schema);
40
+ case 'string':
41
+ return this.validateStringTypeSchema(schema);
42
+ case 'record':
43
+ return this.validateRecordSchema(schema);
44
+ case 'enum':
45
+ return this.validateEnumSchema(schema);
46
+ case 'array':
47
+ return this.validateArraySchema(schema);
48
+ case 'map':
49
+ return this.validateMapSchema(schema);
50
+ case 'fixed':
51
+ return this.validateFixedSchema(schema);
52
+ default:
53
+ return false;
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ validateStringSchema(schema) {
59
+ const primitiveTypes = ['null', 'boolean', 'int', 'long', 'float', 'double', 'bytes', 'string'];
60
+ return primitiveTypes.includes(schema) || this.namedSchemas.has(schema);
61
+ }
62
+ validateUnionSchema(schema) {
63
+ if (schema.length === 0)
64
+ return false;
65
+ const typeSet = new Set();
66
+ for (const subSchema of schema) {
67
+ if (!this.validateSchemaInternal(subSchema))
68
+ return false;
69
+ const typeName = this.getSchemaTypeName(subSchema);
70
+ if (typeSet.has(typeName))
71
+ return false;
72
+ typeSet.add(typeName);
73
+ }
74
+ return true;
75
+ }
76
+ validateNullSchema(schema) {
77
+ return schema.type === 'null';
78
+ }
79
+ validateBooleanSchema(schema) {
80
+ return schema.type === 'boolean';
81
+ }
82
+ validateIntSchema(schema) {
83
+ return schema.type === 'int';
84
+ }
85
+ validateLongSchema(schema) {
86
+ return schema.type === 'long';
87
+ }
88
+ validateFloatSchema(schema) {
89
+ return schema.type === 'float';
90
+ }
91
+ validateDoubleSchema(schema) {
92
+ return schema.type === 'double';
93
+ }
94
+ validateBytesSchema(schema) {
95
+ return schema.type === 'bytes';
96
+ }
97
+ validateStringTypeSchema(schema) {
98
+ return schema.type === 'string';
99
+ }
100
+ validateRecordSchema(schema) {
101
+ if (schema.type !== 'record' || !schema.name || !Array.isArray(schema.fields))
102
+ return false;
103
+ const fullName = this.getFullName(schema.name, schema.namespace);
104
+ if (this.namedSchemas.has(fullName))
105
+ return false;
106
+ this.namedSchemas.set(fullName, schema);
107
+ const fieldNames = new Set();
108
+ for (const field of schema.fields) {
109
+ if (!this.validateRecordField(field))
110
+ return false;
111
+ if (fieldNames.has(field.name))
112
+ return false;
113
+ fieldNames.add(field.name);
114
+ }
115
+ return true;
116
+ }
117
+ validateRecordField(field) {
118
+ return typeof field.name === 'string' && field.name.length > 0 && this.validateSchemaInternal(field.type);
119
+ }
120
+ validateEnumSchema(schema) {
121
+ if (schema.type !== 'enum' || !schema.name || !Array.isArray(schema.symbols))
122
+ return false;
123
+ const fullName = this.getFullName(schema.name, schema.namespace);
124
+ if (this.namedSchemas.has(fullName))
125
+ return false;
126
+ this.namedSchemas.set(fullName, schema);
127
+ if (schema.symbols.length === 0)
128
+ return false;
129
+ const symbolSet = new Set();
130
+ for (const symbol of schema.symbols) {
131
+ if (typeof symbol !== 'string' || symbolSet.has(symbol))
132
+ return false;
133
+ symbolSet.add(symbol);
134
+ }
135
+ if (schema.default !== undefined && !schema.symbols.includes(schema.default))
136
+ return false;
137
+ return true;
138
+ }
139
+ validateArraySchema(schema) {
140
+ return schema.type === 'array' && this.validateSchemaInternal(schema.items);
141
+ }
142
+ validateMapSchema(schema) {
143
+ return schema.type === 'map' && this.validateSchemaInternal(schema.values);
144
+ }
145
+ validateFixedSchema(schema) {
146
+ if (schema.type !== 'fixed' || !schema.name || typeof schema.size !== 'number')
147
+ return false;
148
+ if (schema.size < 0)
149
+ return false;
150
+ const fullName = this.getFullName(schema.name, schema.namespace);
151
+ if (this.namedSchemas.has(fullName))
152
+ return false;
153
+ this.namedSchemas.set(fullName, schema);
154
+ return true;
155
+ }
156
+ validateValueAgainstSchema(value, schema) {
157
+ if (typeof schema === 'string') {
158
+ return this.validateValueAgainstStringSchema(value, schema);
159
+ }
160
+ if (Array.isArray(schema)) {
161
+ return schema.some((subSchema) => this.validateValueAgainstSchema(value, subSchema));
162
+ }
163
+ if (typeof schema === 'object' && schema !== null) {
164
+ switch (schema.type) {
165
+ case 'null':
166
+ return value === null;
167
+ case 'boolean':
168
+ return typeof value === 'boolean';
169
+ case 'int':
170
+ return typeof value === 'number' && Number.isInteger(value) && value >= -2147483648 && value <= 2147483647;
171
+ case 'long':
172
+ return (typeof value === 'number' && Number.isInteger(value)) || typeof value === 'bigint';
173
+ case 'float':
174
+ case 'double':
175
+ return typeof value === 'number';
176
+ case 'bytes':
177
+ return value instanceof Uint8Array;
178
+ case 'string':
179
+ return typeof value === 'string';
180
+ case 'record':
181
+ return this.validateValueAgainstRecord(value, schema);
182
+ case 'enum':
183
+ return this.validateValueAgainstEnum(value, schema);
184
+ case 'array':
185
+ return this.validateValueAgainstArray(value, schema);
186
+ case 'map':
187
+ return this.validateValueAgainstMap(value, schema);
188
+ case 'fixed':
189
+ return this.validateValueAgainstFixed(value, schema);
190
+ default:
191
+ return false;
192
+ }
193
+ }
194
+ return false;
195
+ }
196
+ validateValueAgainstStringSchema(value, schema) {
197
+ switch (schema) {
198
+ case 'null':
199
+ return value === null;
200
+ case 'boolean':
201
+ return typeof value === 'boolean';
202
+ case 'int':
203
+ return typeof value === 'number' && Number.isInteger(value) && value >= -2147483648 && value <= 2147483647;
204
+ case 'long':
205
+ return (typeof value === 'number' && Number.isInteger(value)) || typeof value === 'bigint';
206
+ case 'float':
207
+ case 'double':
208
+ return typeof value === 'number';
209
+ case 'bytes':
210
+ return value instanceof Uint8Array;
211
+ case 'string':
212
+ return typeof value === 'string';
213
+ default:
214
+ const namedSchema = this.namedSchemas.get(schema);
215
+ return namedSchema ? this.validateValueAgainstSchema(value, namedSchema) : false;
216
+ }
217
+ }
218
+ validateValueAgainstRecord(value, schema) {
219
+ if (typeof value !== 'object' || value === null)
220
+ return false;
221
+ const obj = value;
222
+ for (const field of schema.fields) {
223
+ const fieldValue = obj[field.name];
224
+ if (fieldValue === undefined && field.default === undefined)
225
+ return false;
226
+ if (fieldValue !== undefined && !this.validateValueAgainstSchema(fieldValue, field.type))
227
+ return false;
228
+ }
229
+ return true;
230
+ }
231
+ validateValueAgainstEnum(value, schema) {
232
+ return typeof value === 'string' && schema.symbols.includes(value);
233
+ }
234
+ validateValueAgainstArray(value, schema) {
235
+ if (!Array.isArray(value))
236
+ return false;
237
+ return value.every((item) => this.validateValueAgainstSchema(item, schema.items));
238
+ }
239
+ validateValueAgainstMap(value, schema) {
240
+ if (typeof value !== 'object' || value === null)
241
+ return false;
242
+ const obj = value;
243
+ return Object.values(obj).every((val) => this.validateValueAgainstSchema(val, schema.values));
244
+ }
245
+ validateValueAgainstFixed(value, schema) {
246
+ return value instanceof Uint8Array && value.length === schema.size;
247
+ }
248
+ getSchemaTypeName(schema) {
249
+ if (typeof schema === 'string')
250
+ return schema;
251
+ if (Array.isArray(schema))
252
+ return 'union';
253
+ return schema.type;
254
+ }
255
+ getFullName(name, namespace) {
256
+ return namespace ? `${namespace}.${name}` : name;
257
+ }
258
+ }
259
+ exports.AvroSchemaValidator = AvroSchemaValidator;
260
+ //# sourceMappingURL=AvroSchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroSchemaValidator.js","sourceRoot":"","sources":["../../src/avro/AvroSchemaValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './AvroSchemaValidator';
3
+ export * from './AvroEncoder';
4
+ export * from './AvroSchemaEncoder';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./types"), exports);
5
+ tslib_1.__exportStar(require("./AvroSchemaValidator"), exports);
6
+ tslib_1.__exportStar(require("./AvroEncoder"), exports);
7
+ tslib_1.__exportStar(require("./AvroSchemaEncoder"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/avro/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,gEAAsC;AACtC,wDAA8B;AAC9B,8DAAoC"}
@@ -0,0 +1,109 @@
1
+ export interface AvroBaseSchema {
2
+ type: string;
3
+ doc?: string;
4
+ [key: string]: any;
5
+ }
6
+ export interface AvroNullSchema extends AvroBaseSchema {
7
+ type: 'null';
8
+ }
9
+ export interface AvroBooleanSchema extends AvroBaseSchema {
10
+ type: 'boolean';
11
+ }
12
+ export interface AvroIntSchema extends AvroBaseSchema {
13
+ type: 'int';
14
+ }
15
+ export interface AvroLongSchema extends AvroBaseSchema {
16
+ type: 'long';
17
+ }
18
+ export interface AvroFloatSchema extends AvroBaseSchema {
19
+ type: 'float';
20
+ }
21
+ export interface AvroDoubleSchema extends AvroBaseSchema {
22
+ type: 'double';
23
+ }
24
+ export interface AvroBytesSchema extends AvroBaseSchema {
25
+ type: 'bytes';
26
+ }
27
+ export interface AvroStringSchema extends AvroBaseSchema {
28
+ type: 'string';
29
+ }
30
+ export interface AvroRecordField {
31
+ name: string;
32
+ type: AvroSchema;
33
+ doc?: string;
34
+ default?: any;
35
+ order?: 'ascending' | 'descending' | 'ignore';
36
+ aliases?: string[];
37
+ }
38
+ export interface AvroRecordSchema extends AvroBaseSchema {
39
+ type: 'record';
40
+ name: string;
41
+ namespace?: string;
42
+ fields: AvroRecordField[];
43
+ aliases?: string[];
44
+ }
45
+ export interface AvroEnumSchema extends AvroBaseSchema {
46
+ type: 'enum';
47
+ name: string;
48
+ namespace?: string;
49
+ symbols: string[];
50
+ default?: string;
51
+ aliases?: string[];
52
+ }
53
+ export interface AvroArraySchema extends AvroBaseSchema {
54
+ type: 'array';
55
+ items: AvroSchema;
56
+ }
57
+ export interface AvroMapSchema extends AvroBaseSchema {
58
+ type: 'map';
59
+ values: AvroSchema;
60
+ }
61
+ export interface AvroUnionSchema extends Array<AvroSchema> {
62
+ }
63
+ export interface AvroFixedSchema extends AvroBaseSchema {
64
+ type: 'fixed';
65
+ name: string;
66
+ namespace?: string;
67
+ size: number;
68
+ aliases?: string[];
69
+ }
70
+ export type AvroPrimitiveSchema = AvroNullSchema | AvroBooleanSchema | AvroIntSchema | AvroLongSchema | AvroFloatSchema | AvroDoubleSchema | AvroBytesSchema | AvroStringSchema;
71
+ export type AvroComplexSchema = AvroRecordSchema | AvroEnumSchema | AvroArraySchema | AvroMapSchema | AvroUnionSchema | AvroFixedSchema;
72
+ export type AvroSchema = AvroPrimitiveSchema | AvroComplexSchema | string;
73
+ export type AvroNamedSchema = AvroRecordSchema | AvroEnumSchema | AvroFixedSchema;
74
+ export interface AvroLogicalTypeSchema extends AvroBaseSchema {
75
+ logicalType: string;
76
+ }
77
+ export interface AvroDecimalLogicalType extends AvroLogicalTypeSchema {
78
+ logicalType: 'decimal';
79
+ precision: number;
80
+ scale?: number;
81
+ }
82
+ export interface AvroUuidLogicalType extends AvroStringSchema {
83
+ logicalType: 'uuid';
84
+ }
85
+ export interface AvroDateLogicalType extends AvroIntSchema {
86
+ logicalType: 'date';
87
+ }
88
+ export interface AvroTimeMillisLogicalType extends AvroIntSchema {
89
+ logicalType: 'time-millis';
90
+ }
91
+ export interface AvroTimeMicrosLogicalType extends AvroLongSchema {
92
+ logicalType: 'time-micros';
93
+ }
94
+ export interface AvroTimestampMillisLogicalType extends AvroLongSchema {
95
+ logicalType: 'timestamp-millis';
96
+ }
97
+ export interface AvroTimestampMicrosLogicalType extends AvroLongSchema {
98
+ logicalType: 'timestamp-micros';
99
+ }
100
+ export interface AvroLocalTimestampMillisLogicalType extends AvroLongSchema {
101
+ logicalType: 'local-timestamp-millis';
102
+ }
103
+ export interface AvroLocalTimestampMicrosLogicalType extends AvroLongSchema {
104
+ logicalType: 'local-timestamp-micros';
105
+ }
106
+ export interface AvroDurationLogicalType extends AvroFixedSchema {
107
+ logicalType: 'duration';
108
+ size: 12;
109
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/avro/types.ts"],"names":[],"mappings":""}
@@ -2,7 +2,10 @@ export * from './types';
2
2
  export { MsgPackEncoderFast } from './MsgPackEncoderFast';
3
3
  export { MsgPackEncoder } from './MsgPackEncoder';
4
4
  export { MsgPackEncoderStable } from './MsgPackEncoderStable';
5
+ export { MsgPackDecoder } from './MsgPackDecoder';
5
6
  export { MsgPackDecoderFast } from './MsgPackDecoderFast';
6
7
  export { MsgPackToJsonConverter } from './MsgPackToJsonConverter';
7
8
  export { JsonPackValue } from '../JsonPackValue';
8
9
  export { JsonPackExtension } from '../JsonPackExtension';
10
+ export { MsgPackEncoder as MessagePackEncoder } from './MsgPackEncoder';
11
+ export { MsgPackDecoder as MessagePackDecoder } from './MsgPackDecoder';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonPackExtension = exports.JsonPackValue = exports.MsgPackToJsonConverter = exports.MsgPackDecoderFast = exports.MsgPackEncoderStable = exports.MsgPackEncoder = exports.MsgPackEncoderFast = void 0;
3
+ exports.MessagePackDecoder = exports.MessagePackEncoder = exports.JsonPackExtension = exports.JsonPackValue = exports.MsgPackToJsonConverter = exports.MsgPackDecoderFast = exports.MsgPackDecoder = exports.MsgPackEncoderStable = exports.MsgPackEncoder = exports.MsgPackEncoderFast = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./types"), exports);
6
6
  var MsgPackEncoderFast_1 = require("./MsgPackEncoderFast");
@@ -9,6 +9,8 @@ var MsgPackEncoder_1 = require("./MsgPackEncoder");
9
9
  Object.defineProperty(exports, "MsgPackEncoder", { enumerable: true, get: function () { return MsgPackEncoder_1.MsgPackEncoder; } });
10
10
  var MsgPackEncoderStable_1 = require("./MsgPackEncoderStable");
11
11
  Object.defineProperty(exports, "MsgPackEncoderStable", { enumerable: true, get: function () { return MsgPackEncoderStable_1.MsgPackEncoderStable; } });
12
+ var MsgPackDecoder_1 = require("./MsgPackDecoder");
13
+ Object.defineProperty(exports, "MsgPackDecoder", { enumerable: true, get: function () { return MsgPackDecoder_1.MsgPackDecoder; } });
12
14
  var MsgPackDecoderFast_1 = require("./MsgPackDecoderFast");
13
15
  Object.defineProperty(exports, "MsgPackDecoderFast", { enumerable: true, get: function () { return MsgPackDecoderFast_1.MsgPackDecoderFast; } });
14
16
  var MsgPackToJsonConverter_1 = require("./MsgPackToJsonConverter");
@@ -17,4 +19,8 @@ var JsonPackValue_1 = require("../JsonPackValue");
17
19
  Object.defineProperty(exports, "JsonPackValue", { enumerable: true, get: function () { return JsonPackValue_1.JsonPackValue; } });
18
20
  var JsonPackExtension_1 = require("../JsonPackExtension");
19
21
  Object.defineProperty(exports, "JsonPackExtension", { enumerable: true, get: function () { return JsonPackExtension_1.JsonPackExtension; } });
22
+ var MsgPackEncoder_2 = require("./MsgPackEncoder");
23
+ Object.defineProperty(exports, "MessagePackEncoder", { enumerable: true, get: function () { return MsgPackEncoder_2.MsgPackEncoder; } });
24
+ var MsgPackDecoder_2 = require("./MsgPackDecoder");
25
+ Object.defineProperty(exports, "MessagePackDecoder", { enumerable: true, get: function () { return MsgPackDecoder_2.MsgPackDecoder; } });
20
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/msgpack/index.ts"],"names":[],"mappings":";;;;AA8BA,kDAAwB;AACxB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAC5B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,mEAAgE;AAAxD,gIAAA,sBAAsB,OAAA;AAC9B,kDAA+C;AAAvC,8GAAA,aAAa,OAAA;AACrB,0DAAuD;AAA/C,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/msgpack/index.ts"],"names":[],"mappings":";;;;AA8BA,kDAAwB;AACxB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAC5B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,mEAAgE;AAAxD,gIAAA,sBAAsB,OAAA;AAC9B,kDAA+C;AAAvC,8GAAA,aAAa,OAAA;AACrB,0DAAuD;AAA/C,sHAAA,iBAAiB,OAAA;AAGzB,mDAAsE;AAA9D,oHAAA,cAAc,OAAsB;AAC5C,mDAAsE;AAA9D,oHAAA,cAAc,OAAsB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsonjoy.com/json-pack",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "High-performance JSON serialization library",
5
5
  "author": {
6
6
  "name": "streamich",