@bepalo/rjson 1.0.0 → 1.0.5

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/rjson.js DELETED
@@ -1,425 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RJSON = exports.stringifyRJSON = exports.stringifyRJSONBoolean = exports.stringifyRJSONNumber = exports.stringifyRJSONString = exports.stringifyRJSONMappedArray = exports.stringifyRJSONObject = exports.stringifyRJSONArray = exports.stringifyRJSONKey = exports.parseRJSON = void 0;
4
- exports.rjson = rjson;
5
- const Constants = {
6
- ObjectStart: "(".charCodeAt(0),
7
- ObjectEnd: ")".charCodeAt(0),
8
- ArrayStart0: "_".charCodeAt(0),
9
- ArrayStart1: "(".charCodeAt(0),
10
- ArrayEnd0: ")".charCodeAt(0),
11
- ArrayEnd1: "_".charCodeAt(0),
12
- MappedStart0: "~".charCodeAt(0),
13
- MappedStart1: "(".charCodeAt(0),
14
- MappedEnd0: ")".charCodeAt(0),
15
- MappedEnd1: "~".charCodeAt(0),
16
- STRSSingle: "'".charCodeAt(0),
17
- STRESingle: "'".charCodeAt(0),
18
- STRSDouble: '"'.charCodeAt(0),
19
- STREDouble: '"'.charCodeAt(0),
20
- STRSTick: "`".charCodeAt(0),
21
- STRETick: "`".charCodeAt(0),
22
- Escape: "\\".charCodeAt(0),
23
- CCA: "A".charCodeAt(0),
24
- CCZ: "Z".charCodeAt(0),
25
- CCa: "a".charCodeAt(0),
26
- CCz: "z".charCodeAt(0),
27
- CCUnderScore: "_".charCodeAt(0),
28
- CCDot: ".".charCodeAt(0),
29
- CC0: "0".charCodeAt(0),
30
- CC9: "9".charCodeAt(0),
31
- CCE: "E".charCodeAt(0),
32
- CCe: "e".charCodeAt(0),
33
- CCMinus: "-".charCodeAt(0),
34
- CCPlus: "+".charCodeAt(0),
35
- CCDecimalPoint: ".".charCodeAt(0),
36
- CCC: ":".charCodeAt(0),
37
- CCKeyValueSeparator: ":".charCodeAt(0),
38
- CCValueSeparator: ",".charCodeAt(0),
39
- CCTrue: "T".charCodeAt(0),
40
- CCFalse: "F".charCodeAt(0),
41
- CCNull: "N".charCodeAt(0),
42
- CCUndefined: "U".charCodeAt(0),
43
- };
44
- const isAlpha = (charCode) => (charCode >= Constants.CCa && charCode <= Constants.CCz) ||
45
- (charCode >= Constants.CCA && charCode <= Constants.CCZ);
46
- const isDigit = (charCode) => charCode >= Constants.CC0 && charCode <= Constants.CC9;
47
- const isIdentifier0 = (charCode) => isAlpha(charCode) || charCode === Constants.CCUnderScore;
48
- const isIdentifier1 = (charCode) => isAlpha(charCode) ||
49
- isDigit(charCode) ||
50
- charCode === Constants.CCUnderScore ||
51
- charCode === Constants.CCDot;
52
- const throwRJSONError = (source, _state, message, index, token) => {
53
- throw new Error(`'${message}' '${token}' at index ${index}\n\`\n${source.slice(Math.max(0, index - 20), index + 1)}\n\``);
54
- };
55
- const parseRJSONKey = (source, state, separatorCharCode, endCharCode) => {
56
- // first char
57
- {
58
- state.charCode = source.charCodeAt(state.i);
59
- switch (state.charCode) {
60
- case separatorCharCode:
61
- case endCharCode:
62
- if (state.forbidEmptyKeys) {
63
- return throwRJSONError(source, state, "Empty object key is forbidden in this context", state.i, source.charAt(state.i));
64
- }
65
- return "";
66
- case Constants.STRSSingle:
67
- case Constants.STRSDouble:
68
- case Constants.STRSTick:
69
- if (state.forbidTextKeys) {
70
- return throwRJSONError(source, state, "Text object key is forbidden in this context", state.i, source.charAt(state.i));
71
- }
72
- return parseRJSONText(source, state);
73
- }
74
- if (!isIdentifier0(state.charCode)) {
75
- return throwRJSONError(source, state, "Invalid object key start token", state.i, source.charAt(state.i));
76
- }
77
- }
78
- const s = state.i;
79
- for (state.i++; state.i < state.end; state.i++) {
80
- state.charCode = source.charCodeAt(state.i);
81
- if (state.charCode === separatorCharCode ||
82
- state.charCode === endCharCode) {
83
- break;
84
- }
85
- else if (!isIdentifier1(state.charCode)) {
86
- return throwRJSONError(source, state, "Invalid object key token", state.i, source.charAt(state.i));
87
- }
88
- }
89
- return source.slice(s, state.i);
90
- };
91
- const parseRJSONText = (source, state) => {
92
- const textDelimiter = state.charCode;
93
- const s = ++state.i;
94
- let j = s;
95
- let result = "";
96
- for (; state.i < state.end; state.i++) {
97
- state.charCode = source.charCodeAt(state.i);
98
- if (state.charCode === Constants.Escape) {
99
- result += source.slice(j, state.i);
100
- j = ++state.i;
101
- continue;
102
- }
103
- else if (state.charCode === textDelimiter) {
104
- result += source.slice(j, state.i);
105
- state.i++;
106
- break;
107
- }
108
- }
109
- return result;
110
- };
111
- const praseRJSONNumber = (source, state, endCharCode) => {
112
- const s = state.i;
113
- let decimalPointsCount = state.charCode === Constants.CCDecimalPoint ? 1 : 0;
114
- let eCount = state.charCode === Constants.CCE || state.charCode === Constants.CCe ? 1 : 0;
115
- for (state.i++; state.i < state.end; state.i++) {
116
- state.charCode = source.charCodeAt(state.i);
117
- if (state.charCode === Constants.CCValueSeparator) {
118
- break;
119
- }
120
- switch (state.charCode) {
121
- case Constants.CCDecimalPoint:
122
- if (decimalPointsCount > 0) {
123
- return throwRJSONError(source, state, "Invalid decimal token", state.i, source.charAt(state.i));
124
- }
125
- decimalPointsCount++;
126
- continue;
127
- case Constants.CCE:
128
- case Constants.CCe:
129
- if (eCount > 0) {
130
- return throwRJSONError(source, state, "Invalid 'e' token", state.i, source.charAt(state.i));
131
- }
132
- eCount++;
133
- continue;
134
- case Constants.CCMinus:
135
- case Constants.CCPlus:
136
- if (eCount === 0) {
137
- return throwRJSONError(source, state, "Invalid sign token", state.i, source.charAt(state.i));
138
- }
139
- continue;
140
- case 48:
141
- case 49:
142
- case 50:
143
- case 51:
144
- case 52:
145
- case 53:
146
- case 54:
147
- case 55:
148
- case 56:
149
- case 57:
150
- continue;
151
- }
152
- if (state.charCode === endCharCode) {
153
- break;
154
- }
155
- return throwRJSONError(source, state, "Invalid numeric value token", state.i, source.charAt(state.i));
156
- }
157
- return Number.parseFloat(source.slice(s, state.i));
158
- };
159
- const parseRJSONValue = (source, state, endCharCode) => {
160
- state.charCode = source.charCodeAt(state.i);
161
- switch (state.charCode) {
162
- case Constants.CCValueSeparator:
163
- case Constants.ObjectEnd:
164
- case Constants.ArrayEnd0: {
165
- return null;
166
- }
167
- case Constants.CCNull: {
168
- state.i++;
169
- return null;
170
- }
171
- case Constants.CCUndefined: {
172
- state.i++;
173
- return undefined;
174
- }
175
- case Constants.CCTrue:
176
- case Constants.CCFalse: {
177
- state.i++;
178
- return state.charCode === Constants.CCTrue;
179
- }
180
- case Constants.STRSSingle:
181
- case Constants.STRSDouble:
182
- case Constants.STRSTick: {
183
- return parseRJSONText(source, state);
184
- }
185
- case Constants.CCMinus:
186
- case Constants.CCPlus:
187
- case Constants.CCDecimalPoint: {
188
- return praseRJSONNumber(source, state, endCharCode);
189
- }
190
- default: {
191
- if (!isDigit(state.charCode) &&
192
- state.charCode !== Constants.CCDecimalPoint) {
193
- if (endCharCode != null && state.charCode === endCharCode) {
194
- break;
195
- }
196
- return throwRJSONError(source, state, "Invalid token", state.i, source.charAt(state.i));
197
- }
198
- return praseRJSONNumber(source, state, endCharCode);
199
- }
200
- }
201
- };
202
- const parseRJSONArray = (source, state) => {
203
- state.charCode = source.charCodeAt(state.i);
204
- if (state.charCode !== Constants.ArrayStart0) {
205
- return throwRJSONError(source, state, "Invalid array start token", state.i, source.charAt(state.i));
206
- }
207
- state.charCode = source.charCodeAt(++state.i);
208
- if (state.charCode !== Constants.ArrayStart1) {
209
- return throwRJSONError(source, state, "Invalid array start token", state.i, source.charAt(state.i));
210
- }
211
- const result = [];
212
- for (state.i++; state.i < state.end; state.i++) {
213
- state.charCode = source.charCodeAt(state.i);
214
- const value = parseRJSONEntity(source, state, Constants.ArrayEnd0);
215
- result.push(value);
216
- state.charCode = source.charCodeAt(state.i);
217
- if (state.charCode === Constants.ArrayEnd0) {
218
- break;
219
- }
220
- }
221
- state.charCode = source.charCodeAt(state.i);
222
- if (state.charCode !== Constants.ArrayEnd0) {
223
- return throwRJSONError(source, state, "Invalid array end token", state.i, source.charAt(state.i));
224
- }
225
- state.charCode = source.charCodeAt(++state.i);
226
- if (state.charCode !== Constants.ArrayEnd1) {
227
- return throwRJSONError(source, state, "Invalid array end token", state.i, source.charAt(state.i));
228
- }
229
- state.i++;
230
- return result;
231
- };
232
- const parseRJSONMappedArray = (source, state) => {
233
- state.charCode = source.charCodeAt(state.i++);
234
- if (state.charCode !== Constants.MappedStart0) {
235
- return throwRJSONError(source, state, "Invalid mapped array start token", state.i, source.charAt(state.i));
236
- }
237
- const value = parseRJSONEntity(source, state, Constants.MappedStart1);
238
- state.charCode = source.charCodeAt(state.i);
239
- if (state.charCode !== Constants.MappedStart1) {
240
- return throwRJSONError(source, state, "Invalid mapped array start token", state.i, source.charAt(state.i));
241
- }
242
- const result = {};
243
- for (state.i++; state.i < state.end; state.i++) {
244
- state.charCode = source.charCodeAt(state.i);
245
- if (state.charCode === Constants.MappedEnd0) {
246
- break;
247
- }
248
- const key = parseRJSONKey(source, state, Constants.CCValueSeparator, Constants.MappedEnd0);
249
- result[key] = value;
250
- state.charCode = source.charCodeAt(state.i);
251
- if (state.charCode === Constants.MappedEnd0) {
252
- break;
253
- }
254
- }
255
- state.charCode = source.charCodeAt(state.i);
256
- if (state.charCode !== Constants.MappedEnd0) {
257
- return throwRJSONError(source, state, "Invalid mapped array end token", state.i, source.charAt(state.i));
258
- }
259
- state.charCode = source.charCodeAt(++state.i);
260
- if (state.charCode !== Constants.MappedEnd1) {
261
- return throwRJSONError(source, state, "Invalid mapped array end token", state.i, source.charAt(state.i));
262
- }
263
- state.i++;
264
- return result;
265
- };
266
- const parseRJSONObject = (source, state) => {
267
- state.charCode = source.charCodeAt(state.i);
268
- if (state.charCode !== Constants.ObjectStart) {
269
- return throwRJSONError(source, state, "Invalid object start token", state.i, source.charAt(state.i));
270
- }
271
- if (state.charCode === Constants.ObjectEnd) {
272
- return {};
273
- }
274
- const result = {};
275
- for (state.i++; state.i < state.end; state.i++) {
276
- state.charCode = source.charCodeAt(state.i);
277
- if (state.charCode === Constants.ObjectEnd) {
278
- break;
279
- }
280
- const key = parseRJSONKey(source, state, Constants.CCKeyValueSeparator, Constants.ObjectEnd);
281
- state.charCode = source.charCodeAt(state.i);
282
- if (state.charCode === Constants.CCKeyValueSeparator) {
283
- state.i++;
284
- }
285
- const value = parseRJSONEntity(source, state, Constants.ObjectEnd);
286
- result[key] = value;
287
- state.charCode = source.charCodeAt(state.i);
288
- if (state.charCode === Constants.ObjectEnd) {
289
- break;
290
- }
291
- }
292
- state.charCode = source.charCodeAt(state.i);
293
- if (state.charCode !== Constants.ObjectEnd) {
294
- return throwRJSONError(source, state, "Invalid object end token", state.i, source.charAt(state.i));
295
- }
296
- state.i++;
297
- return result;
298
- };
299
- const parseRJSONEntity = (source, state, endCharCode) => {
300
- state.charCode = source.charCodeAt(state.i);
301
- switch (state.charCode) {
302
- case Constants.ArrayStart0:
303
- return parseRJSONArray(source, state);
304
- case Constants.ObjectStart:
305
- return parseRJSONObject(source, state);
306
- case Constants.MappedStart0:
307
- return parseRJSONMappedArray(source, state);
308
- default:
309
- return parseRJSONValue(source, state, endCharCode);
310
- }
311
- };
312
- const parseRJSON = (source, initalState) => {
313
- if (source.length === 0) {
314
- return null;
315
- }
316
- const state = Object.assign({ start: 0, end: source.length, i: 0, charCode: source.charCodeAt(0) }, initalState);
317
- const result = parseRJSONEntity(source, state);
318
- if (state.i < source.length) {
319
- return throwRJSONError(source, state, "Extra tokens at the end", state.i, source.length - state.i > 20
320
- ? source.slice(state.i, Math.min(state.i + 20, source.length)) + "..."
321
- : source.slice(state.i));
322
- }
323
- return result;
324
- };
325
- exports.parseRJSON = parseRJSON;
326
- function rjson(strings, ...values) {
327
- const source = values.length === 0
328
- ? strings[0]
329
- : strings[0] + values.map((v, i) => `${v}${values[i]}`).join("");
330
- return (0, exports.parseRJSON)(source);
331
- }
332
- const stringifyRJSONKey = (key) => {
333
- if (key.length === 0) {
334
- return "";
335
- }
336
- {
337
- const charCode = key.charCodeAt(0);
338
- if (!isIdentifier0(charCode)) {
339
- return `'${key}'`;
340
- }
341
- }
342
- for (let i = 1; i < key.length; i++) {
343
- const charCode = key.charCodeAt(i);
344
- if (!isIdentifier1(charCode)) {
345
- return `'${key}'`;
346
- }
347
- }
348
- return key;
349
- };
350
- exports.stringifyRJSONKey = stringifyRJSONKey;
351
- const stringifyRJSONArray = (data) => {
352
- return `_(${data.map((d) => (0, exports.stringifyRJSON)(d)).join(",")})_`;
353
- };
354
- exports.stringifyRJSONArray = stringifyRJSONArray;
355
- const stringifyRJSONObject = (data) => {
356
- return `(${Object.entries(data)
357
- .map(([k, v]) => `${(0, exports.stringifyRJSONKey)(k)}:${(0, exports.stringifyRJSON)(v)}`)
358
- .join(",")})`;
359
- };
360
- exports.stringifyRJSONObject = stringifyRJSONObject;
361
- const stringifyRJSONMappedArray = (value, data) => {
362
- return `~${(0, exports.stringifyRJSON)(value)}(${data.map((d) => (0, exports.stringifyRJSONKey)(String(d))).join(",")})~`;
363
- };
364
- exports.stringifyRJSONMappedArray = stringifyRJSONMappedArray;
365
- const stringifyRJSONString = (data) => {
366
- return !data.includes("'")
367
- ? `'${data}'`
368
- : !data.includes('"')
369
- ? `"${data}"`
370
- : !data.includes("`")
371
- ? `\`${data}\``
372
- : `'${data.replace("'", "\\'")}'`;
373
- };
374
- exports.stringifyRJSONString = stringifyRJSONString;
375
- const stringifyRJSONNumber = (data) => {
376
- if (!Number.isFinite(data)) {
377
- return "N";
378
- }
379
- else if (data === 0) {
380
- return "0";
381
- }
382
- const expo = data.toExponential();
383
- const norm = data.toString();
384
- return norm.length <= expo.length ? norm : expo;
385
- };
386
- exports.stringifyRJSONNumber = stringifyRJSONNumber;
387
- const stringifyRJSONBoolean = (data) => {
388
- return data ? "T" : "F";
389
- };
390
- exports.stringifyRJSONBoolean = stringifyRJSONBoolean;
391
- const stringifyRJSON = (data) => {
392
- if (data === undefined) {
393
- return "U";
394
- }
395
- else if (data === null) {
396
- return "";
397
- }
398
- switch (typeof data) {
399
- case "object":
400
- return Array.isArray(data)
401
- ? (0, exports.stringifyRJSONArray)(data)
402
- : (0, exports.stringifyRJSONObject)(data);
403
- case "string":
404
- return (0, exports.stringifyRJSONString)(data);
405
- case "number":
406
- return (0, exports.stringifyRJSONNumber)(data);
407
- case "boolean":
408
- return (0, exports.stringifyRJSONBoolean)(data);
409
- default:
410
- return (0, exports.stringifyRJSONString)(String(data));
411
- }
412
- };
413
- exports.stringifyRJSON = stringifyRJSON;
414
- exports.RJSON = {
415
- parse: exports.parseRJSON,
416
- stringify: exports.stringifyRJSON,
417
- stringifyKey: exports.stringifyRJSONKey,
418
- stringifyObject: exports.stringifyRJSONObject,
419
- stringifyMappedArray: exports.stringifyRJSONMappedArray,
420
- stringifyString: exports.stringifyRJSONString,
421
- stringifyNumber: exports.stringifyRJSONNumber,
422
- stringifyBoolean: exports.stringifyRJSONBoolean,
423
- };
424
- exports.default = exports.RJSON;
425
- //# sourceMappingURL=rjson.js.map
package/dist/rjson.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"rjson.js","sourceRoot":"","sources":["../src/rjson.ts"],"names":[],"mappings":"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"}