@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.
- package/lib/2d/line-2d.js +2 -0
- package/lib/2d/line-2d.js.map +1 -0
- package/lib/2d/plane-2d.js +2 -0
- package/lib/2d/plane-2d.js.map +1 -0
- package/lib/2d/point-2d.js +2 -0
- package/lib/2d/point-2d.js.map +1 -0
- package/lib/2d/poly-line-2d.js +2 -0
- package/lib/2d/poly-line-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.js +246 -0
- package/lib/2d/ratchet-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.spec.js +118 -0
- package/lib/2d/ratchet-2d.spec.js.map +1 -0
- package/lib/build/build-information.js +2 -0
- package/lib/build/build-information.js.map +1 -0
- package/lib/build/ratchet-common-info.js +15 -0
- package/lib/build/ratchet-common-info.js.map +1 -0
- package/lib/histogram/histogram-entry.js +2 -0
- package/lib/histogram/histogram-entry.js.map +1 -0
- package/lib/histogram/histogram.js +49 -0
- package/lib/histogram/histogram.js.map +1 -0
- package/lib/histogram/histogram.spec.js +20 -0
- package/lib/histogram/histogram.spec.js.map +1 -0
- package/lib/index.js +74 -0
- package/lib/index.js.map +1 -0
- package/lib/jwt/common-jwt-token.js +2 -0
- package/lib/jwt/common-jwt-token.js.map +1 -0
- package/lib/jwt/expired-jwt-handling.js +7 -0
- package/lib/jwt/expired-jwt-handling.js.map +1 -0
- package/lib/jwt/jwt-ratchet-like.js +2 -0
- package/lib/jwt/jwt-ratchet-like.js.map +1 -0
- package/lib/jwt/jwt-ratchet.js +166 -0
- package/lib/jwt/jwt-ratchet.js.map +1 -0
- package/lib/jwt/jwt-ratchet.spec.js +50 -0
- package/lib/jwt/jwt-ratchet.spec.js.map +1 -0
- package/lib/jwt/jwt-token-base.js +2 -0
- package/lib/jwt/jwt-token-base.js.map +1 -0
- package/lib/lang/array-ratchet.js +84 -0
- package/lib/lang/array-ratchet.js.map +1 -0
- package/lib/lang/array-ratchet.spec.js +69 -0
- package/lib/lang/array-ratchet.spec.js.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +1 -1
- package/lib/lang/base64-ratchet.js +46 -0
- package/lib/lang/base64-ratchet.js.map +1 -0
- package/lib/lang/base64-ratchet.spec.js +29 -0
- package/lib/lang/base64-ratchet.spec.js.map +1 -0
- package/lib/lang/boolean-ratchet.js +46 -0
- package/lib/lang/boolean-ratchet.js.map +1 -0
- package/lib/lang/boolean-ratchet.spec.js +82 -0
- package/lib/lang/boolean-ratchet.spec.js.map +1 -0
- package/lib/lang/composite-last-success-provider.js +27 -0
- package/lib/lang/composite-last-success-provider.js.map +1 -0
- package/lib/lang/composite-last-success-provider.spec.js +27 -0
- package/lib/lang/composite-last-success-provider.spec.js.map +1 -0
- package/lib/lang/date-ratchet.js +31 -0
- package/lib/lang/date-ratchet.js.map +1 -0
- package/lib/lang/date-ratchet.spec.js +22 -0
- package/lib/lang/date-ratchet.spec.js.map +1 -0
- package/lib/lang/duration-ratchet.js +43 -0
- package/lib/lang/duration-ratchet.js.map +1 -0
- package/lib/lang/duration-ratchet.spec.js +40 -0
- package/lib/lang/duration-ratchet.spec.js.map +1 -0
- package/lib/lang/enum-ratchet.js +31 -0
- package/lib/lang/enum-ratchet.js.map +1 -0
- package/lib/lang/enum-ratchet.spec.js +32 -0
- package/lib/lang/enum-ratchet.spec.js.map +1 -0
- package/lib/lang/error-ratchet.js +45 -0
- package/lib/lang/error-ratchet.js.map +1 -0
- package/lib/lang/error-ratchet.spec.js +21 -0
- package/lib/lang/error-ratchet.spec.js.map +1 -0
- package/lib/lang/esm-ratchet.js +18 -0
- package/lib/lang/esm-ratchet.js.map +1 -0
- package/lib/lang/expiring-object.js +73 -0
- package/lib/lang/expiring-object.js.map +1 -0
- package/lib/lang/expiring-object.spec.js +52 -0
- package/lib/lang/expiring-object.spec.js.map +1 -0
- package/lib/lang/geolocation-ratchet.js +264 -0
- package/lib/lang/geolocation-ratchet.js.map +1 -0
- package/lib/lang/geolocation-ratchet.spec.js +75 -0
- package/lib/lang/geolocation-ratchet.spec.js.map +1 -0
- package/lib/lang/global-ratchet.js +44 -0
- package/lib/lang/global-ratchet.js.map +1 -0
- package/lib/lang/global-ratchet.spec.js +15 -0
- package/lib/lang/global-ratchet.spec.js.map +1 -0
- package/lib/lang/key-value.js +5 -0
- package/lib/lang/key-value.js.map +1 -0
- package/lib/lang/last-success-provider.js +2 -0
- package/lib/lang/last-success-provider.js.map +1 -0
- package/lib/lang/map-ratchet.js +165 -0
- package/lib/lang/map-ratchet.js.map +1 -0
- package/lib/lang/map-ratchet.spec.js +91 -0
- package/lib/lang/map-ratchet.spec.js.map +1 -0
- package/lib/lang/no.js +5 -0
- package/lib/lang/no.js.map +1 -0
- package/lib/lang/no.spec.js +8 -0
- package/lib/lang/no.spec.js.map +1 -0
- package/lib/lang/number-ratchet.js +157 -0
- package/lib/lang/number-ratchet.js.map +1 -0
- package/lib/lang/number-ratchet.spec.js +119 -0
- package/lib/lang/number-ratchet.spec.js.map +1 -0
- package/lib/lang/parsed-url.js +2 -0
- package/lib/lang/parsed-url.js.map +1 -0
- package/lib/lang/promise-ratchet.js +139 -0
- package/lib/lang/promise-ratchet.js.map +1 -0
- package/lib/lang/promise-ratchet.spec.js +75 -0
- package/lib/lang/promise-ratchet.spec.js.map +1 -0
- package/lib/lang/require-ratchet.js +56 -0
- package/lib/lang/require-ratchet.js.map +1 -0
- package/lib/lang/require-ratchet.spec.js +81 -0
- package/lib/lang/require-ratchet.spec.js.map +1 -0
- package/lib/lang/stop-watch.js +115 -0
- package/lib/lang/stop-watch.js.map +1 -0
- package/lib/lang/string-ratchet.js +203 -0
- package/lib/lang/string-ratchet.js.map +1 -0
- package/lib/lang/string-ratchet.spec.js +159 -0
- package/lib/lang/string-ratchet.spec.js.map +1 -0
- package/lib/lang/time-zone-ratchet.js +79 -0
- package/lib/lang/time-zone-ratchet.js.map +1 -0
- package/lib/lang/time-zone-ratchet.spec.js +41 -0
- package/lib/lang/time-zone-ratchet.spec.js.map +1 -0
- package/lib/lang/timeout-token.js +18 -0
- package/lib/lang/timeout-token.js.map +1 -0
- package/lib/lang/timeout-token.spec.js +10 -0
- package/lib/lang/timeout-token.spec.js.map +1 -0
- package/lib/lang/transform-ratchet.js +67 -0
- package/lib/lang/transform-ratchet.js.map +1 -0
- package/lib/lang/transform-ratchet.spec.js +119 -0
- package/lib/lang/transform-ratchet.spec.js.map +1 -0
- package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
- package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
- package/lib/logger/log-message-builder.js +49 -0
- package/lib/logger/log-message-builder.js.map +1 -0
- package/lib/logger/log-message-format-type.js +7 -0
- package/lib/logger/log-message-format-type.js.map +1 -0
- package/lib/logger/log-message-formatter.js +2 -0
- package/lib/logger/log-message-formatter.js.map +1 -0
- package/lib/logger/log-message-processor.js +2 -0
- package/lib/logger/log-message-processor.js.map +1 -0
- package/lib/logger/log-message.js +2 -0
- package/lib/logger/log-message.js.map +1 -0
- package/lib/logger/log-snapshot.js +2 -0
- package/lib/logger/log-snapshot.js.map +1 -0
- package/lib/logger/logger-instance.js +209 -0
- package/lib/logger/logger-instance.js.map +1 -0
- package/lib/logger/logger-level-name.js +10 -0
- package/lib/logger/logger-level-name.js.map +1 -0
- package/lib/logger/logger-meta.js +2 -0
- package/lib/logger/logger-meta.js.map +1 -0
- package/lib/logger/logger-options.js +2 -0
- package/lib/logger/logger-options.js.map +1 -0
- package/lib/logger/logger-output-function.js +7 -0
- package/lib/logger/logger-output-function.js.map +1 -0
- package/lib/logger/logger-ring-buffer.js +72 -0
- package/lib/logger/logger-ring-buffer.js.map +1 -0
- package/lib/logger/logger-util.js +46 -0
- package/lib/logger/logger-util.js.map +1 -0
- package/lib/logger/logger-util.spec.js +10 -0
- package/lib/logger/logger-util.spec.js.map +1 -0
- package/lib/logger/logger.js +136 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/logger.spec.js +135 -0
- package/lib/logger/logger.spec.js.map +1 -0
- package/lib/logger/none-log-message-formatter.js +6 -0
- package/lib/logger/none-log-message-formatter.js.map +1 -0
- package/lib/logger/structured-json-log-message-formatter.js +20 -0
- package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
- package/lib/network/browser-local-ip-provider.js +22 -0
- package/lib/network/browser-local-ip-provider.js.map +1 -0
- package/lib/network/browser-local-ip-provider.spec.js +17 -0
- package/lib/network/browser-local-ip-provider.spec.js.map +1 -0
- package/lib/network/fixed-local-ip-provider.js +10 -0
- package/lib/network/fixed-local-ip-provider.js.map +1 -0
- package/lib/network/local-ip-provider.js +2 -0
- package/lib/network/local-ip-provider.js.map +1 -0
- package/lib/network/network-ratchet.js +104 -0
- package/lib/network/network-ratchet.js.map +1 -0
- package/lib/network/network-ratchet.spec.js +14 -0
- package/lib/network/network-ratchet.spec.js.map +1 -0
- package/lib/stream/buffer-writable.d.ts +2 -2
- package/lib/stream/buffer-writable.js +17 -0
- package/lib/stream/buffer-writable.js.map +1 -0
- package/lib/stream/multi-stream.d.ts +1 -1
- package/lib/stream/multi-stream.js +13 -0
- package/lib/stream/multi-stream.js.map +1 -0
- package/lib/stream/stream-ratchet.d.ts +2 -2
- package/lib/stream/stream-ratchet.js +69 -0
- package/lib/stream/stream-ratchet.js.map +1 -0
- package/lib/stream/stream-ratchet.spec.js +14 -0
- package/lib/stream/stream-ratchet.spec.js.map +1 -0
- package/lib/stream/string-writable.d.ts +1 -1
- package/lib/stream/string-writable.js +15 -0
- package/lib/stream/string-writable.js.map +1 -0
- package/lib/stream/string-writable.spec.js +13 -0
- package/lib/stream/string-writable.spec.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js +30 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.spec.js +21 -0
- package/lib/third-party/google/google-recaptcha-ratchet.spec.js.map +1 -0
- package/lib/third-party/twilio/twilio-ratchet.js +75 -0
- package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
- package/lib/transform/built-in-transforms.js +192 -0
- package/lib/transform/built-in-transforms.js.map +1 -0
- package/lib/transform/transform-rule.js +2 -0
- package/lib/transform/transform-rule.js.map +1 -0
- package/lib/tx/transaction-configuration.js +2 -0
- package/lib/tx/transaction-configuration.js.map +1 -0
- package/lib/tx/transaction-final-state.js +7 -0
- package/lib/tx/transaction-final-state.js.map +1 -0
- package/lib/tx/transaction-ratchet.js +77 -0
- package/lib/tx/transaction-ratchet.js.map +1 -0
- package/lib/tx/transaction-ratchet.spec.js +131 -0
- package/lib/tx/transaction-ratchet.spec.js.map +1 -0
- package/lib/tx/transaction-result.js +2 -0
- package/lib/tx/transaction-result.js.map +1 -0
- package/lib/tx/transaction-step.js +2 -0
- package/lib/tx/transaction-step.js.map +1 -0
- package/package.json +3 -2
- package/lib/index.mjs +0 -4
- package/lib/index.mjs.map +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Logger } from './logger.js';
|
|
2
|
+
import { LoggerLevelName } from './logger-level-name.js';
|
|
3
|
+
import { StringRatchet } from '../lang/string-ratchet.js';
|
|
4
|
+
import { LogMessageBuilder } from './log-message-builder.js';
|
|
5
|
+
import { LogMessageFormatType } from './log-message-format-type.js';
|
|
6
|
+
import { LoggerOutputFunction } from './logger-output-function.js';
|
|
7
|
+
describe('#setLevel', function () {
|
|
8
|
+
it('should change the level to debug then info then debug', function () {
|
|
9
|
+
Logger.dumpConfigurationIntoLog();
|
|
10
|
+
expect(Logger.getLevel()).toEqual(LoggerLevelName.info);
|
|
11
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
12
|
+
expect(Logger.getLevel()).toEqual(LoggerLevelName.debug);
|
|
13
|
+
Logger.setLevel(LoggerLevelName.info);
|
|
14
|
+
expect(Logger.getLevel()).toEqual(LoggerLevelName.info);
|
|
15
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
16
|
+
expect(Logger.getLevel()).toEqual(LoggerLevelName.debug);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('#takeSnapshot', function () {
|
|
20
|
+
it('should advance the pointer correctly after a snapshot', function () {
|
|
21
|
+
Logger.changeRingBufferSize(5);
|
|
22
|
+
expect(Logger.getRingBuffer().currentIndex).toEqual(0);
|
|
23
|
+
Logger.info('m1');
|
|
24
|
+
Logger.info('m2');
|
|
25
|
+
Logger.info('m3');
|
|
26
|
+
const snap1 = Logger.takeSnapshot();
|
|
27
|
+
Logger.info('m4');
|
|
28
|
+
Logger.info('m5');
|
|
29
|
+
const snap2 = Logger.takeSnapshot();
|
|
30
|
+
Logger.info('m6');
|
|
31
|
+
Logger.info('m7');
|
|
32
|
+
Logger.info('m8');
|
|
33
|
+
const snap3 = Logger.takeSnapshot();
|
|
34
|
+
expect(snap1.messages.length).toEqual(3);
|
|
35
|
+
expect(snap2.messages.length).toEqual(2);
|
|
36
|
+
expect(snap3.messages.length).toEqual(3);
|
|
37
|
+
expect(Logger.getRingBuffer().currentIndex).toEqual(8);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('#testTracePrefix', function () {
|
|
41
|
+
it('should apply a trace prefix correctly', function () {
|
|
42
|
+
Logger.updateTracePrefix('::TRACE::');
|
|
43
|
+
Logger.changeRingBufferSize(3);
|
|
44
|
+
Logger.info('m1');
|
|
45
|
+
Logger.info('m2');
|
|
46
|
+
const snap1 = Logger.takeSnapshot();
|
|
47
|
+
const snap1String = Logger.formatMessages(snap1.messages);
|
|
48
|
+
expect(snap1String.length).toBeGreaterThan(0);
|
|
49
|
+
snap1String.forEach((m) => {
|
|
50
|
+
expect(m.indexOf('::TRACE::')).toBeGreaterThan(-1);
|
|
51
|
+
});
|
|
52
|
+
Logger.updateTracePrefix(null);
|
|
53
|
+
Logger.info('m1');
|
|
54
|
+
Logger.info('m2');
|
|
55
|
+
const snap2 = Logger.takeSnapshot();
|
|
56
|
+
expect(snap2.messages.length).toBeGreaterThan(0);
|
|
57
|
+
snap2.messages.forEach((m) => {
|
|
58
|
+
expect(m.messageSource.indexOf('::TRACE::')).toEqual(-1);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('#testLastMessage', function () {
|
|
63
|
+
it('should return the last message', function () {
|
|
64
|
+
Logger.info('m1');
|
|
65
|
+
Logger.info('m2');
|
|
66
|
+
const last = Logger.getLastLogMessage();
|
|
67
|
+
expect(last).toBeTruthy();
|
|
68
|
+
expect(last.lvl).toEqual(LoggerLevelName.info);
|
|
69
|
+
expect(last.messageSource.endsWith('m2')).toBeTruthy();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('#testPassThruFunctions', function () {
|
|
73
|
+
it('should pass through values', function () {
|
|
74
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
75
|
+
Logger.error('Test %s', 'tVal');
|
|
76
|
+
Logger.errorP('TestP %s', 'tVal');
|
|
77
|
+
Logger.errorP('TestP 2', 27, { some: 'Object' });
|
|
78
|
+
Logger.warn('Test %s', 'tVal');
|
|
79
|
+
Logger.warnP('TestP %s', 'tVal');
|
|
80
|
+
Logger.info('Test %s', 'tVal');
|
|
81
|
+
Logger.infoP('TestP %s', 'tVal');
|
|
82
|
+
Logger.debug('Test %s', 'tVal');
|
|
83
|
+
Logger.debugP('TestP %s', 'tVal');
|
|
84
|
+
Logger.verbose('Test %s', 'tVal');
|
|
85
|
+
Logger.verboseP('TestP %s', 'tVal');
|
|
86
|
+
Logger.silly('Test %s', 'tVal');
|
|
87
|
+
Logger.sillyP('TestP %s', 'tVal');
|
|
88
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('#testFormatter', function () {
|
|
92
|
+
it('should format values', function () {
|
|
93
|
+
const msg = {
|
|
94
|
+
lvl: LoggerLevelName.info,
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
messageSource: 'Test %d %d',
|
|
97
|
+
subsVars: [1, 2],
|
|
98
|
+
params: {},
|
|
99
|
+
};
|
|
100
|
+
Logger.info('Test %d %d', 3, 4);
|
|
101
|
+
const msgS = Logger.formatMessages([msg])[0];
|
|
102
|
+
expect(msgS).toEqual('[info] Test 1 2');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('#testPreProcessor', function () {
|
|
106
|
+
it('should perform a preprocess', function () {
|
|
107
|
+
const preProc = {
|
|
108
|
+
process(msg) {
|
|
109
|
+
msg.messageSource = 'Preprocess';
|
|
110
|
+
return msg;
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const output = Logger.getLogger(StringRatchet.createRandomHexString(4), { preProcessors: [preProc] }).info('This is a test %s', 'bob');
|
|
114
|
+
expect(output).toEqual('[info] Preprocess bob');
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
describe('#testBuilder', function () {
|
|
118
|
+
it('should use a builder', function () {
|
|
119
|
+
const output = Logger.getLogger(StringRatchet.createRandomHexString(4)).recordMessageBuilder(new LogMessageBuilder(LoggerLevelName.warn, 'This is a test %s').subVars(['bob']));
|
|
120
|
+
expect(output).toEqual('[warn] This is a test bob');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('#testStructured', function () {
|
|
124
|
+
it('should use a structured logger', function () {
|
|
125
|
+
const output = Logger.getLogger(StringRatchet.createRandomHexString(4), {
|
|
126
|
+
formatType: LogMessageFormatType.StructuredJson,
|
|
127
|
+
outputFunction: LoggerOutputFunction.StdOut,
|
|
128
|
+
}).recordMessageBuilder(new LogMessageBuilder(LoggerLevelName.warn, 'This is a test %s').subVars(['bob']).p('a', 27));
|
|
129
|
+
const parsed = JSON.parse(output);
|
|
130
|
+
expect(parsed.msg).toEqual('This is a test bob');
|
|
131
|
+
expect(parsed.logLevel).toEqual('warn');
|
|
132
|
+
expect(parsed.a).toEqual(27);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=logger.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.spec.js","sourceRoot":"","sources":["../../src/logger/logger.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none-log-message-formatter.js","sourceRoot":"","sources":["../../src/logger/none-log-message-formatter.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,uBAAuB;IAC3B,aAAa,CAAC,GAAe,EAAE,IAAgB;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import util from 'util';
|
|
2
|
+
export class StructuredJsonLogMessageFormatter {
|
|
3
|
+
formatMessage(msg, meta) {
|
|
4
|
+
let rval = null;
|
|
5
|
+
if (msg) {
|
|
6
|
+
const tmp = Object.assign({}, meta.options.globalVars || {}, msg.params || {});
|
|
7
|
+
tmp['msg'] = util.format(msg.messageSource, ...msg.subsVars);
|
|
8
|
+
tmp['utcDateTime'] = new Date(msg.timestamp).toISOString();
|
|
9
|
+
tmp['logLevel'] = msg.lvl;
|
|
10
|
+
if (meta.options.trace) {
|
|
11
|
+
tmp['trace'] = meta.options.trace;
|
|
12
|
+
}
|
|
13
|
+
tmp['logName'] = meta.loggerInstanceName;
|
|
14
|
+
tmp['logId'] = meta.loggerInstanceId;
|
|
15
|
+
rval = JSON.stringify(tmp) + '\n';
|
|
16
|
+
}
|
|
17
|
+
return rval;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=structured-json-log-message-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-json-log-message-formatter.js","sourceRoot":"","sources":["../../src/logger/structured-json-log-message-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,MAAM,OAAO,iCAAiC;IACrC,aAAa,CAAC,GAAe,EAAE,IAAgB;QACpD,IAAI,IAAI,GAAW,IAAI,CAAC;QACxB,IAAI,GAAG,EAAE;YACP,MAAM,GAAG,GAAqB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACjG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7D,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3D,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtB,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAErC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SAEnC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NetworkRatchet } from './network-ratchet.js';
|
|
2
|
+
import { Logger } from '../logger/logger.js';
|
|
3
|
+
export class BrowserLocalIpProvider {
|
|
4
|
+
currentIp = 'UNSET';
|
|
5
|
+
constructor() {
|
|
6
|
+
NetworkRatchet.findLocalIp(false)
|
|
7
|
+
.then((result) => {
|
|
8
|
+
Logger.info('Setting local IP to %s', result);
|
|
9
|
+
this.currentIp = result;
|
|
10
|
+
})
|
|
11
|
+
.catch((err) => {
|
|
12
|
+
Logger.warn('Unable to set current IP - leaving as UNSET : %s', err);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
ready() {
|
|
16
|
+
return this.currentIp !== 'UNSET';
|
|
17
|
+
}
|
|
18
|
+
currentLocalIpAddress() {
|
|
19
|
+
return this.currentIp;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=browser-local-ip-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-local-ip-provider.js","sourceRoot":"","sources":["../../src/network/browser-local-ip-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,OAAO,sBAAsB;IACzB,SAAS,GAAG,OAAO,CAAC;IAE5B;QACE,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC;aAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC1B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACpC,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BrowserLocalIpProvider } from './browser-local-ip-provider.js';
|
|
2
|
+
import { NetworkRatchet } from './network-ratchet.js';
|
|
3
|
+
import { PromiseRatchet } from '../lang/promise-ratchet.js';
|
|
4
|
+
import { jest } from '@jest/globals';
|
|
5
|
+
jest.mock('./network-ratchet');
|
|
6
|
+
describe('#browserLocalIpProvider', function () {
|
|
7
|
+
it('should pull a local ip and return it', async () => {
|
|
8
|
+
const mockStaticFn = jest.fn(() => Promise.resolve('192.168.1.1'));
|
|
9
|
+
NetworkRatchet.findLocalIp = mockStaticFn;
|
|
10
|
+
const up = new BrowserLocalIpProvider();
|
|
11
|
+
while (!up.ready()) {
|
|
12
|
+
await PromiseRatchet.wait(250);
|
|
13
|
+
}
|
|
14
|
+
expect(up.currentLocalIpAddress()).toEqual('192.168.1.1');
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=browser-local-ip-provider.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-local-ip-provider.spec.js","sourceRoot":"","sources":["../../src/network/browser-local-ip-provider.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAE/B,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAGnE,cAAc,CAAC,WAAW,GAAG,YAAY,CAAC;QAE1C,MAAM,EAAE,GAA2B,IAAI,sBAAsB,EAAE,CAAC;QAGhE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChC;QAED,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed-local-ip-provider.js","sourceRoot":"","sources":["../../src/network/fixed-local-ip-provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,qBAAqB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-ip-provider.js","sourceRoot":"","sources":["../../src/network/local-ip-provider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
class NetworkRatchet {
|
|
3
|
+
static LOCAL_IP = null;
|
|
4
|
+
static findLocalIp(useCache = true) {
|
|
5
|
+
Logger.info('Attempting to find local IP (V 2)');
|
|
6
|
+
if (NetworkRatchet.LOCAL_IP && useCache) {
|
|
7
|
+
return Promise.resolve(NetworkRatchet.LOCAL_IP);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
if (typeof window !== 'undefined') {
|
|
11
|
+
return new Promise(function (resolve, reject) {
|
|
12
|
+
try {
|
|
13
|
+
const RTCPeerConnection = window['RTCPeerConnection'] || window['webkitRTCPeerConnection'] || window['mozRTCPeerConnection'];
|
|
14
|
+
if (RTCPeerConnection) {
|
|
15
|
+
const rtc = new RTCPeerConnection({ iceServers: [] });
|
|
16
|
+
const addrs = Object.create(null);
|
|
17
|
+
addrs['0.0.0.0'] = false;
|
|
18
|
+
if (1 || window['mozRTCPeerConnection']) {
|
|
19
|
+
rtc.createDataChannel('', { reliable: false });
|
|
20
|
+
}
|
|
21
|
+
rtc.onicecandidate = function (evt) {
|
|
22
|
+
if (evt.candidate) {
|
|
23
|
+
NetworkRatchet.grepSDP('a=' + evt.candidate.candidate, addrs, resolve);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
rtc.createOffer(function (offerDesc) {
|
|
27
|
+
NetworkRatchet.grepSDP(offerDesc.sdp, addrs, resolve);
|
|
28
|
+
rtc.setLocalDescription(offerDesc);
|
|
29
|
+
}, function (e) {
|
|
30
|
+
Logger.warn('Offer failed : %s', e);
|
|
31
|
+
resolve(NetworkRatchet.updateLocalIP('FIND_UNSUPPORTED'));
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
Logger.warn('IP Address find not supported on this device');
|
|
36
|
+
resolve(NetworkRatchet.updateLocalIP('FIND_UNSUPPORTED'));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
Logger.warn('Error finding local ip address : %s', err);
|
|
41
|
+
resolve(NetworkRatchet.updateLocalIP('ERROR'));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
Logger.warn('Window not found, cannot calculate local ip');
|
|
47
|
+
return Promise.resolve(NetworkRatchet.updateLocalIP('NO_WINDOW'));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static parseUrl(href) {
|
|
52
|
+
const match = href.match(/^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
|
|
53
|
+
const rval = match &&
|
|
54
|
+
{
|
|
55
|
+
href: href,
|
|
56
|
+
protocol: match[1],
|
|
57
|
+
host: match[2],
|
|
58
|
+
hostname: match[3],
|
|
59
|
+
port: match[4],
|
|
60
|
+
pathname: match[5],
|
|
61
|
+
search: match[6],
|
|
62
|
+
hash: match[7],
|
|
63
|
+
};
|
|
64
|
+
return rval;
|
|
65
|
+
}
|
|
66
|
+
static updateLocalIP(newIp) {
|
|
67
|
+
NetworkRatchet.LOCAL_IP = newIp;
|
|
68
|
+
return NetworkRatchet.LOCAL_IP;
|
|
69
|
+
}
|
|
70
|
+
static grepSDP(sdp, addrs, resolve) {
|
|
71
|
+
const hosts = [];
|
|
72
|
+
sdp.split('\r\n').forEach(function (line) {
|
|
73
|
+
if (~line.indexOf('a=candidate')) {
|
|
74
|
+
const parts = line.split(' '), addr = parts[4], type = parts[7];
|
|
75
|
+
if (type === 'host') {
|
|
76
|
+
NetworkRatchet.updateAddressList(addr, addrs, resolve);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (~line.indexOf('c=')) {
|
|
80
|
+
const parts = line.split(' '), addr = parts[2];
|
|
81
|
+
NetworkRatchet.updateAddressList(addr, addrs, resolve);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
static updateAddressList(newAddr, addrs, resolve) {
|
|
86
|
+
if (newAddr in addrs)
|
|
87
|
+
return;
|
|
88
|
+
else
|
|
89
|
+
addrs[newAddr] = true;
|
|
90
|
+
const displayAddrs = Object.keys(addrs).filter(function (k) {
|
|
91
|
+
return addrs[k];
|
|
92
|
+
});
|
|
93
|
+
if (displayAddrs && displayAddrs.length == 1) {
|
|
94
|
+
resolve(NetworkRatchet.updateLocalIP(displayAddrs[0]));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const multi = displayAddrs.sort().join(',');
|
|
98
|
+
Logger.warn('Multiple addresses found, returning sorted join : %s', multi);
|
|
99
|
+
resolve(NetworkRatchet.updateLocalIP(multi));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export { NetworkRatchet };
|
|
104
|
+
//# sourceMappingURL=network-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-ratchet.js","sourceRoot":"","sources":["../../src/network/network-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAa,cAAc;IACjB,MAAM,CAAC,QAAQ,GAAW,IAAI,CAAC;IAEhC,MAAM,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI;QACvC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,IAAI,cAAc,CAAC,QAAQ,IAAI,QAAQ,EAAE;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACjD;aAAM;YACL,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBAEjC,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;oBAClD,IAAI;wBAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAE7H,IAAI,iBAAiB,EAAE;4BACrB,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;4BAEtD,MAAM,KAAK,GAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BACvC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;4BAEzB,IAAI,CAAC,IAAI,MAAM,CAAC,sBAAsB,CAAC,EAAE;gCAEvC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;6BAChD;4BAED,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG;gCAGhC,IAAI,GAAG,CAAC,SAAS,EAAE;oCACjB,cAAc,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;iCACxE;4BACH,CAAC,CAAC;4BAEF,GAAG,CAAC,WAAW,CACb,UAAU,SAAS;gCACjB,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gCACtD,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;4BACrC,CAAC,EACD,UAAU,CAAC;gCACT,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;gCACpC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;4BAC5D,CAAC,CACF,CAAC;yBACH;6BAAM;4BACL,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;4BAC5D,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;yBAC3D;qBACF;oBAAC,OAAO,GAAG,EAAE;wBACZ,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;wBACxD,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;qBAChD;gBACH,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;aACnE;SACF;IACH,CAAC;IAGM,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QAC1G,MAAM,IAAI,GACR,KAAK;YACJ;gBACC,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACD,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,MAAM,CAAC,aAAa,CAAC,KAAa;QACxC,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChC,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO;QAExC,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;YAEtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,KAAK,MAAM,EAAE;oBACnB,cAAc,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;iBACxD;aACF;iBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB,cAAc,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aACxD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO;QACtD,IAAI,OAAO,IAAI,KAAK;YAAE,OAAO;;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACxD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;YAC3E,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9C;IACH,CAAC;;SAvHU,cAAc"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NetworkRatchet } from './network-ratchet.js';
|
|
2
|
+
describe('#parseUrl', function () {
|
|
3
|
+
it('should parse the url and return correct values', function () {
|
|
4
|
+
const result = NetworkRatchet.parseUrl('http://example.com:3000/pathname/?search=test#hash');
|
|
5
|
+
expect(result.protocol).toEqual('http:');
|
|
6
|
+
expect(result.host).toEqual('example.com:3000');
|
|
7
|
+
expect(result.hostname).toEqual('example.com');
|
|
8
|
+
expect(result.port).toEqual('3000');
|
|
9
|
+
expect(result.pathname).toEqual('/pathname/');
|
|
10
|
+
expect(result.search).toEqual('?search=test');
|
|
11
|
+
expect(result.hash).toEqual('#hash');
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=network-ratchet.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-ratchet.spec.js","sourceRoot":"","sources":["../../src/network/network-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,QAAQ,CAAC,WAAW,EAAE;IACpB,EAAE,CAAC,gDAAgD,EAAE;QACnD,MAAM,MAAM,GAAc,cAAc,CAAC,QAAQ,CAAC,oDAAoD,CAAC,CAAC;QAExG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
import { Writable } from 'stream';
|
|
4
4
|
export declare class BufferWritable extends Writable {
|
|
5
5
|
private _val;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
2
|
+
export class BufferWritable extends Writable {
|
|
3
|
+
_val = [];
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
}
|
|
7
|
+
_write(chunk, encoding, callback) {
|
|
8
|
+
if (chunk) {
|
|
9
|
+
this._val.push(chunk);
|
|
10
|
+
}
|
|
11
|
+
callback();
|
|
12
|
+
}
|
|
13
|
+
get value() {
|
|
14
|
+
return Buffer.concat(this._val);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=buffer-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-writable.js","sourceRoot":"","sources":["../../src/stream/buffer-writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAClC,IAAI,GAAU,EAAE,CAAC;IAEzB;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,QAAgB,EAAE,QAAQ;QAC3C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvB;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAW,KAAK;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
export class MultiStream extends Readable {
|
|
3
|
+
_object;
|
|
4
|
+
constructor(object, options = {}) {
|
|
5
|
+
super(object instanceof Buffer || typeof object === 'string' ? options : { objectMode: true });
|
|
6
|
+
this._object = object;
|
|
7
|
+
}
|
|
8
|
+
_read() {
|
|
9
|
+
this.push(this._object);
|
|
10
|
+
this._object = null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=multi-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-stream.js","sourceRoot":"","sources":["../../src/stream/multi-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,QAAQ,CAAC;AAEnD,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,OAAO,CAAM;IAEb,YAAY,MAAW,EAAE,UAA2B,EAAE;QACpD,KAAK,CAAC,MAAM,YAAY,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
import { Readable } from 'stream';
|
|
4
4
|
export declare class StreamRatchet {
|
|
5
5
|
private constructor();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
import { ErrorRatchet } from '../lang/error-ratchet.js';
|
|
3
|
+
import { StringRatchet } from '../lang/string-ratchet.js';
|
|
4
|
+
export class StreamRatchet {
|
|
5
|
+
constructor() { }
|
|
6
|
+
static readableToBufferSync(stream) {
|
|
7
|
+
const bufs = [];
|
|
8
|
+
let next = stream.read();
|
|
9
|
+
while (next) {
|
|
10
|
+
bufs.push(next);
|
|
11
|
+
next = stream.read();
|
|
12
|
+
}
|
|
13
|
+
return Buffer.concat(bufs);
|
|
14
|
+
}
|
|
15
|
+
static async webReadableStreamToBuffer(stream) {
|
|
16
|
+
const out = [];
|
|
17
|
+
const writer = new WritableStream({
|
|
18
|
+
async write(chunk, controller) {
|
|
19
|
+
if (typeof chunk === 'string') {
|
|
20
|
+
StringRatchet.stringToUint8Array(chunk);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
out.push(chunk);
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
},
|
|
27
|
+
abort(reason) {
|
|
28
|
+
ErrorRatchet.throwFormattedErr('StringWebWritableStream failure : %s', reason);
|
|
29
|
+
},
|
|
30
|
+
}, {
|
|
31
|
+
highWaterMark: 3,
|
|
32
|
+
size: () => 1,
|
|
33
|
+
});
|
|
34
|
+
await stream.pipeTo(writer);
|
|
35
|
+
return Buffer.concat(out);
|
|
36
|
+
}
|
|
37
|
+
static async webReadableStreamToString(stream) {
|
|
38
|
+
const buf = await StreamRatchet.webReadableStreamToBuffer(stream);
|
|
39
|
+
return buf.toString();
|
|
40
|
+
}
|
|
41
|
+
static stringToReadable(input) {
|
|
42
|
+
return new Readable({
|
|
43
|
+
read() {
|
|
44
|
+
this.push(input);
|
|
45
|
+
this.push(null);
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static stringToWebReadableStream(input) {
|
|
50
|
+
const rval = new ReadableStream({
|
|
51
|
+
start(controller) {
|
|
52
|
+
if (input) {
|
|
53
|
+
controller.enqueue(input);
|
|
54
|
+
}
|
|
55
|
+
controller.close();
|
|
56
|
+
return null;
|
|
57
|
+
},
|
|
58
|
+
}, {
|
|
59
|
+
highWaterMark: input ? input.length : null,
|
|
60
|
+
});
|
|
61
|
+
return rval;
|
|
62
|
+
}
|
|
63
|
+
static anyToStringReadable(input) {
|
|
64
|
+
return input === null || input === undefined
|
|
65
|
+
? StreamRatchet.stringToReadable(null)
|
|
66
|
+
: StreamRatchet.stringToReadable(StringRatchet.safeString(input));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=stream-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-ratchet.js","sourceRoot":"","sources":["../../src/stream/stream-ratchet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,aAAa;IAGxB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,oBAAoB,CAAC,MAAgB;QACjD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAsB;QAClE,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAmB,IAAI,cAAc,CAC/C;YACE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU;gBAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;iBACzC;qBAAM;oBACL,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACjB;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,CAAC,MAAM;gBACV,YAAY,CAAC,iBAAiB,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;SACF,EACD;YACE,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;SACd,CACF,CAAC;QACF,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAsB;QAClE,MAAM,GAAG,GAAW,MAAM,aAAa,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAa;QAC1C,OAAO,IAAI,QAAQ,CAAC;YAClB,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,KAAa;QAKnD,MAAM,IAAI,GAAmB,IAAI,cAAc,CAC7C;YACE,KAAK,CAAC,UAAU;gBACd,IAAI,KAAK,EAAE;oBACT,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC3B;gBACD,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;SACF,EACD;YACE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SAC3C,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,KAAU;QAC1C,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAC1C,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACtC,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StreamRatchet } from './stream-ratchet.js';
|
|
2
|
+
describe('#StreamRatchet', function () {
|
|
3
|
+
it('should wrap a string in a readable', async () => {
|
|
4
|
+
const r = StreamRatchet.stringToReadable('test');
|
|
5
|
+
const out = r.read(200);
|
|
6
|
+
expect(out.length).toEqual(4);
|
|
7
|
+
});
|
|
8
|
+
it('should wrap an number in a readable', async () => {
|
|
9
|
+
const r = StreamRatchet.anyToStringReadable(401);
|
|
10
|
+
const out = r.read(200);
|
|
11
|
+
expect(out.length).toEqual(3);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=stream-ratchet.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-ratchet.spec.js","sourceRoot":"","sources":["../../src/stream/stream-ratchet.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,QAAQ,CAAC,gBAAgB,EAAE;IACzB,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,CAAC,GAAa,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,CAAC,GAAa,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
2
|
+
export class StringWritable extends Writable {
|
|
3
|
+
_val = '';
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
}
|
|
7
|
+
_write(chunk, encoding, callback) {
|
|
8
|
+
this._val += chunk ? chunk.toString() : '';
|
|
9
|
+
callback();
|
|
10
|
+
}
|
|
11
|
+
get value() {
|
|
12
|
+
return this._val;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=string-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-writable.js","sourceRoot":"","sources":["../../src/stream/string-writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAClC,IAAI,GAAW,EAAE,CAAC;IAE1B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,QAAgB,EAAE,QAAQ;QAC3C,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StringWritable } from './string-writable.js';
|
|
2
|
+
describe('#StringWritable', function () {
|
|
3
|
+
it('should write cumulatively to a string', async () => {
|
|
4
|
+
const sr = new StringWritable();
|
|
5
|
+
const callback = () => {
|
|
6
|
+
};
|
|
7
|
+
sr._write('a', null, callback);
|
|
8
|
+
sr._write('b', null, callback);
|
|
9
|
+
sr._write('c', null, callback);
|
|
10
|
+
expect(sr.value.length).toEqual(3);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=string-writable.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-writable.spec.js","sourceRoot":"","sources":["../../src/stream/string-writable.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAQ,CAAC,iBAAiB,EAAE;IAC1B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,GAAmB,IAAI,cAAc,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,GAAG,EAAE;QAEtB,CAAC,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Logger } from '../../logger/logger.js';
|
|
2
|
+
import { StringRatchet } from '../../lang/string-ratchet.js';
|
|
3
|
+
import fetch from 'cross-fetch';
|
|
4
|
+
class GoogleRecaptchaRatchet {
|
|
5
|
+
static GOOGLE_VERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify?secret={{KEY}}&response={{TOKEN}}';
|
|
6
|
+
static async verifyRecaptchaToken(keySecret, token, fetchFn = fetch) {
|
|
7
|
+
Logger.debug('Verifying recaptcha token : %s', token);
|
|
8
|
+
let rval = null;
|
|
9
|
+
if (!StringRatchet.safeString(token)) {
|
|
10
|
+
Logger.warn('Recaptcha validation error, no token passed : %s', token);
|
|
11
|
+
return rval;
|
|
12
|
+
}
|
|
13
|
+
Logger.info('Validating Recaptcha via Google API : %s', token);
|
|
14
|
+
let url = GoogleRecaptchaRatchet.GOOGLE_VERIFY_URL;
|
|
15
|
+
url = url.split('{{KEY}}').join(keySecret);
|
|
16
|
+
url = url.split('{{TOKEN}}').join(token);
|
|
17
|
+
try {
|
|
18
|
+
const resp = await fetchFn(url);
|
|
19
|
+
const body = await resp.json();
|
|
20
|
+
rval = body && body.success;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
Logger.error('Failed to read from google : %s', err);
|
|
24
|
+
rval = false;
|
|
25
|
+
}
|
|
26
|
+
return rval;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export { GoogleRecaptchaRatchet };
|
|
30
|
+
//# sourceMappingURL=google-recaptcha-ratchet.js.map
|