@fgv/ts-utils 4.3.0 → 4.4.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.
Files changed (36) hide show
  1. package/CHANGELOG.json +6 -0
  2. package/CHANGELOG.md +6 -1
  3. package/dist/ts-utils.d.ts +175 -70
  4. package/lib/index.d.ts +2 -2
  5. package/lib/index.d.ts.map +1 -1
  6. package/lib/index.js +2 -1
  7. package/lib/index.js.map +1 -1
  8. package/lib/packlets/collections/collectible.d.ts +37 -5
  9. package/lib/packlets/collections/collectible.d.ts.map +1 -1
  10. package/lib/packlets/collections/collectible.js +42 -8
  11. package/lib/packlets/collections/collectible.js.map +1 -1
  12. package/lib/packlets/collections/collector.d.ts +77 -13
  13. package/lib/packlets/collections/collector.d.ts.map +1 -1
  14. package/lib/packlets/collections/collector.js +44 -2
  15. package/lib/packlets/collections/collector.js.map +1 -1
  16. package/lib/packlets/collections/collectorConverter.d.ts +31 -4
  17. package/lib/packlets/collections/collectorConverter.d.ts.map +1 -1
  18. package/lib/packlets/collections/collectorConverter.js +18 -6
  19. package/lib/packlets/collections/collectorConverter.js.map +1 -1
  20. package/lib/packlets/collections/collectors.d.ts +0 -1
  21. package/lib/packlets/collections/collectors.d.ts.map +1 -1
  22. package/lib/packlets/collections/collectors.js +1 -4
  23. package/lib/packlets/collections/collectors.js.map +1 -1
  24. package/lib/packlets/collections/convertingCollector.d.ts +19 -13
  25. package/lib/packlets/collections/convertingCollector.d.ts.map +1 -1
  26. package/lib/packlets/collections/convertingCollector.js +0 -10
  27. package/lib/packlets/collections/convertingCollector.js.map +1 -1
  28. package/lib/packlets/collections/convertingResultMap.d.ts +4 -24
  29. package/lib/packlets/collections/convertingResultMap.d.ts.map +1 -1
  30. package/lib/packlets/collections/convertingResultMap.js +0 -41
  31. package/lib/packlets/collections/convertingResultMap.js.map +1 -1
  32. package/lib/packlets/collections/keyValueConverters.d.ts +1 -17
  33. package/lib/packlets/collections/keyValueConverters.d.ts.map +1 -1
  34. package/lib/packlets/collections/keyValueConverters.js +1 -8
  35. package/lib/packlets/collections/keyValueConverters.js.map +1 -1
  36. package/package.json +1 -1
package/CHANGELOG.json CHANGED
@@ -1,6 +1,12 @@
1
1
  {
2
2
  "name": "@fgv/ts-utils",
3
3
  "entries": [
4
+ {
5
+ "version": "4.4.0",
6
+ "tag": "@fgv/ts-utils_v4.4.0",
7
+ "date": "Sat, 01 Feb 2025 17:13:10 GMT",
8
+ "comments": {}
9
+ },
4
10
  {
5
11
  "version": "4.3.0",
6
12
  "tag": "@fgv/ts-utils_v4.3.0",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Change Log - @fgv/ts-utils
2
2
 
3
- This log was last generated on Thu, 30 Jan 2025 00:35:17 GMT and should not be manually modified.
3
+ This log was last generated on Sat, 01 Feb 2025 17:13:10 GMT and should not be manually modified.
4
+
5
+ ## 4.4.0
6
+ Sat, 01 Feb 2025 17:13:10 GMT
7
+
8
+ _Version update only_
4
9
 
5
10
  ## 4.3.0
6
11
  Thu, 30 Jan 2025 00:35:17 GMT
@@ -280,16 +280,22 @@ declare class Collectible<TKEY extends string = string, TINDEX extends number =
280
280
  */
281
281
  get index(): TINDEX | undefined;
282
282
  protected _index: TINDEX | undefined;
283
+ protected readonly _indexConverter?: Validator<TINDEX, unknown> | Converter<TINDEX, unknown>;
283
284
  /**
284
285
  * Constructs a new {@link Collections.Collectible | Collectible} instance.
285
- * @param key - The key of the item to be collected.
286
- * @param index - Optional index of the item to be collected.
286
+ * @param params - Required parameters for constructing the collectible.
287
287
  */
288
- constructor(key: TKEY, index?: TINDEX);
288
+ constructor(params: ICollectibleConstructorParams<TKEY, TINDEX>);
289
+ /**
290
+ * Creates a new {@link Collections.Collectible | Collectible} instance from the supplied parameters.
291
+ * @param params - Required parameters for constructing the collectible.
292
+ * @returns `Success` with the new collectible if successful, or `Failure` with an error message if not.
293
+ */
294
+ static createCollectible<TKEY extends string = string, TINDEX extends number = number>(params: ICollectibleConstructorParams<TKEY, TINDEX>): Result<Collectible<TKEY, TINDEX>>;
289
295
  /**
290
296
  * {@link Collections.ICollectible.setIndex}
291
297
  */
292
- setIndex(index: TINDEX): Result<TINDEX>;
298
+ setIndex(index: number): Result<TINDEX>;
293
299
  }
294
300
 
295
301
  /**
@@ -311,16 +317,23 @@ declare namespace Collections {
311
317
  ICollectible,
312
318
  CollectibleFactory,
313
319
  CollectibleFactoryCallback,
320
+ ICollectibleConstructorParamsWithIndex,
321
+ ICollectibleConstructorParamsWithConverter,
322
+ ICollectibleConstructorParams,
314
323
  Collectible,
324
+ CollectorResultDetail,
325
+ IReadOnlyCollector,
315
326
  ICollector,
316
327
  ISimpleCollector,
317
328
  IConvertingCollector,
318
329
  ICollectorConstructorParams,
319
330
  Collector,
331
+ IReadOnlyCollectorConverter,
320
332
  ICollectorConverterCreateParams,
321
333
  CollectorConverter,
322
334
  ISimpleCollectorCreateParams,
323
335
  SimpleCollector,
336
+ IReadOnlyConvertingCollector,
324
337
  IConvertingCollectorConstructorParams,
325
338
  ConvertingCollector,
326
339
  KeyValueEntry,
@@ -385,17 +398,33 @@ export declare class Collector<TKEY extends string = string, TINDEX extends numb
385
398
  */
386
399
  get(key: TKEY): DetailedResult<TITEM, ResultMapResultDetail>;
387
400
  /**
388
- * {@inheritdoc ICollector.getAt}
401
+ * {@inheritdoc Collections.IReadOnlyCollector.getAt}
402
+ */
403
+ getAt(index: number): Result<TITEM>;
404
+ /**
405
+ * {@inheritdoc ICollector.(add:1)}
406
+ */
407
+ add(key: TKEY, item: TSRC): DetailedResult<TITEM, CollectorResultDetail>;
408
+ /**
409
+ * {@inheritdoc ICollector.(add:2)}
389
410
  */
390
- getAt(index: TINDEX): Result<TITEM>;
411
+ add(key: TKEY, cb: CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): DetailedResult<TITEM, CollectorResultDetail>;
412
+ /**
413
+ * {@inheritdoc ICollector.addItem}
414
+ */
415
+ addItem(item: TITEM): DetailedResult<TITEM, CollectorResultDetail>;
391
416
  /**
392
417
  * {@inheritdoc ICollector.(getOrAdd:1)}
393
418
  */
394
- getOrAdd(key: TKEY, item: TSRC): DetailedResult<TITEM, ResultMapResultDetail>;
419
+ getOrAdd(key: TKEY, item: TSRC): DetailedResult<TITEM, CollectorResultDetail>;
395
420
  /**
396
421
  * {@inheritdoc ICollector.(getOrAdd:2)}
397
422
  */
398
- getOrAdd(key: TKEY, cb: CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): DetailedResult<TITEM, ResultMapResultDetail>;
423
+ getOrAdd(key: TKEY, cb: CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): DetailedResult<TITEM, CollectorResultDetail>;
424
+ /**
425
+ * {@inheritdoc ICollector.getOrAddItem}
426
+ */
427
+ getOrAddItem(item: TITEM): DetailedResult<TITEM, CollectorResultDetail>;
399
428
  /**
400
429
  * {@inheritdoc IReadOnlyResultMap.has}
401
430
  */
@@ -403,12 +432,22 @@ export declare class Collector<TKEY extends string = string, TINDEX extends numb
403
432
  /**
404
433
  * {@inheritdoc ICollector.toReadOnly}
405
434
  */
406
- toReadOnly(): IReadOnlyResultMap<TKEY, TITEM>;
435
+ toReadOnly(): IReadOnlyCollector<TKEY, TINDEX, TITEM>;
407
436
  /**
408
437
  * Gets an iterator over the map entries.
409
438
  * @returns An iterator over the map entries.
410
439
  */
411
440
  [Symbol.iterator](): IterableIterator<KeyValueEntry<TKEY, TITEM>>;
441
+ /**
442
+ * A simple factory method for derived classes which directly store the supplied
443
+ * object.
444
+ * @param key - The key of the item to create.
445
+ * @param index - The index of the item to create.
446
+ * @param item - The source item to create.
447
+ * @returns `Success` with the created item and a detail of 'success', or
448
+ * `Failure` with an error message and appropriate detail.
449
+ */
450
+ protected static _simpleFactory<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>>(key: TKEY, index: number, item: TITEM): Result<TITEM>;
412
451
  protected _isFactoryCB(item: TSRC | CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): item is CollectibleFactoryCallback<TKEY, TINDEX, TITEM>;
413
452
  }
414
453
 
@@ -426,6 +465,14 @@ declare class CollectorConverter<TKEY extends string = string, TINDEX extends nu
426
465
  * @param params - Required parameters for constructing the collector converter.
427
466
  */
428
467
  constructor(params: ICollectorConverterCreateParams<TKEY, TINDEX, TITEM, TSRC>);
468
+ /**
469
+ * {@inheritdoc Collections.Collector.(add:1)}
470
+ */
471
+ add(key: string, value: unknown): DetailedResult<TITEM, CollectorResultDetail>;
472
+ /**
473
+ * {@inheritdoc Collections.Collector.(add:2)}
474
+ */
475
+ add(key: string, factory: ResultMapValueFactory<TKEY, TITEM>): DetailedResult<TITEM, CollectorResultDetail>;
429
476
  /**
430
477
  * {@inheritdoc Collections.Collector.get}
431
478
  */
@@ -433,11 +480,11 @@ declare class CollectorConverter<TKEY extends string = string, TINDEX extends nu
433
480
  /**
434
481
  * {@inheritdoc Collections.Collector.(getOrAdd:1)}
435
482
  */
436
- getOrAdd(key: string, value: unknown): DetailedResult<TITEM, ResultMapResultDetail>;
483
+ getOrAdd(key: string, value: unknown): DetailedResult<TITEM, CollectorResultDetail>;
437
484
  /**
438
485
  * {@inheritdoc Collections.Collector.(getOrAdd:2)}
439
486
  */
440
- getOrAdd(key: string, factory: ResultMapValueFactory<TKEY, TITEM>): DetailedResult<TITEM, ResultMapResultDetail>;
487
+ getOrAdd(key: string, factory: ResultMapValueFactory<TKEY, TITEM>): DetailedResult<TITEM, CollectorResultDetail>;
441
488
  /**
442
489
  * {@inheritdoc Collections.Collector.has}
443
490
  */
@@ -445,7 +492,7 @@ declare class CollectorConverter<TKEY extends string = string, TINDEX extends nu
445
492
  /**
446
493
  * {@inheritdoc Collections.Collector.toReadOnly}
447
494
  */
448
- toReadOnly(): IReadOnlyResultMapConverter<TKEY, TITEM>;
495
+ toReadOnly(): IReadOnlyCollectorConverter<TKEY, TINDEX, TITEM>;
449
496
  /**
450
497
  * Determines if a value is a {@link Collections.CollectibleFactoryCallback | CollectibleFactoryCallback}.
451
498
  * @param value - The value to check.
@@ -456,6 +503,12 @@ declare class CollectorConverter<TKEY extends string = string, TINDEX extends nu
456
503
  protected _isCollectibleFactoryCallback(value: unknown | CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): value is CollectibleFactoryCallback<TKEY, TINDEX, TITEM>;
457
504
  }
458
505
 
506
+ /**
507
+ * Additional success or failure details for mutating {@link ICollector | Collector} calls.
508
+ * @public
509
+ */
510
+ declare type CollectorResultDetail = ResultMapResultDetail | 'invalid-index';
511
+
459
512
  /**
460
513
  * A {@link Validation.Constraint | Constraint<T>} function returns
461
514
  * `true` if the supplied value meets the constraint. Can return
@@ -743,7 +796,7 @@ declare interface ConverterTraits {
743
796
  * property that enables validated use of the underlying map with weakly-typed keys and values.
744
797
  * @public
745
798
  */
746
- declare class ConvertingCollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>, TSRC = TITEM> extends Collector<TKEY, TINDEX, TITEM, TSRC> {
799
+ export declare class ConvertingCollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>, TSRC = TITEM> extends Collector<TKEY, TINDEX, TITEM, TSRC> {
747
800
  /**
748
801
  * A {@link Collections.CollectorConverter | CollectorConverter} which validates keys and values
749
802
  * before inserting them into this collector.
@@ -763,20 +816,12 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
763
816
  * @returns {@link Success} with the new collector if successful, {@link Failure} otherwise.
764
817
  */
765
818
  static createConvertingCollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>, TSRC = TITEM>(params: IConvertingCollectorConstructorParams<TKEY, TINDEX, TITEM, TSRC>): Result<ConvertingCollector<TKEY, TINDEX, TITEM, TSRC>>;
766
- /**
767
- * {@inheritdoc Collections.Collector.(getOrAdd:1)}
768
- */
769
- getOrAdd(key: TKEY, item: TSRC): DetailedResult<TITEM, ResultMapResultDetail>;
770
- /**
771
- * {@inheritdoc Collections.Collector.(getOrAdd:2)}
772
- */
773
- getOrAdd(key: TKEY, cb: CollectibleFactoryCallback<TKEY, TINDEX, TITEM>): DetailedResult<TITEM, ResultMapResultDetail>;
774
819
  /**
775
820
  * Gets a read-only version of this collector as a
776
821
  * {@link Collections.IReadOnlyConvertingResultMap | read-only map}.
777
822
  * @returns
778
823
  */
779
- toReadOnly(): IReadOnlyConvertingResultMap<TKEY, TITEM>;
824
+ toReadOnly(): IReadOnlyConvertingCollector<TKEY, TINDEX, TITEM>;
780
825
  }
781
826
 
782
827
  /**
@@ -802,26 +847,6 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
802
847
  * @public
803
848
  */
804
849
  static createConvertingResultMap<TK extends string = string, TV = unknown>(params: IConvertingResultMapConstructorParams<TK, TV>): Result<ConvertingResultMap<TK, TV>>;
805
- /**
806
- * {@inheritdoc Collections.ResultMap.add}
807
- */
808
- add(key: TK, value: TV): DetailedResult<TV, ResultMapResultDetail>;
809
- /**
810
- * {@inheritdoc Collections.ResultMap.(getOrAdd:1)}
811
- */
812
- getOrAdd(key: TK, value: TV): DetailedResult<TV, ResultMapResultDetail>;
813
- /**
814
- * {@inheritdoc Collections.ResultMap.(getOrAdd:2)}
815
- */
816
- getOrAdd(key: TK, factory: ResultMapValueFactory<TK, TV>): DetailedResult<TV, ResultMapResultDetail>;
817
- /**
818
- * {@inheritdoc Collections.ResultMap.set}
819
- */
820
- set(key: TK, value: TV): DetailedResult<TV, ResultMapResultDetail>;
821
- /**
822
- * {@inheritdoc Collections.ResultMap.update}
823
- */
824
- update(key: TK, value: TV): DetailedResult<TV, ResultMapResultDetail>;
825
850
  /**
826
851
  * Gets a read-only version of this map.
827
852
  */
@@ -1514,10 +1539,37 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
1514
1539
  * An item that can be collected by some {@link Collector | Collector}.
1515
1540
  * @public
1516
1541
  */
1517
- declare interface ICollectible<TKEY extends string = string, TINDEX extends number = number> {
1542
+ export declare interface ICollectible<TKEY extends string = string, TINDEX extends number = number> {
1518
1543
  readonly key: TKEY;
1519
1544
  readonly index: TINDEX | undefined;
1520
- setIndex(index: TINDEX): Result<TINDEX>;
1545
+ setIndex(index: number): Result<TINDEX>;
1546
+ }
1547
+
1548
+ /**
1549
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance.
1550
+ * @public
1551
+ */
1552
+ declare type ICollectibleConstructorParams<TKEY extends string = string, TINDEX extends number = number> = ICollectibleConstructorParamsWithIndex<TKEY, TINDEX> | ICollectibleConstructorParamsWithConverter<TKEY, TINDEX>;
1553
+
1554
+ /**
1555
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance with an
1556
+ * index converter.
1557
+ * @public
1558
+ */
1559
+ declare interface ICollectibleConstructorParamsWithConverter<TKEY extends string = string, TINDEX extends number = number> {
1560
+ key: TKEY;
1561
+ index?: number;
1562
+ indexConverter: Validator<TINDEX, unknown> | Converter<TINDEX, unknown> | ConverterFunc<TINDEX, undefined>;
1563
+ }
1564
+
1565
+ /**
1566
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance with
1567
+ * a defined, strongly-typed index.
1568
+ * @public
1569
+ */
1570
+ declare interface ICollectibleConstructorParamsWithIndex<TKEY extends string = string, TINDEX extends number = number> {
1571
+ key: TKEY;
1572
+ index: TINDEX;
1521
1573
  }
1522
1574
 
1523
1575
  /**
@@ -1525,13 +1577,26 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
1525
1577
  * time of addition. Items are immutable once added.
1526
1578
  * @public
1527
1579
  */
1528
- export declare interface ICollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>, TSRC = TITEM> extends IReadOnlyResultMap<TKEY, TITEM> {
1580
+ export declare interface ICollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>, TSRC = TITEM> extends IReadOnlyCollector<TKEY, TINDEX, TITEM> {
1529
1581
  /**
1530
- * Gets the item at a specified index.
1531
- * @param index - The index of the item to retrieve.
1532
- * @returns Returs {@link Success | Success} with the item if it exists, or {@link Failure | Failure} with an error if the index is out of range.
1582
+ * Adds an item to the collector using the default {@link Collections.CollectibleFactory | factory}
1583
+ * at a specified key, failing if an item with that key already exists.
1584
+ * @param key - The key of the item to add.
1585
+ * @param item - The source representation of the item to be added.
1586
+ * @returns Returns {@link Success | Success} with the item if it is added, or {@link Failure | Failure} with
1587
+ * an error if the item cannot be created and indexed.
1588
+ * @public
1533
1589
  */
1534
- getAt(index: TINDEX): Result<TITEM>;
1590
+ add(key: TKEY, item: TSRC): DetailedResult<TITEM, CollectorResultDetail>;
1591
+ add(key: TKEY, callback: CollectibleFactoryCallback<TKEY, TINDEX>): DetailedResult<TITEM, CollectorResultDetail>;
1592
+ /**
1593
+ * Adds an item to the collector using the default {@link Collections.CollectibleFactory | factory}
1594
+ * at a specified key, failing if an item with that key already exists.
1595
+ * @param item - The item to add.
1596
+ * @returns Returns {@link Success | Success} with the item if it is added, or {@link Failure | Failure} with an
1597
+ * error if the item cannot be created and indexed.
1598
+ */
1599
+ addItem(item: TITEM): DetailedResult<TITEM, CollectorResultDetail>;
1535
1600
  /**
1536
1601
  * Gets an item by key if it exists, or creates a new item and adds it using the default {@link Collections.CollectibleFactory | factory} if not.
1537
1602
  * @param key - The key of the item to retrieve.
@@ -1539,18 +1604,26 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
1539
1604
  * @returns Returns {@link Success | Success} with the item if it exists or could be created, or {@link Failure | Failure} with an error if the
1540
1605
  * item cannot be created and indexed.
1541
1606
  */
1542
- getOrAdd(key: TKEY, item: TSRC): DetailedResult<TITEM, ResultMapResultDetail>;
1607
+ getOrAdd(key: TKEY, item: TSRC): DetailedResult<TITEM, CollectorResultDetail>;
1543
1608
  /**
1544
1609
  * Gets an item by key if it exists, or creates a new item and adds it using the specified {@link Collections.CollectibleFactoryCallback | factory callback} if not.
1545
1610
  * @param key - The key of the item to retrieve.
1546
1611
  * @param callback - The factory callback to create the item if it does not exist.
1547
1612
  * @returns Returns {@link Success | Success} with the item if it exists, or {@link Failure | Failure} with an error if the item is not found.
1548
1613
  */
1549
- getOrAdd(key: TKEY, callback: CollectibleFactoryCallback<TKEY, TINDEX>): DetailedResult<TITEM, ResultMapResultDetail>;
1614
+ getOrAdd(key: TKEY, callback: CollectibleFactoryCallback<TKEY, TINDEX>): DetailedResult<TITEM, CollectorResultDetail>;
1615
+ /**
1616
+ * Gets an existing item with a key matching that of a supplied item, or adds the supplied
1617
+ * item to the collector if no item with that key exists.
1618
+ * @param item - The item to retrieve or add.
1619
+ * @returns Returns {@link Success | Success} with the item stored in the collector
1620
+ * or {@link Failure | Failure} with an error if the item cannot be created and indexed.
1621
+ */
1622
+ getOrAddItem(item: TITEM): DetailedResult<TITEM, CollectorResultDetail>;
1550
1623
  /**
1551
1624
  * Gets a {@link IReadOnlyResultMap | read-only map} which can access the items in the collector.
1552
1625
  */
1553
- toReadOnly(): IReadOnlyResultMap<TKEY, TITEM>;
1626
+ toReadOnly(): IReadOnlyCollector<TKEY, TINDEX, TITEM>;
1554
1627
  }
1555
1628
 
1556
1629
  /**
@@ -1626,13 +1699,6 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
1626
1699
  * or {@link Conversion.ConverterFunc | converter function}.
1627
1700
  */
1628
1701
  value: Validator<TV, unknown> | Converter<TV, unknown> | ConverterFunc<TV, unknown>;
1629
- /**
1630
- * Optional entry {@link Validator | validator}, {@link Converter | converter},
1631
- * or {@link Conversion.ConverterFunc | converter function}.
1632
- * If no entry validator is provided, an entry is considered valid if both key and
1633
- * value are valid.
1634
- */
1635
- entry?: Validator<KeyValueEntry<TK, TV>, unknown> | Converter<KeyValueEntry<TK, TV>, unknown> | ConverterFunc<KeyValueEntry<TK, TV>, unknown>;
1636
1702
  }
1637
1703
 
1638
1704
  /**
@@ -1701,6 +1767,55 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
1701
1767
  */
1702
1768
  declare type InnerInferredType<TCONV> = TCONV extends Converter<infer TTO> ? TTO extends Array<infer TTOELEM> ? InnerInferredType<TTOELEM>[] : TTO : TCONV extends Array<infer TELEM> ? InnerInferredType<TELEM>[] : TCONV;
1703
1769
 
1770
+ /**
1771
+ * A read-only interface exposing non-mutating methods of a {@link Collections.ICollector | Collector}.
1772
+ * @public
1773
+ */
1774
+ declare interface IReadOnlyCollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>> extends IReadOnlyResultMap<TKEY, TITEM> {
1775
+ /**
1776
+ * Gets the item at a specified index.
1777
+ * @param index - The index of the item to retrieve.
1778
+ * @returns Returns {@link Success | Success} with the item if it exists, or {@link Failure | Failure} with an error if the index is out of range.
1779
+ */
1780
+ getAt(index: number): Result<TITEM>;
1781
+ }
1782
+
1783
+ /**
1784
+ * A read-only interface exposing non-mutating methods of a
1785
+ * {@link Collections.CollectorConverter | CollectorConverter}.
1786
+ * @public
1787
+ */
1788
+ declare interface IReadOnlyCollectorConverter<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY> = ICollectible<TKEY, TINDEX>> extends IReadOnlyResultMapConverter<TKEY, TITEM> {
1789
+ /**
1790
+ * {@inheritdoc Collections.CollectorConverter.map}
1791
+ */
1792
+ readonly map: IReadOnlyResultMap<TKEY, TITEM>;
1793
+ /**
1794
+ * {@inheritdoc Collections.Collector.get}
1795
+ */
1796
+ get(key: string): DetailedResult<TITEM, ResultMapResultDetail>;
1797
+ /**
1798
+ * {@inheritdoc Collections.Collector.has}
1799
+ */
1800
+ has(key: string): boolean;
1801
+ }
1802
+
1803
+ /**
1804
+ * A read-only interface exposing non-mutating methods of a
1805
+ * {@link Collections.ConvertingCollector | ConvertingCollector}.
1806
+ * @public
1807
+ */
1808
+ declare interface IReadOnlyConvertingCollector<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>> extends IReadOnlyConvertingResultMap<TKEY, TITEM> {
1809
+ /**
1810
+ * {@inheritdoc Collections.ConvertingCollector.converting}
1811
+ */
1812
+ readonly converting: IReadOnlyCollectorConverter<TKEY, TINDEX, TITEM>;
1813
+ /**
1814
+ * {@inheritdoc Collections.Collector.getAt}
1815
+ */
1816
+ readonly getAt: (index: number) => Result<TITEM>;
1817
+ }
1818
+
1704
1819
  /**
1705
1820
  * A read-only interface exposing non-mutating methods of a {@link Collections.ConvertingResultMap | ConvertingResultMap}.
1706
1821
  * @public
@@ -2050,23 +2165,14 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
2050
2165
  * Required value {@link Validator | validator} or {@link Converter | converter}.
2051
2166
  */
2052
2167
  readonly value: Validator<TV, unknown> | Converter<TV, unknown>;
2053
- /**
2054
- * Optional entry {@link Validator | validator} or {@link Converter | converter}.
2055
- * If no entry validator is provided, an entry is considered valid if both key and
2056
- * value are valid.
2057
- */
2058
- readonly entry?: Validator<KeyValueEntry<TK, TV>, unknown> | Converter<KeyValueEntry<TK, TV>, unknown>;
2059
2168
  /**
2060
2169
  * Constructs a new key-value validator.
2061
2170
  * @param key - Required key {@link Validator | validator}, {@link Converter | converter},
2062
2171
  * or {@link Conversion.ConverterFunc | converter function}.
2063
2172
  * @param value - Required value {@link Validator | validator}, {@link Converter | converter},
2064
2173
  * or {@link Conversion.ConverterFunc | converter function}.
2065
- * @param entry - Optional entry {@link Validator | validator}, {@link Converter | converter},
2066
- * or {@link Conversion.ConverterFunc | converter function}.. If no entry validator is provided,
2067
- * an entry is considered valid if both key and value are valid.
2068
2174
  */
2069
- constructor({ key, value, entry }: IKeyValueConverterConstructorParams<TK, TV>);
2175
+ constructor({ key, value }: IKeyValueConverterConstructorParams<TK, TV>);
2070
2176
  /**
2071
2177
  * Converts a supplied unknown to a valid key value of type `<TK>`.
2072
2178
  * @param key - The unknown to be converted.
@@ -3283,7 +3389,6 @@ declare class ConvertingCollector<TKEY extends string = string, TINDEX extends n
3283
3389
  * @public
3284
3390
  */
3285
3391
  static createSimpleCollector<TITEM extends ICollectible<string, number>>(params?: ISimpleCollectorCreateParams<TITEM>): Result<SimpleCollector<TITEM>>;
3286
- private static _factory;
3287
3392
  }
3288
3393
 
3289
3394
  /**
package/lib/index.d.ts CHANGED
@@ -2,9 +2,9 @@ import * as Collections from './packlets/collections';
2
2
  import * as Conversion from './packlets/conversion';
3
3
  import * as Hash from './packlets/hash';
4
4
  import * as Validation from './packlets/validation';
5
- import { ICollector, Collector, IReadOnlyResultMap, ResultMap, SimpleCollector, ConvertingResultMap } from './packlets/collections';
5
+ import { ICollectible, ICollector, Collector, ConvertingCollector, IReadOnlyResultMap, ResultMap, SimpleCollector, ConvertingResultMap } from './packlets/collections';
6
6
  import { Converter, Converters, ObjectConverter, StringConverter } from './packlets/conversion';
7
7
  import { Validator, Validators } from './packlets/validation';
8
8
  export * from './packlets/base';
9
- export { Collections, Collector, Conversion, Converter, Converters, Hash, ICollector, IReadOnlyResultMap, ObjectConverter, ResultMap, SimpleCollector, StringConverter, ConvertingResultMap, Validation, Validator, Validators };
9
+ export { Collections, Collector, Conversion, Converter, Converters, ConvertingCollector, Hash, ICollectible, ICollector, IReadOnlyResultMap, ObjectConverter, ResultMap, SimpleCollector, StringConverter, ConvertingResultMap, Validation, Validator, Validators };
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EACL,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE9D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,UAAU,EACX,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE9D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,UAAU,EACX,CAAC"}
package/lib/index.js CHANGED
@@ -57,7 +57,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
57
57
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
58
58
  };
59
59
  Object.defineProperty(exports, "__esModule", { value: true });
60
- exports.Validators = exports.Validation = exports.ConvertingResultMap = exports.StringConverter = exports.SimpleCollector = exports.ResultMap = exports.ObjectConverter = exports.Hash = exports.Converters = exports.Conversion = exports.Collector = exports.Collections = void 0;
60
+ exports.Validators = exports.Validation = exports.ConvertingResultMap = exports.StringConverter = exports.SimpleCollector = exports.ResultMap = exports.ObjectConverter = exports.Hash = exports.ConvertingCollector = exports.Converters = exports.Conversion = exports.Collector = exports.Collections = void 0;
61
61
  const Collections = __importStar(require("./packlets/collections"));
62
62
  exports.Collections = Collections;
63
63
  const Conversion = __importStar(require("./packlets/conversion"));
@@ -68,6 +68,7 @@ const Validation = __importStar(require("./packlets/validation"));
68
68
  exports.Validation = Validation;
69
69
  const collections_1 = require("./packlets/collections");
70
70
  Object.defineProperty(exports, "Collector", { enumerable: true, get: function () { return collections_1.Collector; } });
71
+ Object.defineProperty(exports, "ConvertingCollector", { enumerable: true, get: function () { return collections_1.ConvertingCollector; } });
71
72
  Object.defineProperty(exports, "ResultMap", { enumerable: true, get: function () { return collections_1.ResultMap; } });
72
73
  Object.defineProperty(exports, "SimpleCollector", { enumerable: true, get: function () { return collections_1.SimpleCollector; } });
73
74
  Object.defineProperty(exports, "ConvertingResultMap", { enumerable: true, get: function () { return collections_1.ConvertingResultMap; } });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oEAAsD;AAkBpD,kCAAW;AAjBb,kEAAoD;AAmBlD,gCAAU;AAlBZ,sDAAwC;AAqBtC,oBAAI;AApBN,kEAAoD;AA4BlD,gCAAU;AA1BZ,wDAOgC;AAO9B,0FAZA,uBAAS,OAYA;AAQT,0FAlBA,uBAAS,OAkBA;AACT,gGAlBA,6BAAe,OAkBA;AAEf,oGAnBA,iCAAmB,OAmBA;AAjBrB,sDAAgG;AAS9F,2FATkB,uBAAU,OASlB;AAIV,gGAb8B,4BAAe,OAa9B;AAGf,gGAhB+C,4BAAe,OAgB/C;AAfjB,sDAA8D;AAmB5D,2FAnBkB,uBAAU,OAmBlB;AAjBZ,kDAAgC","sourcesContent":["/*\n * Copyright (c) 2020 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Collections from './packlets/collections';\nimport * as Conversion from './packlets/conversion';\nimport * as Hash from './packlets/hash';\nimport * as Validation from './packlets/validation';\n\nimport {\n ICollector,\n Collector,\n IReadOnlyResultMap,\n ResultMap,\n SimpleCollector,\n ConvertingResultMap\n} from './packlets/collections';\nimport { Converter, Converters, ObjectConverter, StringConverter } from './packlets/conversion';\nimport { Validator, Validators } from './packlets/validation';\n\nexport * from './packlets/base';\nexport {\n Collections,\n Collector,\n Conversion,\n Converter,\n Converters,\n Hash,\n ICollector,\n IReadOnlyResultMap,\n ObjectConverter,\n ResultMap,\n SimpleCollector,\n StringConverter,\n ConvertingResultMap,\n Validation,\n Validator,\n Validators\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oEAAsD;AAoBpD,kCAAW;AAnBb,kEAAoD;AAqBlD,gCAAU;AApBZ,sDAAwC;AAwBtC,oBAAI;AAvBN,kEAAoD;AAgClD,gCAAU;AA9BZ,wDASgC;AAO9B,0FAbA,uBAAS,OAaA;AAIT,oGAhBA,iCAAmB,OAgBA;AAMnB,0FApBA,uBAAS,OAoBA;AACT,gGApBA,6BAAe,OAoBA;AAEf,oGArBA,iCAAmB,OAqBA;AAnBrB,sDAAgG;AAS9F,2FATkB,uBAAU,OASlB;AAMV,gGAf8B,4BAAe,OAe9B;AAGf,gGAlB+C,4BAAe,OAkB/C;AAjBjB,sDAA8D;AAqB5D,2FArBkB,uBAAU,OAqBlB;AAnBZ,kDAAgC","sourcesContent":["/*\n * Copyright (c) 2020 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Collections from './packlets/collections';\nimport * as Conversion from './packlets/conversion';\nimport * as Hash from './packlets/hash';\nimport * as Validation from './packlets/validation';\n\nimport {\n ICollectible,\n ICollector,\n Collector,\n ConvertingCollector,\n IReadOnlyResultMap,\n ResultMap,\n SimpleCollector,\n ConvertingResultMap\n} from './packlets/collections';\nimport { Converter, Converters, ObjectConverter, StringConverter } from './packlets/conversion';\nimport { Validator, Validators } from './packlets/validation';\n\nexport * from './packlets/base';\nexport {\n Collections,\n Collector,\n Conversion,\n Converter,\n Converters,\n ConvertingCollector,\n Hash,\n ICollectible,\n ICollector,\n IReadOnlyResultMap,\n ObjectConverter,\n ResultMap,\n SimpleCollector,\n StringConverter,\n ConvertingResultMap,\n Validation,\n Validator,\n Validators\n};\n"]}
@@ -1,4 +1,6 @@
1
1
  import { Result } from '../base';
2
+ import { Converter, ConverterFunc } from '../conversion';
3
+ import { Validator } from '../validation';
2
4
  /**
3
5
  * An item that can be collected by some {@link Collector | Collector}.
4
6
  * @public
@@ -6,7 +8,7 @@ import { Result } from '../base';
6
8
  export interface ICollectible<TKEY extends string = string, TINDEX extends number = number> {
7
9
  readonly key: TKEY;
8
10
  readonly index: TINDEX | undefined;
9
- setIndex(index: TINDEX): Result<TINDEX>;
11
+ setIndex(index: number): Result<TINDEX>;
10
12
  }
11
13
  /**
12
14
  * Factory function for creating a new {@link Collections.ICollectible | ICollectible} instance given a key, an index and a source representation
@@ -19,6 +21,30 @@ export type CollectibleFactory<TKEY extends string = string, TINDEX extends numb
19
21
  * @public
20
22
  */
21
23
  export type CollectibleFactoryCallback<TKEY extends string = string, TINDEX extends number = number, TITEM extends ICollectible<TKEY, TINDEX> = ICollectible<TKEY, TINDEX>> = (key: TKEY, index: number) => Result<TITEM>;
24
+ /**
25
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance with
26
+ * a defined, strongly-typed index.
27
+ * @public
28
+ */
29
+ export interface ICollectibleConstructorParamsWithIndex<TKEY extends string = string, TINDEX extends number = number> {
30
+ key: TKEY;
31
+ index: TINDEX;
32
+ }
33
+ /**
34
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance with an
35
+ * index converter.
36
+ * @public
37
+ */
38
+ export interface ICollectibleConstructorParamsWithConverter<TKEY extends string = string, TINDEX extends number = number> {
39
+ key: TKEY;
40
+ index?: number;
41
+ indexConverter: Validator<TINDEX, unknown> | Converter<TINDEX, unknown> | ConverterFunc<TINDEX, undefined>;
42
+ }
43
+ /**
44
+ * Parameters for constructing a new {@link Collections.ICollectible | ICollectible} instance.
45
+ * @public
46
+ */
47
+ export type ICollectibleConstructorParams<TKEY extends string = string, TINDEX extends number = number> = ICollectibleConstructorParamsWithIndex<TKEY, TINDEX> | ICollectibleConstructorParamsWithConverter<TKEY, TINDEX>;
22
48
  /**
23
49
  * Simple implementation of {@link Collections.ICollectible | ICollectible} which does not allow the index to be
24
50
  * changed once set.
@@ -34,15 +60,21 @@ export declare class Collectible<TKEY extends string = string, TINDEX extends nu
34
60
  */
35
61
  get index(): TINDEX | undefined;
36
62
  protected _index: TINDEX | undefined;
63
+ protected readonly _indexConverter?: Validator<TINDEX, unknown> | Converter<TINDEX, unknown>;
37
64
  /**
38
65
  * Constructs a new {@link Collections.Collectible | Collectible} instance.
39
- * @param key - The key of the item to be collected.
40
- * @param index - Optional index of the item to be collected.
66
+ * @param params - Required parameters for constructing the collectible.
67
+ */
68
+ constructor(params: ICollectibleConstructorParams<TKEY, TINDEX>);
69
+ /**
70
+ * Creates a new {@link Collections.Collectible | Collectible} instance from the supplied parameters.
71
+ * @param params - Required parameters for constructing the collectible.
72
+ * @returns `Success` with the new collectible if successful, or `Failure` with an error message if not.
41
73
  */
42
- constructor(key: TKEY, index?: TINDEX);
74
+ static createCollectible<TKEY extends string = string, TINDEX extends number = number>(params: ICollectibleConstructorParams<TKEY, TINDEX>): Result<Collectible<TKEY, TINDEX>>;
43
75
  /**
44
76
  * {@link Collections.ICollectible.setIndex}
45
77
  */
46
- setIndex(index: TINDEX): Result<TINDEX>;
78
+ setIndex(index: number): Result<TINDEX>;
47
79
  }
48
80
  //# sourceMappingURL=collectible.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectible.d.ts","sourceRoot":"","sources":["../../../src/packlets/collections/collectible.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAiB,MAAM,SAAS,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM;IACxF,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAC5B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EACrE,IAAI,GAAG,KAAK,IACV,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CACpC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IACnE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,CACnF,YAAW,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,SAAgB,GAAG,EAAE,IAAI,CAAC;IAE1B;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC;;;;OAIG;gBACgB,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM;IAK5C;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAO/C"}
1
+ {"version":3,"file":"collectible.d.ts","sourceRoot":"","sources":["../../../src/packlets/collections/collectible.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAgC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAc,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM;IACxF,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAC5B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EACrE,IAAI,GAAG,KAAK,IACV,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CACpC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IACnE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,sCAAsC,CACrD,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM;IAE9B,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,0CAA0C,CACzD,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,MAAM,GAAG,MAAM;IAE9B,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC5G;AAED;;;GAGG;AACH,MAAM,MAAM,6BAA6B,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,IAClG,sCAAsC,CAAC,IAAI,EAAE,MAAM,CAAC,GACpD,0CAA0C,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,CACnF,YAAW,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,SAAgB,GAAG,EAAE,IAAI,CAAC;IAE1B;;OAEG;IACH,IAAW,KAAK,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7F;;;OAGG;gBACgB,MAAM,EAAE,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC;IAetE;;;;OAIG;WACW,iBAAiB,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAC1F,MAAM,EAAE,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,GAClD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAIpC;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAwB/C"}