11// Smile format constants based on specification v1.0.6
22
33// Header constants
4- export const HEADER = {
5- BYTE_0 : 0x3a , // ASCII ':'
6- BYTE_1 : 0x29 , // ASCII ')'
7- BYTE_2 : 0x0a , // ASCII '\n'
8- VERSION_MASK : 0xf0 , // Bits 4-7 for version
9- VERSION_CURRENT : 0x00 , // Current version
10- RESERVED_BIT : 0x08 , // Bit 3 reserved
11- RAW_BINARY_ENABLED : 0x04 , // Bit 2
12- SHARED_STRING_VALUES : 0x02 , // Bit 1
13- SHARED_PROPERTY_NAMES : 0x01 , // Bit 0
14- } as const ;
4+ export const enum HEADER {
5+ BYTE_0 = 0x3a , // ASCII ':'
6+ BYTE_1 = 0x29 , // ASCII ')'
7+ BYTE_2 = 0x0a , // ASCII '\n'
8+ VERSION_MASK = 0xf0 , // Bits 4-7 for version
9+ VERSION_CURRENT = 0x00 , // Current version
10+ RESERVED_BIT = 0x08 , // Bit 3 reserved
11+ RAW_BINARY_ENABLED = 0x04 , // Bit 2
12+ SHARED_STRING_VALUES = 0x02 , // Bit 1
13+ SHARED_PROPERTY_NAMES = 0x01 , // Bit 0
14+ }
1515
1616// Token value ranges for value mode
17- export const VALUE_MODE = {
17+ export const enum VALUE_MODE {
1818 // Short Shared Value String reference (0x01 - 0x1F)
19- SHORT_SHARED_VALUE_MIN : 0x01 ,
20- SHORT_SHARED_VALUE_MAX : 0x1f ,
19+ SHORT_SHARED_VALUE_MIN = 0x01 ,
20+ SHORT_SHARED_VALUE_MAX = 0x1f ,
2121
2222 // Simple literals, numbers (0x20 - 0x3F)
23- EMPTY_STRING : 0x20 ,
24- NULL : 0x21 ,
25- FALSE : 0x22 ,
26- TRUE : 0x23 ,
27- INT_32 : 0x24 ,
28- INT_64 : 0x25 ,
29- BIG_INTEGER : 0x26 ,
30- RESERVED_INT : 0x27 ,
31- FLOAT_32 : 0x28 ,
32- FLOAT_64 : 0x29 ,
33- BIG_DECIMAL : 0x2a ,
34- RESERVED_FLOAT : 0x2b ,
23+ EMPTY_STRING = 0x20 ,
24+ NULL = 0x21 ,
25+ FALSE = 0x22 ,
26+ TRUE = 0x23 ,
27+ INT_32 = 0x24 ,
28+ INT_64 = 0x25 ,
29+ BIG_INTEGER = 0x26 ,
30+ RESERVED_INT = 0x27 ,
31+ FLOAT_32 = 0x28 ,
32+ FLOAT_64 = 0x29 ,
33+ BIG_DECIMAL = 0x2a ,
34+ RESERVED_FLOAT = 0x2b ,
3535
3636 // Tiny ASCII (0x40 - 0x5F)
37- TINY_ASCII_MIN : 0x40 ,
38- TINY_ASCII_MAX : 0x5f ,
37+ TINY_ASCII_MIN = 0x40 ,
38+ TINY_ASCII_MAX = 0x5f ,
3939
4040 // Short ASCII (0x60 - 0x7F)
41- SHORT_ASCII_MIN : 0x60 ,
42- SHORT_ASCII_MAX : 0x7f ,
41+ SHORT_ASCII_MIN = 0x60 ,
42+ SHORT_ASCII_MAX = 0x7f ,
4343
4444 // Tiny Unicode (0x80 - 0x9F)
45- TINY_UNICODE_MIN : 0x80 ,
46- TINY_UNICODE_MAX : 0x9f ,
45+ TINY_UNICODE_MIN = 0x80 ,
46+ TINY_UNICODE_MAX = 0x9f ,
4747
4848 // Short Unicode (0xA0 - 0xBF)
49- SHORT_UNICODE_MIN : 0xa0 ,
50- SHORT_UNICODE_MAX : 0xbf ,
49+ SHORT_UNICODE_MIN = 0xa0 ,
50+ SHORT_UNICODE_MAX = 0xbf ,
5151
5252 // Small integers (0xC0 - 0xDF)
53- SMALL_INT_MIN : 0xc0 ,
54- SMALL_INT_MAX : 0xdf ,
53+ SMALL_INT_MIN = 0xc0 ,
54+ SMALL_INT_MAX = 0xdf ,
5555
5656 // Misc / binary / text / structure markers
57- LONG_ASCII_TEXT : 0xe0 ,
58- LONG_UNICODE_TEXT : 0xe4 ,
59- BINARY_7BIT : 0xe8 ,
60- SHARED_STRING_LONG : 0xec ,
57+ LONG_ASCII_TEXT = 0xe0 ,
58+ LONG_UNICODE_TEXT = 0xe4 ,
59+ BINARY_7BIT = 0xe8 ,
60+ SHARED_STRING_LONG = 0xec ,
6161
6262 // Structural markers
63- START_ARRAY : 0xf8 ,
64- END_ARRAY : 0xf9 ,
65- START_OBJECT : 0xfa ,
66- END_OBJECT : 0xfb , // Only in key mode
63+ START_ARRAY = 0xf8 ,
64+ END_ARRAY = 0xf9 ,
65+ START_OBJECT = 0xfa ,
66+ END_OBJECT = 0xfb , // Only in key mode
6767
6868 // Special markers
69- END_STRING_MARKER : 0xfc ,
70- BINARY_RAW : 0xfd ,
71- RESERVED_FE : 0xfe ,
72- END_CONTENT : 0xff ,
73- } as const ;
69+ END_STRING_MARKER = 0xfc ,
70+ BINARY_RAW = 0xfd ,
71+ RESERVED_FE = 0xfe ,
72+ END_CONTENT = 0xff ,
73+ }
7474
7575// Token value ranges for key mode
76- export const KEY_MODE = {
76+ export const enum KEY_MODE {
7777 // Empty string name
78- EMPTY_STRING : 0x20 ,
78+ EMPTY_STRING = 0x20 ,
7979
8080 // Long shared key name reference (0x30 - 0x33)
81- LONG_SHARED_MIN : 0x30 ,
82- LONG_SHARED_MAX : 0x33 ,
81+ LONG_SHARED_MIN = 0x30 ,
82+ LONG_SHARED_MAX = 0x33 ,
8383
8484 // Long Unicode name
85- LONG_UNICODE_NAME : 0x34 ,
85+ LONG_UNICODE_NAME = 0x34 ,
8686
8787 // Short shared key name reference (0x40 - 0x7F)
88- SHORT_SHARED_MIN : 0x40 ,
89- SHORT_SHARED_MAX : 0x7f ,
88+ SHORT_SHARED_MIN = 0x40 ,
89+ SHORT_SHARED_MAX = 0x7f ,
9090
9191 // Short ASCII names (0x80 - 0xBF)
92- SHORT_ASCII_MIN : 0x80 ,
93- SHORT_ASCII_MAX : 0xbf ,
92+ SHORT_ASCII_MIN = 0x80 ,
93+ SHORT_ASCII_MAX = 0xbf ,
9494
9595 // Short Unicode names (0xC0 - 0xF7)
96- SHORT_UNICODE_MIN : 0xc0 ,
97- SHORT_UNICODE_MAX : 0xf7 ,
96+ SHORT_UNICODE_MIN = 0xc0 ,
97+ SHORT_UNICODE_MAX = 0xf7 ,
9898
9999 // End object marker
100- END_OBJECT : 0xfb ,
101- } as const ;
100+ END_OBJECT = 0xfb ,
101+ }
102102
103103// Constants for shared string tables
104- export const SHARED = {
105- MAX_REFERENCES : 1024 ,
106- MAX_SHORT_REFERENCE : 31 , // Indices 0-30 use short references (tokens 0x01-0x1F)
107- MIN_LONG_REFERENCE : 31 , // Indices 31+ use long references
108- MAX_STRING_LENGTH : 64 , // Only strings <= 64 bytes can be shared
109- AVOIDED_REFERENCES : [ 0xfe , 0xff ] , // These must be avoided in long references
110- } as const ;
104+ export const enum SHARED {
105+ MAX_REFERENCES = 1024 ,
106+ MAX_SHORT_REFERENCE = 31 , // Indices 0-30 use short references (tokens 0x01-0x1F)
107+ MIN_LONG_REFERENCE = 31 , // Indices 31+ use long references
108+ MAX_STRING_LENGTH = 64 , // Only strings <= 64 bytes can be shared
109+ }
110+
111+ export const SHARED_AVOIDED_REFERENCES = [ 0xfe , 0xff ] ; // These must be avoided in long references
111112
112113// Encoding constants
113- export const ENCODING = {
114- SMALL_INT_BIAS : 16 , // Small integers are biased by 16 (-16 to +15)
115- VINT_CONTINUATION_BIT : 0x80 , // MSB set for all but last byte
116- VINT_END_BIT : 0x80 , // MSB set for last byte
117- VINT_DATA_MASK : 0x7f , // 7 bits of data per byte
118- SAFE_BINARY_MASK : 0x7f , // 7 bits used in safe binary encoding
119- } as const ;
114+ export const enum ENCODING {
115+ SMALL_INT_BIAS = 16 , // Small integers are biased by 16 (-16 to +15)
116+ VINT_CONTINUATION_BIT = 0x80 , // MSB set for all but last byte
117+ VINT_END_BIT = 0x80 , // MSB set for last byte
118+ VINT_DATA_MASK = 0x7f , // 7 bits of data per byte
119+ SAFE_BINARY_MASK = 0x7f , // 7 bits used in safe binary encoding
120+ }
120121
121122// Error messages
122- export const ERROR = {
123- INVALID_HEADER : 'Invalid Smile header' ,
124- UNEXPECTED_END : 'Unexpected end of input' ,
125- INVALID_TOKEN : 'Invalid token' ,
126- INVALID_REFERENCE : 'Invalid shared string reference' ,
127- UNSUPPORTED_VERSION : 'Unsupported Smile format version' ,
128- MALFORMED_VINT : 'Malformed variable-length integer' ,
129- STRING_TOO_LONG : 'String too long for shared reference' ,
130- INVALID_FLOAT : 'Invalid floating point encoding' ,
131- } as const ;
123+ export const enum ERROR {
124+ INVALID_HEADER = 'Invalid Smile header' ,
125+ UNEXPECTED_END = 'Unexpected end of input' ,
126+ INVALID_TOKEN = 'Invalid token' ,
127+ INVALID_REFERENCE = 'Invalid shared string reference' ,
128+ UNSUPPORTED_VERSION = 'Unsupported Smile format version' ,
129+ MALFORMED_VINT = 'Malformed variable-length integer' ,
130+ STRING_TOO_LONG = 'String too long for shared reference' ,
131+ INVALID_FLOAT = 'Invalid floating point encoding' ,
132+ }
0 commit comments