@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
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
|
-
import { sk_freeze, isSkManaged, SkManaged, checkOrCloneParam, } from "
|
|
7
|
-
import { sknative } from "
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { sk_freeze, isSkManaged, SkManaged, checkOrCloneParam, } from "../skiplang-json/index.js";
|
|
7
|
+
import { sknative } from "../skiplang-std/index.js";
|
|
8
|
+
import {} from "./api.js";
|
|
9
|
+
import { SkipClassNameError, SkipNonUniqueValueError, SkipResourceInstanceInUseError, SkipUnknownCollectionError, } from "./errors.js";
|
|
10
10
|
import { ResourceBuilder, } from "./binding.js";
|
|
11
|
-
export {
|
|
12
|
-
export { Sum, Min, Max, Count } from "./utils.js";
|
|
11
|
+
export { sk_freeze, isSkManaged };
|
|
13
12
|
export * from "./api.js";
|
|
13
|
+
export * from "./errors.js";
|
|
14
14
|
class Handles {
|
|
15
15
|
constructor() {
|
|
16
16
|
this.nextID = 1;
|
|
@@ -75,7 +75,7 @@ class LazyCollectionImpl extends SkManaged {
|
|
|
75
75
|
getUnique(key) {
|
|
76
76
|
const v = this.refs.skjson.importOptJSON(this.refs.binding.SkipRuntime_LazyCollection__getUnique(this.lazyCollection, this.refs.skjson.exportJSON(key)));
|
|
77
77
|
if (v == null)
|
|
78
|
-
throw new
|
|
78
|
+
throw new SkipNonUniqueValueError();
|
|
79
79
|
return v;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -95,7 +95,7 @@ class EagerCollectionImpl extends SkManaged {
|
|
|
95
95
|
getUnique(key) {
|
|
96
96
|
const v = this.refs.skjson.importOptJSON(this.refs.binding.SkipRuntime_Collection__getUnique(this.collection, this.refs.skjson.exportJSON(key)));
|
|
97
97
|
if (v == null)
|
|
98
|
-
throw new
|
|
98
|
+
throw new SkipNonUniqueValueError();
|
|
99
99
|
return v;
|
|
100
100
|
}
|
|
101
101
|
slice(start, end) {
|
|
@@ -114,7 +114,7 @@ class EagerCollectionImpl extends SkManaged {
|
|
|
114
114
|
const mapperObj = new mapper(...mapperParams);
|
|
115
115
|
Object.freeze(mapperObj);
|
|
116
116
|
if (!mapperObj.constructor.name) {
|
|
117
|
-
throw new
|
|
117
|
+
throw new SkipClassNameError("Mapper classes must be defined at top-level.");
|
|
118
118
|
}
|
|
119
119
|
const skmapper = this.refs.binding.SkipRuntime_createMapper(this.refs.handles.register(mapperObj));
|
|
120
120
|
const mapped = this.refs.binding.SkipRuntime_Collection__map(this.collection, skmapper);
|
|
@@ -129,10 +129,10 @@ class EagerCollectionImpl extends SkManaged {
|
|
|
129
129
|
Object.freeze(mapperObj);
|
|
130
130
|
Object.freeze(reducerObj);
|
|
131
131
|
if (!mapperObj.constructor.name) {
|
|
132
|
-
throw new
|
|
132
|
+
throw new SkipClassNameError("Mapper classes must be defined at top-level.");
|
|
133
133
|
}
|
|
134
134
|
if (!reducerObj.constructor.name) {
|
|
135
|
-
throw new
|
|
135
|
+
throw new SkipClassNameError("Reducer classes must be defined at top-level.");
|
|
136
136
|
}
|
|
137
137
|
const skmapper = this.refs.binding.SkipRuntime_createMapper(this.refs.handles.register(mapperObj));
|
|
138
138
|
if (sknative in reducerObj && typeof reducerObj[sknative] == "string") {
|
|
@@ -149,7 +149,7 @@ class EagerCollectionImpl extends SkManaged {
|
|
|
149
149
|
const reducerObj = new reducer(...reducerParams);
|
|
150
150
|
Object.freeze(reducerObj);
|
|
151
151
|
if (!reducerObj.constructor.name) {
|
|
152
|
-
throw new
|
|
152
|
+
throw new SkipClassNameError("Reducer classes must be defined at top-level.");
|
|
153
153
|
}
|
|
154
154
|
if (sknative in reducerObj && typeof reducerObj[sknative] == "string") {
|
|
155
155
|
return this.derive(this.refs.binding.SkipRuntime_Collection__nativeReduce(this.collection, reducerObj[sknative]));
|
|
@@ -177,30 +177,31 @@ class CollectionWriter {
|
|
|
177
177
|
const update_ = () => {
|
|
178
178
|
return this.refs.binding.SkipRuntime_CollectionWriter__update(this.collection, this.refs.skjson.exportJSON(values), isInit);
|
|
179
179
|
};
|
|
180
|
-
|
|
181
|
-
this.refs.runWithGC(update_)
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
180
|
+
const errorHdl = this.refs.needGC()
|
|
181
|
+
? this.refs.runWithGC(update_)
|
|
182
|
+
: update_();
|
|
183
|
+
if (errorHdl)
|
|
184
|
+
throw this.refs.handles.deleteHandle(errorHdl);
|
|
186
185
|
}
|
|
187
186
|
loading() {
|
|
188
187
|
const loading_ = () => {
|
|
189
188
|
return this.refs.binding.SkipRuntime_CollectionWriter__loading(this.collection);
|
|
190
189
|
};
|
|
191
|
-
|
|
192
|
-
this.refs.runWithGC(loading_)
|
|
193
|
-
|
|
194
|
-
|
|
190
|
+
const errorHdl = this.refs.needGC()
|
|
191
|
+
? this.refs.runWithGC(loading_)
|
|
192
|
+
: loading_();
|
|
193
|
+
if (errorHdl)
|
|
194
|
+
throw this.refs.handles.deleteHandle(errorHdl);
|
|
195
195
|
}
|
|
196
196
|
error(error) {
|
|
197
197
|
const error_ = () => {
|
|
198
198
|
return this.refs.binding.SkipRuntime_CollectionWriter__error(this.collection, this.refs.skjson.exportJSON(error));
|
|
199
199
|
};
|
|
200
|
-
|
|
201
|
-
this.refs.runWithGC(error_)
|
|
202
|
-
|
|
203
|
-
|
|
200
|
+
const errorHdl = this.refs.needGC()
|
|
201
|
+
? this.refs.runWithGC(error_)
|
|
202
|
+
: error_();
|
|
203
|
+
if (errorHdl)
|
|
204
|
+
throw this.refs.handles.deleteHandle(errorHdl);
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
class ContextImpl extends SkManaged {
|
|
@@ -214,7 +215,7 @@ class ContextImpl extends SkManaged {
|
|
|
214
215
|
const computeObj = new compute(...mapperParams);
|
|
215
216
|
Object.freeze(computeObj);
|
|
216
217
|
if (!computeObj.constructor.name) {
|
|
217
|
-
throw new
|
|
218
|
+
throw new SkipClassNameError("LazyCompute classes must be defined at top-level.");
|
|
218
219
|
}
|
|
219
220
|
const skcompute = this.refs.binding.SkipRuntime_createLazyCompute(this.refs.handles.register(computeObj));
|
|
220
221
|
const lazyCollection = this.refs.binding.SkipRuntime_Context__createLazyCollection(skcompute);
|
|
@@ -244,12 +245,17 @@ class AllChecker {
|
|
|
244
245
|
this.params = params;
|
|
245
246
|
}
|
|
246
247
|
check(request) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
248
|
+
try {
|
|
249
|
+
const result = this.service.getAll(this.resource, this.params, request);
|
|
250
|
+
if (result.errors.length > 0) {
|
|
251
|
+
this.executor.reject(new Error(JSON.stringify(result.errors)));
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.executor.resolve(result.payload);
|
|
255
|
+
}
|
|
250
256
|
}
|
|
251
|
-
|
|
252
|
-
this.executor.
|
|
257
|
+
catch (ex) {
|
|
258
|
+
this.executor.reject(ex);
|
|
253
259
|
}
|
|
254
260
|
}
|
|
255
261
|
}
|
|
@@ -262,18 +268,23 @@ class OneChecker {
|
|
|
262
268
|
this.key = key;
|
|
263
269
|
}
|
|
264
270
|
check(request) {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
271
|
+
try {
|
|
272
|
+
const result = this.service.getArray(this.resource, this.key, this.params, request);
|
|
273
|
+
if (result.errors.length > 0) {
|
|
274
|
+
this.executor.reject(new Error(JSON.stringify(result.errors)));
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
this.executor.resolve(result.payload);
|
|
278
|
+
}
|
|
268
279
|
}
|
|
269
|
-
|
|
270
|
-
this.executor.
|
|
280
|
+
catch (ex) {
|
|
281
|
+
this.executor.reject(ex);
|
|
271
282
|
}
|
|
272
283
|
}
|
|
273
284
|
}
|
|
274
285
|
/**
|
|
275
286
|
* A `ServiceInstance` is a running instance of a `SkipService`, providing access to its resources
|
|
276
|
-
* and operations to manage
|
|
287
|
+
* and operations to manage subscriptions and the service itself.
|
|
277
288
|
*/
|
|
278
289
|
export class ServiceInstance {
|
|
279
290
|
constructor(refs) {
|
|
@@ -296,7 +307,7 @@ export class ServiceInstance {
|
|
|
296
307
|
* Creates if not exists and get all current values of specified resource
|
|
297
308
|
* @param resource - the resource name corresponding to a key in remotes field of SkipService
|
|
298
309
|
* @param params - the parameters of the resource used to build the resource with the corresponding constructor specified in remotes field of SkipService
|
|
299
|
-
* @returns The current values of the corresponding resource with reactive
|
|
310
|
+
* @returns The current values of the corresponding resource with reactive response token to allow subscription
|
|
300
311
|
*/
|
|
301
312
|
getAll(resource, params = {}, request) {
|
|
302
313
|
const get_ = () => {
|
|
@@ -347,11 +358,11 @@ export class ServiceInstance {
|
|
|
347
358
|
* Initiate reactive subscription on a resource instance
|
|
348
359
|
* @param resourceInstanceId - the resource instance identifier
|
|
349
360
|
* @param notifier - the object containing subscription callbacks
|
|
350
|
-
* @param notifier.subscribed - A callback to execute when subscription
|
|
361
|
+
* @param notifier.subscribed - A callback to execute when subscription effectively done
|
|
351
362
|
* @param notifier.notify - A callback to execute on collection updates
|
|
352
363
|
* @param notifier.close - A callback to execute on resource close
|
|
353
364
|
* @param watermark - the watermark where to start the subscription
|
|
354
|
-
* @returns A
|
|
365
|
+
* @returns A subscription identifier
|
|
355
366
|
*/
|
|
356
367
|
subscribe(resourceInstanceId, notifier, watermark) {
|
|
357
368
|
const session = this.refs.runWithGC(() => {
|
|
@@ -359,16 +370,19 @@ export class ServiceInstance {
|
|
|
359
370
|
return this.refs.binding.SkipRuntime_Runtime__subscribe(resourceInstanceId, sknotifier, watermark ?? null);
|
|
360
371
|
});
|
|
361
372
|
if (session == -1n) {
|
|
362
|
-
throw new
|
|
373
|
+
throw new SkipUnknownCollectionError(`Unknown resource instance '${resourceInstanceId}'`);
|
|
374
|
+
}
|
|
375
|
+
else if (session == -2n) {
|
|
376
|
+
throw new SkipResourceInstanceInUseError(`Resource instance '${resourceInstanceId}' cannot be subscribed twice.`);
|
|
363
377
|
}
|
|
364
378
|
else if (session < 0n) {
|
|
365
|
-
throw
|
|
379
|
+
throw this.refs.handles.deleteHandle(Number(-session));
|
|
366
380
|
}
|
|
367
381
|
return session;
|
|
368
382
|
}
|
|
369
383
|
/**
|
|
370
384
|
* Terminate a client's subscription to a reactive resource instance
|
|
371
|
-
* @param id - The
|
|
385
|
+
* @param id - The subscription identifier returned by a call to `subscribe`
|
|
372
386
|
*/
|
|
373
387
|
unsubscribe(id) {
|
|
374
388
|
const errorHdl = this.refs.runWithGC(() => {
|
|
@@ -394,13 +408,20 @@ export class ServiceInstance {
|
|
|
394
408
|
/**
|
|
395
409
|
* Close all resources and shut down the service.
|
|
396
410
|
* Any subsequent calls on the service will result in errors.
|
|
411
|
+
* @returns The promise of externals services shutdowns
|
|
397
412
|
*/
|
|
398
413
|
close() {
|
|
399
|
-
const
|
|
400
|
-
return this.refs.binding.SkipRuntime_closeService();
|
|
414
|
+
const result = this.refs.runWithGC(() => {
|
|
415
|
+
return this.refs.skjson.importJSON(this.refs.binding.SkipRuntime_closeService(), true);
|
|
401
416
|
});
|
|
402
|
-
if (
|
|
403
|
-
|
|
417
|
+
if (Array.isArray(result)) {
|
|
418
|
+
const handles = result;
|
|
419
|
+
const promises = handles.map((h) => this.refs.handles.deleteHandle(h));
|
|
420
|
+
return Promise.all(promises);
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
const errorHdl = result;
|
|
424
|
+
return Promise.reject(this.refs.handles.deleteHandle(errorHdl));
|
|
404
425
|
}
|
|
405
426
|
}
|
|
406
427
|
}
|
|
@@ -422,7 +443,7 @@ class ValuesImpl {
|
|
|
422
443
|
getUnique() {
|
|
423
444
|
const value = this.skjson.importOptJSON(this.binding.SkipRuntime_NonEmptyIterator__uniqueValue(this.pointer));
|
|
424
445
|
if (value == null)
|
|
425
|
-
throw new
|
|
446
|
+
throw new SkipNonUniqueValueError();
|
|
426
447
|
return value;
|
|
427
448
|
}
|
|
428
449
|
[Symbol.iterator]() {
|
|
@@ -583,7 +604,7 @@ export class ToBinding {
|
|
|
583
604
|
}
|
|
584
605
|
SkipRuntime_ExternalService__shutdown(sksupplier) {
|
|
585
606
|
const supplier = this.handles.get(sksupplier);
|
|
586
|
-
supplier.shutdown();
|
|
607
|
+
return this.handles.register(supplier.shutdown());
|
|
587
608
|
}
|
|
588
609
|
SkipRuntime_deleteExternalService(supplier) {
|
|
589
610
|
this.handles.deleteHandle(supplier);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export type * from "
|
|
2
|
-
import type { T, CJSON } from "
|
|
1
|
+
export type * from "../skiplang-json/internal.js";
|
|
2
|
+
import type { T, CJSON } from "../skiplang-json/internal.js";
|
|
3
|
+
export type { Exception } from "../skiplang-std/internal.js";
|
|
3
4
|
declare const context: unique symbol;
|
|
4
5
|
export type Context = T<typeof context>;
|
|
5
6
|
declare const p: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA,mBAAmB,8BAA8B,CAAC;AAClD,OAAO,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;AAExC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;AAE/B,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CACzE,OAAO,OAAO,CACf,GAAG;IAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAEzB,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAC9C,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CACzD,OAAO,gBAAgB,CACxB,GAAG;IAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;CAAE,CAAC;AAEhB,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,MAAM,CAAC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC;AAEtC,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,WAAW,CAAC,GAAG;IAChD,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC;CAC/C,CAAC;AAEF,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEzD,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACtC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE1C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;AAExC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,OAAO,CAAC,MAAM,mBAAmB,EAAE,OAAO,MAAM,CAAC;AACjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE/D,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;AAExC,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACtC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE1C,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skipruntime/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
|
-
".": "./dist/index.js",
|
|
7
|
-
"./internal.js": "./dist/internal.js",
|
|
8
|
-
"./binding.js": "./dist/binding.js"
|
|
6
|
+
".": "./dist/src/index.js",
|
|
7
|
+
"./internal.js": "./dist/src/internal.js",
|
|
8
|
+
"./binding.js": "./dist/src/binding.js",
|
|
9
|
+
"./json.js": "./dist/skiplang-json/index.js",
|
|
10
|
+
"./json-internal.js": "./dist/skiplang-json/internal.js",
|
|
11
|
+
"./std.js": "./dist/skiplang-std/index.js",
|
|
12
|
+
"./std-internal.js": "./dist/skiplang-std/internal.js"
|
|
9
13
|
},
|
|
10
14
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
12
|
-
"clean": "rm -rf dist",
|
|
15
|
+
"build": "node ../../prebuild.mjs skiplang-std skiplang-json && tsc",
|
|
16
|
+
"clean": "rm -rf dist skiplang-std skiplang-js",
|
|
13
17
|
"lint": "eslint"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@skiplang/json": "0.0.3"
|
|
17
18
|
}
|
|
18
19
|
}
|
package/src/api.ts
CHANGED
|
@@ -4,10 +4,17 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { int, Nullable, Opaque } from "
|
|
8
|
-
import type {
|
|
7
|
+
import type { int, Nullable, Opaque } from "../skiplang-std/index.js";
|
|
8
|
+
import type {
|
|
9
|
+
Managed,
|
|
10
|
+
Json,
|
|
11
|
+
JsonObject,
|
|
12
|
+
DepSafe,
|
|
13
|
+
} from "../skiplang-json/index.js";
|
|
14
|
+
|
|
15
|
+
export * from "./errors.js";
|
|
9
16
|
export type { Managed, Json, JsonObject, Opaque, DepSafe };
|
|
10
|
-
export { deepFreeze } from "
|
|
17
|
+
export { deepFreeze } from "../skiplang-json/index.js";
|
|
11
18
|
export type { Nullable };
|
|
12
19
|
|
|
13
20
|
/**
|
|
@@ -37,117 +44,6 @@ export interface Mapper<
|
|
|
37
44
|
mapEntry(key: K1, values: Values<V1>): Iterable<[K2, V2]>;
|
|
38
45
|
}
|
|
39
46
|
|
|
40
|
-
/**
|
|
41
|
-
* Specialized `Mapper` which maps values one-to-one.
|
|
42
|
-
*
|
|
43
|
-
* A specialized form of `Mapper` which maps values one-to-one, reusing the input collection's key structure in the output collection.
|
|
44
|
-
* Use this form to map each value associated with a key to an output value for that key.
|
|
45
|
-
* This saves some boilerplate: instead of writing the fully general `mapEntry` that potentially modifies, adds, or removes keys, just implement the simpler `mapValue` to transform individual values.
|
|
46
|
-
*
|
|
47
|
-
* @typeParam K - Type of input and output keys.
|
|
48
|
-
* @typeParam V1 - Type of input values.
|
|
49
|
-
* @typeParam V2 - Type of output values.
|
|
50
|
-
* @hideconstructor
|
|
51
|
-
*/
|
|
52
|
-
export abstract class OneToOneMapper<
|
|
53
|
-
K extends Json,
|
|
54
|
-
V1 extends Json,
|
|
55
|
-
V2 extends Json,
|
|
56
|
-
> implements Mapper<K, V1, K, V2>
|
|
57
|
-
{
|
|
58
|
-
/**
|
|
59
|
-
* From an input `key`-`value` association, produce an output value to associate to `key`.
|
|
60
|
-
*
|
|
61
|
-
* @param key - A key found in the input collection.
|
|
62
|
-
* @param value - A value associated with `key` in the input collection.
|
|
63
|
-
* @returns A value to associate with `key` in the output collection.
|
|
64
|
-
*/
|
|
65
|
-
abstract mapValue(value: V1 & DepSafe, key: K): V2;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @ignore
|
|
69
|
-
* @hidden
|
|
70
|
-
*/
|
|
71
|
-
mapEntry(key: K, values: Values<V1>): Iterable<[K, V2]> {
|
|
72
|
-
return values.toArray().map((v) => [key, this.mapValue(v, key)]);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Specialized `Mapper` which maps values one-to-many.
|
|
78
|
-
*
|
|
79
|
-
* A specialized form of `Mapper` which maps values one-to-many, reusing the input collection's key structure in the output collection.
|
|
80
|
-
* Use this form to map each value associated with a key to any number of values for that same key.
|
|
81
|
-
* This saves some boilerplate: instead of writing the fully general `mapEntry` that potentially modifies, adds, or removes keys, just implement the simpler `mapValue` to transform the values associated with each key.
|
|
82
|
-
*
|
|
83
|
-
* @typeParam K - Type of input and output keys.
|
|
84
|
-
* @typeParam V1 - Type of input values.
|
|
85
|
-
* @typeParam V2 - Type of output values.
|
|
86
|
-
* @hideconstructor
|
|
87
|
-
*/
|
|
88
|
-
export abstract class OneToManyMapper<
|
|
89
|
-
K extends Json,
|
|
90
|
-
V1 extends Json,
|
|
91
|
-
V2 extends Json,
|
|
92
|
-
> implements Mapper<K, V1, K, V2>
|
|
93
|
-
{
|
|
94
|
-
/**
|
|
95
|
-
* From an input `key`-`values` association, produce some output values to associate to `key`.
|
|
96
|
-
*
|
|
97
|
-
* @param key - A key found in the input collection.
|
|
98
|
-
* @param value - A value associated with `key` in the input collection.
|
|
99
|
-
* @returns Values to associate with `key` in the output collection.
|
|
100
|
-
*/
|
|
101
|
-
abstract mapValue(value: V1 & DepSafe, key: K): V2[];
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @ignore
|
|
105
|
-
* @hidden
|
|
106
|
-
*/
|
|
107
|
-
mapEntry(key: K, values: Values<V1>): Iterable<[K, V2]> {
|
|
108
|
-
const res: [K, V2][] = [];
|
|
109
|
-
for (const v1 of values)
|
|
110
|
-
for (const v2 of this.mapValue(v1, key)) res.push([key, v2]);
|
|
111
|
-
return res;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Specialized `Mapper` which maps values many-to-one.
|
|
117
|
-
*
|
|
118
|
-
* A specialized form of `Mapper` which maps values many-to-one, reusing the input collection's key structure in the output collection.
|
|
119
|
-
* Use this form to map all the values associated with a key to a single output value for that same key.
|
|
120
|
-
* This saves some boilerplate: instead of writing the fully general `mapEntry` that potentially modifies, adds, or removes keys, just implement the simpler `mapValues` to transform the values associated with each key.
|
|
121
|
-
*
|
|
122
|
-
* @typeParam K - Type of input and output keys.
|
|
123
|
-
* @typeParam V1 - Type of input values.
|
|
124
|
-
* @typeParam V2 - Type of output values.
|
|
125
|
-
* @hideconstructor
|
|
126
|
-
*/
|
|
127
|
-
export abstract class ManyToOneMapper<
|
|
128
|
-
K extends Json,
|
|
129
|
-
V1 extends Json,
|
|
130
|
-
V2 extends Json,
|
|
131
|
-
> implements Mapper<K, V1, K, V2>
|
|
132
|
-
{
|
|
133
|
-
/**
|
|
134
|
-
* From an input `key`-`values` entry, produce some output values to associate to `key`.
|
|
135
|
-
*
|
|
136
|
-
* @param key - A key found in the input collection.
|
|
137
|
-
* @param values - The values associated with `key` in the input collection.
|
|
138
|
-
* @returns The value to associate with `key` in the output collection.
|
|
139
|
-
*/
|
|
140
|
-
abstract mapValues(values: Values<V1>, key: K): V2;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* @ignore
|
|
144
|
-
* @hidden
|
|
145
|
-
*/
|
|
146
|
-
mapEntry(key: K, values: Values<V1>): Iterable<[K, V2]> {
|
|
147
|
-
return [[key, this.mapValues(values, key)]];
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
47
|
/**
|
|
152
48
|
* Reactive function that can be used to accumulate each key's values.
|
|
153
49
|
*
|
|
@@ -187,22 +83,13 @@ export interface Reducer<V extends Json, A extends Json> {
|
|
|
187
83
|
remove(accum: A, value: V & DepSafe): Nullable<A>;
|
|
188
84
|
}
|
|
189
85
|
|
|
190
|
-
/**
|
|
191
|
-
* Exception indicating a key did not have a unique value.
|
|
192
|
-
*
|
|
193
|
-
* Some collections are used to associate each key to a unique value.
|
|
194
|
-
* When this expectation is not met (a key is associated to either zero or multiple values), operations such as `getUnique` throw `NonUniqueValueException`.
|
|
195
|
-
* @hideconstructor
|
|
196
|
-
*/
|
|
197
|
-
export class NonUniqueValueException extends Error {}
|
|
198
|
-
|
|
199
86
|
/**
|
|
200
87
|
* An iterable collection of dependency-safe values.
|
|
201
88
|
*/
|
|
202
89
|
export interface Values<T> extends Iterable<T & DepSafe> {
|
|
203
90
|
/**
|
|
204
91
|
* Return the first value, if there is exactly one.
|
|
205
|
-
* @throws {@link
|
|
92
|
+
* @throws {@link SkipNonUniqueValueError} if this iterable contains either zero or multiple values.
|
|
206
93
|
*/
|
|
207
94
|
getUnique(): T & DepSafe;
|
|
208
95
|
|
|
@@ -237,7 +124,7 @@ export interface LazyCollection<K extends Json, V extends Json>
|
|
|
237
124
|
*
|
|
238
125
|
* @param key - The key to query.
|
|
239
126
|
* @returns The value associated to `key`.
|
|
240
|
-
* @throws {@link
|
|
127
|
+
* @throws {@link SkipNonUniqueValueError} if `key` is associated to either zero or multiple values.
|
|
241
128
|
*/
|
|
242
129
|
getUnique(key: K): V & DepSafe;
|
|
243
130
|
}
|
|
@@ -267,7 +154,7 @@ export interface EagerCollection<K extends Json, V extends Json>
|
|
|
267
154
|
*
|
|
268
155
|
* @param key - The key to query.
|
|
269
156
|
* @returns The value associated to `key`.
|
|
270
|
-
* @throws {@link
|
|
157
|
+
* @throws {@link SkipNonUniqueValueError} if `key` is associated to either zero or multiple values.
|
|
271
158
|
*/
|
|
272
159
|
getUnique(key: K): V & DepSafe;
|
|
273
160
|
|
|
@@ -360,6 +247,8 @@ export interface EagerCollection<K extends Json, V extends Json>
|
|
|
360
247
|
/**
|
|
361
248
|
* Create a new eager collection by keeping only the elements whose keys are in the given range.
|
|
362
249
|
*
|
|
250
|
+
* See {@link Json} for a reference on `Json` value ordering.
|
|
251
|
+
*
|
|
363
252
|
* @param start - The least key whose entry will be kept in the result.
|
|
364
253
|
* @param end - The greatest key whose entry will be kept in the result.
|
|
365
254
|
* @returns The restricted eager collection.
|
|
@@ -369,6 +258,8 @@ export interface EagerCollection<K extends Json, V extends Json>
|
|
|
369
258
|
/**
|
|
370
259
|
* Create a new eager collection by keeping only the elements whose keys are in at least one of the given ranges.
|
|
371
260
|
*
|
|
261
|
+
* See {@link Json} for a reference on `Json` value ordering.
|
|
262
|
+
*
|
|
372
263
|
* @param ranges - The pairs of lower and upper bounds on keys to keep in the result.
|
|
373
264
|
* @returns The restricted eager collection.
|
|
374
265
|
*/
|
|
@@ -377,6 +268,8 @@ export interface EagerCollection<K extends Json, V extends Json>
|
|
|
377
268
|
/**
|
|
378
269
|
* Create a new eager collection by keeping the first entries.
|
|
379
270
|
*
|
|
271
|
+
* See {@link Json} for a reference on `Json` value ordering.
|
|
272
|
+
*
|
|
380
273
|
* @param limit - The number of entries to keep.
|
|
381
274
|
* @returns The restricted eager collection.
|
|
382
275
|
*/
|
|
@@ -552,7 +445,7 @@ export interface ExternalService {
|
|
|
552
445
|
*
|
|
553
446
|
* @returns {void}
|
|
554
447
|
*/
|
|
555
|
-
shutdown(): void
|
|
448
|
+
shutdown(): Promise<void>;
|
|
556
449
|
}
|
|
557
450
|
|
|
558
451
|
/**
|
package/src/binding.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Pointer, Nullable, Json } from "
|
|
1
|
+
import type { Pointer, Nullable, Json } from "../skiplang-json/index.js";
|
|
2
2
|
import type * as Internal from "./internal.js";
|
|
3
3
|
|
|
4
4
|
import {
|
|
@@ -236,7 +236,7 @@ export interface FromBinding {
|
|
|
236
236
|
SkipRuntime_initService(service: Pointer<Internal.Service>): Handle<Error>;
|
|
237
237
|
|
|
238
238
|
// closeClose
|
|
239
|
-
SkipRuntime_closeService():
|
|
239
|
+
SkipRuntime_closeService(): Pointer<Internal.CJSON>;
|
|
240
240
|
|
|
241
241
|
// Context
|
|
242
242
|
|
package/src/errors.ts
CHANGED
|
@@ -1 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Umbrella type for run-time errors thrown by the Skip runtime.
|
|
3
|
+
* @hideconstructor
|
|
4
|
+
*/
|
|
5
|
+
export class SkipError extends Error {}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Exception indicating an attempted read/write to a collection that does not exist.
|
|
9
|
+
* @hideconstructor
|
|
10
|
+
*/
|
|
11
|
+
export class SkipUnknownCollectionError extends SkipError {}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Exception indicating an attempted read/write to a resource that does not exist.
|
|
15
|
+
* @hideconstructor
|
|
16
|
+
*/
|
|
17
|
+
export class SkipUnknownResourceError extends SkipError {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Exception indicating a malformed REST query to a Skip service.
|
|
21
|
+
* @hideconstructor
|
|
22
|
+
*/
|
|
23
|
+
export class SkipRESTError extends SkipError {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Exception indicating that a fetch returned an HTTP status outside of the 200-299 range.
|
|
27
|
+
* @hideconstructor
|
|
28
|
+
*/
|
|
29
|
+
export class SkipFetchError extends SkipError {}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Exception indicating a non-top-level class being used as a mapper/reducer/etc.
|
|
33
|
+
*
|
|
34
|
+
* The Skip runtime requires that these classes be defined at the top-level, so that their names can be used to generate cache keys and the like.
|
|
35
|
+
* @hideconstructor
|
|
36
|
+
*/
|
|
37
|
+
export class SkipClassNameError extends SkipError {}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Exception indicating a key did not have a unique value.
|
|
41
|
+
*
|
|
42
|
+
* Some collections are used to associate each key to a unique value.
|
|
43
|
+
* When this expectation is not met (a key is associated to either zero or multiple values), operations such as `getUnique` throw `SkipNonUniqueValueError`.
|
|
44
|
+
* @hideconstructor
|
|
45
|
+
*/
|
|
46
|
+
export class SkipNonUniqueValueError extends SkipError {}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Exception indicating a resource instance is already in use.
|
|
50
|
+
*
|
|
51
|
+
* Only one stream is allowed by resource instance.
|
|
52
|
+
* When a subscribed instance is newly subscribed the `SkipResourceInstanceInUseError` is thrown.
|
|
53
|
+
* @hideconstructor
|
|
54
|
+
*/
|
|
55
|
+
export class SkipResourceInstanceInUseError extends SkipError {}
|