@calcit/procs 0.5.0-a6 → 0.5.0

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.
@@ -2,9 +2,9 @@ import { overwriteHashGenerator, valueHash, mergeValueHash } from "@calcit/terna
2
2
  import { overwriteComparator } from "@calcit/ternary-tree";
3
3
  import { overwriteMapComparator } from "./js-map";
4
4
  import { CalcitRecord, fieldsEqual } from "./js-record";
5
- import { CalcitMap } from "./js-map";
5
+ import { CalcitMap, CalcitSliceMap } from "./js-map";
6
6
  import "./js-primes";
7
- import { CalcitList } from "./js-list";
7
+ import { CalcitList, CalcitSliceList } from "./js-list";
8
8
  import { CalcitSet, overwriteSetComparator } from "./js-set";
9
9
  import { CalcitTuple } from "./js-tuple";
10
10
  // we have to inject cache in a dirty way in some cases
@@ -51,10 +51,10 @@ export class CalcitRecur {
51
51
  }
52
52
  }
53
53
  export let isNestedCalcitData = (x) => {
54
- if (x instanceof CalcitList) {
54
+ if (x instanceof CalcitList || x instanceof CalcitSliceList) {
55
55
  return x.len() > 0;
56
56
  }
57
- if (x instanceof CalcitMap) {
57
+ if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
58
58
  return x.len() > 0;
59
59
  }
60
60
  if (x instanceof CalcitRecord) {
@@ -66,10 +66,10 @@ export let isNestedCalcitData = (x) => {
66
66
  return false;
67
67
  };
68
68
  export let tipNestedCalcitData = (x) => {
69
- if (x instanceof CalcitList) {
69
+ if (x instanceof CalcitList || x instanceof CalcitSliceList) {
70
70
  return "'[]...";
71
71
  }
72
- if (x instanceof CalcitMap) {
72
+ if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
73
73
  return "'{}...";
74
74
  }
75
75
  if (x instanceof CalcitRecord) {
@@ -120,9 +120,9 @@ export function findInFields(xs, y) {
120
120
  return pos;
121
121
  }
122
122
  }
123
- if (y == xs[lower])
123
+ if (y === xs[lower])
124
124
  return lower;
125
- if (y == xs[upper])
125
+ if (y === xs[upper])
126
126
  return upper;
127
127
  return -1;
128
128
  }
@@ -148,7 +148,7 @@ export let castKwd = (x) => {
148
148
  if (x instanceof CalcitSymbol) {
149
149
  return kwd(x.value);
150
150
  }
151
- throw new Error("Cannot cast thst to keyword");
151
+ throw new Error(`Cannot cast this to keyword: ${x}`);
152
152
  };
153
153
  export var refsRegistry = new Map();
154
154
  let defaultHash_nil = valueHash("nil:");
@@ -229,6 +229,16 @@ let hashFunction = (x) => {
229
229
  }
230
230
  return base;
231
231
  }
232
+ if (x instanceof CalcitSliceList) {
233
+ let base = defaultHash_list;
234
+ // low-level code for perf
235
+ for (let idx = x.start; idx < x.end; idx++) {
236
+ let item = x.value[idx];
237
+ base = mergeValueHash(base, hashFunction(item));
238
+ }
239
+ x.cachedHash = base;
240
+ return base;
241
+ }
232
242
  if (x instanceof CalcitList) {
233
243
  let base = defaultHash_list;
234
244
  for (let item of x.items()) {
@@ -237,6 +247,15 @@ let hashFunction = (x) => {
237
247
  x.cachedHash = base;
238
248
  return base;
239
249
  }
250
+ if (x instanceof CalcitSliceMap) {
251
+ let base = defaultHash_map;
252
+ for (let [k, v] of x.pairs()) {
253
+ base = mergeValueHash(base, hashFunction(k));
254
+ base = mergeValueHash(base, hashFunction(v));
255
+ }
256
+ x.cachedHash = base;
257
+ return base;
258
+ }
240
259
  if (x instanceof CalcitMap) {
241
260
  let base = defaultHash_map;
242
261
  for (let [k, v] of x.pairs()) {
@@ -300,10 +319,10 @@ export let toString = (x, escaped) => {
300
319
  if (x instanceof CalcitKeyword) {
301
320
  return x.toString();
302
321
  }
303
- if (x instanceof CalcitList) {
322
+ if (x instanceof CalcitList || x instanceof CalcitSliceList) {
304
323
  return x.toString();
305
324
  }
306
- if (x instanceof CalcitMap) {
325
+ if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
307
326
  return x.toString();
308
327
  }
309
328
  if (x instanceof CalcitSet) {
@@ -349,14 +368,14 @@ export let to_js_data = (x, addColon = false) => {
349
368
  }
350
369
  return Symbol(x.value);
351
370
  }
352
- if (x instanceof CalcitList) {
371
+ if (x instanceof CalcitList || x instanceof CalcitSliceList) {
353
372
  var result = [];
354
373
  for (let item of x.items()) {
355
374
  result.push(to_js_data(item, addColon));
356
375
  }
357
376
  return result;
358
377
  }
359
- if (x instanceof CalcitMap) {
378
+ if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
360
379
  let result = {};
361
380
  for (let [k, v] of x.pairs()) {
362
381
  var key = to_js_data(k, addColon);
@@ -390,7 +409,7 @@ export let _$n_map_$o_get = function (xs, k) {
390
409
  if (arguments.length !== 2) {
391
410
  throw new Error("map &get takes 2 arguments");
392
411
  }
393
- if (xs instanceof CalcitMap)
412
+ if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
394
413
  return xs.get(k);
395
414
  throw new Error("Does not support `&get` on this type");
396
415
  };
@@ -434,8 +453,8 @@ export let _$n__$e_ = (x, y) => {
434
453
  }
435
454
  return false;
436
455
  }
437
- if (x instanceof CalcitList) {
438
- if (y instanceof CalcitList) {
456
+ if (x instanceof CalcitList || x instanceof CalcitSliceList) {
457
+ if (y instanceof CalcitList || y instanceof CalcitSliceList) {
439
458
  if (x.len() !== y.len()) {
440
459
  return false;
441
460
  }
@@ -451,8 +470,8 @@ export let _$n__$e_ = (x, y) => {
451
470
  }
452
471
  return false;
453
472
  }
454
- if (x instanceof CalcitMap) {
455
- if (y instanceof CalcitMap) {
473
+ if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
474
+ if (y instanceof CalcitMap || y instanceof CalcitSliceMap) {
456
475
  if (x.len() !== y.len()) {
457
476
  return false;
458
477
  }