@skipruntime/core 0.0.6 → 0.0.11
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 +20 -0
- package/dist/skiplang-json/binding.d.ts +37 -0
- package/dist/skiplang-json/binding.d.ts.map +1 -0
- package/dist/skiplang-json/binding.js +13 -0
- package/dist/skiplang-json/binding.js.map +1 -0
- package/dist/skiplang-json/index.d.ts +165 -0
- package/dist/skiplang-json/index.d.ts.map +1 -0
- package/dist/skiplang-json/index.js +322 -0
- package/dist/skiplang-json/index.js.map +1 -0
- package/dist/skiplang-json/internal.d.ts +24 -0
- package/dist/skiplang-json/internal.d.ts.map +1 -0
- package/dist/skiplang-json/internal.js.map +1 -0
- package/dist/skiplang-std/index.d.ts +21 -0
- package/dist/skiplang-std/index.d.ts.map +1 -0
- package/dist/skiplang-std/index.js +14 -0
- package/dist/skiplang-std/index.js.map +1 -0
- package/dist/skiplang-std/internal.d.ts +52 -0
- package/dist/skiplang-std/internal.d.ts.map +1 -0
- package/dist/skiplang-std/internal.js +3 -0
- package/dist/skiplang-std/internal.js.map +1 -0
- package/dist/{api.d.ts → src/api.d.ts} +14 -97
- package/dist/src/api.d.ts.map +1 -0
- package/dist/src/api.js +8 -0
- package/dist/src/api.js.map +1 -0
- package/dist/{binding.d.ts → src/binding.d.ts} +2 -2
- package/dist/src/binding.d.ts.map +1 -0
- package/dist/src/binding.js.map +1 -0
- package/dist/src/errors.d.ts +57 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +57 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +13 -13
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +71 -50
- package/dist/src/index.js.map +1 -0
- package/dist/{internal.d.ts → src/internal.d.ts} +3 -2
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +2 -0
- package/dist/{internal.js.map → src/internal.js.map} +1 -1
- package/package.json +10 -9
- package/src/api.ts +20 -127
- package/src/binding.ts +2 -2
- package/src/errors.ts +55 -1
- package/src/index.ts +97 -58
- package/src/internal.ts +3 -2
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -83
- package/dist/api.js.map +0 -1
- package/dist/binding.d.ts.map +0 -1
- package/dist/binding.js.map +0 -1
- package/dist/errors.d.ts +0 -3
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -3
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal.d.ts.map +0 -1
- package/dist/utils.d.ts +0 -47
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -47
- package/dist/utils.js.map +0 -1
- package/src/utils.ts +0 -62
- /package/dist/{internal.js → skiplang-json/internal.js} +0 -0
- /package/dist/{binding.js → src/binding.js} +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @skipruntime/core
|
|
2
|
+
|
|
3
|
+
This is the Skip runtime public API: types and operations that can be used to
|
|
4
|
+
write and interact with reactive computations.
|
|
5
|
+
|
|
6
|
+
See the [docs](https://skiplabs.io/docs/api/core) for more details.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
Install directly using npm (`npm i @skipruntime/core`), or along with other
|
|
11
|
+
components of the runtime by installing the
|
|
12
|
+
[`@skiplabs/skip`](https://www.npmjs.com/package/@skiplabs/skip) meta-package
|
|
13
|
+
(`npm i @skiplabs/skip`).
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## Support
|
|
18
|
+
|
|
19
|
+
Join the [Discord](https://discord.gg/ss4zxfgUBH) to talk to other community
|
|
20
|
+
members and developers or ask any questions.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as Internal from "./internal.js";
|
|
2
|
+
import type { Pointer, Nullable } from "../skiplang-std/index.js";
|
|
3
|
+
export declare enum Type {
|
|
4
|
+
Undefined = 0,
|
|
5
|
+
Null = 1,
|
|
6
|
+
Int = 2,
|
|
7
|
+
Float = 3,
|
|
8
|
+
Boolean = 4,
|
|
9
|
+
String = 5,
|
|
10
|
+
Array = 6,
|
|
11
|
+
Object = 7
|
|
12
|
+
}
|
|
13
|
+
export interface Binding {
|
|
14
|
+
SKIP_SKJSON_typeOf(json: Pointer<Internal.CJSON>): Type;
|
|
15
|
+
SKIP_SKJSON_asNumber(json: Pointer<Internal.CJSON>): number;
|
|
16
|
+
SKIP_SKJSON_asBoolean(json: Pointer<Internal.CJSON>): boolean;
|
|
17
|
+
SKIP_SKJSON_asString(json: Pointer<Internal.CJSON>): string;
|
|
18
|
+
SKIP_SKJSON_asArray(json: Pointer<Internal.CJSON>): Pointer<Internal.CJArray>;
|
|
19
|
+
SKIP_SKJSON_asObject(json: Pointer<Internal.CJSON>): Pointer<Internal.CJObject>;
|
|
20
|
+
SKIP_SKJSON_fieldAt(json: Pointer<Internal.CJObject>, idx: number): Nullable<string>;
|
|
21
|
+
SKIP_SKJSON_get(json: Pointer<Internal.CJObject>, idx: number): Nullable<Pointer<Internal.CJSON>>;
|
|
22
|
+
SKIP_SKJSON_at<T extends Internal.CJSON>(json: Pointer<Internal.CJArray<T>>, idx: number): Nullable<Pointer<T>>;
|
|
23
|
+
SKIP_SKJSON_objectSize(json: Pointer<Internal.CJObject>): number;
|
|
24
|
+
SKIP_SKJSON_arraySize(json: Pointer<Internal.CJArray>): number;
|
|
25
|
+
SKIP_SKJSON_startCJObject(): Pointer<Internal.PartialCJObj>;
|
|
26
|
+
SKIP_SKJSON_addToCJObject(obj: Pointer<Internal.PartialCJObj>, name: string, value: Pointer<Internal.CJSON>): void;
|
|
27
|
+
SKIP_SKJSON_endCJObject(obj: Pointer<Internal.PartialCJObj>): Pointer<Internal.CJObject>;
|
|
28
|
+
SKIP_SKJSON_startCJArray<T extends Internal.CJSON>(): Pointer<Internal.PartialCJArray<T>>;
|
|
29
|
+
SKIP_SKJSON_addToCJArray<T extends Internal.CJSON>(arr: Pointer<Internal.PartialCJArray<T>>, value: Pointer<T>): void;
|
|
30
|
+
SKIP_SKJSON_endCJArray<T extends Internal.CJSON>(arr: Pointer<Internal.PartialCJArray<T>>): Pointer<Internal.CJArray<T>>;
|
|
31
|
+
SKIP_SKJSON_createCJNull(): Pointer<Internal.CJNull>;
|
|
32
|
+
SKIP_SKJSON_createCJInt(v: number): Pointer<Internal.CJInt>;
|
|
33
|
+
SKIP_SKJSON_createCJFloat(v: number): Pointer<Internal.CJFloat>;
|
|
34
|
+
SKIP_SKJSON_createCJString(str: string): Pointer<Internal.CJString>;
|
|
35
|
+
SKIP_SKJSON_createCJBool(v: boolean): Pointer<Internal.CJBool>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../skiplang-json/binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Internal from "./internal.js";
|
|
2
|
+
export var Type;
|
|
3
|
+
(function (Type) {
|
|
4
|
+
Type[Type["Undefined"] = 0] = "Undefined";
|
|
5
|
+
Type[Type["Null"] = 1] = "Null";
|
|
6
|
+
Type[Type["Int"] = 2] = "Int";
|
|
7
|
+
Type[Type["Float"] = 3] = "Float";
|
|
8
|
+
Type[Type["Boolean"] = 4] = "Boolean";
|
|
9
|
+
Type[Type["String"] = 5] = "String";
|
|
10
|
+
Type[Type["Array"] = 6] = "Array";
|
|
11
|
+
Type[Type["Object"] = 7] = "Object";
|
|
12
|
+
})(Type || (Type = {}));
|
|
13
|
+
//# sourceMappingURL=binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../skiplang-json/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAG1C,MAAM,CAAN,IAAY,IASX;AATD,WAAY,IAAI;IACd,yCAAS,CAAA;IACT,+BAAI,CAAA;IACJ,6BAAG,CAAA;IACH,iCAAK,CAAA;IACL,qCAAO,CAAA;IACP,mCAAM,CAAA;IACN,iCAAK,CAAA;IACL,mCAAM,CAAA;AACR,CAAC,EATW,IAAI,KAAJ,IAAI,QASf"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as Internal from "./internal.js";
|
|
2
|
+
import { Type, type Binding } from "./binding.js";
|
|
3
|
+
import type { Pointer, Nullable } from "../skiplang-std/index.js";
|
|
4
|
+
export type { Pointer, Nullable, Binding };
|
|
5
|
+
export type { Type };
|
|
6
|
+
export declare const sk_isObjectProxy: unique symbol;
|
|
7
|
+
export declare const sk_managed: unique symbol;
|
|
8
|
+
/**
|
|
9
|
+
* Values that are either unmodifiable or tracked by the Skip Runtime.
|
|
10
|
+
*
|
|
11
|
+
* A `Managed` value is either managed by the Skip Runtime, in which case its modifications are carefully tracked by the reactive computation system, or it is deep-frozen, meaning that it cannot be modified and neither can its sub-objects, recursively.
|
|
12
|
+
* See `deepFreeze` to make an object `Managed`.
|
|
13
|
+
*
|
|
14
|
+
* `Managed` values are important because they can be used in code that will be executed by the reactive computation system without introducing the possibility of stale or unreproducible results.
|
|
15
|
+
*/
|
|
16
|
+
export type Managed = {
|
|
17
|
+
/**
|
|
18
|
+
* @ignore
|
|
19
|
+
* @hidden
|
|
20
|
+
*/
|
|
21
|
+
[sk_managed]: true;
|
|
22
|
+
};
|
|
23
|
+
export declare abstract class Frozen implements Managed {
|
|
24
|
+
[sk_managed]: true;
|
|
25
|
+
constructor();
|
|
26
|
+
protected abstract freeze(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function sk_freeze<T extends object>(x: T): T & Managed;
|
|
29
|
+
export declare function isSkManaged(x: any): x is Managed;
|
|
30
|
+
export declare abstract class SkManaged extends Frozen {
|
|
31
|
+
protected freeze(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A `DepSafe` value is _dependency-safe_ and can be used safely in reactive computations.
|
|
35
|
+
*
|
|
36
|
+
* A value can be safely used as a dependency of a reactive computation if it is:
|
|
37
|
+
* 1. a primitive JavaScript value (boolean, number, string, etc.)
|
|
38
|
+
* 2. managed by the Skip runtime, which will correctly track dependencies, or
|
|
39
|
+
* 3. a deep-frozen and therefore constant JavaScript object.
|
|
40
|
+
*
|
|
41
|
+
* Values used in reactive computations must be dependency-safe so that reactive computations can be reevaluated as needed with consistent semantics.
|
|
42
|
+
*
|
|
43
|
+
* All objects/values that come _out_ of the Skip runtime are dependency-safe.
|
|
44
|
+
* Non-Skip objects can be made dependency-safe by passing them to `deepFreeze`, which recursively freezes their fields and returns a constant `Managed` object.
|
|
45
|
+
*/
|
|
46
|
+
export type DepSafe = null | boolean | number | bigint | string | symbol | Managed;
|
|
47
|
+
export declare function checkOrCloneParam<T>(value: T): T;
|
|
48
|
+
/**
|
|
49
|
+
* _Deep-freeze_ an object, making it dependency-safe.
|
|
50
|
+
*
|
|
51
|
+
* This function is similar to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze | Object.freeze()} but freezes the object and deep-freezes all its properties, recursively.
|
|
52
|
+
* The object is then not only _immutable_ but also _constant_.
|
|
53
|
+
* Note that as a result all objects reachable from the parameter will be frozen and no longer mutable or extensible, even from other references.
|
|
54
|
+
*
|
|
55
|
+
* The argument object and all its properties, recursively, must not already be frozen by `Object.freeze` (or else `deepFreeze` cannot mark them deep-frozen).
|
|
56
|
+
* Undefined, function (and hence class) values cannot be deep-frozen.
|
|
57
|
+
*
|
|
58
|
+
* The primary use for this function is to satisfy the requirement that all parameters to Skip `Mapper` or `Reducer` constructors must be dependency-safe: objects that have not been constructed by Skip can be passed to `deepFreeze()` before passing them to a `Mapper` or `Reducer` constructor.
|
|
59
|
+
*
|
|
60
|
+
* @typeParam T - Type of value to deep-freeze.
|
|
61
|
+
* @param value - The object to deep-freeze.
|
|
62
|
+
* @returns The same object that was passed in.
|
|
63
|
+
*/
|
|
64
|
+
export declare function deepFreeze<T>(value: T): T & DepSafe;
|
|
65
|
+
/**
|
|
66
|
+
* JSON-serializable values.
|
|
67
|
+
*
|
|
68
|
+
* The `Json` type describes JSON-serializable values and serves as an upper bound on keys and values in the Skip Runtime, ensuring that they can be serialized and managed by the reactive computation engine.
|
|
69
|
+
*
|
|
70
|
+
* `Json` values are compared by the Skip Runtime in the following way:
|
|
71
|
+
* - null < false < true < numbers < strings < arrays < objects
|
|
72
|
+
* - strings are compared lexicographically
|
|
73
|
+
* - arrays are compared lexicographically
|
|
74
|
+
* - objects are compared lexicographically based on their key-value pairs ordered by keys
|
|
75
|
+
*/
|
|
76
|
+
export type Json = boolean | number | string | (Json | null)[] | JsonObject;
|
|
77
|
+
/**
|
|
78
|
+
* Objects containing `Json` values.
|
|
79
|
+
*/
|
|
80
|
+
export type JsonObject = {
|
|
81
|
+
[key: string]: Json | null;
|
|
82
|
+
};
|
|
83
|
+
export type Exportable = null | undefined | Json | ObjectProxy<{
|
|
84
|
+
[k: string]: Exportable;
|
|
85
|
+
}> | (readonly Exportable[] & Managed);
|
|
86
|
+
export type ObjectProxy<Base extends {
|
|
87
|
+
[k: string]: Exportable;
|
|
88
|
+
}> = {
|
|
89
|
+
[sk_isObjectProxy]: true;
|
|
90
|
+
[sk_managed]: true;
|
|
91
|
+
__pointer: Pointer<Internal.CJSON>;
|
|
92
|
+
clone: () => ObjectProxy<Base>;
|
|
93
|
+
toJSON: () => Base;
|
|
94
|
+
keys: IterableIterator<keyof Base>;
|
|
95
|
+
} & Base;
|
|
96
|
+
export declare function isObjectProxy(x: any): x is ObjectProxy<{
|
|
97
|
+
[k: string]: Exportable;
|
|
98
|
+
}>;
|
|
99
|
+
export declare const reactiveObject: {
|
|
100
|
+
get<Base extends {
|
|
101
|
+
[k: string]: Exportable;
|
|
102
|
+
}>(hdl: ObjectHandle<Internal.CJObject>, prop: string | symbol, self: ObjectProxy<Base>): any;
|
|
103
|
+
set(_hdl: ObjectHandle<Internal.CJObject>, _prop: string | symbol, _value: any): never;
|
|
104
|
+
has(hdl: ObjectHandle<Internal.CJObject>, prop: string | symbol): boolean;
|
|
105
|
+
ownKeys(hdl: ObjectHandle<Internal.CJObject>): string[];
|
|
106
|
+
getOwnPropertyDescriptor(hdl: ObjectHandle<Internal.CJObject>, prop: string | symbol): {
|
|
107
|
+
configurable: boolean;
|
|
108
|
+
enumerable: boolean;
|
|
109
|
+
writable: boolean;
|
|
110
|
+
value: Exportable;
|
|
111
|
+
} | undefined;
|
|
112
|
+
};
|
|
113
|
+
export declare function clone<T>(value: T): T;
|
|
114
|
+
declare class ObjectHandle<T extends Internal.CJSON> {
|
|
115
|
+
private readonly binding;
|
|
116
|
+
readonly pointer: Pointer<T>;
|
|
117
|
+
private fields?;
|
|
118
|
+
constructor(binding: Binding, pointer: Pointer<T>);
|
|
119
|
+
private getFieldAt;
|
|
120
|
+
private objectFields;
|
|
121
|
+
toJSON(): {
|
|
122
|
+
[k: string]: Exportable;
|
|
123
|
+
};
|
|
124
|
+
toString(): string;
|
|
125
|
+
keys(): MapIterator<string>;
|
|
126
|
+
get(prop: string): Exportable;
|
|
127
|
+
has(prop: string): boolean;
|
|
128
|
+
getOwnPropertyDescriptor(prop: string): {
|
|
129
|
+
configurable: boolean;
|
|
130
|
+
enumerable: boolean;
|
|
131
|
+
writable: boolean;
|
|
132
|
+
value: Exportable;
|
|
133
|
+
} | undefined;
|
|
134
|
+
}
|
|
135
|
+
export declare function exportJSON(binding: Binding, value: Exportable): Pointer<Internal.CJSON>;
|
|
136
|
+
export declare function importJSON<T extends Internal.CJSON>(binding: Binding, pointer: Pointer<T>, copy?: boolean): Exportable;
|
|
137
|
+
export interface JsonConverter {
|
|
138
|
+
importJSON(value: Pointer<Internal.CJSON>, copy?: boolean): Exportable;
|
|
139
|
+
exportJSON(v: null | undefined): Pointer<Internal.CJNull>;
|
|
140
|
+
exportJSON(v: boolean): Pointer<Internal.CJBool>;
|
|
141
|
+
exportJSON(v: number): Pointer<Internal.CJFloat | Internal.CJInt>;
|
|
142
|
+
exportJSON(v: string): Pointer<Internal.CJString>;
|
|
143
|
+
exportJSON(v: any[]): Pointer<Internal.CJArray>;
|
|
144
|
+
exportJSON(v: JsonObject): Pointer<Internal.CJObject>;
|
|
145
|
+
exportJSON<T extends Internal.CJSON>(v: ObjectProxy<{
|
|
146
|
+
[k: string]: Exportable;
|
|
147
|
+
}> & {
|
|
148
|
+
__pointer: Pointer<T>;
|
|
149
|
+
}): Pointer<T>;
|
|
150
|
+
exportJSON(v: Nullable<Json>): Pointer<Internal.CJSON>;
|
|
151
|
+
importOptJSON(value: Nullable<Pointer<Internal.CJSON>>, copy?: boolean): Exportable;
|
|
152
|
+
is(v: Pointer<Internal.CJSON>, type: Type): boolean;
|
|
153
|
+
clone<T>(v: T): T;
|
|
154
|
+
}
|
|
155
|
+
export declare class JsonConverterImpl implements JsonConverter {
|
|
156
|
+
private binding;
|
|
157
|
+
constructor(binding: Binding);
|
|
158
|
+
importJSON(value: Pointer<Internal.CJSON>, copy?: boolean): Exportable;
|
|
159
|
+
exportJSON(v: Exportable): Pointer<Internal.CJSON>;
|
|
160
|
+
clone<T>(v: T): T;
|
|
161
|
+
is(v: Pointer<Internal.CJSON>, type: Type): boolean;
|
|
162
|
+
importOptJSON(value: Nullable<Pointer<Internal.CJSON>>, copy?: boolean): Exportable;
|
|
163
|
+
}
|
|
164
|
+
export declare function buildJsonConverter(binding: Binding): JsonConverter;
|
|
165
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../skiplang-json/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import * as Internal from "./internal.js";
|
|
2
|
+
import { Type } from "./binding.js";
|
|
3
|
+
export const sk_isObjectProxy = Symbol();
|
|
4
|
+
export const sk_managed = Symbol.for("Skip.managed");
|
|
5
|
+
export class Frozen {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.freeze();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function sk_freeze(x) {
|
|
11
|
+
return Object.defineProperty(x, sk_managed, {
|
|
12
|
+
enumerable: false,
|
|
13
|
+
writable: false,
|
|
14
|
+
value: true,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function isSkManaged(x) {
|
|
18
|
+
return sk_managed in x && x[sk_managed] === true;
|
|
19
|
+
}
|
|
20
|
+
export class SkManaged extends Frozen {
|
|
21
|
+
freeze() {
|
|
22
|
+
sk_freeze(this);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function checkOrCloneParam(value) {
|
|
26
|
+
if (typeof value == "boolean" ||
|
|
27
|
+
typeof value == "number" ||
|
|
28
|
+
typeof value == "string")
|
|
29
|
+
return value;
|
|
30
|
+
if (typeof value == "object") {
|
|
31
|
+
if (value === null)
|
|
32
|
+
return value;
|
|
33
|
+
if (isObjectProxy(value))
|
|
34
|
+
return value.clone();
|
|
35
|
+
if (isSkManaged(value))
|
|
36
|
+
return value;
|
|
37
|
+
throw new Error("Invalid object: must be deep-frozen.");
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`'${typeof value}' cannot be deep-frozen.`);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* _Deep-freeze_ an object, making it dependency-safe.
|
|
43
|
+
*
|
|
44
|
+
* This function is similar to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze | Object.freeze()} but freezes the object and deep-freezes all its properties, recursively.
|
|
45
|
+
* The object is then not only _immutable_ but also _constant_.
|
|
46
|
+
* Note that as a result all objects reachable from the parameter will be frozen and no longer mutable or extensible, even from other references.
|
|
47
|
+
*
|
|
48
|
+
* The argument object and all its properties, recursively, must not already be frozen by `Object.freeze` (or else `deepFreeze` cannot mark them deep-frozen).
|
|
49
|
+
* Undefined, function (and hence class) values cannot be deep-frozen.
|
|
50
|
+
*
|
|
51
|
+
* The primary use for this function is to satisfy the requirement that all parameters to Skip `Mapper` or `Reducer` constructors must be dependency-safe: objects that have not been constructed by Skip can be passed to `deepFreeze()` before passing them to a `Mapper` or `Reducer` constructor.
|
|
52
|
+
*
|
|
53
|
+
* @typeParam T - Type of value to deep-freeze.
|
|
54
|
+
* @param value - The object to deep-freeze.
|
|
55
|
+
* @returns The same object that was passed in.
|
|
56
|
+
*/
|
|
57
|
+
export function deepFreeze(value) {
|
|
58
|
+
if (typeof value == "boolean" ||
|
|
59
|
+
typeof value == "number" ||
|
|
60
|
+
typeof value == "bigint" ||
|
|
61
|
+
typeof value == "string" ||
|
|
62
|
+
typeof value == "symbol") {
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
else if (typeof value == "object") {
|
|
66
|
+
if (value === null) {
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
else if (isSkManaged(value)) {
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
else if (Object.isFrozen(value)) {
|
|
73
|
+
throw new Error(`Cannot deep-freeze an Object.frozen value.`);
|
|
74
|
+
}
|
|
75
|
+
else if (Array.isArray(value)) {
|
|
76
|
+
for (const elt of value) {
|
|
77
|
+
deepFreeze(elt);
|
|
78
|
+
}
|
|
79
|
+
return Object.freeze(sk_freeze(value));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
for (const val of Object.values(value)) {
|
|
83
|
+
deepFreeze(val);
|
|
84
|
+
}
|
|
85
|
+
return Object.freeze(sk_freeze(value));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// typeof value == "function" || typeof value == "undefined"
|
|
90
|
+
throw new Error(`'${typeof value}' values cannot be deep-frozen.`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function isObjectProxy(x) {
|
|
94
|
+
return sk_isObjectProxy in x && x[sk_isObjectProxy];
|
|
95
|
+
}
|
|
96
|
+
export const reactiveObject = {
|
|
97
|
+
get(hdl, prop, self) {
|
|
98
|
+
if (prop === sk_isObjectProxy)
|
|
99
|
+
return true;
|
|
100
|
+
if (prop === sk_managed)
|
|
101
|
+
return true;
|
|
102
|
+
if (prop === "__pointer")
|
|
103
|
+
return hdl.pointer;
|
|
104
|
+
if (prop === "clone")
|
|
105
|
+
return () => clone(self);
|
|
106
|
+
if (prop === "toJSON")
|
|
107
|
+
return hdl.toJSON.bind(hdl);
|
|
108
|
+
if (prop === "toString")
|
|
109
|
+
return hdl.toString.bind(hdl);
|
|
110
|
+
if (prop === "keys")
|
|
111
|
+
return hdl.keys();
|
|
112
|
+
if (typeof prop === "symbol")
|
|
113
|
+
return undefined;
|
|
114
|
+
return hdl.get(prop);
|
|
115
|
+
},
|
|
116
|
+
set(_hdl, _prop, _value) {
|
|
117
|
+
throw new Error("Reactive object cannot be modified.");
|
|
118
|
+
},
|
|
119
|
+
has(hdl, prop) {
|
|
120
|
+
if (prop === sk_isObjectProxy)
|
|
121
|
+
return true;
|
|
122
|
+
if (prop === sk_managed)
|
|
123
|
+
return true;
|
|
124
|
+
if (prop === "__pointer")
|
|
125
|
+
return true;
|
|
126
|
+
if (prop === "clone")
|
|
127
|
+
return true;
|
|
128
|
+
if (prop === "keys")
|
|
129
|
+
return true;
|
|
130
|
+
if (prop === "toJSON")
|
|
131
|
+
return true;
|
|
132
|
+
if (prop === "toString")
|
|
133
|
+
return true;
|
|
134
|
+
if (typeof prop === "symbol")
|
|
135
|
+
return false;
|
|
136
|
+
return hdl.has(prop);
|
|
137
|
+
},
|
|
138
|
+
ownKeys(hdl) {
|
|
139
|
+
return Array.from(hdl.keys());
|
|
140
|
+
},
|
|
141
|
+
getOwnPropertyDescriptor(hdl, prop) {
|
|
142
|
+
if (typeof prop === "symbol")
|
|
143
|
+
return undefined;
|
|
144
|
+
return hdl.getOwnPropertyDescriptor(prop);
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
export function clone(value) {
|
|
148
|
+
if (value !== null && typeof value === "object") {
|
|
149
|
+
if (Array.isArray(value)) {
|
|
150
|
+
return value.map(clone);
|
|
151
|
+
}
|
|
152
|
+
else if (isObjectProxy(value)) {
|
|
153
|
+
return Object.fromEntries(Array.from(value.keys).map((k) => [k, clone(value[k])]));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, clone(v)]));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function interpretPointer(binding, pointer) {
|
|
164
|
+
if (pointer === null)
|
|
165
|
+
return null;
|
|
166
|
+
const type = binding.SKIP_SKJSON_typeOf(pointer);
|
|
167
|
+
switch (type) {
|
|
168
|
+
case Type.Null:
|
|
169
|
+
return null;
|
|
170
|
+
case Type.Boolean:
|
|
171
|
+
return binding.SKIP_SKJSON_asBoolean(pointer);
|
|
172
|
+
case Type.Int:
|
|
173
|
+
case Type.Float:
|
|
174
|
+
return binding.SKIP_SKJSON_asNumber(pointer);
|
|
175
|
+
case Type.String:
|
|
176
|
+
return binding.SKIP_SKJSON_asString(pointer);
|
|
177
|
+
case Type.Array: {
|
|
178
|
+
const aPtr = binding.SKIP_SKJSON_asArray(pointer);
|
|
179
|
+
const length = binding.SKIP_SKJSON_arraySize(aPtr);
|
|
180
|
+
const array = Array.from({ length }, (_, idx) => interpretPointer(binding, binding.SKIP_SKJSON_at(aPtr, idx)));
|
|
181
|
+
return sk_freeze(array);
|
|
182
|
+
}
|
|
183
|
+
case Type.Object: {
|
|
184
|
+
const oPtr = binding.SKIP_SKJSON_asObject(pointer);
|
|
185
|
+
return new Proxy(new ObjectHandle(binding, oPtr), reactiveObject);
|
|
186
|
+
}
|
|
187
|
+
case Type.Undefined:
|
|
188
|
+
default:
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
class ObjectHandle {
|
|
193
|
+
constructor(binding, pointer) {
|
|
194
|
+
this.binding = binding;
|
|
195
|
+
this.pointer = pointer;
|
|
196
|
+
}
|
|
197
|
+
getFieldAt(idx) {
|
|
198
|
+
return interpretPointer(this.binding, this.binding.SKIP_SKJSON_get(this.pointer, idx));
|
|
199
|
+
}
|
|
200
|
+
objectFields() {
|
|
201
|
+
if (!this.fields) {
|
|
202
|
+
this.fields = new Map();
|
|
203
|
+
const size = this.binding.SKIP_SKJSON_objectSize(this.pointer);
|
|
204
|
+
for (let i = 0; i < size; i++) {
|
|
205
|
+
const field = this.binding.SKIP_SKJSON_fieldAt(this.pointer, i);
|
|
206
|
+
if (!field)
|
|
207
|
+
break;
|
|
208
|
+
this.fields.set(field, i);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return this.fields;
|
|
212
|
+
}
|
|
213
|
+
toJSON() {
|
|
214
|
+
return Object.fromEntries(Array.from(this.objectFields()).map(([k, ptr]) => [
|
|
215
|
+
k,
|
|
216
|
+
this.getFieldAt(ptr),
|
|
217
|
+
]));
|
|
218
|
+
}
|
|
219
|
+
toString() {
|
|
220
|
+
return JSON.stringify(this.toJSON());
|
|
221
|
+
}
|
|
222
|
+
// Hijacks NodeJS' console.log
|
|
223
|
+
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
224
|
+
return this.toString();
|
|
225
|
+
}
|
|
226
|
+
keys() {
|
|
227
|
+
return this.objectFields().keys();
|
|
228
|
+
}
|
|
229
|
+
get(prop) {
|
|
230
|
+
const idx = this.objectFields().get(prop);
|
|
231
|
+
if (idx === undefined)
|
|
232
|
+
return undefined;
|
|
233
|
+
return this.getFieldAt(idx);
|
|
234
|
+
}
|
|
235
|
+
has(prop) {
|
|
236
|
+
return this.objectFields().has(prop);
|
|
237
|
+
}
|
|
238
|
+
getOwnPropertyDescriptor(prop) {
|
|
239
|
+
const idx = this.objectFields().get(prop);
|
|
240
|
+
if (idx === undefined)
|
|
241
|
+
return undefined;
|
|
242
|
+
const value = this.getFieldAt(idx);
|
|
243
|
+
return {
|
|
244
|
+
configurable: true,
|
|
245
|
+
enumerable: true,
|
|
246
|
+
writable: false,
|
|
247
|
+
value,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export function exportJSON(binding, value) {
|
|
252
|
+
if (value === null || value === undefined) {
|
|
253
|
+
return binding.SKIP_SKJSON_createCJNull();
|
|
254
|
+
}
|
|
255
|
+
else if (typeof value == "boolean") {
|
|
256
|
+
return binding.SKIP_SKJSON_createCJBool(value);
|
|
257
|
+
}
|
|
258
|
+
else if (typeof value == "number") {
|
|
259
|
+
if (value === Math.trunc(value)) {
|
|
260
|
+
return binding.SKIP_SKJSON_createCJInt(value);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
return binding.SKIP_SKJSON_createCJFloat(value);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
else if (typeof value == "string") {
|
|
267
|
+
return binding.SKIP_SKJSON_createCJString(value);
|
|
268
|
+
}
|
|
269
|
+
else if (Array.isArray(value)) {
|
|
270
|
+
const arr = binding.SKIP_SKJSON_startCJArray();
|
|
271
|
+
value.forEach((v) => {
|
|
272
|
+
binding.SKIP_SKJSON_addToCJArray(arr, exportJSON(binding, v));
|
|
273
|
+
});
|
|
274
|
+
return binding.SKIP_SKJSON_endCJArray(arr);
|
|
275
|
+
}
|
|
276
|
+
else if (typeof value == "object") {
|
|
277
|
+
if (isObjectProxy(value)) {
|
|
278
|
+
return value.__pointer;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
const obj = binding.SKIP_SKJSON_startCJObject();
|
|
282
|
+
Object.entries(value).forEach(([key, val]) => {
|
|
283
|
+
binding.SKIP_SKJSON_addToCJObject(obj, key, exportJSON(binding, val));
|
|
284
|
+
});
|
|
285
|
+
return binding.SKIP_SKJSON_endCJObject(obj);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
throw new Error(`'${typeof value}' cannot be exported to wasm.`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export function importJSON(binding, pointer, copy) {
|
|
293
|
+
const value = interpretPointer(binding, pointer);
|
|
294
|
+
return copy && value !== null ? clone(value) : value;
|
|
295
|
+
}
|
|
296
|
+
export class JsonConverterImpl {
|
|
297
|
+
constructor(binding) {
|
|
298
|
+
this.binding = binding;
|
|
299
|
+
}
|
|
300
|
+
importJSON(value, copy) {
|
|
301
|
+
return importJSON(this.binding, value, copy);
|
|
302
|
+
}
|
|
303
|
+
exportJSON(v) {
|
|
304
|
+
return exportJSON(this.binding, v);
|
|
305
|
+
}
|
|
306
|
+
clone(v) {
|
|
307
|
+
return clone(v);
|
|
308
|
+
}
|
|
309
|
+
is(v, type) {
|
|
310
|
+
return this.binding.SKIP_SKJSON_typeOf(v) == type;
|
|
311
|
+
}
|
|
312
|
+
importOptJSON(value, copy) {
|
|
313
|
+
if (value === null) {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
return this.importJSON(value, copy);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
export function buildJsonConverter(binding) {
|
|
320
|
+
return new JsonConverterImpl(binding);
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../skiplang-json/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAC;AAKlD,MAAM,CAAC,MAAM,gBAAgB,GAAkB,MAAM,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAkBpE,MAAM,OAAgB,MAAM;IAI1B;QACE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CAGF;AAED,MAAM,UAAU,SAAS,CAAmB,CAAI;IAC9C,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE;QAC1C,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,IAAI;KACZ,CAAgB,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAM;IAChC,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,OAAgB,SAAU,SAAQ,MAAM;IAClC,MAAM;QACd,SAAS,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;AAwBD,MAAM,UAAU,iBAAiB,CAAI,KAAQ;IAC3C,IACE,OAAO,KAAK,IAAI,SAAS;QACzB,OAAO,KAAK,IAAI,QAAQ;QACxB,OAAO,KAAK,IAAI,QAAQ;QAExB,OAAO,KAAK,CAAC;IACf,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,KAAK,EAAO,CAAC;QACpD,IAAI,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,0BAA0B,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAI,KAAQ;IACpC,IACE,OAAO,KAAK,IAAI,SAAS;QACzB,OAAO,KAAK,IAAI,QAAQ;QACxB,OAAO,KAAK,IAAI,QAAQ;QACxB,OAAO,KAAK,IAAI,QAAQ;QACxB,OAAO,KAAK,IAAI,QAAQ,EACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,4DAA4D;QAC5D,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,iCAAiC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAoCD,MAAM,UAAU,aAAa,CAC3B,CAAM;IAEN,OAAO,gBAAgB,IAAI,CAAC,IAAK,CAAC,CAAC,gBAAgB,CAAa,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,CACD,GAAoC,EACpC,IAAqB,EACrB,IAAuB;QAEvB,IAAI,IAAI,KAAK,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QAC7C,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,GAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,GAAG,CACD,IAAqC,EACrC,KAAsB,EACtB,MAAW;QAEX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,GAAoC,EAAE,IAAqB;QAC7D,IAAI,IAAI,KAAK,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC3C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAoC;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,wBAAwB,CACtB,GAAoC,EACpC,IAAqB;QAErB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,KAAK,CAAI,KAAQ;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QAC/B,CAAC;aAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;QACT,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;QACT,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAgB,EAChB,OAA6B;IAE7B,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,OAAO;YACf,OAAO,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC;QACd,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAC9C,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAC7D,CAAC;YACF,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,KAAK,CACd,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAC/B,cAAc,CACwC,CAAC;QAC3D,CAAC;QACD,KAAK,IAAI,CAAC,SAAS,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,YAAY;IAGhB,YACmB,OAAgB,EACjB,OAAmB;QADlB,YAAO,GAAP,OAAO,CAAS;QACjB,YAAO,GAAP,OAAO,CAAY;IAClC,CAAC;IAEI,UAAU,CAAC,GAAW;QAC5B,OAAO,gBAAgB,CACrB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAChD,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,KAAK;oBAAE,MAAM;gBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;SACrB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,8BAA8B;IAC9B,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,wBAAwB,CAAC,IAAY;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK;YACf,KAAK;SACN,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,KAAiB;IAEjB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,SAAS,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gBAC3C,OAAO,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,+BAA+B,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,OAAmB,EACnB,IAAc;IAEd,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAwBD,MAAM,OAAO,iBAAiB;IAC5B,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAExC,UAAU,CAAC,KAA8B,EAAE,IAAc;QACvD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,CAAa;QACtB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAI,CAAI;QAClB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAEM,EAAE,CAAC,CAA0B,EAAE,IAAU;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACpD,CAAC;IAED,aAAa,CACX,KAAwC,EACxC,IAAc;QAEd,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { T, Vector, Pair, String } from "../skiplang-std/internal.js";
|
|
2
|
+
export type * from "../skiplang-std/internal.js";
|
|
3
|
+
declare const _CJNull: unique symbol;
|
|
4
|
+
export type CJNull = CJSON<typeof _CJNull>;
|
|
5
|
+
declare const _CJBool: unique symbol;
|
|
6
|
+
export type CJBool = CJSON<typeof _CJBool>;
|
|
7
|
+
declare const _CJInt: unique symbol;
|
|
8
|
+
export type CJInt = CJSON<typeof _CJInt>;
|
|
9
|
+
declare const _CJFloat: unique symbol;
|
|
10
|
+
export type CJFloat = CJSON<typeof _CJFloat>;
|
|
11
|
+
declare const _CJString: unique symbol;
|
|
12
|
+
export type CJString = CJSON<typeof _CJString>;
|
|
13
|
+
declare const _CJArray: unique symbol;
|
|
14
|
+
export type CJArray<Sub extends CJSON = CJSON> = CJSON<typeof _CJArray, Sub>;
|
|
15
|
+
declare const _CJObject: unique symbol;
|
|
16
|
+
export type CJObject = CJSON<typeof _CJObject>;
|
|
17
|
+
declare const _CJSON: unique symbol;
|
|
18
|
+
export type CJSON<Sub = any, Sub2 = any> = T<typeof _CJSON> & {
|
|
19
|
+
sub: Sub;
|
|
20
|
+
sub2: Sub2;
|
|
21
|
+
};
|
|
22
|
+
export type PartialCJObj = Vector<Pair<String, CJSON>>;
|
|
23
|
+
export type PartialCJArray<T extends CJSON> = Vector<T>;
|
|
24
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../skiplang-json/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC3E,mBAAmB,6BAA6B,CAAC;AAEjD,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE3C,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE3C,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,MAAM,CAAC;AACpC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAEzC,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACtC,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE7C,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AACvC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/C,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACtC,MAAM,MAAM,OAAO,CAAC,GAAG,SAAS,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,QAAQ,EAAE,GAAG,CAAC,CAAC;AAE7E,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AACvC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/C,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,MAAM,CAAC;AACpC,MAAM,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG;IAC5D,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../skiplang-json/internal.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { T } from "./internal.js";
|
|
2
|
+
export type { Opaque } from "./internal.js";
|
|
3
|
+
export declare const skpointer: unique symbol;
|
|
4
|
+
export interface Pointer<InternalType extends T<any>> {
|
|
5
|
+
[skpointer]: InternalType;
|
|
6
|
+
}
|
|
7
|
+
export declare const sknative: unique symbol;
|
|
8
|
+
export interface NativeStub {
|
|
9
|
+
[sknative]: string;
|
|
10
|
+
}
|
|
11
|
+
export type float = number;
|
|
12
|
+
export type int = number;
|
|
13
|
+
/**
|
|
14
|
+
* Potentially `null` values.
|
|
15
|
+
*
|
|
16
|
+
* The type `Nullable<T>` of potentially `null` values of type `T`.
|
|
17
|
+
*/
|
|
18
|
+
export type Nullable<T> = T | null;
|
|
19
|
+
export declare const sk_isObjectProxy: unique symbol;
|
|
20
|
+
export declare function cloneIfProxy<T>(v: T): T;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../skiplang-std/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,SAAS,EAAE,OAAO,MAAmC,CAAC;AAEnE,MAAM,WAAW,OAAO,CAAC,YAAY,SAAS,CAAC,CAAC,GAAG,CAAC;IAClD,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,eAAO,MAAM,QAAQ,EAAE,OAAO,MAAuC,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAC3B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnC,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAiB,CAAC;AAExD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAWvC"}
|