ng-talkback 21.0.31 → 21.0.34
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/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/bin/ng-talkback +5 -0
- package/bin/ng-talkback-debug +5 -0
- package/bin/ng-talkback-debug-brk +4 -0
- package/browser/fesm2022/ng-talkback-browser.mjs +9 -2
- package/browser/fesm2022/ng-talkback-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/ng-talkback-browser.d.ts +2 -2
- package/browser-prod/fesm2022/ng-talkback-browser-prod.mjs +9 -2
- package/browser-prod/fesm2022/ng-talkback-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/ng-talkback-browser-prod.d.ts +2 -2
- package/html/assets/generated/pwa/html-pwa.html +60 -0
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib-esm/app.d.ts +0 -0
- package/lib-esm/app.electron.d.ts +2 -0
- package/lib-esm/app.electron.js +83 -0
- package/lib-esm/app.electron.js.map +1 -0
- package/lib-esm/app.hosts.d.ts +3 -0
- package/lib-esm/app.hosts.js +48 -0
- package/lib-esm/app.hosts.js.map +1 -0
- package/lib-esm/app.js +49 -0
- package/lib-esm/app.js.map +1 -0
- package/lib-esm/app.vscode.d.ts +9 -0
- package/lib-esm/app.vscode.js +31 -0
- package/lib-esm/app.vscode.js.map +1 -0
- package/lib-esm/index.d.ts +1 -0
- package/lib-esm/index.js +2 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
- package/lib-esm/lib/build-info._auto-generated_.js +27 -0
- package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
- package/lib-esm/lib/env/env.angular-node-app.d.ts +66 -0
- package/lib-esm/lib/env/env.angular-node-app.js +135 -0
- package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
- package/lib-esm/lib/env/env.docs-webapp.d.ts +66 -0
- package/lib-esm/lib/env/env.docs-webapp.js +135 -0
- package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
- package/lib-esm/lib/env/env.electron-app.d.ts +66 -0
- package/lib-esm/lib/env/env.electron-app.js +135 -0
- package/lib-esm/lib/env/env.electron-app.js.map +1 -0
- package/lib-esm/lib/env/env.mobile-app.d.ts +66 -0
- package/lib-esm/lib/env/env.mobile-app.js +135 -0
- package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +66 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +135 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib-esm/lib/env/env.vscode-plugin.d.ts +66 -0
- package/lib-esm/lib/env/env.vscode-plugin.js +135 -0
- package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
- package/lib-esm/lib/env/index.d.ts +6 -0
- package/lib-esm/lib/env/index.js +7 -0
- package/lib-esm/lib/env/index.js.map +1 -0
- package/lib-esm/lib/es6.backend.d.ts +2 -0
- package/lib-esm/lib/es6.backend.js +3 -0
- package/lib-esm/lib/es6.backend.js.map +1 -0
- package/lib-esm/lib/features/error-rate.backend.d.ts +9 -0
- package/lib-esm/lib/features/error-rate.backend.js +23 -0
- package/lib-esm/lib/features/error-rate.backend.js.map +1 -0
- package/lib-esm/lib/features/latency.backend.d.ts +8 -0
- package/lib-esm/lib/features/latency.backend.js +30 -0
- package/lib-esm/lib/features/latency.backend.js.map +1 -0
- package/lib-esm/lib/index._auto-generated_.d.ts +0 -0
- package/lib-esm/lib/index._auto-generated_.js +6 -0
- package/lib-esm/lib/index._auto-generated_.js.map +1 -0
- package/lib-esm/lib/index.d.ts +41 -0
- package/lib-esm/lib/index.js +24 -0
- package/lib-esm/lib/index.js.map +1 -0
- package/lib-esm/lib/logger.backend.d.ts +7 -0
- package/lib-esm/lib/logger.backend.js +23 -0
- package/lib-esm/lib/logger.backend.js.map +1 -0
- package/lib-esm/lib/migrations/index.d.ts +1 -0
- package/lib-esm/lib/migrations/index.js +3 -0
- package/lib-esm/lib/migrations/index.js.map +1 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +0 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -0
- package/lib-esm/lib/options.backend.d.ts +52 -0
- package/lib-esm/lib/options.backend.js +87 -0
- package/lib-esm/lib/options.backend.js.map +1 -0
- package/lib-esm/lib/request-handler.backend.d.ts +13 -0
- package/lib-esm/lib/request-handler.backend.js +142 -0
- package/lib-esm/lib/request-handler.backend.js.map +1 -0
- package/lib-esm/lib/server.backend.d.ts +17 -0
- package/lib-esm/lib/server.backend.js +85 -0
- package/lib-esm/lib/server.backend.js.map +1 -0
- package/lib-esm/lib/summary.backend.d.ts +8 -0
- package/lib-esm/lib/summary.backend.js +22 -0
- package/lib-esm/lib/summary.backend.js.map +1 -0
- package/lib-esm/lib/talkback-factory.backend.d.ts +7 -0
- package/lib-esm/lib/talkback-factory.backend.js +17 -0
- package/lib-esm/lib/talkback-factory.backend.js.map +1 -0
- package/lib-esm/lib/tape-matcher.backend.d.ts +12 -0
- package/lib-esm/lib/tape-matcher.backend.js +94 -0
- package/lib-esm/lib/tape-matcher.backend.js.map +1 -0
- package/lib-esm/lib/tape-renderer.backend.d.ts +24 -0
- package/lib-esm/lib/tape-renderer.backend.js +96 -0
- package/lib-esm/lib/tape-renderer.backend.js.map +1 -0
- package/lib-esm/lib/tape-store.backend.d.ts +16 -0
- package/lib-esm/lib/tape-store.backend.js +96 -0
- package/lib-esm/lib/tape-store.backend.js.map +1 -0
- package/lib-esm/lib/tape.backend.d.ts +19 -0
- package/lib-esm/lib/tape.backend.js +76 -0
- package/lib-esm/lib/tape.backend.js.map +1 -0
- package/lib-esm/lib/types.backend.d.ts +43 -0
- package/lib-esm/lib/types.backend.js +2 -0
- package/lib-esm/lib/types.backend.js.map +1 -0
- package/lib-esm/lib/utils/content-encoding.backend.d.ts +10 -0
- package/lib-esm/lib/utils/content-encoding.backend.js +38 -0
- package/lib-esm/lib/utils/content-encoding.backend.js.map +1 -0
- package/lib-esm/lib/utils/headers.backend.d.ts +4 -0
- package/lib-esm/lib/utils/headers.backend.js +15 -0
- package/lib-esm/lib/utils/headers.backend.js.map +1 -0
- package/lib-esm/lib/utils/media-type.backend.d.ts +10 -0
- package/lib-esm/lib/utils/media-type.backend.js +51 -0
- package/lib-esm/lib/utils/media-type.backend.js.map +1 -0
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/index.d.ts +1 -1
- package/lib-prod/index.js +8 -4
- package/lib-prod/index.js.map +1 -1
- package/lib-prod/package.json +1 -1
- package/package.json +6 -2
- package/src.js +4 -20
- package/websql/fesm2022/ng-talkback-websql.mjs +9 -2
- package/websql/fesm2022/ng-talkback-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/ng-talkback-websql.d.ts +2 -2
- package/websql-prod/fesm2022/ng-talkback-websql-prod.mjs +9 -2
- package/websql-prod/fesm2022/ng-talkback-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/ng-talkback-websql-prod.d.ts +2 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './env.angular-node-app';
|
|
2
|
+
export * from './env.docs-webapp';
|
|
3
|
+
export * from './env.electron-app';
|
|
4
|
+
export * from './env.mobile-app';
|
|
5
|
+
export * from './env.npm-lib-and-cli-tool';
|
|
6
|
+
export * from './env.vscode-plugin';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es6.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,SAAS,CAAA;AAEhC,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Options } from '../options.backend';
|
|
2
|
+
import Tape from '../tape.backend';
|
|
3
|
+
import { Req, Res } from '../types.backend';
|
|
4
|
+
export default class ErrorRate {
|
|
5
|
+
private options;
|
|
6
|
+
constructor(options: Options);
|
|
7
|
+
shouldSimulate(req: Req, tape?: Tape): boolean;
|
|
8
|
+
simulate(req: Req): Res;
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import OptionsFactory from '../options.backend';
|
|
2
|
+
export default class ErrorRate {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.options = options;
|
|
6
|
+
}
|
|
7
|
+
shouldSimulate(req, tape) {
|
|
8
|
+
const globalErrorRate = typeof (this.options.errorRate) === 'number' ? this.options.errorRate : this.options.errorRate(req);
|
|
9
|
+
const errorRate = tape && tape.meta.errorRate !== undefined ? tape.meta.errorRate : globalErrorRate;
|
|
10
|
+
OptionsFactory.validateErrorRate(errorRate);
|
|
11
|
+
const random = Math.random() * 100;
|
|
12
|
+
return random < errorRate;
|
|
13
|
+
}
|
|
14
|
+
simulate(req) {
|
|
15
|
+
this.options.logger.log(`Simulating error for ${req.url}`);
|
|
16
|
+
return {
|
|
17
|
+
status: 503,
|
|
18
|
+
headers: { 'content-type': ['text/plain'] },
|
|
19
|
+
body: Buffer.from("talkback - failure injection")
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=error-rate.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-rate.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,cAAyB,MAAM,oBAAoB,CAAC;AAI3D,MAAM,CAAC,OAAO,OAAO,SAAS;IACpB,OAAO,CAAS;IAExB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,cAAc,CAAC,GAAO,EAAE,IAAW;QACjC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAE3H,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAA;QAEnG,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA;QAClC,OAAO,MAAM,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED,QAAQ,CAAC,GAAQ;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1D,OAAO;YACL,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAC,cAAc,EAAE,CAAC,YAAY,CAAC,EAAC;YACzC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC;SAC3C,CAAA;IACV,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Options } from '../options.backend';
|
|
2
|
+
import { Req } from '../types.backend';
|
|
3
|
+
import Tape from '../tape.backend';
|
|
4
|
+
export default class Latency {
|
|
5
|
+
private options;
|
|
6
|
+
constructor(options: Options);
|
|
7
|
+
simulate(req: Req, tape?: Tape): Promise<unknown>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import OptionsFactory from '../options.backend';
|
|
2
|
+
export default class Latency {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.options = options;
|
|
6
|
+
}
|
|
7
|
+
async simulate(req, tape) {
|
|
8
|
+
const resolved = Promise.resolve();
|
|
9
|
+
const latencyGenerator = tape && tape.meta.latency !== undefined ? tape.meta.latency : this.options.latency;
|
|
10
|
+
if (!latencyGenerator) {
|
|
11
|
+
return resolved;
|
|
12
|
+
}
|
|
13
|
+
OptionsFactory.validateLatency(latencyGenerator);
|
|
14
|
+
let latency = 0;
|
|
15
|
+
const type = typeof latencyGenerator;
|
|
16
|
+
if (type === "number") {
|
|
17
|
+
latency = latencyGenerator;
|
|
18
|
+
}
|
|
19
|
+
else if (Array.isArray(latencyGenerator)) {
|
|
20
|
+
const high = latencyGenerator[1];
|
|
21
|
+
const low = latencyGenerator[0];
|
|
22
|
+
latency = Math.random() * (high - low) + low;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
latency = latencyGenerator(req);
|
|
26
|
+
}
|
|
27
|
+
return new Promise(r => setTimeout(r, latency));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=latency.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latency.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,cAAyB,MAAM,oBAAoB,CAAC;AAI3D,MAAM,CAAC,OAAO,OAAO,OAAO;IAClB,OAAO,CACJ;IAEX,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAQ,EAAE,IAAW;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAElC,MAAM,gBAAgB,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QAC3G,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;QAEhD,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,MAAM,IAAI,GAAG,OAAO,gBAAgB,CAAA;QACpC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,gBAA0B,CAAA;QACtC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC/B,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,GAAI,gBAAuC,CAAC,GAAG,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,CAAC;CACF"}
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// This file is auto-generated during init process. Do not modify.
|
|
3
|
+
// This is only placeholder.
|
|
4
|
+
// Use property "shouldGenerateAutogenIndexFile: true"
|
|
5
|
+
// in taon.jsonc to enable ts exports auto generation.
|
|
6
|
+
//# sourceMappingURL=index._auto-generated_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index._auto-generated_.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,cAAc;AACd,kEAAkE;AAClE,4BAA4B;AAC5B,uDAAuD;AACvD,uDAAuD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type DummyASDASDASd = 'asdas$asd$as';
|
|
2
|
+
export * from './options.backend';
|
|
3
|
+
export * from './tape.backend';
|
|
4
|
+
import Options from './options.backend';
|
|
5
|
+
declare const talkbackFn: {
|
|
6
|
+
(options: Partial<Options>): import("./server.backend").default;
|
|
7
|
+
Options: {
|
|
8
|
+
Default: import("./options.backend").Options;
|
|
9
|
+
FallbackMode: {
|
|
10
|
+
NOT_FOUND: string;
|
|
11
|
+
PROXY: string;
|
|
12
|
+
ALL: string[];
|
|
13
|
+
};
|
|
14
|
+
RecordMode: {
|
|
15
|
+
NEW: string;
|
|
16
|
+
OVERWRITE: string;
|
|
17
|
+
DISABLED: string;
|
|
18
|
+
ALL: string[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
requestHandler(options: Partial<Options>): Promise<import("./request-handler.backend").default>;
|
|
22
|
+
};
|
|
23
|
+
export declare const talkback: {
|
|
24
|
+
(options: Partial<Options>): import("./server.backend").default;
|
|
25
|
+
Options: {
|
|
26
|
+
Default: import("./options.backend").Options;
|
|
27
|
+
FallbackMode: {
|
|
28
|
+
NOT_FOUND: string;
|
|
29
|
+
PROXY: string;
|
|
30
|
+
ALL: string[];
|
|
31
|
+
};
|
|
32
|
+
RecordMode: {
|
|
33
|
+
NEW: string;
|
|
34
|
+
OVERWRITE: string;
|
|
35
|
+
DISABLED: string;
|
|
36
|
+
ALL: string[];
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
requestHandler(options: Partial<Options>): Promise<import("./request-handler.backend").default>;
|
|
40
|
+
};
|
|
41
|
+
export default talkbackFn;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// let a = 234343;
|
|
2
|
+
/* */
|
|
3
|
+
/* */
|
|
4
|
+
//#region @backend
|
|
5
|
+
// const aa = 'ssssss';
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region @backend
|
|
8
|
+
export * from './options.backend';
|
|
9
|
+
export * from './tape.backend';
|
|
10
|
+
import TalkbackFactory from './talkback-factory.backend';
|
|
11
|
+
import { DefaultOptions, FallbackMode, RecordMode, } from './options.backend';
|
|
12
|
+
const talkbackFn = (options) => {
|
|
13
|
+
return TalkbackFactory.server(options);
|
|
14
|
+
};
|
|
15
|
+
talkbackFn.Options = {
|
|
16
|
+
Default: DefaultOptions,
|
|
17
|
+
FallbackMode,
|
|
18
|
+
RecordMode,
|
|
19
|
+
};
|
|
20
|
+
talkbackFn.requestHandler = (options) => TalkbackFactory.requestHandler(options);
|
|
21
|
+
export const talkback = talkbackFn;
|
|
22
|
+
export default talkbackFn;
|
|
23
|
+
//#endregion
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AACA,kBAAkB;AAClB,KAAK;AACL,KAAK;AAEL,kBAAkB;AAClB,uBAAuB;AACvB,YAAY;AAEZ,kBAAkB;AAClB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAgB,EACd,cAAc,EACd,YAAY,EACZ,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,GAAG,CAAC,OAAyB,EAAE,EAAE;IAC/C,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,UAAU,CAAC,OAAO,GAAG;IACnB,OAAO,EAAE,cAAc;IACvB,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,UAAU,CAAC,cAAc,GAAG,CAAC,OAAyB,EAAE,EAAE,CACxD,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,eAAe,UAAU,CAAC;AAC1B,YAAY"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default class Logger {
|
|
2
|
+
options;
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.options = options;
|
|
5
|
+
if (this.options.debug) {
|
|
6
|
+
console.debug("DEBUG mode active");
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
log(message) {
|
|
10
|
+
if (!this.options.silent || this.options.debug) {
|
|
11
|
+
console.log(message);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
debug(message) {
|
|
15
|
+
if (this.options.debug) {
|
|
16
|
+
console.debug(message);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
error(message) {
|
|
20
|
+
console.error(message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=logger.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAM;IAEb,YAAY,OAAY;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAY;QACd,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAY;QAChB,IAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAY;QAChB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './migrations_index._auto-generated_';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,qCAAqC,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations_index._auto-generated_.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,yCAAyC;AAEzC,yCAAyC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import Logger from './logger.backend';
|
|
2
|
+
import Tape from './tape.backend';
|
|
3
|
+
import { Req, MatchingContext } from './types.backend';
|
|
4
|
+
export declare const RecordMode: {
|
|
5
|
+
NEW: string;
|
|
6
|
+
OVERWRITE: string;
|
|
7
|
+
DISABLED: string;
|
|
8
|
+
ALL: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare const FallbackMode: {
|
|
11
|
+
NOT_FOUND: string;
|
|
12
|
+
PROXY: string;
|
|
13
|
+
ALL: string[];
|
|
14
|
+
};
|
|
15
|
+
export interface Options {
|
|
16
|
+
host: string;
|
|
17
|
+
port: number;
|
|
18
|
+
path: string;
|
|
19
|
+
record: string | ((req: Req) => string);
|
|
20
|
+
fallbackMode: string | ((req: Req) => string);
|
|
21
|
+
name: string;
|
|
22
|
+
tapeNameGenerator?: (tapeNumber: number, tape: Tape) => string;
|
|
23
|
+
https: {
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
keyPath?: string;
|
|
26
|
+
certPath?: string;
|
|
27
|
+
};
|
|
28
|
+
ignoreHeaders: string[];
|
|
29
|
+
ignoreQueryParams: string[];
|
|
30
|
+
ignoreBody: boolean;
|
|
31
|
+
bodyMatcher?: (tape: Tape, req: Req) => boolean;
|
|
32
|
+
urlMatcher?: (tape: Tape, req: Req) => boolean;
|
|
33
|
+
requestDecorator?: (req: Req, context: MatchingContext) => Req;
|
|
34
|
+
responseDecorator?: (tape: Tape, req: Req, context: MatchingContext) => Tape;
|
|
35
|
+
tapeDecorator?: (tape: Tape, context: MatchingContext) => Tape;
|
|
36
|
+
latency: number | number[] | ((req: Req) => number);
|
|
37
|
+
errorRate: number | ((req: Req) => number);
|
|
38
|
+
silent: boolean;
|
|
39
|
+
summary: boolean;
|
|
40
|
+
debug: boolean;
|
|
41
|
+
logger: Logger;
|
|
42
|
+
}
|
|
43
|
+
export declare const DefaultOptions: Options;
|
|
44
|
+
export default class OptionsFactory {
|
|
45
|
+
private static logger;
|
|
46
|
+
static prepare(usrOpts?: Partial<Options>): Options;
|
|
47
|
+
static validateOptions(opts: Options): void;
|
|
48
|
+
static validateRecord(record: any): void;
|
|
49
|
+
static validateFallbackMode(fallbackMode: any): void;
|
|
50
|
+
static validateLatency(latency: any): void;
|
|
51
|
+
static validateErrorRate(errorRate: any): void;
|
|
52
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import Logger from './logger.backend';
|
|
2
|
+
export const RecordMode = {
|
|
3
|
+
NEW: "NEW", // If no tape matches the request, proxy it and save the response to a tape
|
|
4
|
+
OVERWRITE: "OVERWRITE", // Always proxy the request and save the response to a tape, overwriting any existing one
|
|
5
|
+
DISABLED: "DISABLED", // If a matching tape exists, return it. Otherwise, don't proxy the request and use `fallbackMode` for the response
|
|
6
|
+
ALL: []
|
|
7
|
+
};
|
|
8
|
+
RecordMode.ALL = [RecordMode.NEW, RecordMode.OVERWRITE, RecordMode.DISABLED];
|
|
9
|
+
export const FallbackMode = {
|
|
10
|
+
NOT_FOUND: "NOT_FOUND",
|
|
11
|
+
PROXY: "PROXY",
|
|
12
|
+
ALL: []
|
|
13
|
+
};
|
|
14
|
+
FallbackMode.ALL = [FallbackMode.NOT_FOUND, FallbackMode.PROXY];
|
|
15
|
+
export const DefaultOptions = {
|
|
16
|
+
host: "",
|
|
17
|
+
port: 8080,
|
|
18
|
+
path: "./tapes/",
|
|
19
|
+
record: RecordMode.NEW,
|
|
20
|
+
fallbackMode: FallbackMode.NOT_FOUND,
|
|
21
|
+
name: "unnamed",
|
|
22
|
+
tapeNameGenerator: undefined,
|
|
23
|
+
https: {
|
|
24
|
+
enabled: false,
|
|
25
|
+
keyPath: undefined,
|
|
26
|
+
certPath: undefined
|
|
27
|
+
},
|
|
28
|
+
ignoreHeaders: ["content-length", "host"],
|
|
29
|
+
ignoreQueryParams: [],
|
|
30
|
+
ignoreBody: false,
|
|
31
|
+
bodyMatcher: undefined,
|
|
32
|
+
urlMatcher: undefined,
|
|
33
|
+
requestDecorator: undefined,
|
|
34
|
+
responseDecorator: undefined,
|
|
35
|
+
tapeDecorator: undefined,
|
|
36
|
+
latency: 0,
|
|
37
|
+
errorRate: 0,
|
|
38
|
+
silent: false,
|
|
39
|
+
summary: true,
|
|
40
|
+
debug: false,
|
|
41
|
+
logger: new Logger({})
|
|
42
|
+
};
|
|
43
|
+
export default class OptionsFactory {
|
|
44
|
+
static logger;
|
|
45
|
+
static prepare(usrOpts = {}) {
|
|
46
|
+
const opts = {
|
|
47
|
+
...DefaultOptions,
|
|
48
|
+
name: usrOpts.host,
|
|
49
|
+
...usrOpts,
|
|
50
|
+
ignoreHeaders: [
|
|
51
|
+
...DefaultOptions.ignoreHeaders,
|
|
52
|
+
...(usrOpts.ignoreHeaders || [])
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
this.logger = new Logger(opts);
|
|
56
|
+
opts.logger = this.logger;
|
|
57
|
+
this.validateOptions(opts);
|
|
58
|
+
return opts;
|
|
59
|
+
}
|
|
60
|
+
static validateOptions(opts) {
|
|
61
|
+
this.validateRecord(opts.record);
|
|
62
|
+
this.validateFallbackMode(opts.fallbackMode);
|
|
63
|
+
this.validateLatency(opts.latency);
|
|
64
|
+
this.validateErrorRate(opts.errorRate);
|
|
65
|
+
}
|
|
66
|
+
static validateRecord(record) {
|
|
67
|
+
if (typeof (record) === "string" && !RecordMode.ALL.includes(record)) {
|
|
68
|
+
throw `INVALID OPTION: record has an invalid value of '${record}'`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
static validateFallbackMode(fallbackMode) {
|
|
72
|
+
if (typeof (fallbackMode) === "string" && !FallbackMode.ALL.includes(fallbackMode)) {
|
|
73
|
+
throw `INVALID OPTION: fallbackMode has an invalid value of '${fallbackMode}'`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
static validateLatency(latency) {
|
|
77
|
+
if (Array.isArray(latency) && latency.length !== 2) {
|
|
78
|
+
throw `Invalid LATENCY option. If using a range, the array should only have 2 values [min, max]. Current=[${latency}]`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
static validateErrorRate(errorRate) {
|
|
82
|
+
if (typeof (errorRate) !== "function" && (errorRate < 0 || errorRate > 100)) {
|
|
83
|
+
throw `Invalid ERRORRATE option. Value should be between 0 and 100. Current=[${errorRate}]`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=options.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import TapeStore from './tape-store.backend';
|
|
2
|
+
import { Options } from './options.backend';
|
|
3
|
+
import { HttpRequest, HttpResponse } from './types.backend';
|
|
4
|
+
export default class RequestHandler {
|
|
5
|
+
private readonly tapeStore;
|
|
6
|
+
private readonly options;
|
|
7
|
+
private readonly errorRate;
|
|
8
|
+
private readonly latency;
|
|
9
|
+
constructor(tapeStore: TapeStore, options: Options);
|
|
10
|
+
handle(req: HttpRequest): Promise<HttpResponse>;
|
|
11
|
+
private onNoRecord;
|
|
12
|
+
private makeRealRequest;
|
|
13
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import Tape from './tape.backend';
|
|
4
|
+
import OptionsFactory, { RecordMode, FallbackMode } from './options.backend';
|
|
5
|
+
import ErrorRate from './features/error-rate.backend';
|
|
6
|
+
import Latency from './features/latency.backend';
|
|
7
|
+
export default class RequestHandler {
|
|
8
|
+
tapeStore;
|
|
9
|
+
options;
|
|
10
|
+
errorRate;
|
|
11
|
+
latency;
|
|
12
|
+
constructor(tapeStore, options) {
|
|
13
|
+
this.tapeStore = tapeStore;
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.errorRate = new ErrorRate(this.options);
|
|
16
|
+
this.latency = new Latency(this.options);
|
|
17
|
+
}
|
|
18
|
+
async handle(req) {
|
|
19
|
+
const matchingContext = {
|
|
20
|
+
id: uuidv4()
|
|
21
|
+
};
|
|
22
|
+
const recordMode = typeof (this.options.record) === "string" ? this.options.record : this.options.record(req);
|
|
23
|
+
OptionsFactory.validateRecord(recordMode);
|
|
24
|
+
if (this.options.requestDecorator) {
|
|
25
|
+
req = this.options.requestDecorator(req, matchingContext);
|
|
26
|
+
if (!req) {
|
|
27
|
+
throw new Error("requestDecorator didn't return a req object");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
let newTape = new Tape(req, this.options);
|
|
31
|
+
let matchingTape = this.tapeStore.find(newTape);
|
|
32
|
+
let resObj, responseTape;
|
|
33
|
+
if (recordMode !== RecordMode.OVERWRITE && matchingTape) {
|
|
34
|
+
responseTape = matchingTape;
|
|
35
|
+
if (this.errorRate.shouldSimulate(req, matchingTape)) {
|
|
36
|
+
return this.errorRate.simulate(req);
|
|
37
|
+
}
|
|
38
|
+
await this.latency.simulate(req, matchingTape);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (matchingTape) {
|
|
42
|
+
responseTape = matchingTape;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
responseTape = newTape;
|
|
46
|
+
}
|
|
47
|
+
if (recordMode === RecordMode.NEW || recordMode === RecordMode.OVERWRITE) {
|
|
48
|
+
resObj = await this.makeRealRequest(req);
|
|
49
|
+
responseTape.res = { ...resObj };
|
|
50
|
+
if (this.options.tapeDecorator) {
|
|
51
|
+
responseTape = this.options.tapeDecorator(responseTape, matchingContext);
|
|
52
|
+
if (!responseTape) {
|
|
53
|
+
throw new Error("tapeDecorator didn't return a tape object");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
await this.tapeStore.save(responseTape);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
resObj = await this.onNoRecord(req);
|
|
60
|
+
responseTape.res = { ...resObj };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
resObj = responseTape.res;
|
|
64
|
+
if (this.options.responseDecorator) {
|
|
65
|
+
const clonedTape = await responseTape.clone();
|
|
66
|
+
const resTape = this.options.responseDecorator(clonedTape, req, matchingContext);
|
|
67
|
+
if (!resTape) {
|
|
68
|
+
throw new Error("responseDecorator didn't return a tape object");
|
|
69
|
+
}
|
|
70
|
+
if (resTape.res.headers["content-length"]) {
|
|
71
|
+
resTape.res.headers["content-length"] = resTape.res.body.length;
|
|
72
|
+
}
|
|
73
|
+
resObj = resTape.res;
|
|
74
|
+
}
|
|
75
|
+
return resObj;
|
|
76
|
+
}
|
|
77
|
+
async onNoRecord(req) {
|
|
78
|
+
const fallbackMode = typeof (this.options.fallbackMode) === "string" ? this.options.fallbackMode : this.options.fallbackMode(req);
|
|
79
|
+
OptionsFactory.validateFallbackMode(fallbackMode);
|
|
80
|
+
this.options.logger.log(`Tape for ${req.url} not found and recording is disabled (fallbackMode: ${fallbackMode})`);
|
|
81
|
+
this.options.logger.log({
|
|
82
|
+
url: req.url,
|
|
83
|
+
headers: req.headers
|
|
84
|
+
});
|
|
85
|
+
if (fallbackMode === FallbackMode.PROXY) {
|
|
86
|
+
if (this.errorRate.shouldSimulate(req, undefined)) {
|
|
87
|
+
return this.errorRate.simulate(req);
|
|
88
|
+
}
|
|
89
|
+
await this.latency.simulate(req, undefined);
|
|
90
|
+
return await this.makeRealRequest(req);
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
status: 404,
|
|
94
|
+
headers: { "content-type": ["text/plain"] },
|
|
95
|
+
body: Buffer.from("talkback - tape not found")
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
async makeRealRequest(req) {
|
|
99
|
+
// let fetchBody: Buffer | null
|
|
100
|
+
let { method, url, body } = req;
|
|
101
|
+
// fetchBody = body
|
|
102
|
+
const headers = { ...req.headers };
|
|
103
|
+
delete headers.host;
|
|
104
|
+
const host = this.options.host;
|
|
105
|
+
// this.options.logger.log(`Making real request to ${host}${url}`)
|
|
106
|
+
// if (method === "GET" || method === "HEAD") {
|
|
107
|
+
// fetchBody = null
|
|
108
|
+
// }
|
|
109
|
+
let urlToGetData = `${host}${url}`;
|
|
110
|
+
// console.log(`host: "${urlToGetData}"` )
|
|
111
|
+
// console.log(`url: "${url}"` )
|
|
112
|
+
var fRes = {
|
|
113
|
+
status: 400,
|
|
114
|
+
headers: {},
|
|
115
|
+
body: new Buffer('')
|
|
116
|
+
};
|
|
117
|
+
try {
|
|
118
|
+
// console.log(body.toString())
|
|
119
|
+
const r = await axios({
|
|
120
|
+
url: urlToGetData,
|
|
121
|
+
method,
|
|
122
|
+
headers,
|
|
123
|
+
data: body,
|
|
124
|
+
responseType: 'arraybuffer',
|
|
125
|
+
});
|
|
126
|
+
fRes = {
|
|
127
|
+
status: r.status,
|
|
128
|
+
headers: r.headers,
|
|
129
|
+
body: r.data
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
fRes = {
|
|
134
|
+
status: err?.response?.status,
|
|
135
|
+
headers: err?.response?.headers,
|
|
136
|
+
body: err?.response?.data
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return fRes;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=request-handler.backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handler.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,cAAc,EAAE,EAAE,UAAU,EAAE,YAAY,EAAW,MAAM,mBAAmB,CAAC;AACtF,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,OAAO,MAAM,4BAA4B,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,cAAc;IAChB,SAAS,CAAW;IACpB,OAAO,CAAS;IAChB,SAAS,CAAW;IACpB,OAAO,CAAS;IAEjC,YAAY,SAAoB,EAAE,OAAgB;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAgB;QAC3B,MAAM,eAAe,GAAoB;YACvC,EAAE,EAAE,MAAM,EAAE;SACb,CAAA;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAE7G,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAEzC,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;YACzD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACzC,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,MAAM,EAAE,YAAY,CAAA;QAExB,IAAI,UAAU,KAAK,UAAU,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;YACxD,YAAY,GAAG,YAAY,CAAA;YAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACrC,CAAC;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,GAAG,YAAY,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,OAAO,CAAA;YACxB,CAAC;YAED,IAAI,UAAU,KAAK,UAAU,CAAC,GAAG,IAAI,UAAU,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzE,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;gBACxC,YAAY,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;gBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;oBAC/B,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;oBACxE,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;oBAC9D,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;gBACnC,YAAY,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;YAClC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;YAChF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAClE,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;YACjE,CAAC;YACD,MAAM,GAAG,OAAO,CAAC,GAAG,CAAA;QACtB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAAgB;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAEjI,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAEjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,uDAAuD,YAAY,GAAG,CAAC,CAAA;QAClH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAA;QAEF,IAAI,YAAY,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACrC,CAAC;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAC3C,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE;YAC3C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC;SAC/B,CAAA;IACnB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAgB;QAC5C,+BAA+B;QAC/B,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAC/B,mBAAmB;QACnB,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QAClC,OAAO,OAAO,CAAC,IAAI,CAAA;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;QAC9B,kEAAkE;QAElE,+CAA+C;QAC/C,qBAAqB;QACrB,IAAI;QACJ,IAAI,YAAY,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;QACnC,0CAA0C;QAC1C,gCAAgC;QAChC,IAAI,IAAI,GAAG;YACT,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;SACd,CAAC;QACT,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC;gBACpB,GAAG,EAAE,YAAY;gBACjB,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,aAAa;aAC5B,CAAQ,CAAC;YACV,IAAI,GAAG;gBACL,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;aACG,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG;gBACL,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;gBAC7B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO;gBAC/B,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI;aACnB,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import TapeStore from './tape-store.backend';
|
|
2
|
+
import * as http from 'http';
|
|
3
|
+
import { Options } from './options.backend';
|
|
4
|
+
export default class TalkbackServer {
|
|
5
|
+
private readonly options;
|
|
6
|
+
readonly tapeStore: TapeStore;
|
|
7
|
+
private requestHandler;
|
|
8
|
+
private readonly closeSignalHandler?;
|
|
9
|
+
private server?;
|
|
10
|
+
private closed;
|
|
11
|
+
constructor(options: Options);
|
|
12
|
+
handleRequest(rawReq: http.IncomingMessage, res: http.ServerResponse): void;
|
|
13
|
+
start(callback?: () => void): Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
|
|
14
|
+
hasTapeBeenUsed(tapeName: string): boolean;
|
|
15
|
+
resetTapeUsage(): void;
|
|
16
|
+
close(callback?: () => void): void;
|
|
17
|
+
}
|