@bitblit/ratchet-common 4.0.128-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 -4
  218. package/lib/index.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/promise-ratchet.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export class RequireRatchet {
2
+ static isNullOrUndefined(ob) {
3
+ return ob === null || ob === undefined;
4
+ }
5
+ static notNullOrUndefined(ob, name = 'object') {
6
+ if (RequireRatchet.isNullOrUndefined(ob)) {
7
+ throw new Error(name + ' may not be null or undefined');
8
+ }
9
+ }
10
+ static notNullUndefinedOrOnlyWhitespaceString(ob, name = 'string') {
11
+ if (RequireRatchet.isNullOrUndefined(ob) || ob.trim() === '') {
12
+ throw new Error(name + ' may not be null or undefined or only whitespace string');
13
+ }
14
+ }
15
+ static notNullUndefinedOrEmptyArray(ob, name = 'string') {
16
+ if (RequireRatchet.isNullOrUndefined(ob) || ob.length === 0) {
17
+ throw new Error(name + ' may not be null or undefined or an empty array');
18
+ }
19
+ }
20
+ static equal(ob1, ob2, message = 'Values must be equal') {
21
+ if (ob1 !== ob2) {
22
+ throw new Error(message);
23
+ }
24
+ }
25
+ static true(ob, message = 'Value must be true') {
26
+ RequireRatchet.equal(ob, true, message);
27
+ }
28
+ static noNullOrUndefinedValuesInArray(arr, expectedLength = null, customMsg = null) {
29
+ RequireRatchet.notNullOrUndefined(arr, 'Source array may not be null');
30
+ if (expectedLength !== null && arr.length !== expectedLength) {
31
+ throw new Error(`Expected array of length ${expectedLength} but was ${arr.length} ${customMsg}`);
32
+ }
33
+ for (let i = 0; i < arr.length; i++) {
34
+ if (RequireRatchet.isNullOrUndefined(arr[i])) {
35
+ throw new Error(`Array index ${i} was null or undefined ${customMsg}`);
36
+ }
37
+ }
38
+ }
39
+ static noNullOrUndefinedValuesInRestArgs(expectedLength, ...restArgs) {
40
+ RequireRatchet.notNullOrUndefined(restArgs, 'Source array may not be null');
41
+ if (expectedLength !== null && restArgs.length !== expectedLength) {
42
+ throw new Error(`Expected array of length ${expectedLength} but was ${restArgs.length}`);
43
+ }
44
+ for (let i = 0; i < restArgs.length; i++) {
45
+ if (RequireRatchet.isNullOrUndefined(restArgs[i])) {
46
+ throw new Error(`Array index ${i} was null or undefined`);
47
+ }
48
+ }
49
+ }
50
+ static constructorArgumentsMatchLengthAndAreNonNull() {
51
+ const args = Array.from(arguments);
52
+ const len = this.constructor.length;
53
+ return RequireRatchet.noNullOrUndefinedValuesInArray(args, len);
54
+ }
55
+ }
56
+ //# sourceMappingURL=require-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-ratchet.js","sourceRoot":"","sources":["../../src/lang/require-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { RequireRatchet } from './require-ratchet.js';
2
+ import { fail } from 'assert';
3
+ import { Logger } from '../logger/logger.js';
4
+ describe('#standardCases', function () {
5
+ it('should throw exception on null value', function () {
6
+ try {
7
+ RequireRatchet.notNullOrUndefined(null, 'test1');
8
+ fail('Should have thrown exception');
9
+ }
10
+ catch (err) {
11
+ Logger.debug('Correctly threw exception : %s', err);
12
+ }
13
+ try {
14
+ RequireRatchet.notNullOrUndefined(undefined, 'test2');
15
+ fail('Should have thrown exception');
16
+ }
17
+ catch (err) {
18
+ Logger.debug('Correctly threw exception : %s', err);
19
+ }
20
+ });
21
+ it('should throw exception on whitespace value', function () {
22
+ try {
23
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString('', 'test1');
24
+ fail('Should have thrown exception');
25
+ }
26
+ catch (err) {
27
+ Logger.debug('Correctly threw exception : %s', err);
28
+ }
29
+ try {
30
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(' ', 'test2');
31
+ fail('Should have thrown exception');
32
+ }
33
+ catch (err) {
34
+ Logger.debug('Correctly threw exception : %s', err);
35
+ }
36
+ });
37
+ });
38
+ describe('#noNullOrUndefinedValuesInArray', function () {
39
+ it('should throw exception on null value', function () {
40
+ const arr = [1, null, 'a'];
41
+ try {
42
+ RequireRatchet.noNullOrUndefinedValuesInArray(arr);
43
+ fail('Should have thrown exception');
44
+ }
45
+ catch (err) {
46
+ Logger.debug('Correctly threw exception : %s', err);
47
+ }
48
+ });
49
+ it('throw exception on bad length', function () {
50
+ const arr = [1, 2, 'a'];
51
+ try {
52
+ RequireRatchet.noNullOrUndefinedValuesInArray(arr, 4);
53
+ fail('Should have thrown exception');
54
+ }
55
+ catch (err) {
56
+ Logger.debug('Correctly threw exception : %s', err);
57
+ }
58
+ });
59
+ it('should not throw exception on good values', function () {
60
+ const arr = [1, 2, 'a'];
61
+ RequireRatchet.noNullOrUndefinedValuesInArray(arr, 3);
62
+ });
63
+ it('should not throw exception on good constructor values', function () {
64
+ const test = new ConstructorTester('a', 'b');
65
+ });
66
+ it('throw exception on null constructor param', function () {
67
+ try {
68
+ const test = new ConstructorTester('a', null);
69
+ fail('Should have thrown exception');
70
+ }
71
+ catch (err) {
72
+ Logger.debug('Correctly threw exception : %s', err);
73
+ }
74
+ });
75
+ });
76
+ export class ConstructorTester {
77
+ constructor(testVal1, testVal2) {
78
+ Logger.info('Args : %j', this.constructor);
79
+ }
80
+ }
81
+ //# sourceMappingURL=require-ratchet.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/require-ratchet.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { DurationRatchet } from './duration-ratchet.js';
2
+ import { StringRatchet } from './string-ratchet.js';
3
+ import { RequireRatchet } from './require-ratchet.js';
4
+ import { LoggerLevelName } from '../logger/logger-level-name.js';
5
+ import { Logger } from '../logger/logger.js';
6
+ export class StopWatch {
7
+ label;
8
+ starts = new Map();
9
+ ends = new Map();
10
+ createTime = Date.now();
11
+ constructor(label = StringRatchet.createRandomHexString(4)) {
12
+ this.label = label;
13
+ }
14
+ start(name) {
15
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
16
+ const now = Date.now();
17
+ this.starts.set(StringRatchet.trimToNull(name), now);
18
+ return now;
19
+ }
20
+ stop(name) {
21
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
22
+ const now = Date.now();
23
+ this.ends.set(StringRatchet.trimToNull(name), now);
24
+ return now;
25
+ }
26
+ reset(name) {
27
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
28
+ this.starts.delete(StringRatchet.trimToNull(name));
29
+ this.ends.delete(StringRatchet.trimToNull(name));
30
+ }
31
+ hasTimer(name) {
32
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
33
+ return this.starts.has(name);
34
+ }
35
+ log(name, shortForm, logLevel = LoggerLevelName.info) {
36
+ Logger.logByLevel(logLevel, this.dump(name, shortForm));
37
+ }
38
+ logExpected(pctComplete, name, shortForm, logLevel = LoggerLevelName.info) {
39
+ Logger.logByLevel(logLevel, this.dumpExpected(pctComplete, name, shortForm));
40
+ }
41
+ dump(name, shortForm) {
42
+ let rval = this.label + ' ';
43
+ const cleanName = StringRatchet.trimToNull(name);
44
+ if (cleanName && !this.hasTimer(cleanName)) {
45
+ rval += 'No such timer : ' + cleanName;
46
+ }
47
+ else {
48
+ const start = name ? this.starts.get(cleanName) : this.createTime;
49
+ const end = name ? this.ends.get(cleanName) : Date.now();
50
+ rval += (cleanName || 'Default') + ' ';
51
+ if (!!start && !!end) {
52
+ rval += 'completed in ' + DurationRatchet.formatMsDuration(end - start, !shortForm);
53
+ }
54
+ else if (!!start) {
55
+ rval += 'running for ' + DurationRatchet.formatMsDuration(Date.now() - start, !shortForm);
56
+ }
57
+ }
58
+ return rval;
59
+ }
60
+ dumpExpected(pctComplete, name, shortForm) {
61
+ let rval = this.label + ' ';
62
+ const cleanName = StringRatchet.trimToNull(name);
63
+ if (cleanName && !this.hasTimer(cleanName)) {
64
+ rval += 'No such timer : ' + cleanName;
65
+ }
66
+ else {
67
+ if (!pctComplete || pctComplete <= 0) {
68
+ rval += 'Cannot generate output for 0 percent complete';
69
+ }
70
+ else if (pctComplete > 1) {
71
+ rval += 'Cannot generate output for percent > 1';
72
+ }
73
+ else {
74
+ rval += (cleanName || 'Default') + ' ';
75
+ const start = name ? this.starts.get(cleanName) : this.createTime;
76
+ const end = name ? this.ends.get(cleanName) : Date.now();
77
+ if (!!start && !!end) {
78
+ rval += 'completed in ' + DurationRatchet.formatMsDuration(end - start, !shortForm);
79
+ }
80
+ else if (!!start) {
81
+ const now = Date.now();
82
+ const elapsedMS = now - start;
83
+ const expectedTotalMS = elapsedMS / pctComplete;
84
+ const remainMS = expectedTotalMS - elapsedMS;
85
+ rval +=
86
+ 'running for ' +
87
+ DurationRatchet.formatMsDuration(elapsedMS, !shortForm) +
88
+ ' approx ' +
89
+ DurationRatchet.formatMsDuration(remainMS, !shortForm) +
90
+ ' remaining';
91
+ }
92
+ }
93
+ }
94
+ return rval;
95
+ }
96
+ elapsedMS(name) {
97
+ let rval = null;
98
+ const cleanName = StringRatchet.trimToNull(name);
99
+ if (cleanName && !this.hasTimer(cleanName)) {
100
+ rval = null;
101
+ }
102
+ else {
103
+ const start = name ? this.starts.get(cleanName) : this.createTime;
104
+ const end = name ? this.ends.get(cleanName) : Date.now();
105
+ if (!!start && !!end) {
106
+ rval = end - start;
107
+ }
108
+ else if (!!start) {
109
+ rval = Date.now() - start;
110
+ }
111
+ }
112
+ return rval;
113
+ }
114
+ }
115
+ //# sourceMappingURL=stop-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-watch.js","sourceRoot":"","sources":["../../src/lang/stop-watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import { RequireRatchet } from './require-ratchet.js';
2
+ class StringRatchet {
3
+ static RFC_3986_RESERVED = ['!', '*', "'", '(', ')', ';', ':', '@', '&', '=', '+', '$', ',', '/', '?', '#', '[', ']', '%'];
4
+ static stringToUint8Array(val) {
5
+ return val ? new TextEncoder().encode(val) : null;
6
+ }
7
+ static uint8ArrayToString(val) {
8
+ return val ? new TextDecoder().decode(val) : null;
9
+ }
10
+ static attemptJsonParse(val) {
11
+ let rval = null;
12
+ if (StringRatchet.trimToNull(val)) {
13
+ try {
14
+ rval = JSON.parse(val);
15
+ }
16
+ catch (err) {
17
+ rval = null;
18
+ }
19
+ }
20
+ return rval;
21
+ }
22
+ static canParseAsJson(val) {
23
+ return !!StringRatchet.attemptJsonParse(val);
24
+ }
25
+ static allUnique(input) {
26
+ let rval = true;
27
+ if (input) {
28
+ const check = new Set();
29
+ for (let i = 0; i < input.length && rval; i++) {
30
+ const test = input.charAt(i);
31
+ rval = !check.has(test);
32
+ check.add(test);
33
+ }
34
+ }
35
+ return rval;
36
+ }
37
+ static allPermutationsOfLength(len, alphabet) {
38
+ const rval = [];
39
+ if (len > 0 && alphabet && alphabet.length > 0) {
40
+ RequireRatchet.true(StringRatchet.allUnique(alphabet), 'Alphabet must be unique');
41
+ const step = len === 1 ? [''] : StringRatchet.allPermutationsOfLength(len - 1, alphabet);
42
+ for (let i = 0; i < alphabet.length; i++) {
43
+ step.forEach((s) => rval.push(alphabet.charAt(i) + s));
44
+ }
45
+ }
46
+ return rval;
47
+ }
48
+ static createType4Guid() {
49
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
50
+ const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
51
+ return v.toString(16);
52
+ });
53
+ }
54
+ static createRandomHexString(len = 10) {
55
+ let r = '';
56
+ for (let i = 0; i < len; i++) {
57
+ r += Math.floor(Math.random() * 16).toString(16);
58
+ }
59
+ return r;
60
+ }
61
+ static canonicalize(value) {
62
+ let rval = value ? value.toLowerCase() : '';
63
+ rval = rval.replace(' ', '-');
64
+ StringRatchet.RFC_3986_RESERVED.forEach((s) => {
65
+ rval = rval.replace(s, '');
66
+ });
67
+ return rval;
68
+ }
69
+ static formatBytes(bytes, decimals = 2) {
70
+ if (bytes == 0)
71
+ return '0 Bytes';
72
+ const k = 1024, dm = decimals || 2, sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));
73
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
74
+ }
75
+ static safeString(input) {
76
+ let rval = null;
77
+ if (input != null) {
78
+ const type = typeof input;
79
+ if (type == 'string') {
80
+ rval = input;
81
+ }
82
+ else {
83
+ rval = String(input);
84
+ }
85
+ }
86
+ return rval;
87
+ }
88
+ static stringContainsOnlyNumbers(input) {
89
+ const rval = /^[0-9]+$/.test(input);
90
+ return rval;
91
+ }
92
+ static stringContainsOnlyAlphanumeric(input) {
93
+ const rval = /^[0-9a-zA-Z]+$/.test(input);
94
+ return rval;
95
+ }
96
+ static stringContainsOnlyHex(input) {
97
+ const rval = /^[0-9a-fA-F]+$/.test(input);
98
+ return rval;
99
+ }
100
+ static stringContainsOnly(inVal, validCharsIn) {
101
+ const input = !inVal ? '' : inVal;
102
+ const validChars = !validCharsIn ? '' : validCharsIn;
103
+ let rval = true;
104
+ for (let i = 0; i < input.length && rval; i++) {
105
+ rval = validChars.indexOf(input.charAt(i)) >= 0;
106
+ }
107
+ return rval;
108
+ }
109
+ static obscure(input, prefixLength = 2, suffixLength = 2) {
110
+ if (!input) {
111
+ return input;
112
+ }
113
+ const len = input.length;
114
+ let pl = prefixLength;
115
+ let sl = suffixLength;
116
+ while (len > 0 && len < pl + sl + 1) {
117
+ pl = Math.max(0, pl - 1);
118
+ sl = Math.max(0, sl - 1);
119
+ }
120
+ const rem = len - (pl + sl);
121
+ let rval = '';
122
+ rval += input.substring(0, pl);
123
+ for (let i = 0; i < rem; i++) {
124
+ rval += '*';
125
+ }
126
+ rval += input.substring(len - sl);
127
+ return rval;
128
+ }
129
+ static leadingZeros(inVal, size) {
130
+ const pad = '00000000000000000000000000000000000000000000000000';
131
+ let negative = false;
132
+ let sVal = String(inVal);
133
+ if (sVal.startsWith('-')) {
134
+ negative = true;
135
+ sVal = sVal.substring(1);
136
+ }
137
+ if (size > pad.length) {
138
+ throw new Error('Cannot format number that large');
139
+ }
140
+ let rval = (pad + sVal).slice(-1 * size);
141
+ if (negative) {
142
+ rval = '-' + rval;
143
+ }
144
+ return rval;
145
+ }
146
+ static trimToEmpty(input) {
147
+ const t = input ? StringRatchet.safeString(input) : '';
148
+ return t.trim();
149
+ }
150
+ static trimToNull(input) {
151
+ const x = StringRatchet.trimToEmpty(input);
152
+ return x.length > 0 ? x : null;
153
+ }
154
+ static trimAllStringPropertiesToNullInPlace(input) {
155
+ return StringRatchet.trimAllStringPropertiesInPlace(input, false);
156
+ }
157
+ static trimAllStringPropertiesToEmptyInPlace(input) {
158
+ return StringRatchet.trimAllStringPropertiesInPlace(input, true);
159
+ }
160
+ static trimAllStringPropertiesInPlace(input, toEmpty) {
161
+ const dealKeys = Object.keys(input);
162
+ dealKeys.forEach((key) => {
163
+ const val = input[key];
164
+ if (val != null && typeof val === 'string') {
165
+ input[key] = toEmpty ? StringRatchet.trimToEmpty(input[key]) : StringRatchet.trimToNull(input[key]);
166
+ }
167
+ });
168
+ return input;
169
+ }
170
+ static stripNonNumeric(input) {
171
+ let rval = input;
172
+ if (input != null && !StringRatchet.stringContainsOnlyNumbers(input)) {
173
+ rval = '';
174
+ for (let i = 0; i < input.length; i++) {
175
+ const c = input.charAt(i);
176
+ if (StringRatchet.stringContainsOnlyNumbers(c) || (i === 0 && c === '-')) {
177
+ rval += c;
178
+ }
179
+ }
180
+ }
181
+ return rval;
182
+ }
183
+ static csvSafe(input) {
184
+ let rval = StringRatchet.trimToEmpty(StringRatchet.safeString(input));
185
+ rval.split('"').join('\\"');
186
+ if (rval.indexOf(',') !== -1 || rval.indexOf('"') !== -1 || rval.indexOf("'") !== -1) {
187
+ rval = '"' + rval + '"';
188
+ }
189
+ return rval;
190
+ }
191
+ static stripNonAscii(value) {
192
+ const reduced = [...value].reduce((previousValue, currentValue) => {
193
+ const charCode = currentValue.charCodeAt(0);
194
+ if (charCode > 127) {
195
+ return previousValue;
196
+ }
197
+ return previousValue + currentValue;
198
+ });
199
+ return reduced;
200
+ }
201
+ }
202
+ export { StringRatchet };
203
+ //# sourceMappingURL=string-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-ratchet.js","sourceRoot":"","sources":["../../src/lang/string-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { StringRatchet } from './string-ratchet.js';
2
+ describe('#formatBytes', function () {
3
+ it('should format 0 bytes correctly', function () {
4
+ const result = StringRatchet.formatBytes(0);
5
+ expect(result).toEqual('0 Bytes');
6
+ });
7
+ it('should format less than a Kb correctly', function () {
8
+ const result = StringRatchet.formatBytes(123);
9
+ expect(result).toEqual('123 Bytes');
10
+ });
11
+ it('should format less than a Mb correctly', function () {
12
+ const result = StringRatchet.formatBytes(1024);
13
+ expect(result).toEqual('1 KB');
14
+ });
15
+ it('should format less than a Mb correctly with 3 decimals', function () {
16
+ const result = StringRatchet.formatBytes(1234, 3);
17
+ expect(result).toEqual('1.205 KB');
18
+ });
19
+ });
20
+ describe('#safeToString', function () {
21
+ it('should return "asdf"', function () {
22
+ const result = StringRatchet.safeString('asdf');
23
+ expect(result).toEqual('asdf');
24
+ });
25
+ it('should return "55"', function () {
26
+ const result = StringRatchet.safeString(55);
27
+ expect(result).toEqual('55');
28
+ });
29
+ });
30
+ describe('#obscure', function () {
31
+ it('should return "pa****rd"', function () {
32
+ const result = StringRatchet.obscure('password', 2, 2);
33
+ expect(result).toEqual('pa****rd');
34
+ });
35
+ it('should return null', function () {
36
+ const result = StringRatchet.obscure(null, 2, 2);
37
+ expect(result).toBeNull();
38
+ });
39
+ it('should return "p**s"', function () {
40
+ const result = StringRatchet.obscure('pass', 2, 2);
41
+ expect(result).toEqual('p**s');
42
+ });
43
+ it('should return "****"', function () {
44
+ const result = StringRatchet.obscure('pass', 0, 0);
45
+ expect(result).toEqual('****');
46
+ });
47
+ it('should return "p***"', function () {
48
+ const result = StringRatchet.obscure('pass', 1, 0);
49
+ expect(result).toEqual('p***');
50
+ });
51
+ it('should return "***s"', function () {
52
+ const result = StringRatchet.obscure('pass', 0, 1);
53
+ expect(result).toEqual('***s');
54
+ });
55
+ });
56
+ describe('#guid', function () {
57
+ it('should generate a guid"', function () {
58
+ const result = StringRatchet.createType4Guid();
59
+ expect(result).toBeTruthy();
60
+ });
61
+ });
62
+ describe('#randomHexString', function () {
63
+ it('should generate a random hex string"', function () {
64
+ const result = StringRatchet.createRandomHexString(12);
65
+ expect(result).toBeTruthy();
66
+ expect(result.length).toEqual(12);
67
+ });
68
+ });
69
+ describe('#leadingZeros', function () {
70
+ it('should generate string with leading zeros"', function () {
71
+ const result = StringRatchet.leadingZeros(25, 4);
72
+ expect(result).toEqual('0025');
73
+ });
74
+ it('should generate string with leading zeros and a negative sign"', function () {
75
+ const result = StringRatchet.leadingZeros(-8, 2);
76
+ expect(result).toEqual('-08');
77
+ });
78
+ });
79
+ describe('#stripNonNumeric', function () {
80
+ it('should return a string containing only numbers"', function () {
81
+ const result = StringRatchet.stripNonNumeric('702-555-1212');
82
+ expect(result).toEqual('7025551212');
83
+ });
84
+ });
85
+ describe('#stringContainsOnly', function () {
86
+ it('should check string contains only valid chars"', function () {
87
+ expect(StringRatchet.stringContainsOnly('test', 'tes')).toBeTruthy();
88
+ expect(StringRatchet.stringContainsOnly('test', 'teg')).toBeFalsy();
89
+ expect(StringRatchet.stringContainsOnlyAlphanumeric('test')).toBeTruthy();
90
+ expect(StringRatchet.stringContainsOnlyAlphanumeric('tes-')).toBeFalsy();
91
+ expect(StringRatchet.stringContainsOnlyHex('1a3')).toBeTruthy();
92
+ expect(StringRatchet.stringContainsOnlyHex('test')).toBeFalsy();
93
+ });
94
+ });
95
+ describe('#stringCsvSafe', function () {
96
+ it('should make values safe to place in a CSV"', function () {
97
+ expect(StringRatchet.csvSafe('test')).toEqual('test');
98
+ expect(StringRatchet.csvSafe('test,and 1')).toEqual('"test,and 1"');
99
+ expect(StringRatchet.csvSafe(1)).toEqual('1');
100
+ expect(StringRatchet.csvSafe("test'blah")).toEqual('"test\'blah"');
101
+ });
102
+ });
103
+ describe('#trimToEmpty', function () {
104
+ it('should return an empty string for null"', function () {
105
+ const result = StringRatchet.trimToEmpty(null);
106
+ expect(result).toEqual('');
107
+ });
108
+ it('should return an empty string for undefined"', function () {
109
+ const result = StringRatchet.trimToEmpty(undefined);
110
+ expect(result).toEqual('');
111
+ });
112
+ it('should return an empty string"', function () {
113
+ const result = StringRatchet.trimToEmpty(' ');
114
+ expect(result).toEqual('');
115
+ });
116
+ it('should return an abc"', function () {
117
+ const result = StringRatchet.trimToEmpty('abc ');
118
+ expect(result).toEqual('abc');
119
+ });
120
+ it('should return string "5"', function () {
121
+ const result = StringRatchet.trimToEmpty(5);
122
+ expect(result).toEqual('5');
123
+ });
124
+ });
125
+ describe('#trimStringPropertiesInPlace', function () {
126
+ it('should trim properties to null"', function () {
127
+ const test = {
128
+ a: 'test ',
129
+ b: 1,
130
+ c: ' test',
131
+ d: null,
132
+ e: ' ',
133
+ };
134
+ const nullResult = StringRatchet.trimAllStringPropertiesToNullInPlace(test);
135
+ expect(nullResult).not.toBeNull();
136
+ expect(nullResult['a']).toEqual('test');
137
+ expect(nullResult['b']).toEqual(1);
138
+ expect(nullResult['c']).toEqual('test');
139
+ expect(nullResult['d']).toEqual(null);
140
+ expect(nullResult['e']).toEqual(null);
141
+ });
142
+ it('should trim properties to empty"', function () {
143
+ const test = {
144
+ a: 'test ',
145
+ b: 1,
146
+ c: ' test',
147
+ d: null,
148
+ e: ' ',
149
+ };
150
+ const emptyResult = StringRatchet.trimAllStringPropertiesToEmptyInPlace(test);
151
+ expect(emptyResult).not.toBeNull();
152
+ expect(emptyResult['a']).toEqual('test');
153
+ expect(emptyResult['b']).toEqual(1);
154
+ expect(emptyResult['c']).toEqual('test');
155
+ expect(emptyResult['d']).toEqual(null);
156
+ expect(emptyResult['e']).toEqual('');
157
+ });
158
+ });
159
+ //# sourceMappingURL=string-ratchet.spec.js.map