@bitblit/ratchet-common 4.0.129-alpha → 4.0.130-alpha

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 (218) hide show
  1. package/lib/2d/line-2d.js +2 -0
  2. package/lib/2d/line-2d.js.map +1 -0
  3. package/lib/2d/plane-2d.js +2 -0
  4. package/lib/2d/plane-2d.js.map +1 -0
  5. package/lib/2d/point-2d.js +2 -0
  6. package/lib/2d/point-2d.js.map +1 -0
  7. package/lib/2d/poly-line-2d.js +2 -0
  8. package/lib/2d/poly-line-2d.js.map +1 -0
  9. package/lib/2d/ratchet-2d.js +246 -0
  10. package/lib/2d/ratchet-2d.js.map +1 -0
  11. package/lib/2d/ratchet-2d.spec.js +118 -0
  12. package/lib/2d/ratchet-2d.spec.js.map +1 -0
  13. package/lib/build/build-information.js +2 -0
  14. package/lib/build/build-information.js.map +1 -0
  15. package/lib/build/ratchet-common-info.js +15 -0
  16. package/lib/build/ratchet-common-info.js.map +1 -0
  17. package/lib/histogram/histogram-entry.js +2 -0
  18. package/lib/histogram/histogram-entry.js.map +1 -0
  19. package/lib/histogram/histogram.js +49 -0
  20. package/lib/histogram/histogram.js.map +1 -0
  21. package/lib/histogram/histogram.spec.js +20 -0
  22. package/lib/histogram/histogram.spec.js.map +1 -0
  23. package/lib/index.js +74 -0
  24. package/lib/index.js.map +1 -0
  25. package/lib/jwt/common-jwt-token.js +2 -0
  26. package/lib/jwt/common-jwt-token.js.map +1 -0
  27. package/lib/jwt/expired-jwt-handling.js +7 -0
  28. package/lib/jwt/expired-jwt-handling.js.map +1 -0
  29. package/lib/jwt/jwt-ratchet-like.js +2 -0
  30. package/lib/jwt/jwt-ratchet-like.js.map +1 -0
  31. package/lib/jwt/jwt-ratchet.js +166 -0
  32. package/lib/jwt/jwt-ratchet.js.map +1 -0
  33. package/lib/jwt/jwt-ratchet.spec.js +50 -0
  34. package/lib/jwt/jwt-ratchet.spec.js.map +1 -0
  35. package/lib/jwt/jwt-token-base.js +2 -0
  36. package/lib/jwt/jwt-token-base.js.map +1 -0
  37. package/lib/lang/array-ratchet.js +84 -0
  38. package/lib/lang/array-ratchet.js.map +1 -0
  39. package/lib/lang/array-ratchet.spec.js +69 -0
  40. package/lib/lang/array-ratchet.spec.js.map +1 -0
  41. package/lib/lang/base64-ratchet.d.ts +1 -1
  42. package/lib/lang/base64-ratchet.js +46 -0
  43. package/lib/lang/base64-ratchet.js.map +1 -0
  44. package/lib/lang/base64-ratchet.spec.js +29 -0
  45. package/lib/lang/base64-ratchet.spec.js.map +1 -0
  46. package/lib/lang/boolean-ratchet.js +46 -0
  47. package/lib/lang/boolean-ratchet.js.map +1 -0
  48. package/lib/lang/boolean-ratchet.spec.js +82 -0
  49. package/lib/lang/boolean-ratchet.spec.js.map +1 -0
  50. package/lib/lang/composite-last-success-provider.js +27 -0
  51. package/lib/lang/composite-last-success-provider.js.map +1 -0
  52. package/lib/lang/composite-last-success-provider.spec.js +27 -0
  53. package/lib/lang/composite-last-success-provider.spec.js.map +1 -0
  54. package/lib/lang/date-ratchet.js +31 -0
  55. package/lib/lang/date-ratchet.js.map +1 -0
  56. package/lib/lang/date-ratchet.spec.js +22 -0
  57. package/lib/lang/date-ratchet.spec.js.map +1 -0
  58. package/lib/lang/duration-ratchet.js +43 -0
  59. package/lib/lang/duration-ratchet.js.map +1 -0
  60. package/lib/lang/duration-ratchet.spec.js +40 -0
  61. package/lib/lang/duration-ratchet.spec.js.map +1 -0
  62. package/lib/lang/enum-ratchet.js +31 -0
  63. package/lib/lang/enum-ratchet.js.map +1 -0
  64. package/lib/lang/enum-ratchet.spec.js +32 -0
  65. package/lib/lang/enum-ratchet.spec.js.map +1 -0
  66. package/lib/lang/error-ratchet.js +45 -0
  67. package/lib/lang/error-ratchet.js.map +1 -0
  68. package/lib/lang/error-ratchet.spec.js +21 -0
  69. package/lib/lang/error-ratchet.spec.js.map +1 -0
  70. package/lib/lang/esm-ratchet.js +18 -0
  71. package/lib/lang/esm-ratchet.js.map +1 -0
  72. package/lib/lang/expiring-object.js +73 -0
  73. package/lib/lang/expiring-object.js.map +1 -0
  74. package/lib/lang/expiring-object.spec.js +52 -0
  75. package/lib/lang/expiring-object.spec.js.map +1 -0
  76. package/lib/lang/geolocation-ratchet.js +264 -0
  77. package/lib/lang/geolocation-ratchet.js.map +1 -0
  78. package/lib/lang/geolocation-ratchet.spec.js +75 -0
  79. package/lib/lang/geolocation-ratchet.spec.js.map +1 -0
  80. package/lib/lang/global-ratchet.js +44 -0
  81. package/lib/lang/global-ratchet.js.map +1 -0
  82. package/lib/lang/global-ratchet.spec.js +15 -0
  83. package/lib/lang/global-ratchet.spec.js.map +1 -0
  84. package/lib/lang/key-value.js +5 -0
  85. package/lib/lang/key-value.js.map +1 -0
  86. package/lib/lang/last-success-provider.js +2 -0
  87. package/lib/lang/last-success-provider.js.map +1 -0
  88. package/lib/lang/map-ratchet.js +165 -0
  89. package/lib/lang/map-ratchet.js.map +1 -0
  90. package/lib/lang/map-ratchet.spec.js +91 -0
  91. package/lib/lang/map-ratchet.spec.js.map +1 -0
  92. package/lib/lang/no.js +5 -0
  93. package/lib/lang/no.js.map +1 -0
  94. package/lib/lang/no.spec.js +8 -0
  95. package/lib/lang/no.spec.js.map +1 -0
  96. package/lib/lang/number-ratchet.js +157 -0
  97. package/lib/lang/number-ratchet.js.map +1 -0
  98. package/lib/lang/number-ratchet.spec.js +119 -0
  99. package/lib/lang/number-ratchet.spec.js.map +1 -0
  100. package/lib/lang/parsed-url.js +2 -0
  101. package/lib/lang/parsed-url.js.map +1 -0
  102. package/lib/lang/promise-ratchet.js +139 -0
  103. package/lib/lang/promise-ratchet.js.map +1 -0
  104. package/lib/lang/promise-ratchet.spec.js +75 -0
  105. package/lib/lang/promise-ratchet.spec.js.map +1 -0
  106. package/lib/lang/require-ratchet.js +56 -0
  107. package/lib/lang/require-ratchet.js.map +1 -0
  108. package/lib/lang/require-ratchet.spec.js +81 -0
  109. package/lib/lang/require-ratchet.spec.js.map +1 -0
  110. package/lib/lang/stop-watch.js +115 -0
  111. package/lib/lang/stop-watch.js.map +1 -0
  112. package/lib/lang/string-ratchet.js +203 -0
  113. package/lib/lang/string-ratchet.js.map +1 -0
  114. package/lib/lang/string-ratchet.spec.js +159 -0
  115. package/lib/lang/string-ratchet.spec.js.map +1 -0
  116. package/lib/lang/time-zone-ratchet.js +79 -0
  117. package/lib/lang/time-zone-ratchet.js.map +1 -0
  118. package/lib/lang/time-zone-ratchet.spec.js +41 -0
  119. package/lib/lang/time-zone-ratchet.spec.js.map +1 -0
  120. package/lib/lang/timeout-token.js +18 -0
  121. package/lib/lang/timeout-token.js.map +1 -0
  122. package/lib/lang/timeout-token.spec.js +10 -0
  123. package/lib/lang/timeout-token.spec.js.map +1 -0
  124. package/lib/lang/transform-ratchet.js +67 -0
  125. package/lib/lang/transform-ratchet.js.map +1 -0
  126. package/lib/lang/transform-ratchet.spec.js +119 -0
  127. package/lib/lang/transform-ratchet.spec.js.map +1 -0
  128. package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
  129. package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
  130. package/lib/logger/log-message-builder.js +49 -0
  131. package/lib/logger/log-message-builder.js.map +1 -0
  132. package/lib/logger/log-message-format-type.js +7 -0
  133. package/lib/logger/log-message-format-type.js.map +1 -0
  134. package/lib/logger/log-message-formatter.js +2 -0
  135. package/lib/logger/log-message-formatter.js.map +1 -0
  136. package/lib/logger/log-message-processor.js +2 -0
  137. package/lib/logger/log-message-processor.js.map +1 -0
  138. package/lib/logger/log-message.js +2 -0
  139. package/lib/logger/log-message.js.map +1 -0
  140. package/lib/logger/log-snapshot.js +2 -0
  141. package/lib/logger/log-snapshot.js.map +1 -0
  142. package/lib/logger/logger-instance.js +209 -0
  143. package/lib/logger/logger-instance.js.map +1 -0
  144. package/lib/logger/logger-level-name.js +10 -0
  145. package/lib/logger/logger-level-name.js.map +1 -0
  146. package/lib/logger/logger-meta.js +2 -0
  147. package/lib/logger/logger-meta.js.map +1 -0
  148. package/lib/logger/logger-options.js +2 -0
  149. package/lib/logger/logger-options.js.map +1 -0
  150. package/lib/logger/logger-output-function.js +7 -0
  151. package/lib/logger/logger-output-function.js.map +1 -0
  152. package/lib/logger/logger-ring-buffer.js +72 -0
  153. package/lib/logger/logger-ring-buffer.js.map +1 -0
  154. package/lib/logger/logger-util.js +46 -0
  155. package/lib/logger/logger-util.js.map +1 -0
  156. package/lib/logger/logger-util.spec.js +10 -0
  157. package/lib/logger/logger-util.spec.js.map +1 -0
  158. package/lib/logger/logger.js +136 -0
  159. package/lib/logger/logger.js.map +1 -0
  160. package/lib/logger/logger.spec.js +135 -0
  161. package/lib/logger/logger.spec.js.map +1 -0
  162. package/lib/logger/none-log-message-formatter.js +6 -0
  163. package/lib/logger/none-log-message-formatter.js.map +1 -0
  164. package/lib/logger/structured-json-log-message-formatter.js +20 -0
  165. package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
  166. package/lib/network/browser-local-ip-provider.js +22 -0
  167. package/lib/network/browser-local-ip-provider.js.map +1 -0
  168. package/lib/network/browser-local-ip-provider.spec.js +17 -0
  169. package/lib/network/browser-local-ip-provider.spec.js.map +1 -0
  170. package/lib/network/fixed-local-ip-provider.js +10 -0
  171. package/lib/network/fixed-local-ip-provider.js.map +1 -0
  172. package/lib/network/local-ip-provider.js +2 -0
  173. package/lib/network/local-ip-provider.js.map +1 -0
  174. package/lib/network/network-ratchet.js +104 -0
  175. package/lib/network/network-ratchet.js.map +1 -0
  176. package/lib/network/network-ratchet.spec.js +14 -0
  177. package/lib/network/network-ratchet.spec.js.map +1 -0
  178. package/lib/stream/buffer-writable.d.ts +2 -2
  179. package/lib/stream/buffer-writable.js +17 -0
  180. package/lib/stream/buffer-writable.js.map +1 -0
  181. package/lib/stream/multi-stream.d.ts +1 -1
  182. package/lib/stream/multi-stream.js +13 -0
  183. package/lib/stream/multi-stream.js.map +1 -0
  184. package/lib/stream/stream-ratchet.d.ts +2 -2
  185. package/lib/stream/stream-ratchet.js +69 -0
  186. package/lib/stream/stream-ratchet.js.map +1 -0
  187. package/lib/stream/stream-ratchet.spec.js +14 -0
  188. package/lib/stream/stream-ratchet.spec.js.map +1 -0
  189. package/lib/stream/string-writable.d.ts +1 -1
  190. package/lib/stream/string-writable.js +15 -0
  191. package/lib/stream/string-writable.js.map +1 -0
  192. package/lib/stream/string-writable.spec.js +13 -0
  193. package/lib/stream/string-writable.spec.js.map +1 -0
  194. package/lib/third-party/google/google-recaptcha-ratchet.js +30 -0
  195. package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
  196. package/lib/third-party/google/google-recaptcha-ratchet.spec.js +21 -0
  197. package/lib/third-party/google/google-recaptcha-ratchet.spec.js.map +1 -0
  198. package/lib/third-party/twilio/twilio-ratchet.js +75 -0
  199. package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
  200. package/lib/transform/built-in-transforms.js +192 -0
  201. package/lib/transform/built-in-transforms.js.map +1 -0
  202. package/lib/transform/transform-rule.js +2 -0
  203. package/lib/transform/transform-rule.js.map +1 -0
  204. package/lib/tx/transaction-configuration.js +2 -0
  205. package/lib/tx/transaction-configuration.js.map +1 -0
  206. package/lib/tx/transaction-final-state.js +7 -0
  207. package/lib/tx/transaction-final-state.js.map +1 -0
  208. package/lib/tx/transaction-ratchet.js +77 -0
  209. package/lib/tx/transaction-ratchet.js.map +1 -0
  210. package/lib/tx/transaction-ratchet.spec.js +131 -0
  211. package/lib/tx/transaction-ratchet.spec.js.map +1 -0
  212. package/lib/tx/transaction-result.js +2 -0
  213. package/lib/tx/transaction-result.js.map +1 -0
  214. package/lib/tx/transaction-step.js +2 -0
  215. package/lib/tx/transaction-step.js.map +1 -0
  216. package/package.json +3 -2
  217. package/lib/index.mjs +0 -2
  218. package/lib/index.mjs.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=line-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-2d.js","sourceRoot":"","sources":["../../src/2d/line-2d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plane-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plane-2d.js","sourceRoot":"","sources":["../../src/2d/plane-2d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=point-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-2d.js","sourceRoot":"","sources":["../../src/2d/point-2d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=poly-line-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poly-line-2d.js","sourceRoot":"","sources":["../../src/2d/poly-line-2d.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { BooleanRatchet } from '../lang/boolean-ratchet.js';
2
+ export class Ratchet2d {
3
+ constructor() { }
4
+ static translateToOriginVector(points) {
5
+ let rval = null;
6
+ if (Ratchet2d.validPoints(points)) {
7
+ rval = {
8
+ x: null,
9
+ y: null,
10
+ };
11
+ points.forEach((p) => {
12
+ rval.x = rval.x === null || p.x < rval.x ? p.x : rval.x;
13
+ rval.y = rval.y === null || p.y < rval.y ? p.y : rval.y;
14
+ });
15
+ rval.x *= -1;
16
+ rval.y *= -1;
17
+ }
18
+ return rval;
19
+ }
20
+ static minimalContainingPlane(points) {
21
+ let rval = null;
22
+ if (Ratchet2d.validPoints(points)) {
23
+ rval = {
24
+ width: 0,
25
+ height: 0,
26
+ };
27
+ points.forEach((p) => {
28
+ rval.width = Math.max(rval.width, p.x + 1);
29
+ rval.height = Math.max(rval.height, p.y + 1);
30
+ });
31
+ }
32
+ return rval;
33
+ }
34
+ static scaleVector(src, dst) {
35
+ let rval = null;
36
+ if (Ratchet2d.validPlane(src) && Ratchet2d.validPlane(dst)) {
37
+ rval = {
38
+ x: dst.width / src.width,
39
+ y: dst.height / src.height,
40
+ };
41
+ }
42
+ return rval;
43
+ }
44
+ static samePoint(p1, p2) {
45
+ return !!p1 && !!p2 && p1.x === p2.x && p1.y === p2.y;
46
+ }
47
+ static atLeastOneDimensionShared(p1, p2) {
48
+ return !!p1 && !!p2 && (p1.x === p2.x || p1.y === p2.y);
49
+ }
50
+ static validPlane(plane) {
51
+ return !!plane && !!plane.height && !!plane.width;
52
+ }
53
+ static validLine(line) {
54
+ return !!line && Ratchet2d.validPoint(line.p1) && Ratchet2d.validPoint(line.p2) && !Ratchet2d.samePoint(line.p1, line.p2);
55
+ }
56
+ static validLines(lines) {
57
+ return !!lines && BooleanRatchet.allTrue(lines.map((l) => Ratchet2d.validLine(l)));
58
+ }
59
+ static validPolyLine(pline) {
60
+ return !!pline && pline.pts?.length > 1 && BooleanRatchet.allTrue(pline.pts.map((p) => Ratchet2d.validPoint(p)));
61
+ }
62
+ static polyLineToLines(pline) {
63
+ let rval = null;
64
+ if (Ratchet2d.validPolyLine(pline)) {
65
+ rval = [];
66
+ for (let i = 1; i < pline.pts.length; i++) {
67
+ rval.push({ p1: pline.pts[i - 1], p2: pline.pts[i] });
68
+ }
69
+ }
70
+ return rval;
71
+ }
72
+ static lastPointOnPolyLine(polyLine) {
73
+ return Ratchet2d.validPolyLine(polyLine) ? polyLine.pts[polyLine.pts.length - 1] : null;
74
+ }
75
+ static lineToPolyLine(line) {
76
+ return Ratchet2d.validLine(line) ? { pts: [line.p1, line.p2] } : null;
77
+ }
78
+ static linesToPolyLines(lines) {
79
+ let rval = null;
80
+ if (Ratchet2d.validLines(lines)) {
81
+ rval = [];
82
+ let currentPLine = Ratchet2d.lineToPolyLine(lines[0]);
83
+ for (let i = 1; i < lines.length; i++) {
84
+ if (Ratchet2d.samePoint(Ratchet2d.lastPointOnPolyLine(currentPLine), lines[i].p1)) {
85
+ currentPLine.pts.push(lines[i].p2);
86
+ }
87
+ else {
88
+ rval.push(currentPLine);
89
+ currentPLine = Ratchet2d.lineToPolyLine(lines[i]);
90
+ }
91
+ }
92
+ rval.push(currentPLine);
93
+ }
94
+ return rval;
95
+ }
96
+ static validPoint(pt) {
97
+ return !!pt && pt.x != null && pt.x != undefined && pt.y !== null && pt.y !== undefined;
98
+ }
99
+ static validPoints(pt) {
100
+ return (!!pt &&
101
+ BooleanRatchet.allTrue(pt.map((p) => Ratchet2d.validPoint(p)), false));
102
+ }
103
+ static planeContainsPoint(pt, plane) {
104
+ return Ratchet2d.validPlane(plane) && Ratchet2d.validPoint(pt) && pt.x >= 0 && pt.x < plane.width && pt.y >= 0 && pt.y < plane.height;
105
+ }
106
+ static planeContainsPoints(pt, plane) {
107
+ return pt && pt.map((p) => Ratchet2d.planeContainsPoint(p, plane)).reduce((a, i) => a && i, true);
108
+ }
109
+ static linesToPoints(lines) {
110
+ let rval = null;
111
+ if (Ratchet2d.validLines(lines)) {
112
+ rval = lines.map((l) => [l.p1, l.p2]).flat();
113
+ }
114
+ return rval;
115
+ }
116
+ static pointsToLines(points) {
117
+ let rval = null;
118
+ if (Ratchet2d.validPoints(points)) {
119
+ if (points.length % 2 == 0) {
120
+ rval = [];
121
+ for (let i = 0; i < points.length; i += 2) {
122
+ rval.push({ p1: points[i], p2: points[i + 1] });
123
+ }
124
+ }
125
+ else {
126
+ throw new Error('Cannot convert non-even array of points into lines');
127
+ }
128
+ }
129
+ return rval;
130
+ }
131
+ static rotateRightAboutOrigin90Degrees(points, times = 1) {
132
+ let rval = null;
133
+ let translate = { x: 0, y: 0 };
134
+ if (Ratchet2d.validPoints(points)) {
135
+ rval = Object.assign([], points);
136
+ translate = Ratchet2d.translateToOriginVector(rval);
137
+ rval = Ratchet2d.translate(rval, translate);
138
+ let plane = Ratchet2d.minimalContainingPlane(rval);
139
+ rval = Ratchet2d.xToY(rval);
140
+ plane = { width: plane.height, height: plane.width };
141
+ translate = { x: translate.y * -1, y: translate.x * -1 };
142
+ rval = Ratchet2d.mirrorPointsOnPlane(rval, plane, true, false);
143
+ rval = Ratchet2d.translate(rval, translate);
144
+ }
145
+ const timesToRotate = times > 4 ? times % 4 : times;
146
+ if (timesToRotate > 1) {
147
+ rval = Ratchet2d.rotateRightAboutOrigin90Degrees(rval, timesToRotate - 1);
148
+ }
149
+ return rval;
150
+ }
151
+ static planeContainsLines(lines, plane) {
152
+ return lines && Ratchet2d.planeContainsPoints(lines.map((l) => [l.p1, l.p2]).flat(), plane);
153
+ }
154
+ static planeContainsPolyLine(pline, plane) {
155
+ return Ratchet2d.planeContainsLines(Ratchet2d.polyLineToLines(pline), plane);
156
+ }
157
+ static planeContainsLine(line, plane) {
158
+ return (Ratchet2d.validPlane(plane) &&
159
+ Ratchet2d.validLine(line) &&
160
+ Ratchet2d.planeContainsPoint(line.p1, plane) &&
161
+ Ratchet2d.planeContainsPoint(line.p2, plane));
162
+ }
163
+ static xToY(points) {
164
+ let rval = null;
165
+ if (Ratchet2d.validPoints(points)) {
166
+ rval = points.map((p) => {
167
+ const next = { x: p.y, y: p.x };
168
+ return next;
169
+ });
170
+ }
171
+ return rval;
172
+ }
173
+ static translate(points, xlate) {
174
+ let rval = null;
175
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPoint(xlate)) {
176
+ rval = points.map((p) => {
177
+ const next = {
178
+ x: p.x + xlate.x,
179
+ y: p.y + xlate.y,
180
+ };
181
+ return next;
182
+ });
183
+ }
184
+ return rval;
185
+ }
186
+ static mirrorPointsOnPlane(points, src, mirrorX, mirrorY) {
187
+ let rval = null;
188
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPlane(src)) {
189
+ if (mirrorX || mirrorY) {
190
+ rval = points.map((p) => {
191
+ const next = {
192
+ x: mirrorX ? src.width - 1 - p.x : p.x,
193
+ y: mirrorY ? src.height - 1 - p.y : p.y,
194
+ };
195
+ return next;
196
+ });
197
+ }
198
+ else {
199
+ rval = Object.assign([], points);
200
+ }
201
+ }
202
+ return rval;
203
+ }
204
+ static transformPointsToNewPlane(points, src, dst) {
205
+ let rval = null;
206
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPlane(src) && Ratchet2d.validPlane(dst)) {
207
+ const scale = Ratchet2d.scaleVector(src, dst);
208
+ rval = points.map((p) => {
209
+ const next = { x: p.x * scale.x, y: p.y * scale.y };
210
+ return next;
211
+ });
212
+ rval = Ratchet2d.mirrorPointsOnPlane(rval, dst, dst.rightToLeft !== src.rightToLeft, dst.topToBottom !== src.topToBottom);
213
+ }
214
+ return rval;
215
+ }
216
+ static transformPointToNewPlane(point, src, dst) {
217
+ const tmp = Ratchet2d.transformPointsToNewPlane([point], src, dst);
218
+ return tmp.length === 1 ? tmp[0] : null;
219
+ }
220
+ static transformLines(lines, src, dst) {
221
+ return null;
222
+ }
223
+ static fitCurve(curveDef, inputX) {
224
+ curveDef.sort((a, b) => {
225
+ return a.x - b.x;
226
+ });
227
+ if (inputX <= curveDef[0].x) {
228
+ return curveDef[0].y;
229
+ }
230
+ else if (inputX >= curveDef[curveDef.length - 1].x) {
231
+ return curveDef[curveDef.length - 1].y;
232
+ }
233
+ else {
234
+ let idx = 0;
235
+ while (curveDef[idx + 1].x < inputX) {
236
+ idx++;
237
+ }
238
+ const xSpread = curveDef[idx + 1].x - curveDef[idx].x;
239
+ const ySpread = curveDef[idx + 1].y - curveDef[idx].y;
240
+ const pct = (inputX - curveDef[idx].x) / xSpread;
241
+ const yAdd = pct * ySpread;
242
+ return curveDef[idx].y + yAdd;
243
+ }
244
+ }
245
+ }
246
+ //# sourceMappingURL=ratchet-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratchet-2d.js","sourceRoot":"","sources":["../../src/2d/ratchet-2d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { Ratchet2d } from './ratchet-2d.js';
2
+ describe('#ratchet2d', function () {
3
+ it('should check for valid planes', function () {
4
+ expect(Ratchet2d.validPlane(null)).toEqual(false);
5
+ expect(Ratchet2d.validPlane({ width: null, height: null })).toEqual(false);
6
+ expect(Ratchet2d.validPlane({ width: 0, height: null })).toEqual(false);
7
+ expect(Ratchet2d.validPlane({ width: 0, height: 2 })).toEqual(false);
8
+ expect(Ratchet2d.validPlane({ width: 1, height: 7 })).toEqual(true);
9
+ });
10
+ it('should check for valid lines', function () {
11
+ expect(Ratchet2d.validLine(null)).toEqual(false);
12
+ expect(Ratchet2d.validLine({ p1: null, p2: null })).toEqual(false);
13
+ expect(Ratchet2d.validLine({ p1: { x: null, y: 0 }, p2: null })).toEqual(false);
14
+ expect(Ratchet2d.validLine({ p1: { x: 0, y: 0 }, p2: { x: 27, y: null } })).toEqual(false);
15
+ expect(Ratchet2d.validLine({ p1: { x: 0, y: 0 }, p2: { x: 27, y: 0 } })).toEqual(true);
16
+ expect(Ratchet2d.validLine({ p1: { x: 1, y: 0 }, p2: { x: 1, y: 0 } })).toEqual(false);
17
+ expect(Ratchet2d.validLine({ p1: { x: 0, y: 0 }, p2: { x: 27, y: 13 } })).toEqual(true);
18
+ });
19
+ it('should transform points from one plane to another (scale)', function () {
20
+ const plane1 = { height: 10, width: 10 };
21
+ const plane2 = { height: 100, width: 50 };
22
+ const p1 = { x: 5, y: 5 };
23
+ const out1 = Ratchet2d.transformPointToNewPlane(p1, plane1, plane2);
24
+ const out2 = Ratchet2d.transformPointToNewPlane(out1, plane2, plane1);
25
+ expect(out1.x).toEqual(25);
26
+ expect(out1.y).toEqual(50);
27
+ expect(out2.x).toEqual(p1.x);
28
+ expect(out2.y).toEqual(p1.y);
29
+ });
30
+ it('should transform points from one plane to another (mirror)', function () {
31
+ const plane1 = { height: 10, width: 10 };
32
+ const plane2 = { height: 10, width: 10, rightToLeft: true, topToBottom: true };
33
+ const p1 = { x: 2, y: 8 };
34
+ const out1 = Ratchet2d.transformPointToNewPlane(p1, plane1, plane2);
35
+ const out2 = Ratchet2d.transformPointToNewPlane(out1, plane2, plane1);
36
+ expect(out1.x).toEqual(7);
37
+ expect(out1.y).toEqual(1);
38
+ expect(out2.x).toEqual(p1.x);
39
+ expect(out2.y).toEqual(p1.y);
40
+ });
41
+ it('should check for containment', function () {
42
+ const plane = {
43
+ width: 100,
44
+ height: 100,
45
+ };
46
+ expect(Ratchet2d.planeContainsPoint({ x: -1, y: 10 }, plane)).toEqual(false);
47
+ expect(Ratchet2d.planeContainsPoint({ x: 101, y: 10 }, plane)).toEqual(false);
48
+ expect(Ratchet2d.planeContainsPoint({ x: 1, y: -10 }, plane)).toEqual(false);
49
+ expect(Ratchet2d.planeContainsPoint({ x: 10, y: 101 }, plane)).toEqual(false);
50
+ expect(Ratchet2d.planeContainsPoint({ x: 10, y: 100 }, plane)).toEqual(false);
51
+ expect(Ratchet2d.planeContainsPoint({ x: 1, y: 10 }, plane)).toEqual(true);
52
+ expect(Ratchet2d.planeContainsPoint({ x: 10, y: 10 }, plane)).toEqual(true);
53
+ expect(Ratchet2d.planeContainsPoints([
54
+ { x: 10, y: 10 },
55
+ { x: 100, y: 10 },
56
+ ], plane)).toEqual(false);
57
+ expect(Ratchet2d.planeContainsPoints([
58
+ { x: 10, y: 10 },
59
+ { x: 11, y: 10 },
60
+ ], plane)).toEqual(true);
61
+ expect(Ratchet2d.planeContainsLine({
62
+ p1: { x: 10, y: 10 },
63
+ p2: { x: 100, y: 10 },
64
+ }, plane)).toEqual(false);
65
+ expect(Ratchet2d.planeContainsLine({
66
+ p1: { x: 10, y: 10 },
67
+ p2: { x: 11, y: 10 },
68
+ }, plane)).toEqual(true);
69
+ });
70
+ it('should fit input to curve', function () {
71
+ const curve = [
72
+ { x: 0, y: 50 },
73
+ { x: 0.5, y: 50 },
74
+ { x: 0.8, y: 60 },
75
+ { x: 1, y: 70 },
76
+ { x: 1.2, y: 80 },
77
+ { x: 1.5, y: 90 },
78
+ { x: 1.6, y: 91 },
79
+ { x: 1.7, y: 92 },
80
+ { x: 1.8, y: 93 },
81
+ { x: 1.9, y: 94 },
82
+ { x: 2, y: 95 },
83
+ {
84
+ x: 3,
85
+ y: 98,
86
+ },
87
+ { x: 4, y: 99 },
88
+ { x: 5, y: 100 },
89
+ ];
90
+ expect(Ratchet2d.fitCurve(curve, -1)).toEqual(50);
91
+ expect(Ratchet2d.fitCurve(curve, 0)).toEqual(50);
92
+ expect(Ratchet2d.fitCurve(curve, 0.3)).toEqual(50);
93
+ expect(Ratchet2d.fitCurve(curve, 0.5)).toEqual(50);
94
+ expect(Ratchet2d.fitCurve(curve, 0.8)).toEqual(60);
95
+ expect(Ratchet2d.fitCurve(curve, 1)).toEqual(70);
96
+ expect(Ratchet2d.fitCurve(curve, 5)).toEqual(100);
97
+ expect(Ratchet2d.fitCurve(curve, 6)).toEqual(100);
98
+ expect(Ratchet2d.fitCurve(curve, 1.65)).toEqual(91.5);
99
+ });
100
+ it('rotate about origin', function () {
101
+ const points = [
102
+ { x: 1, y: 0 },
103
+ { x: 2, y: 1 },
104
+ { x: 3, y: 2 },
105
+ { x: 4, y: 3 },
106
+ { x: 4, y: 1 },
107
+ { x: 6, y: 1 },
108
+ ];
109
+ const r1 = Ratchet2d.rotateRightAboutOrigin90Degrees(points);
110
+ expect(r1.length).toEqual(6);
111
+ const r3 = Ratchet2d.rotateRightAboutOrigin90Degrees(points, 3);
112
+ const r2 = Ratchet2d.rotateRightAboutOrigin90Degrees(points, 4);
113
+ expect(r2.length).toEqual(6);
114
+ expect(r2[0].x).toEqual(points[0].x);
115
+ expect(r2[0].y).toEqual(points[0].y);
116
+ });
117
+ });
118
+ //# sourceMappingURL=ratchet-2d.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratchet-2d.spec.js","sourceRoot":"","sources":["../../src/2d/ratchet-2d.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=build-information.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-information.js","sourceRoot":"","sources":["../../src/build/build-information.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export class RatchetInfo {
2
+ constructor() { }
3
+ static buildInformation() {
4
+ const val = {
5
+ version: 'LOCAL-SNAPSHOT',
6
+ hash: 'LOCAL-HASH',
7
+ branch: 'LOCAL-BRANCH',
8
+ tag: 'LOCAL-TAG',
9
+ timeBuiltISO: 'LOCAL-TIME-ISO',
10
+ notes: 'LOCAL-NOTES',
11
+ };
12
+ return val;
13
+ }
14
+ }
15
+ //# sourceMappingURL=ratchet-common-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratchet-common-info.js","sourceRoot":"","sources":["../../src/build/ratchet-common-info.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAGtB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,cAAc;YACtB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,gBAAgB;YAC9B,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=histogram-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"histogram-entry.js","sourceRoot":"","sources":["../../src/histogram/histogram-entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ export class Histogram {
2
+ entries = [];
3
+ update(val, addValue = 1) {
4
+ if (val) {
5
+ const entry = this.entries.find((e) => e.item === val);
6
+ if (entry) {
7
+ entry.count += addValue;
8
+ }
9
+ else {
10
+ this.entries.push({
11
+ item: val,
12
+ count: addValue,
13
+ });
14
+ }
15
+ }
16
+ }
17
+ sort() {
18
+ this.entries.sort((a, b) => {
19
+ let rval = b.count - a.count;
20
+ if (rval === 0) {
21
+ rval = String(b.item).localeCompare(String(a.item));
22
+ }
23
+ return rval;
24
+ });
25
+ }
26
+ sortKeys() {
27
+ this.entries.sort((a, b) => String(b.item).localeCompare(String(a.item)));
28
+ }
29
+ reverse() {
30
+ this.entries.reverse();
31
+ }
32
+ getEntries() {
33
+ return this.entries;
34
+ }
35
+ getTotalCount() {
36
+ let rval = 0;
37
+ this.entries.forEach((h) => (rval += h.count));
38
+ return rval;
39
+ }
40
+ countForValue(val) {
41
+ const entry = this.entries.find((test) => test.item === val);
42
+ return entry ? entry.count : 0;
43
+ }
44
+ percentForValue(val) {
45
+ const total = this.getTotalCount();
46
+ return total === 0 ? 0 : this.countForValue(val) / total;
47
+ }
48
+ }
49
+ //# sourceMappingURL=histogram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../src/histogram/histogram.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,SAAS;IACZ,OAAO,GAAwB,EAAE,CAAC;IAEnC,MAAM,CAAC,GAAM,EAAE,QAAQ,GAAG,CAAC;QAChC,IAAI,GAAG,EAAE;YACP,MAAM,KAAK,GAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YAC1E,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;iBACK,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,IAAI,GAAW,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACrC,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACrD;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAGM,QAAQ;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,aAAa;QAClB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,aAAa,CAAC,GAAM;QACzB,MAAM,KAAK,GAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAEM,eAAe,CAAC,GAAM;QAC3B,MAAM,KAAK,GAAW,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { Histogram } from './histogram.js';
2
+ describe('#histogram', function () {
3
+ it('should count the values correctly', function () {
4
+ const histogram = new Histogram();
5
+ histogram.update('a');
6
+ histogram.update('a');
7
+ histogram.update('b');
8
+ histogram.update('c');
9
+ expect(histogram.getTotalCount()).toEqual(4);
10
+ expect(histogram.countForValue('a')).toEqual(2);
11
+ expect(histogram.countForValue('b')).toEqual(1);
12
+ expect(histogram.countForValue('c')).toEqual(1);
13
+ expect(histogram.countForValue('d')).toEqual(0);
14
+ expect(histogram.percentForValue('a')).toEqual(0.5);
15
+ expect(histogram.percentForValue('b')).toEqual(0.25);
16
+ expect(histogram.percentForValue('c')).toEqual(0.25);
17
+ expect(histogram.percentForValue('d')).toEqual(0);
18
+ });
19
+ });
20
+ //# sourceMappingURL=histogram.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"histogram.spec.js","sourceRoot":"","sources":["../../src/histogram/histogram.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,QAAQ,CAAC,YAAY,EAAE;IACrB,EAAE,CAAC,mCAAmC,EAAE;QACtC,MAAM,SAAS,GAAsB,IAAI,SAAS,EAAU,CAAC;QAE7D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEtB,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,74 @@
1
+ export * from './2d/line-2d.js';
2
+ export * from './2d/plane-2d.js';
3
+ export * from './2d/point-2d.js';
4
+ export * from './2d/poly-line-2d.js';
5
+ export * from './2d/ratchet-2d.js';
6
+ export * from './build/build-information.js';
7
+ export * from './build/ratchet-common-info.js';
8
+ export * from './histogram/histogram-entry.js';
9
+ export * from './histogram/histogram.js';
10
+ export * from './jwt/common-jwt-token.js';
11
+ export * from './jwt/expired-jwt-handling.js';
12
+ export * from './jwt/jwt-ratchet-like.js';
13
+ export * from './jwt/jwt-ratchet.js';
14
+ export * from './jwt/jwt-token-base.js';
15
+ export * from './lang/array-ratchet.js';
16
+ export * from './lang/base64-ratchet.js';
17
+ export * from './lang/boolean-ratchet.js';
18
+ export * from './lang/composite-last-success-provider.js';
19
+ export * from './lang/date-ratchet.js';
20
+ export * from './lang/duration-ratchet.js';
21
+ export * from './lang/enum-ratchet.js';
22
+ export * from './lang/error-ratchet.js';
23
+ export * from './lang/esm-ratchet.js';
24
+ export * from './lang/expiring-object.js';
25
+ export * from './lang/geolocation-ratchet.js';
26
+ export * from './lang/global-ratchet.js';
27
+ export * from './lang/key-value.js';
28
+ export * from './lang/last-success-provider.js';
29
+ export * from './lang/map-ratchet.js';
30
+ export * from './lang/no.js';
31
+ export * from './lang/number-ratchet.js';
32
+ export * from './lang/parsed-url.js';
33
+ export * from './lang/promise-ratchet.js';
34
+ export * from './lang/require-ratchet.js';
35
+ export * from './lang/stop-watch.js';
36
+ export * from './lang/string-ratchet.js';
37
+ export * from './lang/time-zone-ratchet.js';
38
+ export * from './lang/timeout-token.js';
39
+ export * from './lang/transform-ratchet.js';
40
+ export * from './logger/classic-single-line-log-message-formatter.js';
41
+ export * from './logger/log-message-builder.js';
42
+ export * from './logger/log-message-format-type.js';
43
+ export * from './logger/log-message-formatter.js';
44
+ export * from './logger/log-message-processor.js';
45
+ export * from './logger/log-message.js';
46
+ export * from './logger/log-snapshot.js';
47
+ export * from './logger/logger-instance.js';
48
+ export * from './logger/logger-level-name.js';
49
+ export * from './logger/logger-meta.js';
50
+ export * from './logger/logger-options.js';
51
+ export * from './logger/logger-output-function.js';
52
+ export * from './logger/logger-ring-buffer.js';
53
+ export * from './logger/logger-util.js';
54
+ export * from './logger/logger.js';
55
+ export * from './logger/none-log-message-formatter.js';
56
+ export * from './logger/structured-json-log-message-formatter.js';
57
+ export * from './network/browser-local-ip-provider.js';
58
+ export * from './network/fixed-local-ip-provider.js';
59
+ export * from './network/local-ip-provider.js';
60
+ export * from './network/network-ratchet.js';
61
+ export * from './stream/buffer-writable.js';
62
+ export * from './stream/multi-stream.js';
63
+ export * from './stream/stream-ratchet.js';
64
+ export * from './stream/string-writable.js';
65
+ export * from './third-party/google/google-recaptcha-ratchet.js';
66
+ export * from './third-party/twilio/twilio-ratchet.js';
67
+ export * from './transform/built-in-transforms.js';
68
+ export * from './transform/transform-rule.js';
69
+ export * from './tx/transaction-configuration.js';
70
+ export * from './tx/transaction-final-state.js';
71
+ export * from './tx/transaction-ratchet.js';
72
+ export * from './tx/transaction-result.js';
73
+ export * from './tx/transaction-step.js';
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uDAAuD,CAAC;AACtE,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AACvD,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kDAAkD,CAAC;AACjE,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common-jwt-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-jwt-token.js","sourceRoot":"","sources":["../../src/jwt/common-jwt-token.ts"],"names":[],"mappings":""}