ng-talkback 21.0.14 → 21.0.16

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 (127) hide show
  1. package/browser/package.json +1 -1
  2. package/browser-prod/package.json +1 -1
  3. package/browser-prod.re-export.json +1 -0
  4. package/lib/build-info._auto-generated_.d.ts +1 -1
  5. package/lib/build-info._auto-generated_.js +1 -1
  6. package/lib/package.json +1 -1
  7. package/lib-prod/build-info._auto-generated_.ts +27 -0
  8. package/lib-prod/env/env.angular-node-app.ts +66 -0
  9. package/lib-prod/env/env.docs-webapp.ts +66 -0
  10. package/lib-prod/env/env.electron-app.ts +66 -0
  11. package/lib-prod/env/env.mobile-app.ts +66 -0
  12. package/lib-prod/env/env.npm-lib-and-cli-tool.ts +66 -0
  13. package/lib-prod/env/env.vscode-plugin.ts +66 -0
  14. package/lib-prod/es6.backend.ts +3 -0
  15. package/lib-prod/features/error-rate.backend.ts +31 -0
  16. package/lib-prod/features/latency.backend.ts +38 -0
  17. package/lib-prod/{index._auto-generated_.js → index._auto-generated_.ts} +0 -1
  18. package/lib-prod/index.ts +27 -0
  19. package/lib-prod/lib-info.md +8 -0
  20. package/lib-prod/logger.backend.ts +26 -0
  21. package/lib-prod/migrations/index.ts +2 -0
  22. package/lib-prod/migrations/migrations-info.md +6 -0
  23. package/lib-prod/migrations/{migrations_index._auto-generated_.js → migrations_index._auto-generated_.ts} +2 -1
  24. package/lib-prod/options.backend.ts +140 -0
  25. package/lib-prod/package.json +1 -1
  26. package/lib-prod/request-handler.backend.ts +165 -0
  27. package/lib-prod/server.backend.ts +100 -0
  28. package/lib-prod/summary.backend.ts +26 -0
  29. package/lib-prod/talkback-factory.backend.ts +18 -0
  30. package/lib-prod/tape-matcher.backend.ts +113 -0
  31. package/lib-prod/tape-renderer.backend.ts +118 -0
  32. package/lib-prod/tape-store.backend.ts +111 -0
  33. package/lib-prod/tape.backend.ts +93 -0
  34. package/lib-prod/types.backend.ts +55 -0
  35. package/lib-prod/utils/content-encoding.backend.ts +53 -0
  36. package/lib-prod/utils/headers.backend.ts +14 -0
  37. package/lib-prod/utils/media-type.backend.ts +62 -0
  38. package/lib-prod.re-export.json +1 -0
  39. package/package.json +3 -2
  40. package/websql/package.json +1 -1
  41. package/websql-prod/package.json +1 -1
  42. package/websql-prod.re-export.json +1 -0
  43. package/lib-prod/build-info._auto-generated_.d.ts +0 -24
  44. package/lib-prod/build-info._auto-generated_.js +0 -30
  45. package/lib-prod/build-info._auto-generated_.js.map +0 -1
  46. package/lib-prod/env/env.angular-node-app.d.ts +0 -64
  47. package/lib-prod/env/env.angular-node-app.js +0 -71
  48. package/lib-prod/env/env.angular-node-app.js.map +0 -1
  49. package/lib-prod/env/env.docs-webapp.d.ts +0 -64
  50. package/lib-prod/env/env.docs-webapp.js +0 -71
  51. package/lib-prod/env/env.docs-webapp.js.map +0 -1
  52. package/lib-prod/env/env.electron-app.d.ts +0 -64
  53. package/lib-prod/env/env.electron-app.js +0 -71
  54. package/lib-prod/env/env.electron-app.js.map +0 -1
  55. package/lib-prod/env/env.mobile-app.d.ts +0 -64
  56. package/lib-prod/env/env.mobile-app.js +0 -71
  57. package/lib-prod/env/env.mobile-app.js.map +0 -1
  58. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +0 -64
  59. package/lib-prod/env/env.npm-lib-and-cli-tool.js +0 -71
  60. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +0 -1
  61. package/lib-prod/env/env.vscode-plugin.d.ts +0 -64
  62. package/lib-prod/env/env.vscode-plugin.js +0 -71
  63. package/lib-prod/env/env.vscode-plugin.js.map +0 -1
  64. package/lib-prod/env/index.js +0 -23
  65. package/lib-prod/env/index.js.map +0 -1
  66. package/lib-prod/es6.backend.d.ts +0 -2
  67. package/lib-prod/es6.backend.js +0 -5
  68. package/lib-prod/es6.backend.js.map +0 -1
  69. package/lib-prod/features/error-rate.backend.d.ts +0 -9
  70. package/lib-prod/features/error-rate.backend.js +0 -26
  71. package/lib-prod/features/error-rate.backend.js.map +0 -1
  72. package/lib-prod/features/latency.backend.d.ts +0 -8
  73. package/lib-prod/features/latency.backend.js +0 -33
  74. package/lib-prod/features/latency.backend.js.map +0 -1
  75. package/lib-prod/index._auto-generated_.d.ts +0 -0
  76. package/lib-prod/index._auto-generated_.js.map +0 -1
  77. package/lib-prod/index.d.ts +0 -41
  78. package/lib-prod/index.js +0 -37
  79. package/lib-prod/index.js.map +0 -1
  80. package/lib-prod/logger.backend.d.ts +0 -7
  81. package/lib-prod/logger.backend.js +0 -26
  82. package/lib-prod/logger.backend.js.map +0 -1
  83. package/lib-prod/migrations/index.d.ts +0 -1
  84. package/lib-prod/migrations/index.js +0 -19
  85. package/lib-prod/migrations/index.js.map +0 -1
  86. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +0 -0
  87. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +0 -1
  88. package/lib-prod/options.backend.d.ts +0 -52
  89. package/lib-prod/options.backend.js +0 -91
  90. package/lib-prod/options.backend.js.map +0 -1
  91. package/lib-prod/request-handler.backend.d.ts +0 -13
  92. package/lib-prod/request-handler.backend.js +0 -145
  93. package/lib-prod/request-handler.backend.js.map +0 -1
  94. package/lib-prod/server.backend.d.ts +0 -17
  95. package/lib-prod/server.backend.js +0 -88
  96. package/lib-prod/server.backend.js.map +0 -1
  97. package/lib-prod/summary.backend.d.ts +0 -8
  98. package/lib-prod/summary.backend.js +0 -25
  99. package/lib-prod/summary.backend.js.map +0 -1
  100. package/lib-prod/talkback-factory.backend.d.ts +0 -7
  101. package/lib-prod/talkback-factory.backend.js +0 -20
  102. package/lib-prod/talkback-factory.backend.js.map +0 -1
  103. package/lib-prod/tape-matcher.backend.d.ts +0 -12
  104. package/lib-prod/tape-matcher.backend.js +0 -97
  105. package/lib-prod/tape-matcher.backend.js.map +0 -1
  106. package/lib-prod/tape-renderer.backend.d.ts +0 -24
  107. package/lib-prod/tape-renderer.backend.js +0 -99
  108. package/lib-prod/tape-renderer.backend.js.map +0 -1
  109. package/lib-prod/tape-store.backend.d.ts +0 -16
  110. package/lib-prod/tape-store.backend.js +0 -99
  111. package/lib-prod/tape-store.backend.js.map +0 -1
  112. package/lib-prod/tape.backend.d.ts +0 -19
  113. package/lib-prod/tape.backend.js +0 -80
  114. package/lib-prod/tape.backend.js.map +0 -1
  115. package/lib-prod/types.backend.d.ts +0 -43
  116. package/lib-prod/types.backend.js +0 -3
  117. package/lib-prod/types.backend.js.map +0 -1
  118. package/lib-prod/utils/content-encoding.backend.d.ts +0 -10
  119. package/lib-prod/utils/content-encoding.backend.js +0 -41
  120. package/lib-prod/utils/content-encoding.backend.js.map +0 -1
  121. package/lib-prod/utils/headers.backend.d.ts +0 -4
  122. package/lib-prod/utils/headers.backend.js +0 -18
  123. package/lib-prod/utils/headers.backend.js.map +0 -1
  124. package/lib-prod/utils/media-type.backend.d.ts +0 -10
  125. package/lib-prod/utils/media-type.backend.js +0 -55
  126. package/lib-prod/utils/media-type.backend.js.map +0 -1
  127. /package/lib-prod/env/{index.d.ts → index.ts} +0 -0
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const uuid_1 = require("uuid");
4
- const axios_1 = require("axios");
5
- const tape_backend_1 = require("./tape.backend");
6
- const options_backend_1 = require("./options.backend");
7
- const error_rate_backend_1 = require("./features/error-rate.backend");
8
- const latency_backend_1 = require("./features/latency.backend");
9
- class RequestHandler {
10
- tapeStore;
11
- options;
12
- errorRate;
13
- latency;
14
- constructor(tapeStore, options) {
15
- this.tapeStore = tapeStore;
16
- this.options = options;
17
- this.errorRate = new error_rate_backend_1.default(this.options);
18
- this.latency = new latency_backend_1.default(this.options);
19
- }
20
- async handle(req) {
21
- const matchingContext = {
22
- id: (0, uuid_1.v4)()
23
- };
24
- const recordMode = typeof (this.options.record) === "string" ? this.options.record : this.options.record(req);
25
- options_backend_1.default.validateRecord(recordMode);
26
- if (this.options.requestDecorator) {
27
- req = this.options.requestDecorator(req, matchingContext);
28
- if (!req) {
29
- throw new Error("requestDecorator didn't return a req object");
30
- }
31
- }
32
- let newTape = new tape_backend_1.default(req, this.options);
33
- let matchingTape = this.tapeStore.find(newTape);
34
- let resObj, responseTape;
35
- if (recordMode !== options_backend_1.RecordMode.OVERWRITE && matchingTape) {
36
- responseTape = matchingTape;
37
- if (this.errorRate.shouldSimulate(req, matchingTape)) {
38
- return this.errorRate.simulate(req);
39
- }
40
- await this.latency.simulate(req, matchingTape);
41
- }
42
- else {
43
- if (matchingTape) {
44
- responseTape = matchingTape;
45
- }
46
- else {
47
- responseTape = newTape;
48
- }
49
- if (recordMode === options_backend_1.RecordMode.NEW || recordMode === options_backend_1.RecordMode.OVERWRITE) {
50
- resObj = await this.makeRealRequest(req);
51
- responseTape.res = { ...resObj };
52
- if (this.options.tapeDecorator) {
53
- responseTape = this.options.tapeDecorator(responseTape, matchingContext);
54
- if (!responseTape) {
55
- throw new Error("tapeDecorator didn't return a tape object");
56
- }
57
- }
58
- await this.tapeStore.save(responseTape);
59
- }
60
- else {
61
- resObj = await this.onNoRecord(req);
62
- responseTape.res = { ...resObj };
63
- }
64
- }
65
- resObj = responseTape.res;
66
- if (this.options.responseDecorator) {
67
- const clonedTape = await responseTape.clone();
68
- const resTape = this.options.responseDecorator(clonedTape, req, matchingContext);
69
- if (!resTape) {
70
- throw new Error("responseDecorator didn't return a tape object");
71
- }
72
- if (resTape.res.headers["content-length"]) {
73
- resTape.res.headers["content-length"] = resTape.res.body.length;
74
- }
75
- resObj = resTape.res;
76
- }
77
- return resObj;
78
- }
79
- async onNoRecord(req) {
80
- const fallbackMode = typeof (this.options.fallbackMode) === "string" ? this.options.fallbackMode : this.options.fallbackMode(req);
81
- options_backend_1.default.validateFallbackMode(fallbackMode);
82
- this.options.logger.log(`Tape for ${req.url} not found and recording is disabled (fallbackMode: ${fallbackMode})`);
83
- this.options.logger.log({
84
- url: req.url,
85
- headers: req.headers
86
- });
87
- if (fallbackMode === options_backend_1.FallbackMode.PROXY) {
88
- if (this.errorRate.shouldSimulate(req, undefined)) {
89
- return this.errorRate.simulate(req);
90
- }
91
- await this.latency.simulate(req, undefined);
92
- return await this.makeRealRequest(req);
93
- }
94
- return {
95
- status: 404,
96
- headers: { "content-type": ["text/plain"] },
97
- body: Buffer.from("talkback - tape not found")
98
- };
99
- }
100
- async makeRealRequest(req) {
101
- // let fetchBody: Buffer | null
102
- let { method, url, body } = req;
103
- // fetchBody = body
104
- const headers = { ...req.headers };
105
- delete headers.host;
106
- const host = this.options.host;
107
- // this.options.logger.log(`Making real request to ${host}${url}`)
108
- // if (method === "GET" || method === "HEAD") {
109
- // fetchBody = null
110
- // }
111
- let urlToGetData = `${host}${url}`;
112
- // console.log(`host: "${urlToGetData}"` )
113
- // console.log(`url: "${url}"` )
114
- var fRes = {
115
- status: 400,
116
- headers: {},
117
- body: new Buffer('')
118
- };
119
- try {
120
- // console.log(body.toString())
121
- const r = await (0, axios_1.default)({
122
- url: urlToGetData,
123
- method,
124
- headers,
125
- data: body,
126
- responseType: 'arraybuffer',
127
- });
128
- fRes = {
129
- status: r.status,
130
- headers: r.headers,
131
- body: r.data
132
- };
133
- }
134
- catch (err) {
135
- fRes = {
136
- status: err?.response?.status,
137
- headers: err?.response?.headers,
138
- body: err?.response?.data
139
- };
140
- }
141
- return fRes;
142
- }
143
- }
144
- exports.default = RequestHandler;
145
- //# sourceMappingURL=request-handler.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-handler.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
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
- }
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const request_handler_backend_1 = require("./request-handler.backend");
4
- const summary_backend_1 = require("./summary.backend");
5
- const tape_store_backend_1 = require("./tape-store.backend");
6
- const http = require("http");
7
- const lib_prod_1 = require("tnp-core/lib-prod");
8
- class TalkbackServer {
9
- options;
10
- tapeStore;
11
- requestHandler;
12
- closeSignalHandler;
13
- server;
14
- closed = false;
15
- constructor(options) {
16
- this.options = options;
17
- this.tapeStore = new tape_store_backend_1.default(this.options);
18
- this.requestHandler = new request_handler_backend_1.default(this.tapeStore, this.options);
19
- this.closeSignalHandler = this.close.bind(this);
20
- }
21
- handleRequest(rawReq, res) {
22
- // console.log(`rawReq: ${rawReq.url}`)
23
- let reqBody = [];
24
- rawReq.on("data", (chunk) => {
25
- reqBody.push(chunk);
26
- }).on("end", async () => {
27
- try {
28
- const req = {
29
- headers: rawReq.headers,
30
- url: rawReq.url,
31
- method: rawReq.method,
32
- body: Buffer.concat(reqBody)
33
- };
34
- const fRes = await this.requestHandler.handle(req);
35
- res.writeHead(fRes.status, fRes.headers);
36
- res.end(fRes.body);
37
- }
38
- catch (ex) {
39
- console.error("Error handling request", ex);
40
- res.statusCode = 500;
41
- res.end();
42
- }
43
- });
44
- }
45
- async start(callback) {
46
- await this.tapeStore.load();
47
- const handleRequest = this.handleRequest.bind(this);
48
- const serverFactory = this.options.https.enabled ? () => {
49
- const httpsOpts = {
50
- key: lib_prod_1.fse.readFileSync(this.options.https.keyPath),
51
- cert: lib_prod_1.fse.readFileSync(this.options.https.certPath)
52
- };
53
- return lib_prod_1.https.createServer(httpsOpts, handleRequest);
54
- } : () => http.createServer(handleRequest);
55
- this.server = serverFactory();
56
- console.log(`Starting talkback on ${this.options.port}`);
57
- this.server.listen(this.options.port, callback);
58
- process.on("exit", this.closeSignalHandler);
59
- process.on("SIGINT", this.closeSignalHandler);
60
- process.on("SIGTERM", this.closeSignalHandler);
61
- return this.server;
62
- }
63
- hasTapeBeenUsed(tapeName) {
64
- return this.tapeStore.hasTapeBeenUsed(tapeName);
65
- }
66
- resetTapeUsage() {
67
- this.tapeStore.resetTapeUsage();
68
- }
69
- close(callback) {
70
- if (this.closed) {
71
- return;
72
- }
73
- this.closed = true;
74
- this.server.close(callback);
75
- // @ts-ignore
76
- process.removeListener("exit", this.closeSignalHandler);
77
- // @ts-ignore
78
- process.removeListener("SIGINT", this.closeSignalHandler);
79
- // @ts-ignore
80
- process.removeListener("SIGTERM", this.closeSignalHandler);
81
- if (this.options.summary) {
82
- const summary = new summary_backend_1.default(this.tapeStore.tapes, this.options);
83
- summary.print();
84
- }
85
- }
86
- }
87
- exports.default = TalkbackServer;
88
- //# sourceMappingURL=server.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import Tape from './tape.backend';
2
- import { Options } from './options.backend';
3
- export default class Summary {
4
- private tapes;
5
- private opts;
6
- constructor(tapes: Tape[], opts: Options);
7
- print(): void;
8
- }
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Summary {
4
- tapes;
5
- opts;
6
- constructor(tapes, opts) {
7
- this.tapes = tapes;
8
- this.opts = opts;
9
- }
10
- print() {
11
- console.log(`===== SUMMARY (${this.opts.name}) =====`);
12
- const newTapes = this.tapes.filter(t => t.new);
13
- if (newTapes.length > 0) {
14
- console.log("New tapes:");
15
- newTapes.forEach(t => console.log(`- ${t.path}`));
16
- }
17
- const unusedTapes = this.tapes.filter(t => !t.used);
18
- if (unusedTapes.length > 0) {
19
- console.log("Unused tapes:");
20
- unusedTapes.forEach(t => console.log(`- ${t.path}`));
21
- }
22
- }
23
- }
24
- exports.default = Summary;
25
- //# sourceMappingURL=summary.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAGA,MAAqB,OAAO;IAClB,KAAK,CAAQ;IACb,IAAI,CAAS;IAErB,YAAY,KAAa,EAAE,IAAa;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACzB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC5B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;CACF;AAtBD,0BAsBC"}
@@ -1,7 +0,0 @@
1
- import Options from './options.backend';
2
- import TalkbackServer from './server.backend';
3
- import RequestHandler from './request-handler.backend';
4
- export default class TalkbackFactory {
5
- static server(options: Partial<Options>): TalkbackServer;
6
- static requestHandler(options: Partial<Options>): Promise<RequestHandler>;
7
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const options_backend_1 = require("./options.backend");
4
- const tape_store_backend_1 = require("./tape-store.backend");
5
- const server_backend_1 = require("./server.backend");
6
- const request_handler_backend_1 = require("./request-handler.backend");
7
- class TalkbackFactory {
8
- static server(options) {
9
- const fullOptions = options_backend_1.default.prepare(options);
10
- return new server_backend_1.default(fullOptions);
11
- }
12
- static async requestHandler(options) {
13
- const fullOptions = options_backend_1.default.prepare(options);
14
- const tapeStore = new tape_store_backend_1.default(fullOptions);
15
- await tapeStore.load();
16
- return new request_handler_backend_1.default(tapeStore, fullOptions);
17
- }
18
- }
19
- exports.default = TalkbackFactory;
20
- //# sourceMappingURL=talkback-factory.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"talkback-factory.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,uDAAwC;AACxC,6DAA6C;AAC7C,qDAA8C;AAC9C,uEAAuD;AAEvD,MAAqB,eAAe;IAClC,MAAM,CAAC,MAAM,CAAC,OAAyB;QACrC,MAAM,WAAW,GAAG,yBAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,IAAI,wBAAc,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAyB;QACnD,MAAM,WAAW,GAAG,yBAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,4BAAS,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;QACtB,OAAO,IAAI,iCAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACnD,CAAC;CACF;AAZD,kCAYC"}
@@ -1,12 +0,0 @@
1
- import { Options } from './options.backend';
2
- import Tape from './tape.backend';
3
- export default class TapeMatcher {
4
- private readonly tape;
5
- private readonly options;
6
- constructor(tape: Tape, options: Options);
7
- sameAs(otherTape: Tape): boolean;
8
- private isSameBody;
9
- private isSameHeaders;
10
- private isSameMethod;
11
- private isSameUrl;
12
- }
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const content_encoding_backend_1 = require("./utils/content-encoding.backend");
4
- const media_type_backend_1 = require("./utils/media-type.backend");
5
- const lib_prod_1 = require("tnp-core/lib-prod");
6
- class TapeMatcher {
7
- tape;
8
- options;
9
- constructor(tape, options) {
10
- this.tape = tape;
11
- this.options = options;
12
- }
13
- sameAs(otherTape) {
14
- const otherReq = otherTape.req;
15
- const req = this.tape.req;
16
- if (!this.isSameUrl(req, otherReq)) {
17
- return false;
18
- }
19
- if (!this.isSameMethod(req, otherReq)) {
20
- return false;
21
- }
22
- if (!this.isSameHeaders(req, otherReq)) {
23
- return false;
24
- }
25
- return this.options.ignoreBody || this.isSameBody(req, otherReq);
26
- }
27
- isSameBody(req, otherReq) {
28
- const mediaType = new media_type_backend_1.default(req);
29
- const contentEncoding = new content_encoding_backend_1.default(req);
30
- let sameBody;
31
- if (contentEncoding.isUncompressed() && mediaType.isJSON() && req.body.length > 0 && otherReq.body.length > 0) {
32
- const parsedReqBody = JSON.parse(req.body.toString());
33
- const parsedOtherReqBody = JSON.parse(otherReq.body.toString());
34
- sameBody = lib_prod_1._.isEqual(parsedReqBody, parsedOtherReqBody);
35
- }
36
- else {
37
- sameBody = req.body.equals(otherReq.body);
38
- }
39
- if (!sameBody) {
40
- if (!this.options.bodyMatcher) {
41
- this.options.logger.debug(`Not same BODY ${req.body} vs ${otherReq.body}`);
42
- return false;
43
- }
44
- const bodyMatches = this.options.bodyMatcher(this.tape, otherReq);
45
- if (!bodyMatches) {
46
- this.options.logger.debug(`Not same bodyMatcher ${req.body} vs ${otherReq.body}`);
47
- return false;
48
- }
49
- }
50
- return true;
51
- }
52
- isSameHeaders(req, otherReq) {
53
- const currentHeadersLength = Object.keys(req.headers).length;
54
- const otherHeadersLength = Object.keys(otherReq.headers).length;
55
- const sameNumberOfHeaders = currentHeadersLength === otherHeadersLength;
56
- if (!sameNumberOfHeaders) {
57
- this.options.logger.debug(`Not same #HEADERS ${JSON.stringify(req.headers)} vs ${JSON.stringify(otherReq.headers)}`);
58
- return false;
59
- }
60
- let headersSame = true;
61
- Object.keys(req.headers).forEach(k => {
62
- const entryHeader = req.headers[k];
63
- const header = otherReq.headers[k];
64
- headersSame = headersSame && entryHeader === header;
65
- });
66
- if (!headersSame) {
67
- this.options.logger.debug(`Not same HEADERS values ${JSON.stringify(req.headers)} vs ${JSON.stringify(otherReq.headers)}`);
68
- return false;
69
- }
70
- return true;
71
- }
72
- isSameMethod(req, otherReq) {
73
- const sameMethod = req.method === otherReq.method;
74
- if (!sameMethod) {
75
- this.options.logger.debug(`Not same METHOD ${req.method} vs ${otherReq.method}`);
76
- return false;
77
- }
78
- return true;
79
- }
80
- isSameUrl(req, otherReq) {
81
- const sameURL = req.url === otherReq.url;
82
- if (!sameURL) {
83
- if (!this.options.urlMatcher) {
84
- this.options.logger.debug(`Not same URL ${req.url} vs ${otherReq.url}`);
85
- return false;
86
- }
87
- const urlMatches = this.options.urlMatcher(this.tape, otherReq);
88
- if (!urlMatches) {
89
- this.options.logger.debug(`Not same urlMatcher ${req.url} vs ${otherReq.url}`);
90
- return false;
91
- }
92
- }
93
- return true;
94
- }
95
- }
96
- exports.default = TapeMatcher;
97
- //# sourceMappingURL=tape-matcher.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tape-matcher.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,+EAA+D;AAC/D,mEAAmD;AAInD,gDAAsC;AAEtC,MAAqB,WAAW;IACb,IAAI,CAAM;IACV,OAAO,CAAS;IAEjC,YAAY,IAAU,EAAE,OAAgB;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,SAAe;QACpB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEnE,CAAC;IAEO,UAAU,CAAC,GAAQ,EAAE,QAAa;QACxC,MAAM,SAAS,GAAG,IAAI,4BAAS,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,GAAG,CAAC,CAAA;QAGhD,IAAI,QAAiB,CAAA;QACrB,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9G,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/D,QAAQ,GAAG,YAAC,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC1E,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACjE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBACjF,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,aAAa,CAAC,GAAQ,EAAE,QAAa;QAC3C,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;QAC5D,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;QAC/D,MAAM,mBAAmB,GAAG,oBAAoB,KAAK,kBAAkB,CAAA;QACvE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACpH,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAA;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAElC,WAAW,GAAG,WAAW,IAAI,WAAW,KAAK,MAAM,CAAA;QACrD,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC1H,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,YAAY,CAAC,GAAQ,EAAE,QAAa;QAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAA;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAChF,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,SAAS,CAAC,GAAQ,EAAE,QAAa;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,GAAG,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;gBACvE,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,GAAG,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC9E,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAzGD,8BAyGC"}
@@ -1,24 +0,0 @@
1
- import Tape from './tape.backend';
2
- import { Options } from './options.backend';
3
- import { ReqRes } from './types.backend';
4
- export default class TapeRenderer {
5
- private tape;
6
- constructor(tape: Tape);
7
- static fromStore(raw: any, options: Options): Promise<Tape>;
8
- static prepareBody(tape: Tape, reqResObj: ReqRes, rawBody: string, metaPrefix: "res" | "req"): Promise<any>;
9
- render(): Promise<{
10
- meta: import("./types.backend").Metadata;
11
- req: {
12
- body: any;
13
- url: string;
14
- method: string;
15
- headers: any;
16
- };
17
- res: {
18
- body: any;
19
- status: number;
20
- headers: any;
21
- };
22
- }>;
23
- bodyFor(reqResObj: ReqRes, metaPrefix: "req" | "res"): Promise<any>;
24
- }
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const headers_backend_1 = require("./utils/headers.backend");
4
- const media_type_backend_1 = require("./utils/media-type.backend");
5
- const tape_backend_1 = require("./tape.backend");
6
- const content_encoding_backend_1 = require("./utils/content-encoding.backend");
7
- const bufferShim = require("buffer-shims");
8
- // const bufferShim = require('buffer-shims')/
9
- class TapeRenderer {
10
- tape;
11
- constructor(tape) {
12
- this.tape = tape;
13
- }
14
- static async fromStore(raw, options) {
15
- const req = { ...raw.req };
16
- req.body = await this.prepareBody(raw, req, req.body, "req");
17
- const tape = new tape_backend_1.default(req, options);
18
- tape.meta = { ...raw.meta };
19
- const baseRes = { ...raw.res };
20
- const resBody = await this.prepareBody(tape, baseRes, baseRes.body, "res");
21
- tape.res = {
22
- ...baseRes,
23
- body: resBody
24
- };
25
- return tape;
26
- }
27
- static async prepareBody(tape, reqResObj, rawBody, metaPrefix) {
28
- const contentEncoding = new content_encoding_backend_1.default(reqResObj);
29
- const isTapeUncompressed = tape.meta[metaPrefix + "Uncompressed"];
30
- const isTapeHumanReadable = tape.meta[metaPrefix + "HumanReadable"];
31
- const isTapeInPlainText = isTapeUncompressed || contentEncoding.isUncompressed();
32
- if (isTapeHumanReadable && isTapeInPlainText) {
33
- const mediaType = new media_type_backend_1.default(reqResObj);
34
- let bufferContent = rawBody;
35
- const isResAnObject = typeof (bufferContent) === "object";
36
- if (isResAnObject && mediaType.isJSON()) {
37
- bufferContent = JSON.stringify(bufferContent, null, 2);
38
- }
39
- if (headers_backend_1.default.read(reqResObj.headers, "content-length")) {
40
- headers_backend_1.default.write(reqResObj.headers, "content-length", Buffer.byteLength(bufferContent).toString(), metaPrefix);
41
- }
42
- if (isTapeUncompressed) {
43
- return await contentEncoding.compressedBody(bufferContent);
44
- }
45
- return bufferShim.from(bufferContent);
46
- }
47
- else {
48
- return bufferShim.from(rawBody, "base64");
49
- }
50
- }
51
- async render() {
52
- const reqBody = await this.bodyFor(this.tape.req, "req");
53
- const resBody = await this.bodyFor(this.tape.res, "res");
54
- return {
55
- meta: this.tape.meta,
56
- req: {
57
- ...this.tape.req,
58
- body: reqBody
59
- },
60
- res: {
61
- ...this.tape.res,
62
- body: resBody
63
- }
64
- };
65
- }
66
- async bodyFor(reqResObj, metaPrefix) {
67
- const mediaType = new media_type_backend_1.default(reqResObj);
68
- const contentEncoding = new content_encoding_backend_1.default(reqResObj);
69
- const bodyLength = reqResObj.body.length;
70
- const isUncompressed = contentEncoding.isUncompressed();
71
- const contentEncodingSupported = isUncompressed || contentEncoding.supportedAlgorithm();
72
- if (mediaType.isHumanReadable() && contentEncodingSupported && bodyLength > 0) {
73
- this.tape.meta[metaPrefix + "HumanReadable"] = true;
74
- let body = reqResObj.body;
75
- if (!isUncompressed) {
76
- this.tape.meta[metaPrefix + "Uncompressed"] = true;
77
- body = await contentEncoding.uncompressedBody(body);
78
- }
79
- const rawBody = body.toString("utf8");
80
- if (mediaType.isJSON()) {
81
- try { // TODO handle this better in future not based on mediaType.isJSON
82
- const parsed = JSON.parse(rawBody);
83
- return parsed;
84
- }
85
- catch (error) {
86
- return rawBody;
87
- }
88
- }
89
- else {
90
- return rawBody;
91
- }
92
- }
93
- else {
94
- return reqResObj.body.toString("base64");
95
- }
96
- }
97
- }
98
- exports.default = TapeRenderer;
99
- //# sourceMappingURL=tape-renderer.backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tape-renderer.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { Options } from './options.backend';
2
- import Tape from './tape.backend';
3
- export default class TapeStore {
4
- private readonly path;
5
- private readonly options;
6
- tapes: Tape[];
7
- constructor(options: Options);
8
- load(): Promise<void>;
9
- loadTapesAtDir(directory: string): Promise<void>;
10
- find(newTape: Tape): Tape;
11
- save(tape: Tape): Promise<void>;
12
- currentTapeId(): number;
13
- hasTapeBeenUsed(tapeName: string): boolean;
14
- resetTapeUsage(): void;
15
- createTapePath(tape: Tape): string;
16
- }