ng-talkback 21.0.11 → 21.0.13

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 (135) hide show
  1. package/browser/package.json +1 -1
  2. package/browser-prod/README.md +24 -0
  3. package/browser-prod/fesm2022/ng-talkback-browser.mjs +30 -0
  4. package/browser-prod/fesm2022/ng-talkback-browser.mjs.map +1 -0
  5. package/browser-prod/package.json +23 -0
  6. package/browser-prod/types/ng-talkback-browser.d.ts +4 -0
  7. package/browser-prod.split-namespaces.json +4 -0
  8. package/lib/build-info._auto-generated_.d.ts +5 -1
  9. package/lib/build-info._auto-generated_.js +6 -2
  10. package/lib/build-info._auto-generated_.js.map +1 -1
  11. package/lib/env/env.angular-node-app.d.ts +30 -30
  12. package/lib/env/env.angular-node-app.js +32 -32
  13. package/lib/env/env.angular-node-app.js.map +1 -1
  14. package/lib/env/env.docs-webapp.d.ts +30 -30
  15. package/lib/env/env.docs-webapp.js +32 -32
  16. package/lib/env/env.docs-webapp.js.map +1 -1
  17. package/lib/env/env.electron-app.d.ts +30 -30
  18. package/lib/env/env.electron-app.js +32 -32
  19. package/lib/env/env.electron-app.js.map +1 -1
  20. package/lib/env/env.mobile-app.d.ts +30 -30
  21. package/lib/env/env.mobile-app.js +32 -32
  22. package/lib/env/env.mobile-app.js.map +1 -1
  23. package/lib/env/env.npm-lib-and-cli-tool.d.ts +30 -30
  24. package/lib/env/env.npm-lib-and-cli-tool.js +32 -32
  25. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  26. package/lib/env/env.vscode-plugin.d.ts +30 -30
  27. package/lib/env/env.vscode-plugin.js +32 -32
  28. package/lib/env/env.vscode-plugin.js.map +1 -1
  29. package/lib/index._auto-generated_.js +1 -1
  30. package/lib/index._auto-generated_.js.map +1 -1
  31. package/lib/migrations/index.d.ts +1 -0
  32. package/lib/migrations/index.js +19 -0
  33. package/lib/migrations/index.js.map +1 -0
  34. package/lib/migrations/migrations_index._auto-generated_.d.ts +0 -0
  35. package/lib/migrations/migrations_index._auto-generated_.js +4 -0
  36. package/lib/migrations/migrations_index._auto-generated_.js.map +1 -0
  37. package/lib/package.json +4 -0
  38. package/lib-prod/build-info._auto-generated_.d.ts +24 -0
  39. package/lib-prod/build-info._auto-generated_.js +30 -0
  40. package/lib-prod/build-info._auto-generated_.js.map +1 -0
  41. package/lib-prod/env/env.angular-node-app.d.ts +64 -0
  42. package/lib-prod/env/env.angular-node-app.js +71 -0
  43. package/lib-prod/env/env.angular-node-app.js.map +1 -0
  44. package/lib-prod/env/env.docs-webapp.d.ts +64 -0
  45. package/lib-prod/env/env.docs-webapp.js +71 -0
  46. package/lib-prod/env/env.docs-webapp.js.map +1 -0
  47. package/lib-prod/env/env.electron-app.d.ts +64 -0
  48. package/lib-prod/env/env.electron-app.js +71 -0
  49. package/lib-prod/env/env.electron-app.js.map +1 -0
  50. package/lib-prod/env/env.mobile-app.d.ts +64 -0
  51. package/lib-prod/env/env.mobile-app.js +71 -0
  52. package/lib-prod/env/env.mobile-app.js.map +1 -0
  53. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +64 -0
  54. package/lib-prod/env/env.npm-lib-and-cli-tool.js +71 -0
  55. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
  56. package/lib-prod/env/env.vscode-plugin.d.ts +64 -0
  57. package/lib-prod/env/env.vscode-plugin.js +71 -0
  58. package/lib-prod/env/env.vscode-plugin.js.map +1 -0
  59. package/lib-prod/env/index.d.ts +6 -0
  60. package/lib-prod/env/index.js +23 -0
  61. package/lib-prod/env/index.js.map +1 -0
  62. package/lib-prod/es6.backend.d.ts +2 -0
  63. package/lib-prod/es6.backend.js +5 -0
  64. package/lib-prod/es6.backend.js.map +1 -0
  65. package/lib-prod/features/error-rate.backend.d.ts +9 -0
  66. package/lib-prod/features/error-rate.backend.js +26 -0
  67. package/lib-prod/features/error-rate.backend.js.map +1 -0
  68. package/lib-prod/features/latency.backend.d.ts +8 -0
  69. package/lib-prod/features/latency.backend.js +33 -0
  70. package/lib-prod/features/latency.backend.js.map +1 -0
  71. package/lib-prod/index._auto-generated_.js +6 -0
  72. package/lib-prod/index._auto-generated_.js.map +1 -0
  73. package/lib-prod/index.d.ts +41 -0
  74. package/lib-prod/index.js +37 -0
  75. package/lib-prod/index.js.map +1 -0
  76. package/lib-prod/logger.backend.d.ts +7 -0
  77. package/lib-prod/logger.backend.js +26 -0
  78. package/lib-prod/logger.backend.js.map +1 -0
  79. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +0 -0
  80. package/lib-prod/options.backend.d.ts +52 -0
  81. package/lib-prod/options.backend.js +91 -0
  82. package/lib-prod/options.backend.js.map +1 -0
  83. package/lib-prod/package.json +4 -0
  84. package/lib-prod/request-handler.backend.d.ts +13 -0
  85. package/lib-prod/request-handler.backend.js +145 -0
  86. package/lib-prod/request-handler.backend.js.map +1 -0
  87. package/lib-prod/server.backend.d.ts +17 -0
  88. package/lib-prod/server.backend.js +88 -0
  89. package/lib-prod/server.backend.js.map +1 -0
  90. package/lib-prod/summary.backend.d.ts +8 -0
  91. package/lib-prod/summary.backend.js +25 -0
  92. package/lib-prod/summary.backend.js.map +1 -0
  93. package/lib-prod/talkback-factory.backend.d.ts +7 -0
  94. package/lib-prod/talkback-factory.backend.js +20 -0
  95. package/lib-prod/talkback-factory.backend.js.map +1 -0
  96. package/lib-prod/tape-matcher.backend.d.ts +12 -0
  97. package/lib-prod/tape-matcher.backend.js +97 -0
  98. package/lib-prod/tape-matcher.backend.js.map +1 -0
  99. package/lib-prod/tape-renderer.backend.d.ts +24 -0
  100. package/lib-prod/tape-renderer.backend.js +99 -0
  101. package/lib-prod/tape-renderer.backend.js.map +1 -0
  102. package/lib-prod/tape-store.backend.d.ts +16 -0
  103. package/lib-prod/tape-store.backend.js +99 -0
  104. package/lib-prod/tape-store.backend.js.map +1 -0
  105. package/lib-prod/tape.backend.d.ts +19 -0
  106. package/lib-prod/tape.backend.js +80 -0
  107. package/lib-prod/tape.backend.js.map +1 -0
  108. package/lib-prod/types.backend.d.ts +43 -0
  109. package/lib-prod/types.backend.js +3 -0
  110. package/lib-prod/types.backend.js.map +1 -0
  111. package/lib-prod/utils/content-encoding.backend.d.ts +10 -0
  112. package/lib-prod/utils/content-encoding.backend.js +41 -0
  113. package/lib-prod/utils/content-encoding.backend.js.map +1 -0
  114. package/lib-prod/utils/headers.backend.d.ts +4 -0
  115. package/lib-prod/utils/headers.backend.js +18 -0
  116. package/lib-prod/utils/headers.backend.js.map +1 -0
  117. package/lib-prod/utils/media-type.backend.d.ts +10 -0
  118. package/lib-prod/utils/media-type.backend.js +55 -0
  119. package/lib-prod/utils/media-type.backend.js.map +1 -0
  120. package/lib-prod.split-namespaces.json +4 -0
  121. package/package.json +1 -1
  122. package/websql/package.json +1 -1
  123. package/websql-prod/README.md +24 -0
  124. package/websql-prod/fesm2022/ng-talkback-websql.mjs +30 -0
  125. package/websql-prod/fesm2022/ng-talkback-websql.mjs.map +1 -0
  126. package/websql-prod/package.json +23 -0
  127. package/websql-prod/types/ng-talkback-websql.d.ts +4 -0
  128. package/websql-prod.split-namespaces.json +4 -0
  129. package/tmp-environment.json +0 -39
  130. /package/{migrations/migrations_index._auto-generated_.d.ts → lib-prod/index._auto-generated_.d.ts} +0 -0
  131. /package/{migrations → lib-prod/migrations}/index.d.ts +0 -0
  132. /package/{migrations → lib-prod/migrations}/index.js +0 -0
  133. /package/{migrations → lib-prod/migrations}/index.js.map +0 -0
  134. /package/{migrations → lib-prod/migrations}/migrations_index._auto-generated_.js +0 -0
  135. /package/{migrations → lib-prod/migrations}/migrations_index._auto-generated_.js.map +0 -0
@@ -0,0 +1,99 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tape-renderer.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
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
+ }
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lib_prod_1 = require("tnp-core/lib-prod");
4
+ const tape_backend_1 = require("./tape.backend");
5
+ const tape_matcher_backend_1 = require("./tape-matcher.backend");
6
+ const tape_renderer_backend_1 = require("./tape-renderer.backend");
7
+ class TapeStore {
8
+ path;
9
+ options;
10
+ tapes;
11
+ constructor(options) {
12
+ this.path = lib_prod_1.path.normalize(options.path + "/");
13
+ this.options = options;
14
+ this.tapes = [];
15
+ }
16
+ async load() {
17
+ lib_prod_1.mkdirp.sync(this.path);
18
+ await this.loadTapesAtDir(this.path);
19
+ console.log(`Loaded ${this.tapes.length} tapes`);
20
+ }
21
+ async loadTapesAtDir(directory) {
22
+ const items = lib_prod_1.fse.readdirSync(directory);
23
+ for (let i = 0; i < items.length; i++) {
24
+ const filename = items[i];
25
+ const fullPath = `${directory}${filename}`;
26
+ const stat = lib_prod_1.fse.statSync(fullPath);
27
+ if (!stat.isDirectory()) {
28
+ try {
29
+ const data = lib_prod_1.fse.readFileSync(fullPath, "utf8");
30
+ const raw = lib_prod_1.json5.parse(data);
31
+ const tape = await tape_backend_1.default.fromStore(raw, this.options);
32
+ tape.path = filename;
33
+ this.tapes.push(tape);
34
+ }
35
+ catch (e) {
36
+ console.log(`Error reading tape ${fullPath}`, e.message);
37
+ }
38
+ }
39
+ else {
40
+ this.loadTapesAtDir(fullPath + "/");
41
+ }
42
+ }
43
+ }
44
+ find(newTape) {
45
+ const foundTape = this.tapes.find(t => {
46
+ this.options.logger.debug(`Comparing against tape ${t.path}`);
47
+ return new tape_matcher_backend_1.default(t, this.options).sameAs(newTape);
48
+ });
49
+ if (foundTape) {
50
+ foundTape.used = true;
51
+ this.options.logger.log(`Found matching tape for ${newTape.req.url} at ${foundTape.path}`);
52
+ return foundTape;
53
+ }
54
+ }
55
+ async save(tape) {
56
+ tape.new = true;
57
+ tape.used = true;
58
+ const tapePath = tape.path;
59
+ let fullFilename;
60
+ if (tapePath) {
61
+ fullFilename = lib_prod_1.path.join(this.path, tapePath);
62
+ }
63
+ else {
64
+ // If the tape doesn't have a path then it's new
65
+ this.tapes.push(tape);
66
+ fullFilename = this.createTapePath(tape);
67
+ tape.path = lib_prod_1.path.relative(this.path, fullFilename);
68
+ }
69
+ this.options.logger.log(`Saving request ${tape.req.url} at ${tape.path}`);
70
+ const tapeRenderer = new tape_renderer_backend_1.default(tape);
71
+ const toSave = await tapeRenderer.render();
72
+ lib_prod_1.fse.writeFileSync(fullFilename, lib_prod_1.json5.stringify(toSave, null, 4));
73
+ }
74
+ currentTapeId() {
75
+ return this.tapes.length;
76
+ }
77
+ hasTapeBeenUsed(tapeName) {
78
+ return this.tapes.some(t => t.used && t.path === tapeName);
79
+ }
80
+ resetTapeUsage() {
81
+ return this.tapes.forEach(t => t.used = false);
82
+ }
83
+ createTapePath(tape) {
84
+ const currentTapeId = this.currentTapeId();
85
+ let tapePath = `unnamed-${currentTapeId}.json5`;
86
+ if (this.options.tapeNameGenerator) {
87
+ tapePath = this.options.tapeNameGenerator(currentTapeId, tape);
88
+ }
89
+ let result = lib_prod_1.path.normalize(lib_prod_1.path.join(this.options.path, tapePath));
90
+ if (!result.endsWith(".json5")) {
91
+ result = `${result}.json5`;
92
+ }
93
+ const dir = lib_prod_1.path.dirname(result);
94
+ lib_prod_1.mkdirp.sync(dir);
95
+ return result;
96
+ }
97
+ }
98
+ exports.default = TapeStore;
99
+ //# sourceMappingURL=tape-store.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tape-store.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Options } from './options.backend';
2
+ import { Metadata, Req, Res } from './types.backend';
3
+ export declare class Tape {
4
+ req: Req;
5
+ res?: Res;
6
+ options: Options;
7
+ queryParamsToIgnore: string[];
8
+ meta: Metadata;
9
+ path?: string;
10
+ new: boolean;
11
+ used: boolean;
12
+ constructor(req: Req, options: Options);
13
+ static fromStore(raw: any, options: Options): Promise<Tape>;
14
+ cleanupHeaders(): void;
15
+ cleanupQueryParams(): void;
16
+ normalizeBody(): void;
17
+ clone(): Promise<Tape>;
18
+ }
19
+ export default Tape;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tape = void 0;
4
+ const media_type_backend_1 = require("./utils/media-type.backend");
5
+ const tape_renderer_backend_1 = require("./tape-renderer.backend");
6
+ const content_encoding_backend_1 = require("./utils/content-encoding.backend");
7
+ const URL = require("url");
8
+ const querystring = require("querystring");
9
+ // const URL = require('url')
10
+ // const querystring = require('querystring')
11
+ class Tape {
12
+ req;
13
+ res;
14
+ options;
15
+ queryParamsToIgnore;
16
+ meta;
17
+ path;
18
+ new = false;
19
+ used = false;
20
+ constructor(req, options) {
21
+ this.req = { ...req };
22
+ this.options = options;
23
+ // This needs to happen before we erase headers since we could lose information
24
+ this.normalizeBody();
25
+ this.cleanupHeaders();
26
+ this.queryParamsToIgnore = this.options.ignoreQueryParams;
27
+ this.cleanupQueryParams();
28
+ this.meta = {
29
+ createdAt: new Date(),
30
+ host: this.options.host
31
+ };
32
+ }
33
+ static async fromStore(raw, options) {
34
+ return tape_renderer_backend_1.default.fromStore(raw, options);
35
+ }
36
+ cleanupHeaders() {
37
+ const newHeaders = { ...this.req.headers };
38
+ this.options.ignoreHeaders.forEach(h => delete newHeaders[h]);
39
+ this.req = {
40
+ ...this.req,
41
+ headers: newHeaders
42
+ };
43
+ }
44
+ cleanupQueryParams() {
45
+ if (this.queryParamsToIgnore.length === 0) {
46
+ return;
47
+ }
48
+ const url = URL.parse(this.req.url, true);
49
+ if (!url.search) {
50
+ return;
51
+ }
52
+ const query = { ...url.query };
53
+ this.queryParamsToIgnore.forEach(q => delete query[q]);
54
+ const newQuery = querystring.stringify(query);
55
+ if (newQuery) {
56
+ url.query = query;
57
+ url.search = "?" + newQuery;
58
+ }
59
+ else {
60
+ url.query = null;
61
+ url.search = null;
62
+ }
63
+ this.req.url = URL.format(url);
64
+ }
65
+ normalizeBody() {
66
+ const mediaType = new media_type_backend_1.default(this.req);
67
+ const contentEncoding = new content_encoding_backend_1.default(this.req);
68
+ if (contentEncoding.isUncompressed() && mediaType.isJSON() && this.req.body.length > 0) {
69
+ this.req.body = Buffer.from(JSON.stringify(JSON.parse(this.req.body.toString()), null, 2));
70
+ }
71
+ }
72
+ async clone() {
73
+ const tapeRenderer = new tape_renderer_backend_1.default(this);
74
+ const raw = await tapeRenderer.render();
75
+ return Tape.fromStore(raw, this.options);
76
+ }
77
+ }
78
+ exports.Tape = Tape;
79
+ exports.default = Tape;
80
+ //# sourceMappingURL=tape.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tape.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { FallbackMode, Options, RecordMode } from './options.backend';
2
+ import TalkbackServer from './server.backend';
3
+ import RequestHandler from './request-handler.backend';
4
+ export {};
5
+ export interface More {
6
+ [key: string]: any;
7
+ }
8
+ export interface MatchingContext extends More {
9
+ id: string;
10
+ }
11
+ export interface ReqRes {
12
+ headers: any;
13
+ body: Buffer;
14
+ }
15
+ export interface Req extends ReqRes {
16
+ url: string;
17
+ method: string;
18
+ }
19
+ export type HttpRequest = Req;
20
+ export interface Res extends ReqRes {
21
+ status: number;
22
+ }
23
+ export type HttpResponse = Res;
24
+ export interface Metadata extends More {
25
+ createdAt: Date;
26
+ host: string;
27
+ tag?: string;
28
+ errorRate?: number;
29
+ latency?: number | number[];
30
+ reqUncompressed?: boolean;
31
+ resUncompressed?: boolean;
32
+ reqHumanReadable?: boolean;
33
+ resHumanReadable?: boolean;
34
+ }
35
+ type TalkbackBase = (options: Partial<Options>) => TalkbackServer;
36
+ export interface Talkback extends TalkbackBase {
37
+ Options: {
38
+ Default: Options;
39
+ FallbackMode: typeof FallbackMode;
40
+ RecordMode: typeof RecordMode;
41
+ };
42
+ requestHandler(options: Partial<Options>): RequestHandler;
43
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ReqRes } from '../types.backend';
2
+ export default class ContentEncoding {
3
+ private reqRes;
4
+ constructor(reqRes: ReqRes);
5
+ isUncompressed(): boolean;
6
+ supportedAlgorithm(): boolean;
7
+ contentEncoding(): any;
8
+ uncompressedBody(body: Buffer): Promise<any>;
9
+ compressedBody(body: string): Promise<any>;
10
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const zlib = require('zlib');
4
+ const headers_backend_1 = require("./headers.backend");
5
+ const ALGORITHMS = {
6
+ gzip: { compress: zlib.gzipSync, uncompress: zlib.gunzipSync },
7
+ deflate: { compress: zlib.deflateSync, uncompress: zlib.inflateSync }
8
+ };
9
+ class ContentEncoding {
10
+ reqRes;
11
+ constructor(reqRes) {
12
+ this.reqRes = reqRes;
13
+ }
14
+ isUncompressed() {
15
+ const contentEncoding = this.contentEncoding();
16
+ return !contentEncoding || contentEncoding === "identity";
17
+ }
18
+ supportedAlgorithm() {
19
+ const contentEncoding = this.contentEncoding();
20
+ return Object.keys(ALGORITHMS).includes(contentEncoding);
21
+ }
22
+ contentEncoding() {
23
+ return headers_backend_1.default.read(this.reqRes.headers, "content-encoding");
24
+ }
25
+ async uncompressedBody(body) {
26
+ const contentEncoding = this.contentEncoding();
27
+ if (!this.supportedAlgorithm()) {
28
+ throw new Error(`Unsupported content-encoding ${contentEncoding}`);
29
+ }
30
+ return ALGORITHMS[contentEncoding].uncompress(body);
31
+ }
32
+ async compressedBody(body) {
33
+ const contentEncoding = this.contentEncoding();
34
+ if (!this.supportedAlgorithm()) {
35
+ throw new Error(`Unsupported content-encoding ${contentEncoding}`);
36
+ }
37
+ return ALGORITHMS[contentEncoding].compress(body);
38
+ }
39
+ }
40
+ exports.default = ContentEncoding;
41
+ //# sourceMappingURL=content-encoding.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-encoding.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,uDAAwC;AAExC,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAC;IAC5D,OAAO,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAC;CACpE,CAAA;AAID,MAAqB,eAAe;IAC1B,MAAM,CAAQ;IAEtB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,cAAc;QACZ,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC9C,OAAO,CAAC,eAAe,IAAI,eAAe,KAAK,UAAU,CAAA;IAC3D,CAAC;IAED,kBAAkB;QAChB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IAC1D,CAAC;IAED,eAAe;QACb,OAAO,yBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,gCAAgC,eAAe,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,UAAU,CAAC,eAAsC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,gCAAgC,eAAe,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,UAAU,CAAC,eAAsC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1E,CAAC;CACF;AAxCD,kCAwCC"}
@@ -0,0 +1,4 @@
1
+ export default class Headers {
2
+ static read(headers: any, headerName: string): any;
3
+ static write(headers: any, headerName: string, value: string, type: "req" | "res"): void;
4
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Headers {
4
+ static read(headers, headerName) {
5
+ const value = headers[headerName];
6
+ if (Array.isArray(value)) {
7
+ return value[0];
8
+ }
9
+ else {
10
+ return value;
11
+ }
12
+ }
13
+ static write(headers, headerName, value, type) {
14
+ headers[headerName] = type === "req" ? value : [value];
15
+ }
16
+ }
17
+ exports.default = Headers;
18
+ //# sourceMappingURL=headers.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;AAAA,MAAqB,OAAO;IAC1B,MAAM,CAAC,IAAI,CAAC,OAAY,EAAE,UAAkB;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAY,EAAE,UAAkB,EAAE,KAAa,EAAE,IAAiB;QAC7E,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACxD,CAAC;CACF;AAbD,0BAaC"}
@@ -0,0 +1,10 @@
1
+ import { ReqRes } from '../types.backend';
2
+ export declare const jsonTypes: ((contentType: string) => boolean)[];
3
+ export default class MediaType {
4
+ private htmlReqRes;
5
+ constructor(htmlReqRes: ReqRes);
6
+ isHumanReadable(): boolean;
7
+ isJSON(): boolean;
8
+ contentType(): string;
9
+ headers(): any;
10
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonTypes = void 0;
4
+ const lib_prod_1 = require("tnp-core/lib-prod");
5
+ const headers_backend_1 = require("./headers.backend");
6
+ const contentTypeParser = require('content-type');
7
+ const equals = (to) => (contentType) => to == contentType;
8
+ exports.jsonTypes = [
9
+ equals("application/json"),
10
+ (contentType) => contentType.startsWith("application/") && contentType.endsWith("+json")
11
+ ];
12
+ const humanReadableContentTypes = [
13
+ equals("application/javascript"),
14
+ equals("text/css"),
15
+ equals("text/html"),
16
+ equals("text/javascript"),
17
+ equals("text/plain"),
18
+ ...exports.jsonTypes
19
+ ];
20
+ class MediaType {
21
+ htmlReqRes;
22
+ constructor(htmlReqRes) {
23
+ this.htmlReqRes = htmlReqRes;
24
+ }
25
+ isHumanReadable() {
26
+ const contentType = this.contentType();
27
+ if (!contentType) {
28
+ return false;
29
+ }
30
+ return humanReadableContentTypes.some(comparator => comparator(contentType));
31
+ }
32
+ isJSON() {
33
+ const contentType = this.contentType();
34
+ if (!contentType) {
35
+ return false;
36
+ }
37
+ const result = exports.jsonTypes.some(comparator => comparator('application/json'));
38
+ return result;
39
+ }
40
+ contentType() {
41
+ const contentTypeHeader = headers_backend_1.default.read(this.headers(), "content-type");
42
+ if (!contentTypeHeader) {
43
+ return null;
44
+ }
45
+ const parsedContentType = contentTypeParser.parse(contentTypeHeader);
46
+ return parsedContentType.type;
47
+ }
48
+ headers() {
49
+ return lib_prod_1._.merge(this.htmlReqRes.headers, {
50
+ 'content-type': 'application/json'
51
+ });
52
+ }
53
+ }
54
+ exports.default = MediaType;
55
+ //# sourceMappingURL=media-type.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-type.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;AAAA,gDAAsC;AAEtC,uDAAwC;AAExC,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAEjD,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,WAAmB,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAA;AAE5D,QAAA,SAAS,GAAG;IACvB,MAAM,CAAC,kBAAkB,CAAC;IAC1B,CAAC,WAAmB,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;CACjG,CAAA;AAED,MAAM,yBAAyB,GAAG;IAChC,MAAM,CAAC,wBAAwB,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,WAAW,CAAC;IACnB,MAAM,CAAC,iBAAiB,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC;IACpB,GAAG,iBAAS;CACb,CAAA;AAED,MAAqB,SAAS;IACpB,UAAU,CAAQ;IAE1B,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,eAAe;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,MAAM,GAAG,iBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;QACT,MAAM,iBAAiB,GAAG,yBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpE,OAAO,iBAAiB,CAAC,IAAc,CAAA;IACzC,CAAC;IAED,OAAO;QACL,OAAO,YAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC,CAAA;IACJ,CAAC;CACF;AAvCD,4BAuCC"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "namespacesMapObj": {},
3
+ "namespacesReplace": {}
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-talkback",
3
- "version": "21.0.11",
3
+ "version": "21.0.13",
4
4
  "scripts": {
5
5
  "build": "node tools/build.js",
6
6
  "ci": "yarn ts-check && yarn test && yarn build && USE_DIST=1 yarn test",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-talkback/websql",
3
- "version": "21.0.11",
3
+ "version": "21.0.13",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0"
@@ -0,0 +1,24 @@
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,30 @@
1
+ let a = 2;
2
+ a++;
3
+ /* */
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ /* */
9
+ /* */
10
+ /* */
11
+ /* */
12
+ /* */
13
+ /* */
14
+ /* */
15
+ /* */
16
+ /* */
17
+ /* */
18
+ /* */
19
+ /* */
20
+ /* */
21
+ /* */
22
+ /* */
23
+ /* */
24
+ /* */
25
+ /* */
26
+
27
+ /**
28
+ * Generated bundle index. Do not edit.
29
+ */
30
+ //# sourceMappingURL=ng-talkback-websql.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-talkback-websql.mjs","sources":["../../../tmp-libs-for-dist-websql-prod/ng-talkback/projects/ng-talkback/src/lib/index.ts","../../../tmp-libs-for-dist-websql-prod/ng-talkback/projects/ng-talkback/src/ng-talkback-websql.ts"],"sourcesContent":["export type Dummy = 'a';\nlet a = 2;\na++;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AACA,IAAI,CAAC,GAAG,CAAC;AACT,CAAC,EAAE;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;;AAEG"}