@bitblit/ratchet-common 4.0.80-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 (220) hide show
  1. package/dist/cjs/2d/line-2d.js +2 -0
  2. package/dist/cjs/2d/plane-2d.js +2 -0
  3. package/dist/cjs/2d/point-2d.js +2 -0
  4. package/dist/cjs/2d/poly-line-2d.js +2 -0
  5. package/dist/cjs/2d/ratchet-2d.js +250 -0
  6. package/dist/cjs/build/build-information.js +2 -0
  7. package/dist/cjs/build/ratchet-common-info.js +18 -0
  8. package/dist/cjs/histogram/histogram-entry.js +2 -0
  9. package/dist/cjs/histogram/histogram.js +54 -0
  10. package/dist/cjs/index.js +74 -0
  11. package/dist/cjs/jwt/common-jwt-token.js +2 -0
  12. package/dist/cjs/jwt/expired-jwt-handling.js +9 -0
  13. package/dist/cjs/jwt/jwt-ratchet-like.js +2 -0
  14. package/dist/cjs/jwt/jwt-ratchet.js +164 -0
  15. package/dist/cjs/jwt/jwt-token-base.js +2 -0
  16. package/dist/cjs/lang/array-ratchet.js +87 -0
  17. package/dist/cjs/lang/base64-ratchet.js +49 -0
  18. package/dist/cjs/lang/boolean-ratchet.js +49 -0
  19. package/dist/cjs/lang/composite-last-success-provider.js +28 -0
  20. package/dist/cjs/lang/date-ratchet.js +33 -0
  21. package/dist/cjs/lang/duration-ratchet.js +46 -0
  22. package/dist/cjs/lang/enum-ratchet.js +34 -0
  23. package/dist/cjs/lang/error-ratchet.js +49 -0
  24. package/dist/cjs/lang/expiring-object.js +68 -0
  25. package/dist/cjs/lang/geolocation-ratchet.js +267 -0
  26. package/dist/cjs/lang/global-ratchet.js +48 -0
  27. package/dist/cjs/lang/key-value.js +6 -0
  28. package/dist/cjs/lang/last-success-provider.js +2 -0
  29. package/dist/cjs/lang/map-ratchet.js +168 -0
  30. package/dist/cjs/lang/no.js +8 -0
  31. package/dist/cjs/lang/number-ratchet.js +156 -0
  32. package/dist/cjs/lang/parsed-url.js +2 -0
  33. package/dist/cjs/lang/promise-ratchet.js +142 -0
  34. package/dist/cjs/lang/require-ratchet.js +60 -0
  35. package/dist/cjs/lang/stop-watch.js +117 -0
  36. package/dist/cjs/lang/string-ratchet.js +195 -0
  37. package/dist/cjs/lang/time-zone-ratchet.js +80 -0
  38. package/dist/cjs/lang/timeout-token.js +19 -0
  39. package/dist/cjs/lang/transform-ratchet.js +70 -0
  40. package/dist/cjs/logger/classic-single-line-log-message-formatter.js +18 -0
  41. package/dist/cjs/logger/log-message-builder.js +51 -0
  42. package/dist/cjs/logger/log-message-format-type.js +9 -0
  43. package/dist/cjs/logger/log-message-formatter.js +2 -0
  44. package/dist/cjs/logger/log-message-processor.js +2 -0
  45. package/dist/cjs/logger/log-message.js +2 -0
  46. package/dist/cjs/logger/log-snapshot.js +2 -0
  47. package/dist/cjs/logger/logger-instance.js +207 -0
  48. package/dist/cjs/logger/logger-level-name.js +12 -0
  49. package/dist/cjs/logger/logger-meta.js +2 -0
  50. package/dist/cjs/logger/logger-options.js +2 -0
  51. package/dist/cjs/logger/logger-output-function.js +9 -0
  52. package/dist/cjs/logger/logger-ring-buffer.js +76 -0
  53. package/dist/cjs/logger/logger-util.js +49 -0
  54. package/dist/cjs/logger/logger.js +139 -0
  55. package/dist/cjs/logger/none-log-message-formatter.js +9 -0
  56. package/dist/cjs/logger/structured-json-log-message-formatter.js +24 -0
  57. package/dist/cjs/network/browser-local-ip-provider.js +25 -0
  58. package/dist/cjs/network/fixed-local-ip-provider.js +12 -0
  59. package/dist/cjs/network/local-ip-provider.js +2 -0
  60. package/dist/cjs/network/network-ratchet.js +106 -0
  61. package/dist/cjs/stream/buffer-writable.js +20 -0
  62. package/dist/cjs/stream/stream-ratchet.js +72 -0
  63. package/dist/cjs/stream/string-writable.js +18 -0
  64. package/dist/cjs/third-party/google/google-recaptcha-ratchet.js +33 -0
  65. package/dist/cjs/third-party/twilio/twilio-ratchet.js +75 -0
  66. package/dist/cjs/transform/built-in-transforms.js +195 -0
  67. package/dist/cjs/transform/transform-rule.js +2 -0
  68. package/dist/cjs/tx/transaction-configuration.js +2 -0
  69. package/dist/cjs/tx/transaction-final-state.js +9 -0
  70. package/dist/cjs/tx/transaction-ratchet.js +80 -0
  71. package/dist/cjs/tx/transaction-result.js +2 -0
  72. package/dist/cjs/tx/transaction-step.js +2 -0
  73. package/dist/es/2d/line-2d.js +1 -0
  74. package/dist/es/2d/plane-2d.js +1 -0
  75. package/dist/es/2d/point-2d.js +1 -0
  76. package/dist/es/2d/poly-line-2d.js +1 -0
  77. package/dist/es/2d/ratchet-2d.js +245 -0
  78. package/dist/es/build/build-information.js +1 -0
  79. package/dist/es/build/ratchet-common-info.js +14 -0
  80. package/dist/es/histogram/histogram-entry.js +1 -0
  81. package/dist/es/histogram/histogram.js +50 -0
  82. package/dist/es/index.js +71 -0
  83. package/dist/es/jwt/common-jwt-token.js +1 -0
  84. package/dist/es/jwt/expired-jwt-handling.js +6 -0
  85. package/dist/es/jwt/jwt-ratchet-like.js +1 -0
  86. package/dist/es/jwt/jwt-ratchet.js +159 -0
  87. package/dist/es/jwt/jwt-token-base.js +1 -0
  88. package/dist/es/lang/array-ratchet.js +83 -0
  89. package/dist/es/lang/base64-ratchet.js +45 -0
  90. package/dist/es/lang/boolean-ratchet.js +45 -0
  91. package/dist/es/lang/composite-last-success-provider.js +24 -0
  92. package/dist/es/lang/date-ratchet.js +29 -0
  93. package/dist/es/lang/duration-ratchet.js +42 -0
  94. package/dist/es/lang/enum-ratchet.js +30 -0
  95. package/dist/es/lang/error-ratchet.js +44 -0
  96. package/dist/es/lang/expiring-object.js +63 -0
  97. package/dist/es/lang/geolocation-ratchet.js +263 -0
  98. package/dist/es/lang/global-ratchet.js +43 -0
  99. package/dist/es/lang/key-value.js +2 -0
  100. package/dist/es/lang/last-success-provider.js +1 -0
  101. package/dist/es/lang/map-ratchet.js +164 -0
  102. package/dist/es/lang/no.js +4 -0
  103. package/dist/es/lang/number-ratchet.js +152 -0
  104. package/dist/es/lang/parsed-url.js +1 -0
  105. package/dist/es/lang/promise-ratchet.js +138 -0
  106. package/dist/es/lang/require-ratchet.js +56 -0
  107. package/dist/es/lang/stop-watch.js +113 -0
  108. package/dist/es/lang/string-ratchet.js +191 -0
  109. package/dist/es/lang/time-zone-ratchet.js +76 -0
  110. package/dist/es/lang/timeout-token.js +15 -0
  111. package/dist/es/lang/transform-ratchet.js +66 -0
  112. package/dist/es/logger/classic-single-line-log-message-formatter.js +13 -0
  113. package/dist/es/logger/log-message-builder.js +47 -0
  114. package/dist/es/logger/log-message-format-type.js +6 -0
  115. package/dist/es/logger/log-message-formatter.js +1 -0
  116. package/dist/es/logger/log-message-processor.js +1 -0
  117. package/dist/es/logger/log-message.js +1 -0
  118. package/dist/es/logger/log-snapshot.js +1 -0
  119. package/dist/es/logger/logger-instance.js +201 -0
  120. package/dist/es/logger/logger-level-name.js +9 -0
  121. package/dist/es/logger/logger-meta.js +1 -0
  122. package/dist/es/logger/logger-options.js +1 -0
  123. package/dist/es/logger/logger-output-function.js +6 -0
  124. package/dist/es/logger/logger-ring-buffer.js +72 -0
  125. package/dist/es/logger/logger-util.js +44 -0
  126. package/dist/es/logger/logger.js +134 -0
  127. package/dist/es/logger/none-log-message-formatter.js +5 -0
  128. package/dist/es/logger/structured-json-log-message-formatter.js +19 -0
  129. package/dist/es/network/browser-local-ip-provider.js +21 -0
  130. package/dist/es/network/fixed-local-ip-provider.js +8 -0
  131. package/dist/es/network/local-ip-provider.js +1 -0
  132. package/dist/es/network/network-ratchet.js +102 -0
  133. package/dist/es/stream/buffer-writable.js +16 -0
  134. package/dist/es/stream/stream-ratchet.js +68 -0
  135. package/dist/es/stream/string-writable.js +14 -0
  136. package/dist/es/third-party/google/google-recaptcha-ratchet.js +28 -0
  137. package/dist/es/third-party/twilio/twilio-ratchet.js +70 -0
  138. package/dist/es/transform/built-in-transforms.js +191 -0
  139. package/dist/es/transform/transform-rule.js +1 -0
  140. package/dist/es/tx/transaction-configuration.js +1 -0
  141. package/dist/es/tx/transaction-final-state.js +6 -0
  142. package/dist/es/tx/transaction-ratchet.js +76 -0
  143. package/dist/es/tx/transaction-result.js +1 -0
  144. package/dist/es/tx/transaction-step.js +1 -0
  145. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  146. package/dist/tsconfig.es.tsbuildinfo +1 -0
  147. package/dist/tsconfig.types.tsbuildinfo +1 -0
  148. package/dist/types/2d/line-2d.d.ts +5 -0
  149. package/dist/types/2d/plane-2d.d.ts +6 -0
  150. package/dist/types/2d/point-2d.d.ts +4 -0
  151. package/dist/types/2d/poly-line-2d.d.ts +4 -0
  152. package/dist/types/2d/ratchet-2d.d.ts +37 -0
  153. package/dist/types/build/build-information.d.ts +8 -0
  154. package/dist/types/build/ratchet-common-info.d.ts +5 -0
  155. package/dist/types/histogram/histogram-entry.d.ts +4 -0
  156. package/dist/types/histogram/histogram.d.ts +15 -0
  157. package/dist/types/index.d.ts +74 -0
  158. package/dist/types/jwt/common-jwt-token.d.ts +17 -0
  159. package/dist/types/jwt/expired-jwt-handling.d.ts +5 -0
  160. package/dist/types/jwt/jwt-ratchet-like.d.ts +18 -0
  161. package/dist/types/jwt/jwt-ratchet.d.ts +39 -0
  162. package/dist/types/jwt/jwt-token-base.d.ts +13 -0
  163. package/dist/types/lang/array-ratchet.d.ts +30 -0
  164. package/dist/types/lang/base64-ratchet.d.ts +10 -0
  165. package/dist/types/lang/boolean-ratchet.d.ts +7 -0
  166. package/dist/types/lang/composite-last-success-provider.d.ts +8 -0
  167. package/dist/types/lang/date-ratchet.d.ts +11 -0
  168. package/dist/types/lang/duration-ratchet.d.ts +7 -0
  169. package/dist/types/lang/enum-ratchet.d.ts +12 -0
  170. package/dist/types/lang/error-ratchet.d.ts +6 -0
  171. package/dist/types/lang/expiring-object.d.ts +20 -0
  172. package/dist/types/lang/geolocation-ratchet.d.ts +40 -0
  173. package/dist/types/lang/global-ratchet.d.ts +6 -0
  174. package/dist/types/lang/key-value.d.ts +4 -0
  175. package/dist/types/lang/last-success-provider.d.ts +4 -0
  176. package/dist/types/lang/map-ratchet.d.ts +15 -0
  177. package/dist/types/lang/no.d.ts +3 -0
  178. package/dist/types/lang/number-ratchet.d.ts +20 -0
  179. package/dist/types/lang/parsed-url.d.ts +10 -0
  180. package/dist/types/lang/promise-ratchet.d.ts +32 -0
  181. package/dist/types/lang/require-ratchet.d.ts +11 -0
  182. package/dist/types/lang/stop-watch.d.ts +17 -0
  183. package/dist/types/lang/string-ratchet.d.ts +27 -0
  184. package/dist/types/lang/time-zone-ratchet.d.ts +50 -0
  185. package/dist/types/lang/timeout-token.d.ts +9 -0
  186. package/dist/types/lang/transform-ratchet.d.ts +7 -0
  187. package/dist/types/logger/classic-single-line-log-message-formatter.d.ts +6 -0
  188. package/dist/types/logger/log-message-builder.d.ts +14 -0
  189. package/dist/types/logger/log-message-format-type.d.ts +5 -0
  190. package/dist/types/logger/log-message-formatter.d.ts +5 -0
  191. package/dist/types/logger/log-message-processor.d.ts +5 -0
  192. package/dist/types/logger/log-message.d.ts +8 -0
  193. package/dist/types/logger/log-snapshot.d.ts +5 -0
  194. package/dist/types/logger/logger-instance.d.ts +46 -0
  195. package/dist/types/logger/logger-level-name.d.ts +8 -0
  196. package/dist/types/logger/logger-meta.d.ts +6 -0
  197. package/dist/types/logger/logger-options.d.ts +13 -0
  198. package/dist/types/logger/logger-output-function.d.ts +5 -0
  199. package/dist/types/logger/logger-ring-buffer.d.ts +18 -0
  200. package/dist/types/logger/logger-util.d.ts +8 -0
  201. package/dist/types/logger/logger.d.ts +52 -0
  202. package/dist/types/logger/none-log-message-formatter.d.ts +6 -0
  203. package/dist/types/logger/structured-json-log-message-formatter.d.ts +6 -0
  204. package/dist/types/network/browser-local-ip-provider.d.ts +7 -0
  205. package/dist/types/network/fixed-local-ip-provider.d.ts +6 -0
  206. package/dist/types/network/local-ip-provider.d.ts +4 -0
  207. package/dist/types/network/network-ratchet.d.ts +9 -0
  208. package/dist/types/stream/buffer-writable.d.ts +9 -0
  209. package/dist/types/stream/stream-ratchet.d.ts +12 -0
  210. package/dist/types/stream/string-writable.d.ts +8 -0
  211. package/dist/types/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
  212. package/dist/types/third-party/twilio/twilio-ratchet.d.ts +15 -0
  213. package/dist/types/transform/built-in-transforms.d.ts +18 -0
  214. package/dist/types/transform/transform-rule.d.ts +3 -0
  215. package/dist/types/tx/transaction-configuration.d.ts +7 -0
  216. package/dist/types/tx/transaction-final-state.d.ts +5 -0
  217. package/dist/types/tx/transaction-ratchet.d.ts +6 -0
  218. package/dist/types/tx/transaction-result.d.ts +9 -0
  219. package/dist/types/tx/transaction-step.d.ts +5 -0
  220. package/package.json +65 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ratchet2d = void 0;
4
+ const boolean_ratchet_1 = require("../lang/boolean-ratchet");
5
+ class Ratchet2d {
6
+ constructor() { }
7
+ static translateToOriginVector(points) {
8
+ let rval = null;
9
+ if (Ratchet2d.validPoints(points)) {
10
+ rval = {
11
+ x: null,
12
+ y: null,
13
+ };
14
+ points.forEach((p) => {
15
+ rval.x = rval.x === null || p.x < rval.x ? p.x : rval.x;
16
+ rval.y = rval.y === null || p.y < rval.y ? p.y : rval.y;
17
+ });
18
+ rval.x *= -1;
19
+ rval.y *= -1;
20
+ }
21
+ return rval;
22
+ }
23
+ static minimalContainingPlane(points) {
24
+ let rval = null;
25
+ if (Ratchet2d.validPoints(points)) {
26
+ rval = {
27
+ width: 0,
28
+ height: 0,
29
+ };
30
+ points.forEach((p) => {
31
+ rval.width = Math.max(rval.width, p.x + 1);
32
+ rval.height = Math.max(rval.height, p.y + 1);
33
+ });
34
+ }
35
+ return rval;
36
+ }
37
+ static scaleVector(src, dst) {
38
+ let rval = null;
39
+ if (Ratchet2d.validPlane(src) && Ratchet2d.validPlane(dst)) {
40
+ rval = {
41
+ x: dst.width / src.width,
42
+ y: dst.height / src.height,
43
+ };
44
+ }
45
+ return rval;
46
+ }
47
+ static samePoint(p1, p2) {
48
+ return !!p1 && !!p2 && p1.x === p2.x && p1.y === p2.y;
49
+ }
50
+ static atLeastOneDimensionShared(p1, p2) {
51
+ return !!p1 && !!p2 && (p1.x === p2.x || p1.y === p2.y);
52
+ }
53
+ static validPlane(plane) {
54
+ return !!plane && !!plane.height && !!plane.width;
55
+ }
56
+ static validLine(line) {
57
+ return !!line && Ratchet2d.validPoint(line.p1) && Ratchet2d.validPoint(line.p2) && !Ratchet2d.samePoint(line.p1, line.p2);
58
+ }
59
+ static validLines(lines) {
60
+ return !!lines && boolean_ratchet_1.BooleanRatchet.allTrue(lines.map((l) => Ratchet2d.validLine(l)));
61
+ }
62
+ static validPolyLine(pline) {
63
+ var _a;
64
+ return !!pline && ((_a = pline.pts) === null || _a === void 0 ? void 0 : _a.length) > 1 && boolean_ratchet_1.BooleanRatchet.allTrue(pline.pts.map((p) => Ratchet2d.validPoint(p)));
65
+ }
66
+ static polyLineToLines(pline) {
67
+ let rval = null;
68
+ if (Ratchet2d.validPolyLine(pline)) {
69
+ rval = [];
70
+ for (let i = 1; i < pline.pts.length; i++) {
71
+ rval.push({ p1: pline.pts[i - 1], p2: pline.pts[i] });
72
+ }
73
+ }
74
+ return rval;
75
+ }
76
+ static lastPointOnPolyLine(polyLine) {
77
+ return Ratchet2d.validPolyLine(polyLine) ? polyLine.pts[polyLine.pts.length - 1] : null;
78
+ }
79
+ static lineToPolyLine(line) {
80
+ return Ratchet2d.validLine(line) ? { pts: [line.p1, line.p2] } : null;
81
+ }
82
+ static linesToPolyLines(lines) {
83
+ let rval = null;
84
+ if (Ratchet2d.validLines(lines)) {
85
+ rval = [];
86
+ let currentPLine = Ratchet2d.lineToPolyLine(lines[0]);
87
+ for (let i = 1; i < lines.length; i++) {
88
+ if (Ratchet2d.samePoint(Ratchet2d.lastPointOnPolyLine(currentPLine), lines[i].p1)) {
89
+ currentPLine.pts.push(lines[i].p2);
90
+ }
91
+ else {
92
+ rval.push(currentPLine);
93
+ currentPLine = Ratchet2d.lineToPolyLine(lines[i]);
94
+ }
95
+ }
96
+ rval.push(currentPLine);
97
+ }
98
+ return rval;
99
+ }
100
+ static validPoint(pt) {
101
+ return !!pt && pt.x != null && pt.x != undefined && pt.y !== null && pt.y !== undefined;
102
+ }
103
+ static validPoints(pt) {
104
+ return (!!pt &&
105
+ boolean_ratchet_1.BooleanRatchet.allTrue(pt.map((p) => Ratchet2d.validPoint(p)), false));
106
+ }
107
+ static planeContainsPoint(pt, plane) {
108
+ return Ratchet2d.validPlane(plane) && Ratchet2d.validPoint(pt) && pt.x >= 0 && pt.x < plane.width && pt.y >= 0 && pt.y < plane.height;
109
+ }
110
+ static planeContainsPoints(pt, plane) {
111
+ return pt && pt.map((p) => Ratchet2d.planeContainsPoint(p, plane)).reduce((a, i) => a && i, true);
112
+ }
113
+ static linesToPoints(lines) {
114
+ let rval = null;
115
+ if (Ratchet2d.validLines(lines)) {
116
+ rval = lines.map((l) => [l.p1, l.p2]).flat();
117
+ }
118
+ return rval;
119
+ }
120
+ static pointsToLines(points) {
121
+ let rval = null;
122
+ if (Ratchet2d.validPoints(points)) {
123
+ if (points.length % 2 == 0) {
124
+ rval = [];
125
+ for (let i = 0; i < points.length; i += 2) {
126
+ rval.push({ p1: points[i], p2: points[i + 1] });
127
+ }
128
+ }
129
+ else {
130
+ throw new Error('Cannot convert non-even array of points into lines');
131
+ }
132
+ }
133
+ return rval;
134
+ }
135
+ static rotateRightAboutOrigin90Degrees(points, times = 1) {
136
+ let rval = null;
137
+ let translate = { x: 0, y: 0 };
138
+ if (Ratchet2d.validPoints(points)) {
139
+ rval = Object.assign([], points);
140
+ translate = Ratchet2d.translateToOriginVector(rval);
141
+ rval = Ratchet2d.translate(rval, translate);
142
+ let plane = Ratchet2d.minimalContainingPlane(rval);
143
+ rval = Ratchet2d.xToY(rval);
144
+ plane = { width: plane.height, height: plane.width };
145
+ translate = { x: translate.y * -1, y: translate.x * -1 };
146
+ rval = Ratchet2d.mirrorPointsOnPlane(rval, plane, true, false);
147
+ rval = Ratchet2d.translate(rval, translate);
148
+ }
149
+ const timesToRotate = times > 4 ? times % 4 : times;
150
+ if (timesToRotate > 1) {
151
+ rval = Ratchet2d.rotateRightAboutOrigin90Degrees(rval, timesToRotate - 1);
152
+ }
153
+ return rval;
154
+ }
155
+ static planeContainsLines(lines, plane) {
156
+ return lines && Ratchet2d.planeContainsPoints(lines.map((l) => [l.p1, l.p2]).flat(), plane);
157
+ }
158
+ static planeContainsPolyLine(pline, plane) {
159
+ return Ratchet2d.planeContainsLines(Ratchet2d.polyLineToLines(pline), plane);
160
+ }
161
+ static planeContainsLine(line, plane) {
162
+ return (Ratchet2d.validPlane(plane) &&
163
+ Ratchet2d.validLine(line) &&
164
+ Ratchet2d.planeContainsPoint(line.p1, plane) &&
165
+ Ratchet2d.planeContainsPoint(line.p2, plane));
166
+ }
167
+ static xToY(points) {
168
+ let rval = null;
169
+ if (Ratchet2d.validPoints(points)) {
170
+ rval = points.map((p) => {
171
+ const next = { x: p.y, y: p.x };
172
+ return next;
173
+ });
174
+ }
175
+ return rval;
176
+ }
177
+ static translate(points, xlate) {
178
+ let rval = null;
179
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPoint(xlate)) {
180
+ rval = points.map((p) => {
181
+ const next = {
182
+ x: p.x + xlate.x,
183
+ y: p.y + xlate.y,
184
+ };
185
+ return next;
186
+ });
187
+ }
188
+ return rval;
189
+ }
190
+ static mirrorPointsOnPlane(points, src, mirrorX, mirrorY) {
191
+ let rval = null;
192
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPlane(src)) {
193
+ if (mirrorX || mirrorY) {
194
+ rval = points.map((p) => {
195
+ const next = {
196
+ x: mirrorX ? src.width - 1 - p.x : p.x,
197
+ y: mirrorY ? src.height - 1 - p.y : p.y,
198
+ };
199
+ return next;
200
+ });
201
+ }
202
+ else {
203
+ rval = Object.assign([], points);
204
+ }
205
+ }
206
+ return rval;
207
+ }
208
+ static transformPointsToNewPlane(points, src, dst) {
209
+ let rval = null;
210
+ if (Ratchet2d.validPoints(points) && Ratchet2d.validPlane(src) && Ratchet2d.validPlane(dst)) {
211
+ const scale = Ratchet2d.scaleVector(src, dst);
212
+ rval = points.map((p) => {
213
+ const next = { x: p.x * scale.x, y: p.y * scale.y };
214
+ return next;
215
+ });
216
+ rval = Ratchet2d.mirrorPointsOnPlane(rval, dst, dst.rightToLeft !== src.rightToLeft, dst.topToBottom !== src.topToBottom);
217
+ }
218
+ return rval;
219
+ }
220
+ static transformPointToNewPlane(point, src, dst) {
221
+ const tmp = Ratchet2d.transformPointsToNewPlane([point], src, dst);
222
+ return tmp.length === 1 ? tmp[0] : null;
223
+ }
224
+ static transformLines(lines, src, dst) {
225
+ return null;
226
+ }
227
+ static fitCurve(curveDef, inputX) {
228
+ curveDef.sort((a, b) => {
229
+ return a.x - b.x;
230
+ });
231
+ if (inputX <= curveDef[0].x) {
232
+ return curveDef[0].y;
233
+ }
234
+ else if (inputX >= curveDef[curveDef.length - 1].x) {
235
+ return curveDef[curveDef.length - 1].y;
236
+ }
237
+ else {
238
+ let idx = 0;
239
+ while (curveDef[idx + 1].x < inputX) {
240
+ idx++;
241
+ }
242
+ const xSpread = curveDef[idx + 1].x - curveDef[idx].x;
243
+ const ySpread = curveDef[idx + 1].y - curveDef[idx].y;
244
+ const pct = (inputX - curveDef[idx].x) / xSpread;
245
+ const yAdd = pct * ySpread;
246
+ return curveDef[idx].y + yAdd;
247
+ }
248
+ }
249
+ }
250
+ exports.Ratchet2d = Ratchet2d;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RatchetInfo = void 0;
4
+ class RatchetInfo {
5
+ constructor() { }
6
+ static buildInformation() {
7
+ const val = {
8
+ version: '80',
9
+ hash: '10fcb761c2fa4186df89e527e948f5780a4e14ac',
10
+ branch: 'alpha-2023-03-12-2',
11
+ tag: 'alpha-2023-03-12-2',
12
+ timeBuiltISO: '2023-03-12T20:00:51-0700',
13
+ notes: '',
14
+ };
15
+ return val;
16
+ }
17
+ }
18
+ exports.RatchetInfo = RatchetInfo;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Histogram = void 0;
4
+ class Histogram {
5
+ constructor() {
6
+ this.entries = [];
7
+ }
8
+ update(val, addValue = 1) {
9
+ if (val) {
10
+ const entry = this.entries.find((e) => e.item === val);
11
+ if (entry) {
12
+ entry.count += addValue;
13
+ }
14
+ else {
15
+ this.entries.push({
16
+ item: val,
17
+ count: addValue,
18
+ });
19
+ }
20
+ }
21
+ }
22
+ sort() {
23
+ this.entries.sort((a, b) => {
24
+ let rval = b.count - a.count;
25
+ if (rval === 0) {
26
+ rval = String(b.item).localeCompare(String(a.item));
27
+ }
28
+ return rval;
29
+ });
30
+ }
31
+ sortKeys() {
32
+ this.entries.sort((a, b) => String(b.item).localeCompare(String(a.item)));
33
+ }
34
+ reverse() {
35
+ this.entries.reverse();
36
+ }
37
+ getEntries() {
38
+ return this.entries;
39
+ }
40
+ getTotalCount() {
41
+ let rval = 0;
42
+ this.entries.forEach((h) => (rval += h.count));
43
+ return rval;
44
+ }
45
+ countForValue(val) {
46
+ const entry = this.entries.find((test) => test.item === val);
47
+ return entry ? entry.count : 0;
48
+ }
49
+ percentForValue(val) {
50
+ const total = this.getTotalCount();
51
+ return total === 0 ? 0 : this.countForValue(val) / total;
52
+ }
53
+ }
54
+ exports.Histogram = Histogram;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./2d/line-2d"), exports);
5
+ tslib_1.__exportStar(require("./2d/plane-2d"), exports);
6
+ tslib_1.__exportStar(require("./2d/point-2d"), exports);
7
+ tslib_1.__exportStar(require("./2d/poly-line-2d"), exports);
8
+ tslib_1.__exportStar(require("./2d/ratchet-2d"), exports);
9
+ tslib_1.__exportStar(require("./build/build-information"), exports);
10
+ tslib_1.__exportStar(require("./build/ratchet-common-info"), exports);
11
+ tslib_1.__exportStar(require("./histogram/histogram-entry"), exports);
12
+ tslib_1.__exportStar(require("./histogram/histogram"), exports);
13
+ tslib_1.__exportStar(require("./jwt/common-jwt-token"), exports);
14
+ tslib_1.__exportStar(require("./jwt/expired-jwt-handling"), exports);
15
+ tslib_1.__exportStar(require("./jwt/jwt-ratchet-like"), exports);
16
+ tslib_1.__exportStar(require("./jwt/jwt-ratchet"), exports);
17
+ tslib_1.__exportStar(require("./jwt/jwt-token-base"), exports);
18
+ tslib_1.__exportStar(require("./lang/array-ratchet"), exports);
19
+ tslib_1.__exportStar(require("./lang/base64-ratchet"), exports);
20
+ tslib_1.__exportStar(require("./lang/boolean-ratchet"), exports);
21
+ tslib_1.__exportStar(require("./lang/composite-last-success-provider"), exports);
22
+ tslib_1.__exportStar(require("./lang/date-ratchet"), exports);
23
+ tslib_1.__exportStar(require("./lang/duration-ratchet"), exports);
24
+ tslib_1.__exportStar(require("./lang/enum-ratchet"), exports);
25
+ tslib_1.__exportStar(require("./lang/error-ratchet"), exports);
26
+ tslib_1.__exportStar(require("./lang/expiring-object"), exports);
27
+ tslib_1.__exportStar(require("./lang/geolocation-ratchet"), exports);
28
+ tslib_1.__exportStar(require("./lang/global-ratchet"), exports);
29
+ tslib_1.__exportStar(require("./lang/key-value"), exports);
30
+ tslib_1.__exportStar(require("./lang/last-success-provider"), exports);
31
+ tslib_1.__exportStar(require("./lang/map-ratchet"), exports);
32
+ tslib_1.__exportStar(require("./lang/no"), exports);
33
+ tslib_1.__exportStar(require("./lang/number-ratchet"), exports);
34
+ tslib_1.__exportStar(require("./lang/parsed-url"), exports);
35
+ tslib_1.__exportStar(require("./lang/promise-ratchet"), exports);
36
+ tslib_1.__exportStar(require("./lang/require-ratchet"), exports);
37
+ tslib_1.__exportStar(require("./lang/stop-watch"), exports);
38
+ tslib_1.__exportStar(require("./lang/string-ratchet"), exports);
39
+ tslib_1.__exportStar(require("./lang/time-zone-ratchet"), exports);
40
+ tslib_1.__exportStar(require("./lang/timeout-token"), exports);
41
+ tslib_1.__exportStar(require("./lang/transform-ratchet"), exports);
42
+ tslib_1.__exportStar(require("./logger/classic-single-line-log-message-formatter"), exports);
43
+ tslib_1.__exportStar(require("./logger/log-message-builder"), exports);
44
+ tslib_1.__exportStar(require("./logger/log-message-format-type"), exports);
45
+ tslib_1.__exportStar(require("./logger/log-message-formatter"), exports);
46
+ tslib_1.__exportStar(require("./logger/log-message-processor"), exports);
47
+ tslib_1.__exportStar(require("./logger/log-message"), exports);
48
+ tslib_1.__exportStar(require("./logger/log-snapshot"), exports);
49
+ tslib_1.__exportStar(require("./logger/logger-instance"), exports);
50
+ tslib_1.__exportStar(require("./logger/logger-level-name"), exports);
51
+ tslib_1.__exportStar(require("./logger/logger-meta"), exports);
52
+ tslib_1.__exportStar(require("./logger/logger-options"), exports);
53
+ tslib_1.__exportStar(require("./logger/logger-output-function"), exports);
54
+ tslib_1.__exportStar(require("./logger/logger-ring-buffer"), exports);
55
+ tslib_1.__exportStar(require("./logger/logger-util"), exports);
56
+ tslib_1.__exportStar(require("./logger/logger"), exports);
57
+ tslib_1.__exportStar(require("./logger/none-log-message-formatter"), exports);
58
+ tslib_1.__exportStar(require("./logger/structured-json-log-message-formatter"), exports);
59
+ tslib_1.__exportStar(require("./network/browser-local-ip-provider"), exports);
60
+ tslib_1.__exportStar(require("./network/fixed-local-ip-provider"), exports);
61
+ tslib_1.__exportStar(require("./network/local-ip-provider"), exports);
62
+ tslib_1.__exportStar(require("./network/network-ratchet"), exports);
63
+ tslib_1.__exportStar(require("./stream/buffer-writable"), exports);
64
+ tslib_1.__exportStar(require("./stream/stream-ratchet"), exports);
65
+ tslib_1.__exportStar(require("./stream/string-writable"), exports);
66
+ tslib_1.__exportStar(require("./third-party/google/google-recaptcha-ratchet"), exports);
67
+ tslib_1.__exportStar(require("./third-party/twilio/twilio-ratchet"), exports);
68
+ tslib_1.__exportStar(require("./transform/built-in-transforms"), exports);
69
+ tslib_1.__exportStar(require("./transform/transform-rule"), exports);
70
+ tslib_1.__exportStar(require("./tx/transaction-configuration"), exports);
71
+ tslib_1.__exportStar(require("./tx/transaction-final-state"), exports);
72
+ tslib_1.__exportStar(require("./tx/transaction-ratchet"), exports);
73
+ tslib_1.__exportStar(require("./tx/transaction-result"), exports);
74
+ tslib_1.__exportStar(require("./tx/transaction-step"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpiredJwtHandling = void 0;
4
+ var ExpiredJwtHandling;
5
+ (function (ExpiredJwtHandling) {
6
+ ExpiredJwtHandling[ExpiredJwtHandling["RETURN_NULL"] = 0] = "RETURN_NULL";
7
+ ExpiredJwtHandling[ExpiredJwtHandling["THROW_EXCEPTION"] = 1] = "THROW_EXCEPTION";
8
+ ExpiredJwtHandling[ExpiredJwtHandling["ADD_FLAG"] = 2] = "ADD_FLAG";
9
+ })(ExpiredJwtHandling = exports.ExpiredJwtHandling || (exports.ExpiredJwtHandling = {}));
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwtRatchet = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsonwebtoken_1 = tslib_1.__importDefault(require("jsonwebtoken"));
6
+ const require_ratchet_1 = require("../lang/require-ratchet");
7
+ const logger_1 = require("../logger/logger");
8
+ const string_ratchet_1 = require("../lang/string-ratchet");
9
+ const duration_ratchet_1 = require("../lang/duration-ratchet");
10
+ const logger_level_name_1 = require("../logger/logger-level-name");
11
+ const expired_jwt_handling_1 = require("./expired-jwt-handling");
12
+ class JwtRatchet {
13
+ constructor(_encryptionKeyPromise, _decryptKeysPromise, _jtiGenerator = string_ratchet_1.StringRatchet.createType4Guid, _decryptOnlyKeyUseLogLevel = logger_level_name_1.LoggerLevelName.info, _parseFailureLogLevel = logger_level_name_1.LoggerLevelName.debug) {
14
+ this._encryptionKeyPromise = _encryptionKeyPromise;
15
+ this._decryptKeysPromise = _decryptKeysPromise;
16
+ this._jtiGenerator = _jtiGenerator;
17
+ this._decryptOnlyKeyUseLogLevel = _decryptOnlyKeyUseLogLevel;
18
+ this._parseFailureLogLevel = _parseFailureLogLevel;
19
+ require_ratchet_1.RequireRatchet.notNullOrUndefined(_encryptionKeyPromise, 'encryptionKeyPromise');
20
+ }
21
+ get encryptionKeyPromise() {
22
+ return this._encryptionKeyPromise;
23
+ }
24
+ get decryptKeysPromise() {
25
+ return this._decryptKeysPromise;
26
+ }
27
+ get jtiGenerator() {
28
+ return this._jtiGenerator;
29
+ }
30
+ get decryptOnlyKeyUseLogLevel() {
31
+ return this._decryptOnlyKeyUseLogLevel;
32
+ }
33
+ get parseFailureLogLevel() {
34
+ return this._parseFailureLogLevel;
35
+ }
36
+ static hasExpiredFlag(ob) {
37
+ return ob && ob[JwtRatchet.EXPIRED_FLAG_NAME] === true;
38
+ }
39
+ static async invalidSafeDecode(payloadString, decryptKey, logLevel = logger_level_name_1.LoggerLevelName.silly) {
40
+ let rval = null;
41
+ try {
42
+ rval = jsonwebtoken_1.default.verify(payloadString, decryptKey, { ignoreExpiration: true });
43
+ }
44
+ catch (err) {
45
+ logger_1.Logger.logByLevel(logLevel, 'Caught %s - ignoring', err);
46
+ }
47
+ return rval;
48
+ }
49
+ static async secondsRemainingUntilExpiration(payloadString) {
50
+ let rval = null;
51
+ if (string_ratchet_1.StringRatchet.trimToNull(payloadString)) {
52
+ const output = await JwtRatchet.decodeTokenNoVerify(payloadString);
53
+ const nowSecond = Math.floor(Date.now() / 1000);
54
+ if (output.exp) {
55
+ const expSeconds = output.exp > nowSecond * 100 ? Math.floor(output.exp / 1000) : output.exp;
56
+ rval = Math.max(0, expSeconds - nowSecond);
57
+ }
58
+ }
59
+ return rval;
60
+ }
61
+ static async msRemainingUntilExpiration(payloadString) {
62
+ const secs = await JwtRatchet.secondsRemainingUntilExpiration(payloadString);
63
+ let rval = null;
64
+ if (secs !== null && secs !== undefined) {
65
+ rval = secs * 1000;
66
+ }
67
+ return rval;
68
+ }
69
+ async decodeToken(payloadString, expiredHandling = expired_jwt_handling_1.ExpiredJwtHandling.RETURN_NULL) {
70
+ const encKeys = await this.encryptionKeyArray();
71
+ let decKeys = Object.assign([], encKeys);
72
+ if (this.decryptKeysPromise) {
73
+ decKeys = decKeys.concat(await this.decryptKeysPromise);
74
+ }
75
+ const keysTried = [];
76
+ let payload = null;
77
+ for (let i = 0; i < decKeys.length && !payload; i++) {
78
+ keysTried.push(string_ratchet_1.StringRatchet.obscure(decKeys[i], 1, 1));
79
+ const logLevel = i === decKeys.length - 1 && this.parseFailureLogLevel ? this.parseFailureLogLevel : logger_level_name_1.LoggerLevelName.silly;
80
+ payload = await JwtRatchet.invalidSafeDecode(payloadString, decKeys[i], logLevel);
81
+ if (payload && i >= encKeys.length) {
82
+ logger_1.Logger.logByLevel(this.decryptOnlyKeyUseLogLevel, 'Used old key to decode token : %s', string_ratchet_1.StringRatchet.obscure(decKeys[i], 2));
83
+ }
84
+ }
85
+ if (payload) {
86
+ const nowSeconds = Math.floor(Date.now() / 1000);
87
+ const expSeconds = (payload === null || payload === void 0 ? void 0 : payload.exp) && payload.exp > nowSeconds * 100 ? Math.floor(payload.exp / 1000) : payload === null || payload === void 0 ? void 0 : payload.exp;
88
+ const nbfSeconds = (payload === null || payload === void 0 ? void 0 : payload.nbf) && payload.nbf > nowSeconds * 100 ? Math.floor(payload.nbf / 1000) : payload === null || payload === void 0 ? void 0 : payload.nbf;
89
+ if ((expSeconds && nowSeconds >= expSeconds) || (nbfSeconds && nowSeconds <= nbfSeconds)) {
90
+ const age = nowSeconds - expSeconds;
91
+ logger_1.Logger.debug('JWT token expired or before NBF : on %d, %s ago', payload.exp, duration_ratchet_1.DurationRatchet.formatMsDuration(age * 1000));
92
+ switch (expiredHandling) {
93
+ case expired_jwt_handling_1.ExpiredJwtHandling.THROW_EXCEPTION:
94
+ throw new Error('JWT Token was expired');
95
+ case expired_jwt_handling_1.ExpiredJwtHandling.ADD_FLAG:
96
+ payload[JwtRatchet.EXPIRED_FLAG_NAME] = true;
97
+ break;
98
+ default:
99
+ payload = null;
100
+ break;
101
+ }
102
+ }
103
+ }
104
+ else {
105
+ logger_1.Logger.warn('Unable to parse a payload (Tried %j) from : %s', keysTried, payloadString);
106
+ }
107
+ return payload;
108
+ }
109
+ async encryptionKeyArray() {
110
+ const encKey = await this.encryptionKeyPromise;
111
+ const rval = Array.isArray(encKey) ? encKey : [encKey];
112
+ if (rval.length < 1) {
113
+ throw new Error('Cannot create JwtRatchet with empty encryption key set');
114
+ }
115
+ return rval;
116
+ }
117
+ async selectRandomEncryptionKey() {
118
+ const encKey = await this.encryptionKeyArray();
119
+ const rval = encKey[Math.floor(Math.random() * encKey.length)];
120
+ return rval;
121
+ }
122
+ async createTokenString(payload, expirationSeconds, overrideEncryptionKey) {
123
+ const encKey = string_ratchet_1.StringRatchet.trimToNull(overrideEncryptionKey)
124
+ ? string_ratchet_1.StringRatchet.trimToNull(overrideEncryptionKey)
125
+ : await this.selectRandomEncryptionKey();
126
+ require_ratchet_1.RequireRatchet.notNullOrUndefined(payload, 'payload');
127
+ payload.jti = this.jtiGenerator ? this.jtiGenerator() : null;
128
+ if (expirationSeconds) {
129
+ const nowSeconds = Math.floor(Date.now() / 1000);
130
+ const expires = nowSeconds + expirationSeconds;
131
+ logger_1.Logger.debug('Forcing expiration to %d', expires);
132
+ payload.exp = expires;
133
+ }
134
+ const token = jsonwebtoken_1.default.sign(payload, encKey);
135
+ return token;
136
+ }
137
+ async refreshJWTString(tokenString, allowExpired, expirationSeconds) {
138
+ const handling = allowExpired ? expired_jwt_handling_1.ExpiredJwtHandling.ADD_FLAG : expired_jwt_handling_1.ExpiredJwtHandling.THROW_EXCEPTION;
139
+ const payload = await this.decodeToken(tokenString, handling);
140
+ const originalDurationSeconds = payload.exp && payload.iat ? payload.exp - payload.iat : null;
141
+ const newExpirationSeconds = expirationSeconds || originalDurationSeconds;
142
+ JwtRatchet.removeJwtFields(payload);
143
+ JwtRatchet.removeExpiredFlag(payload);
144
+ const token = await this.createTokenString(payload, newExpirationSeconds);
145
+ return token;
146
+ }
147
+ static decodeTokenNoVerify(token) {
148
+ return jsonwebtoken_1.default.decode(token);
149
+ }
150
+ static removeJwtFields(ob) {
151
+ if (ob) {
152
+ ['iss', 'sub', 'aud', 'exp', 'nbf', 'iat', 'jti'].forEach((k) => {
153
+ delete ob[k];
154
+ });
155
+ }
156
+ }
157
+ static removeExpiredFlag(ob) {
158
+ if (ob) {
159
+ delete ob[JwtRatchet.EXPIRED_FLAG_NAME];
160
+ }
161
+ }
162
+ }
163
+ exports.JwtRatchet = JwtRatchet;
164
+ JwtRatchet.EXPIRED_FLAG_NAME = '__jwtServiceExpiredFlag';
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });