@nhtio/encoder 0.1.0-master-cf69c10e → 0.1.0-master-492fadb0
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/{exceptions-CvP1Ipcx.js → exceptions-BfKyCF4p.js} +2 -2
- package/{exceptions-CvP1Ipcx.js.map → exceptions-BfKyCF4p.js.map} +1 -1
- package/{exceptions-B6LwiRSz.mjs → exceptions-MW3dkAUt.mjs} +2 -2
- package/{exceptions-B6LwiRSz.mjs.map → exceptions-MW3dkAUt.mjs.map} +1 -1
- package/exceptions.cjs +1 -1
- package/exceptions.mjs +1 -1
- package/function_serializer.cjs +1 -1
- package/function_serializer.mjs +1 -1
- package/index.cjs +64 -7
- package/index.cjs.map +1 -1
- package/index.d.ts +32 -1
- package/index.mjs +64 -7
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/{type_guards-UkDoe__i.mjs → type_guards-BAhiOypL.mjs} +37 -25
- package/{type_guards-UkDoe__i.mjs.map → type_guards-BAhiOypL.mjs.map} +1 -1
- package/{type_guards-BWmHnIpZ.js → type_guards-D1YzZ13G.js} +13 -1
- package/{type_guards-BWmHnIpZ.js.map → type_guards-D1YzZ13G.js.map} +1 -1
- package/type_guards.cjs +2 -1
- package/type_guards.cjs.map +1 -1
- package/type_guards.d.ts +39 -0
- package/type_guards.mjs +20 -19
- package/types.d.ts +15 -1
package/index.d.ts
CHANGED
|
@@ -36,6 +36,17 @@ declare type CountryOrUnknown = Country | 'XX';
|
|
|
36
36
|
*/
|
|
37
37
|
declare type CountryTimezone = 'Europe/Andorra' | 'Asia/Dubai' | 'Asia/Kabul' | 'America/Antigua' | 'America/Anguilla' | 'Europe/Tirane' | 'Asia/Yerevan' | 'Africa/Luanda' | 'Antarctica/Casey' | 'America/Argentina/Buenos_Aires' | 'Pacific/Pago_Pago' | 'Europe/Vienna' | 'Australia/Sydney' | 'America/Aruba' | 'Europe/Mariehamn' | 'Asia/Baku' | 'Europe/Sarajevo' | 'America/Barbados' | 'Asia/Dhaka' | 'Europe/Brussels' | 'Africa/Ouagadougou' | 'Europe/Sofia' | 'Asia/Bahrain' | 'Africa/Bujumbura' | 'Africa/Porto-Novo' | 'America/St_Barthelemy' | 'Atlantic/Bermuda' | 'Asia/Brunei' | 'America/La_Paz' | 'America/Kralendijk' | 'America/Sao_Paulo' | 'America/Nassau' | 'Asia/Thimphu' | 'Africa/Gaborone' | 'Europe/Minsk' | 'America/Belize' | 'America/Toronto' | 'Indian/Cocos' | 'Africa/Kinshasa' | 'Africa/Bangui' | 'Africa/Brazzaville' | 'Europe/Zurich' | 'Africa/Abidjan' | 'Pacific/Rarotonga' | 'America/Santiago' | 'Africa/Douala' | 'Asia/Shanghai' | 'America/Bogota' | 'America/Costa_Rica' | 'America/Havana' | 'Atlantic/Cape_Verde' | 'America/Curacao' | 'Indian/Christmas' | 'Asia/Nicosia' | 'Europe/Prague' | 'Europe/Berlin' | 'Africa/Djibouti' | 'Europe/Copenhagen' | 'America/Dominica' | 'America/Santo_Domingo' | 'Africa/Algiers' | 'America/Guayaquil' | 'Europe/Tallinn' | 'Africa/Cairo' | 'Africa/El_Aaiun' | 'Africa/Asmara' | 'Europe/Madrid' | 'Africa/Addis_Ababa' | 'Europe/Helsinki' | 'Pacific/Fiji' | 'Atlantic/Stanley' | 'Pacific/Pohnpei' | 'Atlantic/Faroe' | 'Europe/Paris' | 'Africa/Libreville' | 'Europe/London' | 'America/Grenada' | 'Asia/Tbilisi' | 'America/Cayenne' | 'Europe/Guernsey' | 'Africa/Accra' | 'Europe/Gibraltar' | 'America/Godthab' | 'Africa/Banjul' | 'Africa/Conakry' | 'America/Guadeloupe' | 'Africa/Malabo' | 'Europe/Athens' | 'Atlantic/South_Georgia' | 'America/Guatemala' | 'Pacific/Guam' | 'Africa/Bissau' | 'America/Guyana' | 'Asia/Hong_Kong' | 'America/Tegucigalpa' | 'Europe/Zagreb' | 'America/Port-au-Prince' | 'Europe/Budapest' | 'Asia/Jakarta' | 'Europe/Dublin' | 'Asia/Jerusalem' | 'Europe/Isle_of_Man' | 'Asia/Kolkata' | 'Indian/Chagos' | 'Asia/Baghdad' | 'Asia/Tehran' | 'Atlantic/Reykjavik' | 'Europe/Rome' | 'Europe/Jersey' | 'America/Jamaica' | 'Asia/Amman' | 'Asia/Tokyo' | 'Africa/Nairobi' | 'Asia/Bishkek' | 'Asia/Phnom_Penh' | 'Pacific/Tarawa' | 'Indian/Comoro' | 'America/St_Kitts' | 'Asia/Pyongyang' | 'Asia/Seoul' | 'Asia/Kuwait' | 'America/Cayman' | 'Asia/Almaty' | 'Asia/Vientiane' | 'Asia/Beirut' | 'America/St_Lucia' | 'Europe/Vaduz' | 'Asia/Colombo' | 'Africa/Monrovia' | 'Africa/Maseru' | 'Europe/Vilnius' | 'Europe/Luxembourg' | 'Europe/Riga' | 'Africa/Tripoli' | 'Africa/Casablanca' | 'Europe/Monaco' | 'Europe/Chisinau' | 'Europe/Podgorica' | 'America/Marigot' | 'Indian/Antananarivo' | 'Pacific/Majuro' | 'Europe/Skopje' | 'Africa/Bamako' | 'Asia/Yangon' | 'Asia/Ulaanbaatar' | 'Asia/Macau' | 'Pacific/Saipan' | 'America/Martinique' | 'Africa/Nouakchott' | 'America/Montserrat' | 'Europe/Malta' | 'Indian/Mauritius' | 'Indian/Maldives' | 'Africa/Blantyre' | 'America/Mexico_City' | 'Asia/Kuala_Lumpur' | 'Africa/Maputo' | 'Africa/Windhoek' | 'Pacific/Noumea' | 'Africa/Niamey' | 'Pacific/Norfolk' | 'Africa/Lagos' | 'America/Managua' | 'Europe/Amsterdam' | 'Europe/Oslo' | 'Asia/Kathmandu' | 'Pacific/Nauru' | 'Pacific/Niue' | 'Pacific/Auckland' | 'Asia/Muscat' | 'America/Panama' | 'America/Lima' | 'Pacific/Tahiti' | 'Pacific/Port_Moresby' | 'Asia/Manila' | 'Asia/Karachi' | 'Europe/Warsaw' | 'America/Miquelon' | 'Pacific/Pitcairn' | 'America/Puerto_Rico' | 'Asia/Gaza' | 'Europe/Lisbon' | 'Pacific/Palau' | 'America/Asuncion' | 'Asia/Qatar' | 'Indian/Reunion' | 'Europe/Bucharest' | 'Europe/Belgrade' | 'Europe/Moscow' | 'Africa/Kigali' | 'Asia/Riyadh' | 'Pacific/Guadalcanal' | 'Indian/Mahe' | 'Africa/Khartoum' | 'Europe/Stockholm' | 'Asia/Singapore' | 'Atlantic/St_Helena' | 'Europe/Ljubljana' | 'Arctic/Longyearbyen' | 'Europe/Bratislava' | 'Africa/Freetown' | 'Europe/San_Marino' | 'Africa/Dakar' | 'Africa/Mogadishu' | 'America/Paramaribo' | 'Africa/Juba' | 'Africa/Sao_Tome' | 'America/El_Salvador' | 'America/Lower_Princes' | 'Asia/Damascus' | 'Africa/Mbabane' | 'America/Grand_Turk' | 'Africa/Ndjamena' | 'Indian/Kerguelen' | 'Africa/Lome' | 'Asia/Bangkok' | 'Asia/Dushanbe' | 'Pacific/Fakaofo' | 'Asia/Dili' | 'Asia/Ashgabat' | 'Africa/Tunis' | 'Pacific/Tongatapu' | 'Europe/Istanbul' | 'America/Port_of_Spain' | 'Pacific/Funafuti' | 'Asia/Taipei' | 'Africa/Dar_es_Salaam' | 'Europe/Kiev' | 'Africa/Kampala' | 'Pacific/Wake' | 'America/New_York' | 'America/Montevideo' | 'Asia/Tashkent' | 'Europe/Vatican' | 'America/St_Vincent' | 'America/Caracas' | 'America/Tortola' | 'America/St_Thomas' | 'Asia/Ho_Chi_Minh' | 'Pacific/Efate' | 'Pacific/Wallis' | 'Pacific/Apia' | 'Asia/Aden' | 'Indian/Mayotte' | 'Africa/Johannesburg' | 'Africa/Lusaka' | 'Africa/Harare';
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* A class that opts in to custom encoding/decoding.
|
|
41
|
+
*
|
|
42
|
+
* Implement `[ENCODE_METHOD]()` on instances to produce an Encodable snapshot,
|
|
43
|
+
* and `static [DECODE_METHOD](data)` to reconstruct the instance.
|
|
44
|
+
* Pass the class to `registerClass()` so the decoder can find it.
|
|
45
|
+
*/
|
|
46
|
+
export declare interface CustomEncodable {
|
|
47
|
+
[ENCODE_METHOD](): Encodable;
|
|
48
|
+
}
|
|
49
|
+
|
|
39
50
|
declare type DateInput = DateTime | DateObjectUnits | Date;
|
|
40
51
|
|
|
41
52
|
/**
|
|
@@ -1485,6 +1496,11 @@ declare type DayNumbers =
|
|
|
1485
1496
|
| 30
|
|
1486
1497
|
| 31;
|
|
1487
1498
|
|
|
1499
|
+
declare interface DecodableConstructor {
|
|
1500
|
+
readonly name: string;
|
|
1501
|
+
[DECODE_METHOD](data: Encodable): any;
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1488
1504
|
/**
|
|
1489
1505
|
* Decodes a compressed base64 string back into a value
|
|
1490
1506
|
* @param base64 The compressed base64 string representing an encoded value
|
|
@@ -1496,6 +1512,9 @@ declare type DayNumbers =
|
|
|
1496
1512
|
*/
|
|
1497
1513
|
export declare const decode: <T extends Encodable = Encodable>(base64: string) => T;
|
|
1498
1514
|
|
|
1515
|
+
/** Static method: reconstruct an instance from an Encodable snapshot */
|
|
1516
|
+
export declare const DECODE_METHOD: unique symbol;
|
|
1517
|
+
|
|
1499
1518
|
declare type DefaultValidity = CanBeInvalid extends true ? boolean : true;
|
|
1500
1519
|
|
|
1501
1520
|
declare interface DiffOptions {
|
|
@@ -1996,7 +2015,7 @@ declare type DurationUnits = DurationUnit | DurationUnit[];
|
|
|
1996
2015
|
*/
|
|
1997
2016
|
export declare type Encodable = EncodablePrimitive | Date | RegExp | ArrayBuffer | DataView | DateTime | Duration | Interval | EncodableTypedArray | Encodable[] | {
|
|
1998
2017
|
[key: string]: Encodable;
|
|
1999
|
-
} | Map<Encodable, Encodable> | Set<Encodable> | Error | EvalError | RangeError | ReferenceError | SyntaxError | TypeError | URIError | PhoneModel | Function | ((...args: any[]) => any);
|
|
2018
|
+
} | Map<Encodable, Encodable> | Set<Encodable> | Error | EvalError | RangeError | ReferenceError | SyntaxError | TypeError | URIError | PhoneModel | Function | ((...args: any[]) => any) | CustomEncodable;
|
|
2000
2019
|
|
|
2001
2020
|
/**
|
|
2002
2021
|
* Defines the union of all encodable primitive types.
|
|
@@ -2018,6 +2037,9 @@ export declare type EncodableTypedArray = Int8Array | Uint8Array | Uint8ClampedA
|
|
|
2018
2037
|
*/
|
|
2019
2038
|
export declare const encode: <T extends Encodable = Encodable>(what: T) => string;
|
|
2020
2039
|
|
|
2040
|
+
/** Instance method: serialize the object into an Encodable snapshot */
|
|
2041
|
+
export declare const ENCODE_METHOD: unique symbol;
|
|
2042
|
+
|
|
2021
2043
|
declare type EndOfOptions = _UseLocaleWeekOption;
|
|
2022
2044
|
|
|
2023
2045
|
declare interface ExplainedFormat {
|
|
@@ -2638,6 +2660,15 @@ declare type PossibleWeeksInYear = 52 | 53;
|
|
|
2638
2660
|
|
|
2639
2661
|
declare type QuarterNumbers = 1 | 2 | 3 | 4;
|
|
2640
2662
|
|
|
2663
|
+
/**
|
|
2664
|
+
* Register a class so the decoder can reconstruct it from a snapshot.
|
|
2665
|
+
* The class must have a static `[DECODE_METHOD]` that accepts an Encodable
|
|
2666
|
+
* snapshot and returns an instance of the class.
|
|
2667
|
+
*
|
|
2668
|
+
* @param ctor - The class constructor to register
|
|
2669
|
+
*/
|
|
2670
|
+
export declare const registerClass: (ctor: DecodableConstructor) => void;
|
|
2671
|
+
|
|
2641
2672
|
declare type ResolvedLocaleOptions = Required<LocaleOptions>;
|
|
2642
2673
|
|
|
2643
2674
|
declare type SecondNumbers =
|
package/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as isObject, a as
|
|
1
|
+
import { i as isObject, a as isCustomEncodable, E as ENCODE_METHOD, b as isArray, c as isSet, d as isMap, e as isLuxonSystemZone, f as isLuxonInterval, g as isLuxonDuration, h as isLuxonDateTime, j as isPhoneObject, k as isTypedArray, l as isBigIntTypedArray, m as isPrimitive, n as isUniterableObject, o as isError, p as isBigInt, q as isUnsafeInteger, r as isNegativeInfinity, s as isPositiveInfinity, t as isNegativeZero, D as DECODE_METHOD, I as Info, u as Interval, v as DateTime, w as Duration, P as Phone } from "./type_guards-BAhiOypL.mjs";
|
|
2
2
|
import { FunctionSerializer } from "./function_serializer.mjs";
|
|
3
|
-
import { E as E_UNENCODABLE_VALUE, a as E_CIRCULAR_REFERENCE, b as E_ENCODING_FAILED, B as BaseException, c as E_UNDECODABLE_VALUE, d as E_NOT_AN_ENCODED_VALUE, e as E_INVALID_VERSION, f as E_INCOMPATIBLE_VERSION } from "./exceptions-
|
|
3
|
+
import { E as E_UNENCODABLE_VALUE, a as E_CIRCULAR_REFERENCE, b as E_ENCODING_FAILED, B as BaseException, c as E_UNDECODABLE_VALUE, d as E_NOT_AN_ENCODED_VALUE, e as E_INVALID_VERSION, f as E_INCOMPATIBLE_VERSION } from "./exceptions-MW3dkAUt.mjs";
|
|
4
4
|
var re = { exports: {} };
|
|
5
5
|
var constants;
|
|
6
6
|
var hasRequiredConstants;
|
|
@@ -2728,6 +2728,16 @@ const atou = (base64) => {
|
|
|
2728
2728
|
}
|
|
2729
2729
|
return decodeURIComponent(escape(binary));
|
|
2730
2730
|
};
|
|
2731
|
+
const registry = /* @__PURE__ */ new Map();
|
|
2732
|
+
const registerClass = (ctor) => {
|
|
2733
|
+
if (typeof ctor.name !== "string" || ctor.name === "") {
|
|
2734
|
+
throw new TypeError("Cannot register an anonymous class — give it an explicit name.");
|
|
2735
|
+
}
|
|
2736
|
+
registry.set(ctor.name, ctor);
|
|
2737
|
+
};
|
|
2738
|
+
const getRegisteredClass = (name) => {
|
|
2739
|
+
return registry.get(name);
|
|
2740
|
+
};
|
|
2731
2741
|
const VOID = -1;
|
|
2732
2742
|
const PRIMITIVE = 0;
|
|
2733
2743
|
const ARRAY = 1;
|
|
@@ -3134,6 +3144,25 @@ const toStructuredData = (value, seen = /* @__PURE__ */ new WeakSet()) => {
|
|
|
3134
3144
|
_s: utoa(JSON.stringify(value.map((item) => toStructuredData(item, seen))))
|
|
3135
3145
|
};
|
|
3136
3146
|
}
|
|
3147
|
+
case isCustomEncodable(value): {
|
|
3148
|
+
if (seen.has(value)) {
|
|
3149
|
+
throw new E_CIRCULAR_REFERENCE();
|
|
3150
|
+
}
|
|
3151
|
+
seen.add(value);
|
|
3152
|
+
const className = value.constructor.name;
|
|
3153
|
+
try {
|
|
3154
|
+
const snapshot = value[ENCODE_METHOD]();
|
|
3155
|
+
return {
|
|
3156
|
+
_t: `custom:${className}`,
|
|
3157
|
+
_s: toStructuredData(snapshot, seen)
|
|
3158
|
+
};
|
|
3159
|
+
} catch (e) {
|
|
3160
|
+
if (e instanceof BaseException) {
|
|
3161
|
+
throw e;
|
|
3162
|
+
}
|
|
3163
|
+
throw new E_ENCODING_FAILED(value, e);
|
|
3164
|
+
}
|
|
3165
|
+
}
|
|
3137
3166
|
case isObject(value): {
|
|
3138
3167
|
if (seen.has(value)) {
|
|
3139
3168
|
throw new E_CIRCULAR_REFERENCE();
|
|
@@ -3260,19 +3289,44 @@ const fromStructuredData = (data) => {
|
|
|
3260
3289
|
throw err2;
|
|
3261
3290
|
}
|
|
3262
3291
|
}
|
|
3263
|
-
default:
|
|
3292
|
+
default: {
|
|
3293
|
+
if (data._t.startsWith("custom:")) {
|
|
3294
|
+
const className = data._t.slice("custom:".length);
|
|
3295
|
+
const ctor = getRegisteredClass(className);
|
|
3296
|
+
if (!ctor) {
|
|
3297
|
+
const err2 = new E_UNDECODABLE_VALUE(data._t);
|
|
3298
|
+
err2.cause = new Error(
|
|
3299
|
+
`No class registered for "${className}". Call registerClass(${className}) before decoding.`
|
|
3300
|
+
);
|
|
3301
|
+
throw err2;
|
|
3302
|
+
}
|
|
3303
|
+
try {
|
|
3304
|
+
const snapshot = fromStructuredData(data._s);
|
|
3305
|
+
return ctor[DECODE_METHOD](snapshot);
|
|
3306
|
+
} catch (e) {
|
|
3307
|
+
if (e instanceof BaseException) {
|
|
3308
|
+
throw e;
|
|
3309
|
+
}
|
|
3310
|
+
const err2 = new E_UNDECODABLE_VALUE(data._t);
|
|
3311
|
+
if (e instanceof Error) {
|
|
3312
|
+
err2.cause = e;
|
|
3313
|
+
}
|
|
3314
|
+
throw err2;
|
|
3315
|
+
}
|
|
3316
|
+
}
|
|
3264
3317
|
throw new E_UNDECODABLE_VALUE(data._t);
|
|
3318
|
+
}
|
|
3265
3319
|
}
|
|
3266
3320
|
};
|
|
3267
3321
|
const { parse: $parse, stringify: $stringify } = JSON;
|
|
3268
3322
|
const options = { json: true, lossy: true };
|
|
3269
3323
|
const parse = (str) => deserialize($parse(str));
|
|
3270
3324
|
const stringify = (any) => $stringify(serialize(any, options));
|
|
3271
|
-
const version = "0.1.0-master-
|
|
3325
|
+
const version = "0.1.0-master-492fadb0";
|
|
3272
3326
|
const encode = (what) => {
|
|
3273
3327
|
const structured = toStructuredData(what);
|
|
3274
3328
|
const serialized = serialize(structured, { lossy: true, json: true });
|
|
3275
|
-
const json = stringify({ version: "0.1.0-master-
|
|
3329
|
+
const json = stringify({ version: "0.1.0-master-492fadb0", serialized });
|
|
3276
3330
|
return utoa(json);
|
|
3277
3331
|
};
|
|
3278
3332
|
const decode = (base64) => {
|
|
@@ -3283,11 +3337,11 @@ const decode = (base64) => {
|
|
|
3283
3337
|
throw new E_NOT_AN_ENCODED_VALUE(base64);
|
|
3284
3338
|
}
|
|
3285
3339
|
const { version: payloadVersion, serialized } = parsed;
|
|
3286
|
-
if (semverExports.valid("0.1.0-master-
|
|
3340
|
+
if (semverExports.valid("0.1.0-master-492fadb0")) {
|
|
3287
3341
|
if (!semverExports.valid(semverExports.coerce(payloadVersion))) {
|
|
3288
3342
|
throw new E_INVALID_VERSION(payloadVersion);
|
|
3289
3343
|
}
|
|
3290
|
-
if (semverExports.gt(semverExports.coerce(payloadVersion), "0.1.0-master-
|
|
3344
|
+
if (semverExports.gt(semverExports.coerce(payloadVersion), "0.1.0-master-492fadb0")) {
|
|
3291
3345
|
throw new E_INCOMPATIBLE_VERSION(payloadVersion);
|
|
3292
3346
|
}
|
|
3293
3347
|
}
|
|
@@ -3303,8 +3357,11 @@ const decode = (base64) => {
|
|
|
3303
3357
|
}
|
|
3304
3358
|
};
|
|
3305
3359
|
export {
|
|
3360
|
+
DECODE_METHOD,
|
|
3361
|
+
ENCODE_METHOD,
|
|
3306
3362
|
decode,
|
|
3307
3363
|
encode,
|
|
3364
|
+
registerClass,
|
|
3308
3365
|
version
|
|
3309
3366
|
};
|
|
3310
3367
|
//# sourceMappingURL=index.mjs.map
|