@xyo-network/schema-cache 2.75.15 → 2.75.16
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/dist/docs.json +37 -37
- package/package.json +13 -13
- package/dist/browser/Debounce.cjs +0 -45
- package/dist/browser/Debounce.cjs.map +0 -1
- package/dist/browser/Debounce.js +0 -24
- package/dist/browser/Debounce.js.map +0 -1
- package/dist/browser/SchemaCache.cjs +0 -149
- package/dist/browser/SchemaCache.cjs.map +0 -1
- package/dist/browser/SchemaCache.js +0 -118
- package/dist/browser/SchemaCache.js.map +0 -1
- package/dist/browser/SchemaNameToValidatorMap.cjs +0 -19
- package/dist/browser/SchemaNameToValidatorMap.cjs.map +0 -1
- package/dist/browser/SchemaNameToValidatorMap.js +0 -1
- package/dist/browser/SchemaNameToValidatorMap.js.map +0 -1
- package/dist/node/Debounce.js +0 -49
- package/dist/node/Debounce.js.map +0 -1
- package/dist/node/Debounce.mjs +0 -24
- package/dist/node/Debounce.mjs.map +0 -1
- package/dist/node/SchemaCache.js +0 -155
- package/dist/node/SchemaCache.js.map +0 -1
- package/dist/node/SchemaCache.mjs +0 -120
- package/dist/node/SchemaCache.mjs.map +0 -1
- package/dist/node/SchemaNameToValidatorMap.js +0 -19
- package/dist/node/SchemaNameToValidatorMap.js.map +0 -1
- package/dist/node/SchemaNameToValidatorMap.mjs +0 -1
- package/dist/node/SchemaNameToValidatorMap.mjs.map +0 -1
package/dist/docs.json
CHANGED
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
69
69
|
"line": 4,
|
|
70
70
|
"character": 10,
|
|
71
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
71
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L4"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
74
|
"type": {
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
106
106
|
"line": 6,
|
|
107
107
|
"character": 8,
|
|
108
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
108
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L6"
|
|
109
109
|
}
|
|
110
110
|
],
|
|
111
111
|
"signatures": [
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
121
121
|
"line": 6,
|
|
122
122
|
"character": 8,
|
|
123
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
123
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L6"
|
|
124
124
|
}
|
|
125
125
|
],
|
|
126
126
|
"typeParameter": [
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
166
166
|
"line": 6,
|
|
167
167
|
"character": 35,
|
|
168
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
168
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L6"
|
|
169
169
|
}
|
|
170
170
|
],
|
|
171
171
|
"signatures": [
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
181
181
|
"line": 6,
|
|
182
182
|
"character": 35,
|
|
183
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
183
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L6"
|
|
184
184
|
}
|
|
185
185
|
],
|
|
186
186
|
"type": {
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
"fileName": "sdk/packages/schema-cache/src/Debounce.ts",
|
|
265
265
|
"line": 3,
|
|
266
266
|
"character": 13,
|
|
267
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
267
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/Debounce.ts#L3"
|
|
268
268
|
}
|
|
269
269
|
],
|
|
270
270
|
"typeParameters": [
|
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
302
302
|
"line": 38,
|
|
303
303
|
"character": 2,
|
|
304
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
304
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L38"
|
|
305
305
|
}
|
|
306
306
|
],
|
|
307
307
|
"signatures": [
|
|
@@ -316,7 +316,7 @@
|
|
|
316
316
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
317
317
|
"line": 38,
|
|
318
318
|
"character": 2,
|
|
319
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
319
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L38"
|
|
320
320
|
}
|
|
321
321
|
],
|
|
322
322
|
"typeParameter": [
|
|
@@ -385,7 +385,7 @@
|
|
|
385
385
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
386
386
|
"line": 32,
|
|
387
387
|
"character": 10,
|
|
388
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
388
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L32"
|
|
389
389
|
}
|
|
390
390
|
],
|
|
391
391
|
"type": {
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
429
429
|
"line": 33,
|
|
430
430
|
"character": 10,
|
|
431
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
431
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L33"
|
|
432
432
|
}
|
|
433
433
|
],
|
|
434
434
|
"type": {
|
|
@@ -452,7 +452,7 @@
|
|
|
452
452
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
453
453
|
"line": 36,
|
|
454
454
|
"character": 10,
|
|
455
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
455
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L36"
|
|
456
456
|
}
|
|
457
457
|
],
|
|
458
458
|
"type": {
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
483
483
|
"line": 29,
|
|
484
484
|
"character": 2,
|
|
485
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
485
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L29"
|
|
486
486
|
}
|
|
487
487
|
],
|
|
488
488
|
"type": {
|
|
@@ -498,7 +498,7 @@
|
|
|
498
498
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
499
499
|
"line": 29,
|
|
500
500
|
"character": 19,
|
|
501
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
501
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L29"
|
|
502
502
|
}
|
|
503
503
|
],
|
|
504
504
|
"signatures": [
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
514
514
|
"line": 29,
|
|
515
515
|
"character": 19,
|
|
516
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
516
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L29"
|
|
517
517
|
}
|
|
518
518
|
],
|
|
519
519
|
"parameters": [
|
|
@@ -564,7 +564,7 @@
|
|
|
564
564
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
565
565
|
"line": 30,
|
|
566
566
|
"character": 2,
|
|
567
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
567
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L30"
|
|
568
568
|
}
|
|
569
569
|
],
|
|
570
570
|
"type": {
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
604
604
|
"line": 25,
|
|
605
605
|
"character": 28,
|
|
606
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
606
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L25"
|
|
607
607
|
}
|
|
608
608
|
],
|
|
609
609
|
"type": {
|
|
@@ -629,7 +629,7 @@
|
|
|
629
629
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
630
630
|
"line": 27,
|
|
631
631
|
"character": 17,
|
|
632
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
632
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L27"
|
|
633
633
|
}
|
|
634
634
|
],
|
|
635
635
|
"type": {
|
|
@@ -658,7 +658,7 @@
|
|
|
658
658
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
659
659
|
"line": 54,
|
|
660
660
|
"character": 6,
|
|
661
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
661
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L54"
|
|
662
662
|
}
|
|
663
663
|
],
|
|
664
664
|
"getSignature": {
|
|
@@ -688,7 +688,7 @@
|
|
|
688
688
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
689
689
|
"line": 54,
|
|
690
690
|
"character": 6,
|
|
691
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
691
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L54"
|
|
692
692
|
}
|
|
693
693
|
],
|
|
694
694
|
"type": {
|
|
@@ -712,7 +712,7 @@
|
|
|
712
712
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
713
713
|
"line": 42,
|
|
714
714
|
"character": 13,
|
|
715
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
715
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L42"
|
|
716
716
|
}
|
|
717
717
|
],
|
|
718
718
|
"getSignature": {
|
|
@@ -726,7 +726,7 @@
|
|
|
726
726
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
727
727
|
"line": 42,
|
|
728
728
|
"character": 13,
|
|
729
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
729
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L42"
|
|
730
730
|
}
|
|
731
731
|
],
|
|
732
732
|
"type": {
|
|
@@ -758,7 +758,7 @@
|
|
|
758
758
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
759
759
|
"line": 72,
|
|
760
760
|
"character": 10,
|
|
761
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
761
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L72"
|
|
762
762
|
}
|
|
763
763
|
],
|
|
764
764
|
"signatures": [
|
|
@@ -773,7 +773,7 @@
|
|
|
773
773
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
774
774
|
"line": 72,
|
|
775
775
|
"character": 10,
|
|
776
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
776
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L72"
|
|
777
777
|
}
|
|
778
778
|
],
|
|
779
779
|
"parameters": [
|
|
@@ -811,7 +811,7 @@
|
|
|
811
811
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
812
812
|
"line": 88,
|
|
813
813
|
"character": 10,
|
|
814
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
814
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L88"
|
|
815
815
|
}
|
|
816
816
|
],
|
|
817
817
|
"signatures": [
|
|
@@ -826,7 +826,7 @@
|
|
|
826
826
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
827
827
|
"line": 88,
|
|
828
828
|
"character": 10,
|
|
829
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
829
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L88"
|
|
830
830
|
}
|
|
831
831
|
],
|
|
832
832
|
"parameters": [
|
|
@@ -942,7 +942,7 @@
|
|
|
942
942
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
943
943
|
"line": 96,
|
|
944
944
|
"character": 16,
|
|
945
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
945
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L96"
|
|
946
946
|
}
|
|
947
947
|
],
|
|
948
948
|
"signatures": [
|
|
@@ -957,7 +957,7 @@
|
|
|
957
957
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
958
958
|
"line": 96,
|
|
959
959
|
"character": 16,
|
|
960
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
960
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L96"
|
|
961
961
|
}
|
|
962
962
|
],
|
|
963
963
|
"parameters": [
|
|
@@ -1002,7 +1002,7 @@
|
|
|
1002
1002
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
1003
1003
|
"line": 58,
|
|
1004
1004
|
"character": 8,
|
|
1005
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1005
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L58"
|
|
1006
1006
|
}
|
|
1007
1007
|
],
|
|
1008
1008
|
"signatures": [
|
|
@@ -1017,7 +1017,7 @@
|
|
|
1017
1017
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
1018
1018
|
"line": 58,
|
|
1019
1019
|
"character": 8,
|
|
1020
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1020
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L58"
|
|
1021
1021
|
}
|
|
1022
1022
|
],
|
|
1023
1023
|
"parameters": [
|
|
@@ -1110,7 +1110,7 @@
|
|
|
1110
1110
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
1111
1111
|
"line": 20,
|
|
1112
1112
|
"character": 13,
|
|
1113
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1113
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L20"
|
|
1114
1114
|
}
|
|
1115
1115
|
],
|
|
1116
1116
|
"typeParameters": [
|
|
@@ -1161,7 +1161,7 @@
|
|
|
1161
1161
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
1162
1162
|
"line": 15,
|
|
1163
1163
|
"character": 2,
|
|
1164
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1164
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L15"
|
|
1165
1165
|
}
|
|
1166
1166
|
],
|
|
1167
1167
|
"type": {
|
|
@@ -1726,7 +1726,7 @@
|
|
|
1726
1726
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
1727
1727
|
"line": 16,
|
|
1728
1728
|
"character": 2,
|
|
1729
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1729
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L16"
|
|
1730
1730
|
}
|
|
1731
1731
|
],
|
|
1732
1732
|
"type": {
|
|
@@ -1808,7 +1808,7 @@
|
|
|
1808
1808
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
1809
1809
|
"line": 17,
|
|
1810
1810
|
"character": 2,
|
|
1811
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
1811
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L17"
|
|
1812
1812
|
}
|
|
1813
1813
|
],
|
|
1814
1814
|
"type": {
|
|
@@ -2053,7 +2053,7 @@
|
|
|
2053
2053
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
2054
2054
|
"line": 14,
|
|
2055
2055
|
"character": 17,
|
|
2056
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
2056
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L14"
|
|
2057
2057
|
}
|
|
2058
2058
|
]
|
|
2059
2059
|
},
|
|
@@ -2076,7 +2076,7 @@
|
|
|
2076
2076
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
2077
2077
|
"line": 9,
|
|
2078
2078
|
"character": 12,
|
|
2079
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
2079
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L9"
|
|
2080
2080
|
}
|
|
2081
2081
|
],
|
|
2082
2082
|
"typeParameters": [
|
|
@@ -2122,7 +2122,7 @@
|
|
|
2122
2122
|
"fileName": "sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts",
|
|
2123
2123
|
"line": 9,
|
|
2124
2124
|
"character": 58,
|
|
2125
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
2125
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaNameToValidatorMap.ts#L9"
|
|
2126
2126
|
}
|
|
2127
2127
|
],
|
|
2128
2128
|
"signatures": [
|
|
@@ -2183,7 +2183,7 @@
|
|
|
2183
2183
|
"fileName": "sdk/packages/schema-cache/src/SchemaCache.ts",
|
|
2184
2184
|
"line": 18,
|
|
2185
2185
|
"character": 12,
|
|
2186
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
2186
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/sdk/packages/schema-cache/src/SchemaCache.ts#L18"
|
|
2187
2187
|
}
|
|
2188
2188
|
],
|
|
2189
2189
|
"type": {
|
package/package.json
CHANGED
|
@@ -9,23 +9,23 @@
|
|
|
9
9
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@xylabs/delay": "^2.12.
|
|
13
|
-
"@xyo-network/axios": "~2.75.
|
|
14
|
-
"@xyo-network/domain-payload-plugin": "~2.75.
|
|
15
|
-
"@xyo-network/error": "~2.75.
|
|
16
|
-
"@xyo-network/huri": "~2.75.
|
|
17
|
-
"@xyo-network/payload-model": "~2.75.
|
|
18
|
-
"@xyo-network/schema-payload-plugin": "~2.75.
|
|
12
|
+
"@xylabs/delay": "^2.12.23",
|
|
13
|
+
"@xyo-network/axios": "~2.75.16",
|
|
14
|
+
"@xyo-network/domain-payload-plugin": "~2.75.16",
|
|
15
|
+
"@xyo-network/error": "~2.75.16",
|
|
16
|
+
"@xyo-network/huri": "~2.75.16",
|
|
17
|
+
"@xyo-network/payload-model": "~2.75.16",
|
|
18
|
+
"@xyo-network/schema-payload-plugin": "~2.75.16",
|
|
19
19
|
"ajv": "^8.12.0",
|
|
20
20
|
"lru-cache": "^10.0.1"
|
|
21
21
|
},
|
|
22
22
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@xylabs/assert": "^2.12.
|
|
25
|
-
"@xylabs/ts-scripts-yarn3": "^3.
|
|
26
|
-
"@xylabs/tsconfig-dom": "^3.
|
|
27
|
-
"@xyo-network/network": "~2.75.
|
|
28
|
-
"@xyo-network/payload-builder": "~2.75.
|
|
24
|
+
"@xylabs/assert": "^2.12.23",
|
|
25
|
+
"@xylabs/ts-scripts-yarn3": "^3.1.3",
|
|
26
|
+
"@xylabs/tsconfig-dom": "^3.1.3",
|
|
27
|
+
"@xyo-network/network": "~2.75.16",
|
|
28
|
+
"@xyo-network/payload-builder": "~2.75.16",
|
|
29
29
|
"typescript": "^5.2.2"
|
|
30
30
|
},
|
|
31
31
|
"docs": "dist/docs.json",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
},
|
|
72
72
|
"sideEffects": false,
|
|
73
73
|
"types": "dist/node/index.d.ts",
|
|
74
|
-
"version": "2.75.
|
|
74
|
+
"version": "2.75.16"
|
|
75
75
|
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Debounce.ts
|
|
21
|
-
var Debounce_exports = {};
|
|
22
|
-
__export(Debounce_exports, {
|
|
23
|
-
Debounce: () => Debounce
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Debounce_exports);
|
|
26
|
-
var import_delay = require("@xylabs/delay");
|
|
27
|
-
var Debounce = class {
|
|
28
|
-
map = /* @__PURE__ */ new Map();
|
|
29
|
-
async one(key, closure, timeout = 1e4) {
|
|
30
|
-
const startTime = Date.now();
|
|
31
|
-
while (this.map.get(key)) {
|
|
32
|
-
await (0, import_delay.delay)(100);
|
|
33
|
-
if (Date.now() - startTime > timeout) {
|
|
34
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
this.map.set(key, 1);
|
|
39
|
-
return await closure();
|
|
40
|
-
} finally {
|
|
41
|
-
this.map.set(key, 0);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=Debounce.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Debounce.ts"],"sourcesContent":["import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AAEf,IAAM,WAAN,MAA8B;AAAA,EAC3B,MAAM,oBAAI,IAAkB;AAAA,EAEpC,MAAM,IAAO,KAAW,SAA2B,UAAU,KAAO;AAClE,UAAM,YAAY,KAAK,IAAI;AAC3B,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AACxB,gBAAM,oBAAM,GAAG;AACf,UAAI,KAAK,IAAI,IAAI,YAAY,SAAS;AACpC,cAAM,MAAM,uBAAuB,GAAG,GAAG;AAAA,MAC3C;AAAA,IACF;AACA,QAAI;AACF,WAAK,IAAI,IAAI,KAAK,CAAC;AACnB,aAAO,MAAM,QAAQ;AAAA,IACvB,UAAE;AACA,WAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
package/dist/browser/Debounce.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// src/Debounce.ts
|
|
2
|
-
import { delay } from "@xylabs/delay";
|
|
3
|
-
var Debounce = class {
|
|
4
|
-
map = /* @__PURE__ */ new Map();
|
|
5
|
-
async one(key, closure, timeout = 1e4) {
|
|
6
|
-
const startTime = Date.now();
|
|
7
|
-
while (this.map.get(key)) {
|
|
8
|
-
await delay(100);
|
|
9
|
-
if (Date.now() - startTime > timeout) {
|
|
10
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
try {
|
|
14
|
-
this.map.set(key, 1);
|
|
15
|
-
return await closure();
|
|
16
|
-
} finally {
|
|
17
|
-
this.map.set(key, 0);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
export {
|
|
22
|
-
Debounce
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=Debounce.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Debounce.ts"],"sourcesContent":["import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":";AAAA,SAAS,aAAa;AAEf,IAAM,WAAN,MAA8B;AAAA,EAC3B,MAAM,oBAAI,IAAkB;AAAA,EAEpC,MAAM,IAAO,KAAW,SAA2B,UAAU,KAAO;AAClE,UAAM,YAAY,KAAK,IAAI;AAC3B,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AACxB,YAAM,MAAM,GAAG;AACf,UAAI,KAAK,IAAI,IAAI,YAAY,SAAS;AACpC,cAAM,MAAM,uBAAuB,GAAG,GAAG;AAAA,MAC3C;AAAA,IACF;AACA,QAAI;AACF,WAAK,IAAI,IAAI,KAAK,CAAC;AACnB,aAAO,MAAM,QAAQ;AAAA,IACvB,UAAE;AACA,WAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/SchemaCache.ts
|
|
31
|
-
var SchemaCache_exports = {};
|
|
32
|
-
__export(SchemaCache_exports, {
|
|
33
|
-
SchemaCache: () => SchemaCache
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(SchemaCache_exports);
|
|
36
|
-
var import_axios = require("@xyo-network/axios");
|
|
37
|
-
var import_domain_payload_plugin = require("@xyo-network/domain-payload-plugin");
|
|
38
|
-
var import_error = require("@xyo-network/error");
|
|
39
|
-
var import_schema_payload_plugin = require("@xyo-network/schema-payload-plugin");
|
|
40
|
-
var import_ajv = __toESM(require("ajv"));
|
|
41
|
-
var import_lru_cache = require("lru-cache");
|
|
42
|
-
|
|
43
|
-
// src/Debounce.ts
|
|
44
|
-
var import_delay = require("@xylabs/delay");
|
|
45
|
-
var Debounce = class {
|
|
46
|
-
map = /* @__PURE__ */ new Map();
|
|
47
|
-
async one(key, closure, timeout = 1e4) {
|
|
48
|
-
const startTime = Date.now();
|
|
49
|
-
while (this.map.get(key)) {
|
|
50
|
-
await (0, import_delay.delay)(100);
|
|
51
|
-
if (Date.now() - startTime > timeout) {
|
|
52
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
this.map.set(key, 1);
|
|
57
|
-
return await closure();
|
|
58
|
-
} finally {
|
|
59
|
-
this.map.set(key, 0);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
// src/SchemaCache.ts
|
|
65
|
-
var getSchemaNameFromSchema = (schema) => {
|
|
66
|
-
if (schema.$id) {
|
|
67
|
-
return schema.$id;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
var SchemaCache = class _SchemaCache {
|
|
71
|
-
/**
|
|
72
|
-
* Object representing `null` since LRU Cache types
|
|
73
|
-
* only allow for types that derive from object
|
|
74
|
-
*/
|
|
75
|
-
static NULL = { payload: { definition: {}, schema: import_schema_payload_plugin.SchemaSchema } };
|
|
76
|
-
static _instance;
|
|
77
|
-
onSchemaCached;
|
|
78
|
-
proxy;
|
|
79
|
-
_cache = new import_lru_cache.LRUCache({ max: 500, ttl: 1e3 * 60 * 5 });
|
|
80
|
-
_validators = {};
|
|
81
|
-
//prevents double discovery
|
|
82
|
-
getDebounce = new Debounce();
|
|
83
|
-
constructor(proxy) {
|
|
84
|
-
this.proxy = proxy;
|
|
85
|
-
}
|
|
86
|
-
static get instance() {
|
|
87
|
-
if (!this._instance) {
|
|
88
|
-
this._instance = new _SchemaCache();
|
|
89
|
-
}
|
|
90
|
-
return this._instance;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* A map of cached schema (by name) to payload validators for the schema. A schema
|
|
94
|
-
* must be cached via `get('schema.name')` before it's validator can be used as
|
|
95
|
-
* they are compiled dynamically at runtime upon retrieval.
|
|
96
|
-
*/
|
|
97
|
-
get validators() {
|
|
98
|
-
return this._validators;
|
|
99
|
-
}
|
|
100
|
-
async get(schema) {
|
|
101
|
-
if (schema) {
|
|
102
|
-
await this.getDebounce.one(schema, async () => {
|
|
103
|
-
if (this._cache.get(schema) === void 0) {
|
|
104
|
-
await this.fetchSchema(schema);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
const value = this._cache.get(schema);
|
|
108
|
-
return value === _SchemaCache.NULL ? null : value;
|
|
109
|
-
}
|
|
110
|
-
return void 0;
|
|
111
|
-
}
|
|
112
|
-
cacheSchemaIfValid(entry) {
|
|
113
|
-
if (entry.payload.definition) {
|
|
114
|
-
const ajv = new import_ajv.default({ strict: false });
|
|
115
|
-
const validator = ajv.compile(entry.payload.definition);
|
|
116
|
-
const schemaName = getSchemaNameFromSchema(entry.payload.definition);
|
|
117
|
-
if (schemaName) {
|
|
118
|
-
this._cache.set(schemaName, entry);
|
|
119
|
-
const key = schemaName;
|
|
120
|
-
this._validators[key] = validator;
|
|
121
|
-
this.onSchemaCached?.(schemaName, entry);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
cacheSchemas(aliasEntries) {
|
|
126
|
-
aliasEntries?.filter((entry) => entry.payload.schema === import_schema_payload_plugin.SchemaSchema).forEach((entry) => {
|
|
127
|
-
this.cacheSchemaIfValid(entry);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
async fetchSchema(schema) {
|
|
131
|
-
try {
|
|
132
|
-
const domain = await import_domain_payload_plugin.DomainPayloadWrapper.discover(schema, this.proxy);
|
|
133
|
-
await domain?.fetch();
|
|
134
|
-
this.cacheSchemas(domain?.aliases);
|
|
135
|
-
if (this._cache.get(schema) === void 0) {
|
|
136
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
137
|
-
}
|
|
138
|
-
} catch (ex) {
|
|
139
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
140
|
-
if ((0, import_axios.isAxiosError)(ex)) {
|
|
141
|
-
console.log(`Axios Url: ${ex.response?.config.url}`);
|
|
142
|
-
}
|
|
143
|
-
(0, import_error.handleError)(ex, (error) => {
|
|
144
|
-
console.error(`fetchSchema threw: ${error.message}`);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
//# sourceMappingURL=SchemaCache.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaCache.ts","../../src/Debounce.ts"],"sourcesContent":["import { isAxiosError } from '@xyo-network/axios'\nimport { DomainPayloadWrapper } from '@xyo-network/domain-payload-plugin'\nimport { handleError } from '@xyo-network/error'\nimport { FetchedPayload } from '@xyo-network/huri'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport Ajv, { SchemaObject } from 'ajv'\nimport { LRUCache } from 'lru-cache'\n\nimport { Debounce } from './Debounce'\nimport { SchemaNameToValidatorMap } from './SchemaNameToValidatorMap'\n\nconst getSchemaNameFromSchema = (schema: SchemaObject) => {\n if (schema.$id) {\n return schema.$id\n }\n}\n\nexport type SchemaCacheEntry = FetchedPayload<SchemaPayload>\n\nexport class SchemaCache<T extends SchemaNameToValidatorMap = SchemaNameToValidatorMap> {\n /**\n * Object representing `null` since LRU Cache types\n * only allow for types that derive from object\n */\n protected static readonly NULL: SchemaCacheEntry = { payload: { definition: {}, schema: SchemaSchema } }\n\n private static _instance?: SchemaCache\n\n onSchemaCached?: (name: string, entry: SchemaCacheEntry) => void\n proxy?: string\n\n private _cache = new LRUCache<string, SchemaCacheEntry>({ max: 500, ttl: 1000 * 60 * 5 })\n private _validators: T = {} as T\n\n //prevents double discovery\n private getDebounce = new Debounce()\n\n private constructor(proxy?: string) {\n this.proxy = proxy\n }\n\n static get instance() {\n if (!this._instance) {\n this._instance = new SchemaCache()\n }\n return this._instance\n }\n\n /**\n * A map of cached schema (by name) to payload validators for the schema. A schema\n * must be cached via `get('schema.name')` before it's validator can be used as\n * they are compiled dynamically at runtime upon retrieval.\n */\n get validators(): T {\n return this._validators\n }\n\n async get(schema?: string): Promise<SchemaCacheEntry | undefined | null> {\n if (schema) {\n await this.getDebounce.one(schema, async () => {\n // If we've never looked for it before, it will be undefined\n if (this._cache.get(schema) === undefined) {\n await this.fetchSchema(schema)\n }\n })\n const value = this._cache.get(schema)\n return value === SchemaCache.NULL ? null : value\n }\n return undefined\n }\n\n private cacheSchemaIfValid(entry: SchemaCacheEntry) {\n //only store them if they match the schema root\n if (entry.payload.definition) {\n const ajv = new Ajv({ strict: false })\n //check if it is a valid schema def\n const validator = ajv.compile(entry.payload.definition)\n const schemaName = getSchemaNameFromSchema(entry.payload.definition)\n if (schemaName) {\n this._cache.set(schemaName, entry)\n const key = schemaName as keyof T\n this._validators[key] = validator as unknown as T[keyof T]\n this.onSchemaCached?.(schemaName, entry)\n }\n }\n }\n\n private cacheSchemas(aliasEntries?: FetchedPayload[] | null) {\n aliasEntries\n ?.filter((entry) => entry.payload.schema === SchemaSchema)\n .forEach((entry) => {\n this.cacheSchemaIfValid(entry as SchemaCacheEntry)\n })\n }\n\n private async fetchSchema(schema: string) {\n try {\n const domain = await DomainPayloadWrapper.discover(schema, this.proxy)\n await domain?.fetch()\n this.cacheSchemas(domain?.aliases)\n\n //if it is still undefined, mark it as null (not found)\n if (this._cache.get(schema) === undefined) {\n this._cache.set(schema, SchemaCache.NULL)\n }\n } catch (ex) {\n //if failed, set it to NULL, TODO: Make an entry for an error to try again in the future?\n this._cache.set(schema, SchemaCache.NULL)\n if (isAxiosError(ex)) {\n console.log(`Axios Url: ${ex.response?.config.url}`)\n }\n handleError(ex, (error) => {\n console.error(`fetchSchema threw: ${error.message}`)\n })\n }\n }\n}\n","import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":"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","names":["Ajv"]}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
// src/SchemaCache.ts
|
|
2
|
-
import { isAxiosError } from "@xyo-network/axios";
|
|
3
|
-
import { DomainPayloadWrapper } from "@xyo-network/domain-payload-plugin";
|
|
4
|
-
import { handleError } from "@xyo-network/error";
|
|
5
|
-
import { SchemaSchema } from "@xyo-network/schema-payload-plugin";
|
|
6
|
-
import Ajv from "ajv";
|
|
7
|
-
import { LRUCache } from "lru-cache";
|
|
8
|
-
|
|
9
|
-
// src/Debounce.ts
|
|
10
|
-
import { delay } from "@xylabs/delay";
|
|
11
|
-
var Debounce = class {
|
|
12
|
-
map = /* @__PURE__ */ new Map();
|
|
13
|
-
async one(key, closure, timeout = 1e4) {
|
|
14
|
-
const startTime = Date.now();
|
|
15
|
-
while (this.map.get(key)) {
|
|
16
|
-
await delay(100);
|
|
17
|
-
if (Date.now() - startTime > timeout) {
|
|
18
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
this.map.set(key, 1);
|
|
23
|
-
return await closure();
|
|
24
|
-
} finally {
|
|
25
|
-
this.map.set(key, 0);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// src/SchemaCache.ts
|
|
31
|
-
var getSchemaNameFromSchema = (schema) => {
|
|
32
|
-
if (schema.$id) {
|
|
33
|
-
return schema.$id;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var SchemaCache = class _SchemaCache {
|
|
37
|
-
/**
|
|
38
|
-
* Object representing `null` since LRU Cache types
|
|
39
|
-
* only allow for types that derive from object
|
|
40
|
-
*/
|
|
41
|
-
static NULL = { payload: { definition: {}, schema: SchemaSchema } };
|
|
42
|
-
static _instance;
|
|
43
|
-
onSchemaCached;
|
|
44
|
-
proxy;
|
|
45
|
-
_cache = new LRUCache({ max: 500, ttl: 1e3 * 60 * 5 });
|
|
46
|
-
_validators = {};
|
|
47
|
-
//prevents double discovery
|
|
48
|
-
getDebounce = new Debounce();
|
|
49
|
-
constructor(proxy) {
|
|
50
|
-
this.proxy = proxy;
|
|
51
|
-
}
|
|
52
|
-
static get instance() {
|
|
53
|
-
if (!this._instance) {
|
|
54
|
-
this._instance = new _SchemaCache();
|
|
55
|
-
}
|
|
56
|
-
return this._instance;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* A map of cached schema (by name) to payload validators for the schema. A schema
|
|
60
|
-
* must be cached via `get('schema.name')` before it's validator can be used as
|
|
61
|
-
* they are compiled dynamically at runtime upon retrieval.
|
|
62
|
-
*/
|
|
63
|
-
get validators() {
|
|
64
|
-
return this._validators;
|
|
65
|
-
}
|
|
66
|
-
async get(schema) {
|
|
67
|
-
if (schema) {
|
|
68
|
-
await this.getDebounce.one(schema, async () => {
|
|
69
|
-
if (this._cache.get(schema) === void 0) {
|
|
70
|
-
await this.fetchSchema(schema);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
const value = this._cache.get(schema);
|
|
74
|
-
return value === _SchemaCache.NULL ? null : value;
|
|
75
|
-
}
|
|
76
|
-
return void 0;
|
|
77
|
-
}
|
|
78
|
-
cacheSchemaIfValid(entry) {
|
|
79
|
-
if (entry.payload.definition) {
|
|
80
|
-
const ajv = new Ajv({ strict: false });
|
|
81
|
-
const validator = ajv.compile(entry.payload.definition);
|
|
82
|
-
const schemaName = getSchemaNameFromSchema(entry.payload.definition);
|
|
83
|
-
if (schemaName) {
|
|
84
|
-
this._cache.set(schemaName, entry);
|
|
85
|
-
const key = schemaName;
|
|
86
|
-
this._validators[key] = validator;
|
|
87
|
-
this.onSchemaCached?.(schemaName, entry);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
cacheSchemas(aliasEntries) {
|
|
92
|
-
aliasEntries?.filter((entry) => entry.payload.schema === SchemaSchema).forEach((entry) => {
|
|
93
|
-
this.cacheSchemaIfValid(entry);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
async fetchSchema(schema) {
|
|
97
|
-
try {
|
|
98
|
-
const domain = await DomainPayloadWrapper.discover(schema, this.proxy);
|
|
99
|
-
await domain?.fetch();
|
|
100
|
-
this.cacheSchemas(domain?.aliases);
|
|
101
|
-
if (this._cache.get(schema) === void 0) {
|
|
102
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
103
|
-
}
|
|
104
|
-
} catch (ex) {
|
|
105
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
106
|
-
if (isAxiosError(ex)) {
|
|
107
|
-
console.log(`Axios Url: ${ex.response?.config.url}`);
|
|
108
|
-
}
|
|
109
|
-
handleError(ex, (error) => {
|
|
110
|
-
console.error(`fetchSchema threw: ${error.message}`);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
export {
|
|
116
|
-
SchemaCache
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=SchemaCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaCache.ts","../../src/Debounce.ts"],"sourcesContent":["import { isAxiosError } from '@xyo-network/axios'\nimport { DomainPayloadWrapper } from '@xyo-network/domain-payload-plugin'\nimport { handleError } from '@xyo-network/error'\nimport { FetchedPayload } from '@xyo-network/huri'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport Ajv, { SchemaObject } from 'ajv'\nimport { LRUCache } from 'lru-cache'\n\nimport { Debounce } from './Debounce'\nimport { SchemaNameToValidatorMap } from './SchemaNameToValidatorMap'\n\nconst getSchemaNameFromSchema = (schema: SchemaObject) => {\n if (schema.$id) {\n return schema.$id\n }\n}\n\nexport type SchemaCacheEntry = FetchedPayload<SchemaPayload>\n\nexport class SchemaCache<T extends SchemaNameToValidatorMap = SchemaNameToValidatorMap> {\n /**\n * Object representing `null` since LRU Cache types\n * only allow for types that derive from object\n */\n protected static readonly NULL: SchemaCacheEntry = { payload: { definition: {}, schema: SchemaSchema } }\n\n private static _instance?: SchemaCache\n\n onSchemaCached?: (name: string, entry: SchemaCacheEntry) => void\n proxy?: string\n\n private _cache = new LRUCache<string, SchemaCacheEntry>({ max: 500, ttl: 1000 * 60 * 5 })\n private _validators: T = {} as T\n\n //prevents double discovery\n private getDebounce = new Debounce()\n\n private constructor(proxy?: string) {\n this.proxy = proxy\n }\n\n static get instance() {\n if (!this._instance) {\n this._instance = new SchemaCache()\n }\n return this._instance\n }\n\n /**\n * A map of cached schema (by name) to payload validators for the schema. A schema\n * must be cached via `get('schema.name')` before it's validator can be used as\n * they are compiled dynamically at runtime upon retrieval.\n */\n get validators(): T {\n return this._validators\n }\n\n async get(schema?: string): Promise<SchemaCacheEntry | undefined | null> {\n if (schema) {\n await this.getDebounce.one(schema, async () => {\n // If we've never looked for it before, it will be undefined\n if (this._cache.get(schema) === undefined) {\n await this.fetchSchema(schema)\n }\n })\n const value = this._cache.get(schema)\n return value === SchemaCache.NULL ? null : value\n }\n return undefined\n }\n\n private cacheSchemaIfValid(entry: SchemaCacheEntry) {\n //only store them if they match the schema root\n if (entry.payload.definition) {\n const ajv = new Ajv({ strict: false })\n //check if it is a valid schema def\n const validator = ajv.compile(entry.payload.definition)\n const schemaName = getSchemaNameFromSchema(entry.payload.definition)\n if (schemaName) {\n this._cache.set(schemaName, entry)\n const key = schemaName as keyof T\n this._validators[key] = validator as unknown as T[keyof T]\n this.onSchemaCached?.(schemaName, entry)\n }\n }\n }\n\n private cacheSchemas(aliasEntries?: FetchedPayload[] | null) {\n aliasEntries\n ?.filter((entry) => entry.payload.schema === SchemaSchema)\n .forEach((entry) => {\n this.cacheSchemaIfValid(entry as SchemaCacheEntry)\n })\n }\n\n private async fetchSchema(schema: string) {\n try {\n const domain = await DomainPayloadWrapper.discover(schema, this.proxy)\n await domain?.fetch()\n this.cacheSchemas(domain?.aliases)\n\n //if it is still undefined, mark it as null (not found)\n if (this._cache.get(schema) === undefined) {\n this._cache.set(schema, SchemaCache.NULL)\n }\n } catch (ex) {\n //if failed, set it to NULL, TODO: Make an entry for an error to try again in the future?\n this._cache.set(schema, SchemaCache.NULL)\n if (isAxiosError(ex)) {\n console.log(`Axios Url: ${ex.response?.config.url}`)\n }\n handleError(ex, (error) => {\n console.error(`fetchSchema threw: ${error.message}`)\n })\n }\n }\n}\n","import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// src/SchemaNameToValidatorMap.ts
|
|
17
|
-
var SchemaNameToValidatorMap_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(SchemaNameToValidatorMap_exports);
|
|
19
|
-
//# sourceMappingURL=SchemaNameToValidatorMap.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaNameToValidatorMap.ts"],"sourcesContent":["import { DomainPayload, DomainSchema } from '@xyo-network/domain-payload-plugin'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\n/**\n * Used in conjunction with schema validation to support compile time type assertion\n * for known schema types.\n */\nexport type NarrowPayload<T extends Payload = Payload> = ((x: Payload) => x is T) | undefined\n\n/**\n * Used to map known schemas (byt their string name) to the validators which assert their types\n */\nexport interface SchemaNameToValidatorMap {\n [DomainSchema]: NarrowPayload<DomainPayload>\n [PayloadSchema]: NarrowPayload<Payload>\n [SchemaSchema]: NarrowPayload<SchemaPayload>\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=SchemaNameToValidatorMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/node/Debounce.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Debounce.ts
|
|
21
|
-
var Debounce_exports = {};
|
|
22
|
-
__export(Debounce_exports, {
|
|
23
|
-
Debounce: () => Debounce
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(Debounce_exports);
|
|
26
|
-
var import_delay = require("@xylabs/delay");
|
|
27
|
-
var Debounce = class {
|
|
28
|
-
map = /* @__PURE__ */ new Map();
|
|
29
|
-
async one(key, closure, timeout = 1e4) {
|
|
30
|
-
const startTime = Date.now();
|
|
31
|
-
while (this.map.get(key)) {
|
|
32
|
-
await (0, import_delay.delay)(100);
|
|
33
|
-
if (Date.now() - startTime > timeout) {
|
|
34
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
this.map.set(key, 1);
|
|
39
|
-
return await closure();
|
|
40
|
-
} finally {
|
|
41
|
-
this.map.set(key, 0);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
-
0 && (module.exports = {
|
|
47
|
-
Debounce
|
|
48
|
-
});
|
|
49
|
-
//# sourceMappingURL=Debounce.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Debounce.ts"],"sourcesContent":["import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AAEf,IAAM,WAAN,MAA8B;AAAA,EAC3B,MAAM,oBAAI,IAAkB;AAAA,EAEpC,MAAM,IAAO,KAAW,SAA2B,UAAU,KAAO;AAClE,UAAM,YAAY,KAAK,IAAI;AAC3B,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AACxB,gBAAM,oBAAM,GAAG;AACf,UAAI,KAAK,IAAI,IAAI,YAAY,SAAS;AACpC,cAAM,MAAM,uBAAuB,GAAG,GAAG;AAAA,MAC3C;AAAA,IACF;AACA,QAAI;AACF,WAAK,IAAI,IAAI,KAAK,CAAC;AACnB,aAAO,MAAM,QAAQ;AAAA,IACvB,UAAE;AACA,WAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
package/dist/node/Debounce.mjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// src/Debounce.ts
|
|
2
|
-
import { delay } from "@xylabs/delay";
|
|
3
|
-
var Debounce = class {
|
|
4
|
-
map = /* @__PURE__ */ new Map();
|
|
5
|
-
async one(key, closure, timeout = 1e4) {
|
|
6
|
-
const startTime = Date.now();
|
|
7
|
-
while (this.map.get(key)) {
|
|
8
|
-
await delay(100);
|
|
9
|
-
if (Date.now() - startTime > timeout) {
|
|
10
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
try {
|
|
14
|
-
this.map.set(key, 1);
|
|
15
|
-
return await closure();
|
|
16
|
-
} finally {
|
|
17
|
-
this.map.set(key, 0);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
export {
|
|
22
|
-
Debounce
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=Debounce.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Debounce.ts"],"sourcesContent":["import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":";AAAA,SAAS,aAAa;AAEf,IAAM,WAAN,MAA8B;AAAA,EAC3B,MAAM,oBAAI,IAAkB;AAAA,EAEpC,MAAM,IAAO,KAAW,SAA2B,UAAU,KAAO;AAClE,UAAM,YAAY,KAAK,IAAI;AAC3B,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AACxB,YAAM,MAAM,GAAG;AACf,UAAI,KAAK,IAAI,IAAI,YAAY,SAAS;AACpC,cAAM,MAAM,uBAAuB,GAAG,GAAG;AAAA,MAC3C;AAAA,IACF;AACA,QAAI;AACF,WAAK,IAAI,IAAI,KAAK,CAAC;AACnB,aAAO,MAAM,QAAQ;AAAA,IACvB,UAAE;AACA,WAAK,IAAI,IAAI,KAAK,CAAC;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
package/dist/node/SchemaCache.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/SchemaCache.ts
|
|
31
|
-
var SchemaCache_exports = {};
|
|
32
|
-
__export(SchemaCache_exports, {
|
|
33
|
-
SchemaCache: () => SchemaCache
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(SchemaCache_exports);
|
|
36
|
-
var import_axios = require("@xyo-network/axios");
|
|
37
|
-
var import_domain_payload_plugin = require("@xyo-network/domain-payload-plugin");
|
|
38
|
-
var import_error = require("@xyo-network/error");
|
|
39
|
-
var import_schema_payload_plugin = require("@xyo-network/schema-payload-plugin");
|
|
40
|
-
var import_ajv = __toESM(require("ajv"));
|
|
41
|
-
var import_lru_cache = require("lru-cache");
|
|
42
|
-
|
|
43
|
-
// src/Debounce.ts
|
|
44
|
-
var import_delay = require("@xylabs/delay");
|
|
45
|
-
var Debounce = class {
|
|
46
|
-
map = /* @__PURE__ */ new Map();
|
|
47
|
-
async one(key, closure, timeout = 1e4) {
|
|
48
|
-
const startTime = Date.now();
|
|
49
|
-
while (this.map.get(key)) {
|
|
50
|
-
await (0, import_delay.delay)(100);
|
|
51
|
-
if (Date.now() - startTime > timeout) {
|
|
52
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
this.map.set(key, 1);
|
|
57
|
-
return await closure();
|
|
58
|
-
} finally {
|
|
59
|
-
this.map.set(key, 0);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
// src/SchemaCache.ts
|
|
65
|
-
var getSchemaNameFromSchema = (schema) => {
|
|
66
|
-
if (schema.$id) {
|
|
67
|
-
return schema.$id;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
var SchemaCache = class _SchemaCache {
|
|
71
|
-
/**
|
|
72
|
-
* Object representing `null` since LRU Cache types
|
|
73
|
-
* only allow for types that derive from object
|
|
74
|
-
*/
|
|
75
|
-
static NULL = { payload: { definition: {}, schema: import_schema_payload_plugin.SchemaSchema } };
|
|
76
|
-
static _instance;
|
|
77
|
-
onSchemaCached;
|
|
78
|
-
proxy;
|
|
79
|
-
_cache = new import_lru_cache.LRUCache({ max: 500, ttl: 1e3 * 60 * 5 });
|
|
80
|
-
_validators = {};
|
|
81
|
-
//prevents double discovery
|
|
82
|
-
getDebounce = new Debounce();
|
|
83
|
-
constructor(proxy) {
|
|
84
|
-
this.proxy = proxy;
|
|
85
|
-
}
|
|
86
|
-
static get instance() {
|
|
87
|
-
if (!this._instance) {
|
|
88
|
-
this._instance = new _SchemaCache();
|
|
89
|
-
}
|
|
90
|
-
return this._instance;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* A map of cached schema (by name) to payload validators for the schema. A schema
|
|
94
|
-
* must be cached via `get('schema.name')` before it's validator can be used as
|
|
95
|
-
* they are compiled dynamically at runtime upon retrieval.
|
|
96
|
-
*/
|
|
97
|
-
get validators() {
|
|
98
|
-
return this._validators;
|
|
99
|
-
}
|
|
100
|
-
async get(schema) {
|
|
101
|
-
if (schema) {
|
|
102
|
-
await this.getDebounce.one(schema, async () => {
|
|
103
|
-
if (this._cache.get(schema) === void 0) {
|
|
104
|
-
await this.fetchSchema(schema);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
const value = this._cache.get(schema);
|
|
108
|
-
return value === _SchemaCache.NULL ? null : value;
|
|
109
|
-
}
|
|
110
|
-
return void 0;
|
|
111
|
-
}
|
|
112
|
-
cacheSchemaIfValid(entry) {
|
|
113
|
-
var _a;
|
|
114
|
-
if (entry.payload.definition) {
|
|
115
|
-
const ajv = new import_ajv.default({ strict: false });
|
|
116
|
-
const validator = ajv.compile(entry.payload.definition);
|
|
117
|
-
const schemaName = getSchemaNameFromSchema(entry.payload.definition);
|
|
118
|
-
if (schemaName) {
|
|
119
|
-
this._cache.set(schemaName, entry);
|
|
120
|
-
const key = schemaName;
|
|
121
|
-
this._validators[key] = validator;
|
|
122
|
-
(_a = this.onSchemaCached) == null ? void 0 : _a.call(this, schemaName, entry);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
cacheSchemas(aliasEntries) {
|
|
127
|
-
aliasEntries == null ? void 0 : aliasEntries.filter((entry) => entry.payload.schema === import_schema_payload_plugin.SchemaSchema).forEach((entry) => {
|
|
128
|
-
this.cacheSchemaIfValid(entry);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
async fetchSchema(schema) {
|
|
132
|
-
var _a;
|
|
133
|
-
try {
|
|
134
|
-
const domain = await import_domain_payload_plugin.DomainPayloadWrapper.discover(schema, this.proxy);
|
|
135
|
-
await (domain == null ? void 0 : domain.fetch());
|
|
136
|
-
this.cacheSchemas(domain == null ? void 0 : domain.aliases);
|
|
137
|
-
if (this._cache.get(schema) === void 0) {
|
|
138
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
139
|
-
}
|
|
140
|
-
} catch (ex) {
|
|
141
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
142
|
-
if ((0, import_axios.isAxiosError)(ex)) {
|
|
143
|
-
console.log(`Axios Url: ${(_a = ex.response) == null ? void 0 : _a.config.url}`);
|
|
144
|
-
}
|
|
145
|
-
(0, import_error.handleError)(ex, (error) => {
|
|
146
|
-
console.error(`fetchSchema threw: ${error.message}`);
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
152
|
-
0 && (module.exports = {
|
|
153
|
-
SchemaCache
|
|
154
|
-
});
|
|
155
|
-
//# sourceMappingURL=SchemaCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaCache.ts","../../src/Debounce.ts"],"sourcesContent":["import { isAxiosError } from '@xyo-network/axios'\nimport { DomainPayloadWrapper } from '@xyo-network/domain-payload-plugin'\nimport { handleError } from '@xyo-network/error'\nimport { FetchedPayload } from '@xyo-network/huri'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport Ajv, { SchemaObject } from 'ajv'\nimport { LRUCache } from 'lru-cache'\n\nimport { Debounce } from './Debounce'\nimport { SchemaNameToValidatorMap } from './SchemaNameToValidatorMap'\n\nconst getSchemaNameFromSchema = (schema: SchemaObject) => {\n if (schema.$id) {\n return schema.$id\n }\n}\n\nexport type SchemaCacheEntry = FetchedPayload<SchemaPayload>\n\nexport class SchemaCache<T extends SchemaNameToValidatorMap = SchemaNameToValidatorMap> {\n /**\n * Object representing `null` since LRU Cache types\n * only allow for types that derive from object\n */\n protected static readonly NULL: SchemaCacheEntry = { payload: { definition: {}, schema: SchemaSchema } }\n\n private static _instance?: SchemaCache\n\n onSchemaCached?: (name: string, entry: SchemaCacheEntry) => void\n proxy?: string\n\n private _cache = new LRUCache<string, SchemaCacheEntry>({ max: 500, ttl: 1000 * 60 * 5 })\n private _validators: T = {} as T\n\n //prevents double discovery\n private getDebounce = new Debounce()\n\n private constructor(proxy?: string) {\n this.proxy = proxy\n }\n\n static get instance() {\n if (!this._instance) {\n this._instance = new SchemaCache()\n }\n return this._instance\n }\n\n /**\n * A map of cached schema (by name) to payload validators for the schema. A schema\n * must be cached via `get('schema.name')` before it's validator can be used as\n * they are compiled dynamically at runtime upon retrieval.\n */\n get validators(): T {\n return this._validators\n }\n\n async get(schema?: string): Promise<SchemaCacheEntry | undefined | null> {\n if (schema) {\n await this.getDebounce.one(schema, async () => {\n // If we've never looked for it before, it will be undefined\n if (this._cache.get(schema) === undefined) {\n await this.fetchSchema(schema)\n }\n })\n const value = this._cache.get(schema)\n return value === SchemaCache.NULL ? null : value\n }\n return undefined\n }\n\n private cacheSchemaIfValid(entry: SchemaCacheEntry) {\n //only store them if they match the schema root\n if (entry.payload.definition) {\n const ajv = new Ajv({ strict: false })\n //check if it is a valid schema def\n const validator = ajv.compile(entry.payload.definition)\n const schemaName = getSchemaNameFromSchema(entry.payload.definition)\n if (schemaName) {\n this._cache.set(schemaName, entry)\n const key = schemaName as keyof T\n this._validators[key] = validator as unknown as T[keyof T]\n this.onSchemaCached?.(schemaName, entry)\n }\n }\n }\n\n private cacheSchemas(aliasEntries?: FetchedPayload[] | null) {\n aliasEntries\n ?.filter((entry) => entry.payload.schema === SchemaSchema)\n .forEach((entry) => {\n this.cacheSchemaIfValid(entry as SchemaCacheEntry)\n })\n }\n\n private async fetchSchema(schema: string) {\n try {\n const domain = await DomainPayloadWrapper.discover(schema, this.proxy)\n await domain?.fetch()\n this.cacheSchemas(domain?.aliases)\n\n //if it is still undefined, mark it as null (not found)\n if (this._cache.get(schema) === undefined) {\n this._cache.set(schema, SchemaCache.NULL)\n }\n } catch (ex) {\n //if failed, set it to NULL, TODO: Make an entry for an error to try again in the future?\n this._cache.set(schema, SchemaCache.NULL)\n if (isAxiosError(ex)) {\n console.log(`Axios Url: ${ex.response?.config.url}`)\n }\n handleError(ex, (error) => {\n console.error(`fetchSchema threw: ${error.message}`)\n })\n }\n }\n}\n","import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":"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","names":["Ajv"]}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// src/SchemaCache.ts
|
|
2
|
-
import { isAxiosError } from "@xyo-network/axios";
|
|
3
|
-
import { DomainPayloadWrapper } from "@xyo-network/domain-payload-plugin";
|
|
4
|
-
import { handleError } from "@xyo-network/error";
|
|
5
|
-
import { SchemaSchema } from "@xyo-network/schema-payload-plugin";
|
|
6
|
-
import Ajv from "ajv";
|
|
7
|
-
import { LRUCache } from "lru-cache";
|
|
8
|
-
|
|
9
|
-
// src/Debounce.ts
|
|
10
|
-
import { delay } from "@xylabs/delay";
|
|
11
|
-
var Debounce = class {
|
|
12
|
-
map = /* @__PURE__ */ new Map();
|
|
13
|
-
async one(key, closure, timeout = 1e4) {
|
|
14
|
-
const startTime = Date.now();
|
|
15
|
-
while (this.map.get(key)) {
|
|
16
|
-
await delay(100);
|
|
17
|
-
if (Date.now() - startTime > timeout) {
|
|
18
|
-
throw Error(`Debounce timed out [${key}]`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
this.map.set(key, 1);
|
|
23
|
-
return await closure();
|
|
24
|
-
} finally {
|
|
25
|
-
this.map.set(key, 0);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// src/SchemaCache.ts
|
|
31
|
-
var getSchemaNameFromSchema = (schema) => {
|
|
32
|
-
if (schema.$id) {
|
|
33
|
-
return schema.$id;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var SchemaCache = class _SchemaCache {
|
|
37
|
-
/**
|
|
38
|
-
* Object representing `null` since LRU Cache types
|
|
39
|
-
* only allow for types that derive from object
|
|
40
|
-
*/
|
|
41
|
-
static NULL = { payload: { definition: {}, schema: SchemaSchema } };
|
|
42
|
-
static _instance;
|
|
43
|
-
onSchemaCached;
|
|
44
|
-
proxy;
|
|
45
|
-
_cache = new LRUCache({ max: 500, ttl: 1e3 * 60 * 5 });
|
|
46
|
-
_validators = {};
|
|
47
|
-
//prevents double discovery
|
|
48
|
-
getDebounce = new Debounce();
|
|
49
|
-
constructor(proxy) {
|
|
50
|
-
this.proxy = proxy;
|
|
51
|
-
}
|
|
52
|
-
static get instance() {
|
|
53
|
-
if (!this._instance) {
|
|
54
|
-
this._instance = new _SchemaCache();
|
|
55
|
-
}
|
|
56
|
-
return this._instance;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* A map of cached schema (by name) to payload validators for the schema. A schema
|
|
60
|
-
* must be cached via `get('schema.name')` before it's validator can be used as
|
|
61
|
-
* they are compiled dynamically at runtime upon retrieval.
|
|
62
|
-
*/
|
|
63
|
-
get validators() {
|
|
64
|
-
return this._validators;
|
|
65
|
-
}
|
|
66
|
-
async get(schema) {
|
|
67
|
-
if (schema) {
|
|
68
|
-
await this.getDebounce.one(schema, async () => {
|
|
69
|
-
if (this._cache.get(schema) === void 0) {
|
|
70
|
-
await this.fetchSchema(schema);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
const value = this._cache.get(schema);
|
|
74
|
-
return value === _SchemaCache.NULL ? null : value;
|
|
75
|
-
}
|
|
76
|
-
return void 0;
|
|
77
|
-
}
|
|
78
|
-
cacheSchemaIfValid(entry) {
|
|
79
|
-
var _a;
|
|
80
|
-
if (entry.payload.definition) {
|
|
81
|
-
const ajv = new Ajv({ strict: false });
|
|
82
|
-
const validator = ajv.compile(entry.payload.definition);
|
|
83
|
-
const schemaName = getSchemaNameFromSchema(entry.payload.definition);
|
|
84
|
-
if (schemaName) {
|
|
85
|
-
this._cache.set(schemaName, entry);
|
|
86
|
-
const key = schemaName;
|
|
87
|
-
this._validators[key] = validator;
|
|
88
|
-
(_a = this.onSchemaCached) == null ? void 0 : _a.call(this, schemaName, entry);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
cacheSchemas(aliasEntries) {
|
|
93
|
-
aliasEntries == null ? void 0 : aliasEntries.filter((entry) => entry.payload.schema === SchemaSchema).forEach((entry) => {
|
|
94
|
-
this.cacheSchemaIfValid(entry);
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
async fetchSchema(schema) {
|
|
98
|
-
var _a;
|
|
99
|
-
try {
|
|
100
|
-
const domain = await DomainPayloadWrapper.discover(schema, this.proxy);
|
|
101
|
-
await (domain == null ? void 0 : domain.fetch());
|
|
102
|
-
this.cacheSchemas(domain == null ? void 0 : domain.aliases);
|
|
103
|
-
if (this._cache.get(schema) === void 0) {
|
|
104
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
105
|
-
}
|
|
106
|
-
} catch (ex) {
|
|
107
|
-
this._cache.set(schema, _SchemaCache.NULL);
|
|
108
|
-
if (isAxiosError(ex)) {
|
|
109
|
-
console.log(`Axios Url: ${(_a = ex.response) == null ? void 0 : _a.config.url}`);
|
|
110
|
-
}
|
|
111
|
-
handleError(ex, (error) => {
|
|
112
|
-
console.error(`fetchSchema threw: ${error.message}`);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
export {
|
|
118
|
-
SchemaCache
|
|
119
|
-
};
|
|
120
|
-
//# sourceMappingURL=SchemaCache.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaCache.ts","../../src/Debounce.ts"],"sourcesContent":["import { isAxiosError } from '@xyo-network/axios'\nimport { DomainPayloadWrapper } from '@xyo-network/domain-payload-plugin'\nimport { handleError } from '@xyo-network/error'\nimport { FetchedPayload } from '@xyo-network/huri'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport Ajv, { SchemaObject } from 'ajv'\nimport { LRUCache } from 'lru-cache'\n\nimport { Debounce } from './Debounce'\nimport { SchemaNameToValidatorMap } from './SchemaNameToValidatorMap'\n\nconst getSchemaNameFromSchema = (schema: SchemaObject) => {\n if (schema.$id) {\n return schema.$id\n }\n}\n\nexport type SchemaCacheEntry = FetchedPayload<SchemaPayload>\n\nexport class SchemaCache<T extends SchemaNameToValidatorMap = SchemaNameToValidatorMap> {\n /**\n * Object representing `null` since LRU Cache types\n * only allow for types that derive from object\n */\n protected static readonly NULL: SchemaCacheEntry = { payload: { definition: {}, schema: SchemaSchema } }\n\n private static _instance?: SchemaCache\n\n onSchemaCached?: (name: string, entry: SchemaCacheEntry) => void\n proxy?: string\n\n private _cache = new LRUCache<string, SchemaCacheEntry>({ max: 500, ttl: 1000 * 60 * 5 })\n private _validators: T = {} as T\n\n //prevents double discovery\n private getDebounce = new Debounce()\n\n private constructor(proxy?: string) {\n this.proxy = proxy\n }\n\n static get instance() {\n if (!this._instance) {\n this._instance = new SchemaCache()\n }\n return this._instance\n }\n\n /**\n * A map of cached schema (by name) to payload validators for the schema. A schema\n * must be cached via `get('schema.name')` before it's validator can be used as\n * they are compiled dynamically at runtime upon retrieval.\n */\n get validators(): T {\n return this._validators\n }\n\n async get(schema?: string): Promise<SchemaCacheEntry | undefined | null> {\n if (schema) {\n await this.getDebounce.one(schema, async () => {\n // If we've never looked for it before, it will be undefined\n if (this._cache.get(schema) === undefined) {\n await this.fetchSchema(schema)\n }\n })\n const value = this._cache.get(schema)\n return value === SchemaCache.NULL ? null : value\n }\n return undefined\n }\n\n private cacheSchemaIfValid(entry: SchemaCacheEntry) {\n //only store them if they match the schema root\n if (entry.payload.definition) {\n const ajv = new Ajv({ strict: false })\n //check if it is a valid schema def\n const validator = ajv.compile(entry.payload.definition)\n const schemaName = getSchemaNameFromSchema(entry.payload.definition)\n if (schemaName) {\n this._cache.set(schemaName, entry)\n const key = schemaName as keyof T\n this._validators[key] = validator as unknown as T[keyof T]\n this.onSchemaCached?.(schemaName, entry)\n }\n }\n }\n\n private cacheSchemas(aliasEntries?: FetchedPayload[] | null) {\n aliasEntries\n ?.filter((entry) => entry.payload.schema === SchemaSchema)\n .forEach((entry) => {\n this.cacheSchemaIfValid(entry as SchemaCacheEntry)\n })\n }\n\n private async fetchSchema(schema: string) {\n try {\n const domain = await DomainPayloadWrapper.discover(schema, this.proxy)\n await domain?.fetch()\n this.cacheSchemas(domain?.aliases)\n\n //if it is still undefined, mark it as null (not found)\n if (this._cache.get(schema) === undefined) {\n this._cache.set(schema, SchemaCache.NULL)\n }\n } catch (ex) {\n //if failed, set it to NULL, TODO: Make an entry for an error to try again in the future?\n this._cache.set(schema, SchemaCache.NULL)\n if (isAxiosError(ex)) {\n console.log(`Axios Url: ${ex.response?.config.url}`)\n }\n handleError(ex, (error) => {\n console.error(`fetchSchema threw: ${error.message}`)\n })\n }\n }\n}\n","import { delay } from '@xylabs/delay'\n\nexport class Debounce<TKey = string> {\n private map = new Map<TKey, number>()\n\n async one<T>(key: TKey, closure: () => Promise<T>, timeout = 10000) {\n const startTime = Date.now()\n while (this.map.get(key)) {\n await delay(100)\n if (Date.now() - startTime > timeout) {\n throw Error(`Debounce timed out [${key}]`)\n }\n }\n try {\n this.map.set(key, 1)\n return await closure()\n } finally {\n this.map.set(key, 0)\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// src/SchemaNameToValidatorMap.ts
|
|
17
|
-
var SchemaNameToValidatorMap_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(SchemaNameToValidatorMap_exports);
|
|
19
|
-
//# sourceMappingURL=SchemaNameToValidatorMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/SchemaNameToValidatorMap.ts"],"sourcesContent":["import { DomainPayload, DomainSchema } from '@xyo-network/domain-payload-plugin'\nimport { Payload, PayloadSchema } from '@xyo-network/payload-model'\nimport { SchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\n/**\n * Used in conjunction with schema validation to support compile time type assertion\n * for known schema types.\n */\nexport type NarrowPayload<T extends Payload = Payload> = ((x: Payload) => x is T) | undefined\n\n/**\n * Used to map known schemas (byt their string name) to the validators which assert their types\n */\nexport interface SchemaNameToValidatorMap {\n [DomainSchema]: NarrowPayload<DomainPayload>\n [PayloadSchema]: NarrowPayload<Payload>\n [SchemaSchema]: NarrowPayload<SchemaPayload>\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=SchemaNameToValidatorMap.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|