@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.
Files changed (64) hide show
  1. package/README.md +20 -0
  2. package/dist/skiplang-json/binding.d.ts +37 -0
  3. package/dist/skiplang-json/binding.d.ts.map +1 -0
  4. package/dist/skiplang-json/binding.js +13 -0
  5. package/dist/skiplang-json/binding.js.map +1 -0
  6. package/dist/skiplang-json/index.d.ts +165 -0
  7. package/dist/skiplang-json/index.d.ts.map +1 -0
  8. package/dist/skiplang-json/index.js +322 -0
  9. package/dist/skiplang-json/index.js.map +1 -0
  10. package/dist/skiplang-json/internal.d.ts +24 -0
  11. package/dist/skiplang-json/internal.d.ts.map +1 -0
  12. package/dist/skiplang-json/internal.js.map +1 -0
  13. package/dist/skiplang-std/index.d.ts +21 -0
  14. package/dist/skiplang-std/index.d.ts.map +1 -0
  15. package/dist/skiplang-std/index.js +14 -0
  16. package/dist/skiplang-std/index.js.map +1 -0
  17. package/dist/skiplang-std/internal.d.ts +52 -0
  18. package/dist/skiplang-std/internal.d.ts.map +1 -0
  19. package/dist/skiplang-std/internal.js +3 -0
  20. package/dist/skiplang-std/internal.js.map +1 -0
  21. package/dist/{api.d.ts → src/api.d.ts} +14 -97
  22. package/dist/src/api.d.ts.map +1 -0
  23. package/dist/src/api.js +8 -0
  24. package/dist/src/api.js.map +1 -0
  25. package/dist/{binding.d.ts → src/binding.d.ts} +2 -2
  26. package/dist/src/binding.d.ts.map +1 -0
  27. package/dist/src/binding.js.map +1 -0
  28. package/dist/src/errors.d.ts +57 -0
  29. package/dist/src/errors.d.ts.map +1 -0
  30. package/dist/src/errors.js +57 -0
  31. package/dist/src/errors.js.map +1 -0
  32. package/dist/{index.d.ts → src/index.d.ts} +13 -13
  33. package/dist/src/index.d.ts.map +1 -0
  34. package/dist/{index.js → src/index.js} +71 -50
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/{internal.d.ts → src/internal.d.ts} +3 -2
  37. package/dist/src/internal.d.ts.map +1 -0
  38. package/dist/src/internal.js +2 -0
  39. package/dist/{internal.js.map → src/internal.js.map} +1 -1
  40. package/package.json +10 -9
  41. package/src/api.ts +20 -127
  42. package/src/binding.ts +2 -2
  43. package/src/errors.ts +55 -1
  44. package/src/index.ts +97 -58
  45. package/src/internal.ts +3 -2
  46. package/dist/api.d.ts.map +0 -1
  47. package/dist/api.js +0 -83
  48. package/dist/api.js.map +0 -1
  49. package/dist/binding.d.ts.map +0 -1
  50. package/dist/binding.js.map +0 -1
  51. package/dist/errors.d.ts +0 -3
  52. package/dist/errors.d.ts.map +0 -1
  53. package/dist/errors.js +0 -3
  54. package/dist/errors.js.map +0 -1
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js.map +0 -1
  57. package/dist/internal.d.ts.map +0 -1
  58. package/dist/utils.d.ts +0 -47
  59. package/dist/utils.d.ts.map +0 -1
  60. package/dist/utils.js +0 -47
  61. package/dist/utils.js.map +0 -1
  62. package/src/utils.ts +0 -62
  63. /package/dist/{internal.js → skiplang-json/internal.js} +0 -0
  64. /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 "@skiplang/json";
7
- import { sknative } from "@skiplang/std";
8
- import { NonUniqueValueException, } from "./api.js";
9
- import { UnknownCollectionError } from "./errors.js";
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 { UnknownCollectionError, sk_freeze, isSkManaged };
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 NonUniqueValueException();
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 NonUniqueValueException();
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 Error("Mapper classes must be defined at top-level.");
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 Error("Mapper classes must be defined at top-level.");
132
+ throw new SkipClassNameError("Mapper classes must be defined at top-level.");
133
133
  }
134
134
  if (!reducerObj.constructor.name) {
135
- throw new Error("Reducer classes must be defined at top-level.");
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 Error("Reducer classes must be defined at top-level.");
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
- if (this.refs.needGC()) {
181
- this.refs.runWithGC(update_);
182
- }
183
- else {
184
- update_();
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
- if (this.refs.needGC())
192
- this.refs.runWithGC(loading_);
193
- else
194
- loading_();
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
- if (this.refs.needGC())
201
- this.refs.runWithGC(error_);
202
- else
203
- error_();
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 Error("LazyCompute classes must be defined at top-level.");
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
- const result = this.service.getAll(this.resource, this.params, request);
248
- if (result.errors.length > 0) {
249
- this.executor.reject(new Error(JSON.stringify(result.errors)));
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
- else {
252
- this.executor.resolve(result.payload);
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
- const result = this.service.getArray(this.resource, this.key, this.params, request);
266
- if (result.errors.length > 0) {
267
- this.executor.reject(new Error(JSON.stringify(result.errors)));
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
- else {
270
- this.executor.resolve(result.payload);
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 susbscriptions and the service itself.
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 responce token to allow subscription
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 effectivly done
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 subcription identifier
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 UnknownCollectionError(`Unknown resource instance '${resourceInstanceId}'`);
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 new Error("Unknown error");
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 subcription identifier returned by a call to `subscribe`
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 errorHdl = this.refs.runWithGC(() => {
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 (errorHdl) {
403
- throw this.refs.handles.deleteHandle(errorHdl);
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 NonUniqueValueException();
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 "@skiplang/json/internal.js";
2
- import type { T, CJSON } from "@skiplang/json/internal.js";
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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":""}
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.6",
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 "@skiplang/std";
8
- import type { Managed, Json, JsonObject, DepSafe } from "@skiplang/json";
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 "@skiplang/json";
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 NonUniqueValueException} if this iterable contains either zero or multiple values.
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 NonUniqueValueException} if `key` is associated to either zero or multiple values.
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 NonUniqueValueException} if `key` is associated to either zero or multiple values.
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 "@skiplang/json";
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(): Handle<Error>;
239
+ SkipRuntime_closeService(): Pointer<Internal.CJSON>;
240
240
 
241
241
  // Context
242
242
 
package/src/errors.ts CHANGED
@@ -1 +1,55 @@
1
- export class UnknownCollectionError extends Error {}
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 {}