@hanivanrizky/nestjs-browser-action 0.1.0

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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +279 -0
  3. package/dist/browser-action.module-definition.d.ts +7 -0
  4. package/dist/browser-action.module-definition.js +3 -0
  5. package/dist/browser-action.module-definition.js.map +1 -0
  6. package/dist/browser-action.module.d.ts +8 -0
  7. package/dist/browser-action.module.js +93 -0
  8. package/dist/browser-action.module.js.map +1 -0
  9. package/dist/constants/browser-action.constants.d.ts +28 -0
  10. package/dist/constants/browser-action.constants.js +32 -0
  11. package/dist/constants/browser-action.constants.js.map +1 -0
  12. package/dist/constants/index.d.ts +1 -0
  13. package/dist/constants/index.js +18 -0
  14. package/dist/constants/index.js.map +1 -0
  15. package/dist/decorators/index.d.ts +2 -0
  16. package/dist/decorators/index.js +19 -0
  17. package/dist/decorators/index.js.map +1 -0
  18. package/dist/decorators/inject-browser.decorator.d.ts +1 -0
  19. package/dist/decorators/inject-browser.decorator.js +7 -0
  20. package/dist/decorators/inject-browser.decorator.js.map +1 -0
  21. package/dist/decorators/inject-page.decorator.d.ts +1 -0
  22. package/dist/decorators/inject-page.decorator.js +7 -0
  23. package/dist/decorators/inject-page.decorator.js.map +1 -0
  24. package/dist/enums/cleansing-profile.enum.d.ts +7 -0
  25. package/dist/enums/cleansing-profile.enum.js +12 -0
  26. package/dist/enums/cleansing-profile.enum.js.map +1 -0
  27. package/dist/enums/cleansing-type.enum.d.ts +15 -0
  28. package/dist/enums/cleansing-type.enum.js +20 -0
  29. package/dist/enums/cleansing-type.enum.js.map +1 -0
  30. package/dist/enums/index.d.ts +2 -0
  31. package/dist/enums/index.js +19 -0
  32. package/dist/enums/index.js.map +1 -0
  33. package/dist/helpers/action-helpers.service.d.ts +41 -0
  34. package/dist/helpers/action-helpers.service.js +534 -0
  35. package/dist/helpers/action-helpers.service.js.map +1 -0
  36. package/dist/helpers/dom.util.d.ts +4 -0
  37. package/dist/helpers/dom.util.js +27 -0
  38. package/dist/helpers/dom.util.js.map +1 -0
  39. package/dist/helpers/index.d.ts +2 -0
  40. package/dist/helpers/index.js +19 -0
  41. package/dist/helpers/index.js.map +1 -0
  42. package/dist/helpers/logger.util.d.ts +10 -0
  43. package/dist/helpers/logger.util.js +47 -0
  44. package/dist/helpers/logger.util.js.map +1 -0
  45. package/dist/index.d.ts +12 -0
  46. package/dist/index.js +29 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/interfaces/browser-action-options.d.ts +17 -0
  49. package/dist/interfaces/browser-action-options.js +3 -0
  50. package/dist/interfaces/browser-action-options.js.map +1 -0
  51. package/dist/interfaces/cleansing-options.d.ts +14 -0
  52. package/dist/interfaces/cleansing-options.js +3 -0
  53. package/dist/interfaces/cleansing-options.js.map +1 -0
  54. package/dist/interfaces/cookie-options.d.ts +31 -0
  55. package/dist/interfaces/cookie-options.js +3 -0
  56. package/dist/interfaces/cookie-options.js.map +1 -0
  57. package/dist/interfaces/index.d.ts +6 -0
  58. package/dist/interfaces/index.js +23 -0
  59. package/dist/interfaces/index.js.map +1 -0
  60. package/dist/interfaces/pool-options.d.ts +6 -0
  61. package/dist/interfaces/pool-options.js +3 -0
  62. package/dist/interfaces/pool-options.js.map +1 -0
  63. package/dist/interfaces/types.d.ts +31 -0
  64. package/dist/interfaces/types.js +3 -0
  65. package/dist/interfaces/types.js.map +1 -0
  66. package/dist/interfaces/workflow-options.d.ts +50 -0
  67. package/dist/interfaces/workflow-options.js +3 -0
  68. package/dist/interfaces/workflow-options.js.map +1 -0
  69. package/dist/pipes/alt-flag.pipe.d.ts +10 -0
  70. package/dist/pipes/alt-flag.pipe.js +63 -0
  71. package/dist/pipes/alt-flag.pipe.js.map +1 -0
  72. package/dist/pipes/cleansing-pipe.d.ts +7 -0
  73. package/dist/pipes/cleansing-pipe.js +25 -0
  74. package/dist/pipes/cleansing-pipe.js.map +1 -0
  75. package/dist/pipes/date-format.pipe.d.ts +10 -0
  76. package/dist/pipes/date-format.pipe.js +88 -0
  77. package/dist/pipes/date-format.pipe.js.map +1 -0
  78. package/dist/pipes/index.d.ts +15 -0
  79. package/dist/pipes/index.js +32 -0
  80. package/dist/pipes/index.js.map +1 -0
  81. package/dist/pipes/normalize-whitespace.pipe.d.ts +8 -0
  82. package/dist/pipes/normalize-whitespace.pipe.js +49 -0
  83. package/dist/pipes/normalize-whitespace.pipe.js.map +1 -0
  84. package/dist/pipes/profiles/currency.profile.d.ts +2 -0
  85. package/dist/pipes/profiles/currency.profile.js +19 -0
  86. package/dist/pipes/profiles/currency.profile.js.map +1 -0
  87. package/dist/pipes/profiles/date.profile.d.ts +2 -0
  88. package/dist/pipes/profiles/date.profile.js +14 -0
  89. package/dist/pipes/profiles/date.profile.js.map +1 -0
  90. package/dist/pipes/profiles/email.profile.d.ts +2 -0
  91. package/dist/pipes/profiles/email.profile.js +18 -0
  92. package/dist/pipes/profiles/email.profile.js.map +1 -0
  93. package/dist/pipes/profiles/phone.profile.d.ts +2 -0
  94. package/dist/pipes/profiles/phone.profile.js +18 -0
  95. package/dist/pipes/profiles/phone.profile.js.map +1 -0
  96. package/dist/pipes/profiles/price.profile.d.ts +2 -0
  97. package/dist/pipes/profiles/price.profile.js +19 -0
  98. package/dist/pipes/profiles/price.profile.js.map +1 -0
  99. package/dist/pipes/profiles.d.ts +3 -0
  100. package/dist/pipes/profiles.js +17 -0
  101. package/dist/pipes/profiles.js.map +1 -0
  102. package/dist/pipes/regex-extract.pipe.d.ts +7 -0
  103. package/dist/pipes/regex-extract.pipe.js +73 -0
  104. package/dist/pipes/regex-extract.pipe.js.map +1 -0
  105. package/dist/pipes/regex-replace.pipe.d.ts +9 -0
  106. package/dist/pipes/regex-replace.pipe.js +59 -0
  107. package/dist/pipes/regex-replace.pipe.js.map +1 -0
  108. package/dist/pipes/remove-currency-symbol.pipe.d.ts +7 -0
  109. package/dist/pipes/remove-currency-symbol.pipe.js +65 -0
  110. package/dist/pipes/remove-currency-symbol.pipe.js.map +1 -0
  111. package/dist/pipes/remove-line-breaks.pipe.d.ts +7 -0
  112. package/dist/pipes/remove-line-breaks.pipe.js +42 -0
  113. package/dist/pipes/remove-line-breaks.pipe.js.map +1 -0
  114. package/dist/pipes/remove-special-chars.pipe.d.ts +7 -0
  115. package/dist/pipes/remove-special-chars.pipe.js +44 -0
  116. package/dist/pipes/remove-special-chars.pipe.js.map +1 -0
  117. package/dist/pipes/sanitize-text.pipe.d.ts +7 -0
  118. package/dist/pipes/sanitize-text.pipe.js +86 -0
  119. package/dist/pipes/sanitize-text.pipe.js.map +1 -0
  120. package/dist/pipes/to-lower-case.pipe.d.ts +6 -0
  121. package/dist/pipes/to-lower-case.pipe.js +16 -0
  122. package/dist/pipes/to-lower-case.pipe.js.map +1 -0
  123. package/dist/pipes/to-number.pipe.d.ts +9 -0
  124. package/dist/pipes/to-number.pipe.js +57 -0
  125. package/dist/pipes/to-number.pipe.js.map +1 -0
  126. package/dist/pipes/to-upper-case.pipe.d.ts +6 -0
  127. package/dist/pipes/to-upper-case.pipe.js +16 -0
  128. package/dist/pipes/to-upper-case.pipe.js.map +1 -0
  129. package/dist/pipes/trim.pipe.d.ts +8 -0
  130. package/dist/pipes/trim.pipe.js +44 -0
  131. package/dist/pipes/trim.pipe.js.map +1 -0
  132. package/dist/services/browser-manager.service.d.ts +15 -0
  133. package/dist/services/browser-manager.service.js +47 -0
  134. package/dist/services/browser-manager.service.js.map +1 -0
  135. package/dist/services/browser-pool.service.d.ts +26 -0
  136. package/dist/services/browser-pool.service.js +163 -0
  137. package/dist/services/browser-pool.service.js.map +1 -0
  138. package/dist/services/cleansing.service.d.ts +10 -0
  139. package/dist/services/cleansing.service.js +78 -0
  140. package/dist/services/cleansing.service.js.map +1 -0
  141. package/dist/services/cookie.service.d.ts +20 -0
  142. package/dist/services/cookie.service.js +246 -0
  143. package/dist/services/cookie.service.js.map +1 -0
  144. package/dist/services/index.d.ts +4 -0
  145. package/dist/services/index.js +21 -0
  146. package/dist/services/index.js.map +1 -0
  147. package/dist/services/page-service.d.ts +16 -0
  148. package/dist/services/page-service.js +68 -0
  149. package/dist/services/page-service.js.map +1 -0
  150. package/dist/tsconfig.build.tsbuildinfo +1 -0
  151. package/package.json +98 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractTextContent = extractTextContent;
4
+ exports.evaluateXPathAll = evaluateXPathAll;
5
+ exports.evaluateXPathFirst = evaluateXPathFirst;
6
+ exports.isXPathSelector = isXPathSelector;
7
+ function extractTextContent(el) {
8
+ return el?.textContent?.trim() || '';
9
+ }
10
+ function evaluateXPathAll(selector, root) {
11
+ const results = document.evaluate(selector, root, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
12
+ const values = [];
13
+ let node;
14
+ while ((node = results.iterateNext())) {
15
+ values.push(extractTextContent(node));
16
+ }
17
+ return values;
18
+ }
19
+ function evaluateXPathFirst(selector, root) {
20
+ const results = document.evaluate(selector, root, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
21
+ return results.singleNodeValue;
22
+ }
23
+ function isXPathSelector(selector) {
24
+ const trimmed = selector.trim();
25
+ return trimmed.startsWith('//') || trimmed.startsWith('(');
26
+ }
27
+ //# sourceMappingURL=dom.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.util.js","sourceRoot":"","sources":["../../src/helpers/dom.util.ts"],"names":[],"mappings":";;AAQA,gDAEC;AAMD,4CAkBC;AAKD,gDAYC;AAKD,0CAGC;AAnDD,SAAgB,kBAAkB,CAAC,EAAyB;IAC1D,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAMD,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,IAA2B;IAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAC/B,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,CAAC,4BAA4B,EACxC,IAAI,CACL,CAAC;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAiB,CAAC;IACtB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,SAAgB,kBAAkB,CAChC,QAAgB,EAChB,IAA2B;IAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAC/B,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,WAAW,CAAC,uBAAuB,EACnC,IAAI,CACL,CAAC;IACF,OAAO,OAAO,CAAC,eAA0B,CAAC;AAC5C,CAAC;AAKD,SAAgB,eAAe,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './action-helpers.service';
2
+ export * from './logger.util';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./action-helpers.service"), exports);
18
+ __exportStar(require("./logger.util"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,gDAA8B"}
@@ -0,0 +1,10 @@
1
+ import { LogLevel } from '@nestjs/common';
2
+ export declare class LoggerWithLevel {
3
+ private readonly logger;
4
+ private logLevel;
5
+ constructor(context: string, logLevel?: LogLevel);
6
+ setLogLevel(level: LogLevel): void;
7
+ getLogLevel(): LogLevel;
8
+ private shouldLog;
9
+ log(message: string, level?: LogLevel): void;
10
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerWithLevel = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class LoggerWithLevel {
6
+ logger;
7
+ logLevel;
8
+ constructor(context, logLevel = 'log') {
9
+ this.logger = new common_1.Logger(context);
10
+ this.logLevel = logLevel;
11
+ }
12
+ setLogLevel(level) {
13
+ this.logLevel = level;
14
+ }
15
+ getLogLevel() {
16
+ return this.logLevel;
17
+ }
18
+ shouldLog(level) {
19
+ const levels = ['log', 'error', 'warn', 'debug', 'verbose'];
20
+ const currentLevelIndex = levels.indexOf(this.logLevel);
21
+ const requestedLevelIndex = levels.indexOf(level);
22
+ return requestedLevelIndex <= currentLevelIndex;
23
+ }
24
+ log(message, level = 'log') {
25
+ if (!this.shouldLog(level)) {
26
+ return;
27
+ }
28
+ switch (level) {
29
+ case 'error':
30
+ this.logger.error(message);
31
+ break;
32
+ case 'warn':
33
+ this.logger.warn(message);
34
+ break;
35
+ case 'debug':
36
+ this.logger.debug(message);
37
+ break;
38
+ case 'verbose':
39
+ this.logger.verbose(message);
40
+ break;
41
+ default:
42
+ this.logger.log(message);
43
+ }
44
+ }
45
+ }
46
+ exports.LoggerWithLevel = LoggerWithLevel;
47
+ //# sourceMappingURL=logger.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.util.js","sourceRoot":"","sources":["../../src/helpers/logger.util.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAMlD,MAAa,eAAe;IACT,MAAM,CAAS;IACxB,QAAQ,CAAW;IAE3B,YAAY,OAAe,EAAE,WAAqB,KAAK;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAKD,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAKD,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAKO,SAAS,CAAC,KAAe;QAC/B,MAAM,MAAM,GAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,mBAAmB,IAAI,iBAAiB,CAAC;IAClD,CAAC;IAKD,GAAG,CAAC,OAAe,EAAE,QAAkB,KAAK;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AA1DD,0CA0DC"}
@@ -0,0 +1,12 @@
1
+ export * from './browser-action.module';
2
+ export * from './services/browser-pool.service';
3
+ export * from './services/browser-manager.service';
4
+ export * from './services/page-service';
5
+ export * from './services/cookie.service';
6
+ export * from './services/cleansing.service';
7
+ export * from './helpers/action-helpers.service';
8
+ export * from './pipes';
9
+ export * from './enums';
10
+ export * from './interfaces';
11
+ export * from './constants';
12
+ export * from './decorators';
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./browser-action.module"), exports);
18
+ __exportStar(require("./services/browser-pool.service"), exports);
19
+ __exportStar(require("./services/browser-manager.service"), exports);
20
+ __exportStar(require("./services/page-service"), exports);
21
+ __exportStar(require("./services/cookie.service"), exports);
22
+ __exportStar(require("./services/cleansing.service"), exports);
23
+ __exportStar(require("./helpers/action-helpers.service"), exports);
24
+ __exportStar(require("./pipes"), exports);
25
+ __exportStar(require("./enums"), exports);
26
+ __exportStar(require("./interfaces"), exports);
27
+ __exportStar(require("./constants"), exports);
28
+ __exportStar(require("./decorators"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,0DAAwC;AAGxC,kEAAgD;AAChD,qEAAmD;AACnD,0DAAwC;AACxC,4DAA0C;AAC1C,+DAA6C;AAG7C,mEAAiD;AAGjD,0CAAwB;AAGxB,0CAAwB;AAGxB,+CAA6B;AAG7B,8CAA4B;AAG5B,+CAA6B"}
@@ -0,0 +1,17 @@
1
+ import type { LogLevel } from '@nestjs/common';
2
+ import type { BrowserContextOptions, LaunchOptions } from 'puppeteer';
3
+ import { PoolOptions } from './pool-options';
4
+ export interface BrowserActionOptions {
5
+ launchOptions?: LaunchOptions;
6
+ contextOptions?: BrowserContextOptions;
7
+ pool?: PoolOptions;
8
+ multiContext?: boolean;
9
+ logLevel?: LogLevel;
10
+ cookies?: {
11
+ enabled?: boolean;
12
+ cookiesDir?: string;
13
+ autoSave?: boolean;
14
+ autoLoad?: boolean;
15
+ defaultSessionName?: string;
16
+ };
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=browser-action-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-action-options.js","sourceRoot":"","sources":["../../src/interfaces/browser-action-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { CleansingProfile } from '../enums/cleansing-profile.enum';
2
+ import type { PipeConfig } from './types';
3
+ export interface CleansingOptions {
4
+ pipes?: PipeConfig[];
5
+ profile?: CleansingProfile;
6
+ }
7
+ export interface CleansingWithAltOptions {
8
+ primaryPipes: PipeConfig[];
9
+ fallbackPipes: PipeConfig[];
10
+ fallbackOn?: 'empty' | 'null' | 'undefined' | 'all';
11
+ }
12
+ export interface ScrapeCleansingOptions {
13
+ pipes?: Record<string, PipeConfig[]>;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cleansing-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleansing-options.js","sourceRoot":"","sources":["../../src/interfaces/cleansing-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import type { Cookie } from 'puppeteer';
2
+ export interface CookieSaveOptions<TMetadata extends Record<string, unknown> = Record<string, unknown>> {
3
+ cookiesDir?: string;
4
+ overwrite?: boolean;
5
+ metadata?: TMetadata;
6
+ }
7
+ export interface CookieLoadOptions {
8
+ cookiesDir?: string;
9
+ throwIfNotExists?: boolean;
10
+ }
11
+ export interface CookieSession<TMetadata extends Record<string, unknown> = Record<string, unknown>> {
12
+ name: string;
13
+ cookies: Cookie[];
14
+ savedAt: Date;
15
+ url?: string;
16
+ metadata?: TMetadata;
17
+ }
18
+ export interface CookieSessionInfo<TMetadata extends Record<string, unknown> = Record<string, unknown>> {
19
+ name: string;
20
+ savedAt: Date;
21
+ cookieCount: number;
22
+ url?: string;
23
+ metadata?: TMetadata;
24
+ }
25
+ export interface CookieSessionFile<TMetadata extends Record<string, unknown> = Record<string, unknown>> {
26
+ name: string;
27
+ cookies: Cookie[];
28
+ savedAt: string;
29
+ url?: string;
30
+ metadata?: TMetadata;
31
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cookie-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-options.js","sourceRoot":"","sources":["../../src/interfaces/cookie-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './browser-action-options';
2
+ export * from './cleansing-options';
3
+ export * from './cookie-options';
4
+ export * from './pool-options';
5
+ export * from './workflow-options';
6
+ export * from './types';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./browser-action-options"), exports);
18
+ __exportStar(require("./cleansing-options"), exports);
19
+ __exportStar(require("./cookie-options"), exports);
20
+ __exportStar(require("./pool-options"), exports);
21
+ __exportStar(require("./workflow-options"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,qDAAmC;AACnC,0CAAwB"}
@@ -0,0 +1,6 @@
1
+ export interface PoolOptions {
2
+ min?: number;
3
+ max?: number;
4
+ idleTimeoutMs?: number;
5
+ strategy?: 'round-robin' | 'least-recently-used';
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pool-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-options.js","sourceRoot":"","sources":["../../src/interfaces/pool-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { CleansingType } from '../enums/cleansing-type.enum';
2
+ export interface PipeConfig {
3
+ type: CleansingType;
4
+ pattern?: string;
5
+ replacement?: string;
6
+ format?: string;
7
+ primaryPipes?: PipeConfig[];
8
+ fallbackPipes?: PipeConfig[];
9
+ fallbackOn?: 'empty' | 'null' | 'undefined' | 'all';
10
+ flags?: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export type SelectorMap = Record<string, string>;
14
+ export type PipeOptions = Record<string, PipeConfig[]>;
15
+ export type ScrapeResult = Partial<Record<string, unknown>>;
16
+ export type ScrapeAllResult = Partial<Record<string, unknown[]>>;
17
+ export type ScraperOptions = {
18
+ pipes?: PipeOptions;
19
+ };
20
+ export type ScraperOptionsTyped<T extends SelectorMap> = {
21
+ pipes?: Partial<Record<keyof T, PipeConfig[]>>;
22
+ };
23
+ export type ScrapeResultTyped<T extends SelectorMap> = Partial<Record<keyof T, unknown>>;
24
+ export type ScrapeAllResultTyped<T extends SelectorMap = SelectorMap> = Partial<Record<keyof T, unknown[]>>;
25
+ export interface WorkflowResultTyped<T = Record<string, unknown>> {
26
+ success: boolean;
27
+ data: T;
28
+ errors: string[];
29
+ screenshots?: string[];
30
+ }
31
+ export type { ActionTarget, ActionType, ActionOptions, ActionCondition, ErrorStrategy, WorkflowAction, WorkflowDefinition, WorkflowResult, VariableContext, } from './workflow-options';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interfaces/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ export interface ActionTarget {
2
+ type: 'css' | 'xpath';
3
+ value: string;
4
+ shadowHost?: string;
5
+ }
6
+ export type ActionType = 'navigate' | 'wait' | 'waitFor' | 'click' | 'type' | 'select' | 'scroll' | 'extract' | 'screenshot' | 'evaluate' | 'cleanse' | 'saveCookies' | 'loadCookies' | 'clearCookies' | 'listCookies';
7
+ export interface ActionCondition {
8
+ ifExists?: ActionTarget;
9
+ unlessExists?: ActionTarget;
10
+ }
11
+ export type ErrorStrategy = 'continue' | 'fail' | 'skip';
12
+ export interface ActionOptions {
13
+ timeout?: number;
14
+ delay?: number;
15
+ scrollTo?: boolean;
16
+ retry?: number;
17
+ retryDelay?: number;
18
+ waitForNavigation?: boolean;
19
+ navigationTimeout?: number;
20
+ overwrite?: boolean;
21
+ metadata?: Record<string, unknown>;
22
+ pipes?: any[];
23
+ multiple?: boolean;
24
+ }
25
+ export interface WorkflowAction {
26
+ id?: string;
27
+ action: ActionType;
28
+ target?: ActionTarget;
29
+ value?: string | number;
30
+ options?: ActionOptions;
31
+ condition?: ActionCondition;
32
+ onError?: ErrorStrategy;
33
+ }
34
+ export interface WorkflowErrorConfig {
35
+ screenshot?: boolean;
36
+ screenshotPath?: string;
37
+ continue?: boolean;
38
+ }
39
+ export interface WorkflowDefinition {
40
+ version: string;
41
+ actions: WorkflowAction[];
42
+ onError?: WorkflowErrorConfig;
43
+ }
44
+ export interface WorkflowResult {
45
+ success: boolean;
46
+ data: Record<string, unknown>;
47
+ errors: string[];
48
+ screenshots?: string[];
49
+ }
50
+ export type VariableContext = Record<string, unknown>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=workflow-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-options.js","sourceRoot":"","sources":["../../src/interfaces/workflow-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { CleansingPipe } from './cleansing-pipe';
2
+ import { CleansingType } from '../enums/cleansing-type.enum';
3
+ export declare class AltFlagPipe extends CleansingPipe<unknown, unknown> {
4
+ type: CleansingType;
5
+ primaryPipes: CleansingPipe[];
6
+ fallbackPipes: CleansingPipe[];
7
+ fallbackOn?: 'empty' | 'null' | 'undefined' | 'all';
8
+ exec(value: unknown): unknown;
9
+ private shouldTriggerFallback;
10
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AltFlagPipe = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const cleansing_pipe_1 = require("./cleansing-pipe");
15
+ const cleansing_type_enum_1 = require("../enums/cleansing-type.enum");
16
+ class AltFlagPipe extends cleansing_pipe_1.CleansingPipe {
17
+ type = cleansing_type_enum_1.CleansingType.ALT_FLAG;
18
+ primaryPipes;
19
+ fallbackPipes;
20
+ fallbackOn = 'all';
21
+ exec(value) {
22
+ let primaryResult = value;
23
+ for (const pipe of this.primaryPipes) {
24
+ primaryResult = pipe.exec(primaryResult);
25
+ }
26
+ if (this.shouldTriggerFallback(primaryResult)) {
27
+ let fallbackResult = value;
28
+ for (const pipe of this.fallbackPipes) {
29
+ fallbackResult = pipe.exec(fallbackResult);
30
+ }
31
+ return fallbackResult;
32
+ }
33
+ return primaryResult;
34
+ }
35
+ shouldTriggerFallback(value) {
36
+ switch (this.fallbackOn) {
37
+ case 'empty':
38
+ return value === '';
39
+ case 'null':
40
+ return value === null;
41
+ case 'undefined':
42
+ return value === undefined;
43
+ case 'all':
44
+ default:
45
+ return value === null || value === undefined || value === '';
46
+ }
47
+ }
48
+ }
49
+ exports.AltFlagPipe = AltFlagPipe;
50
+ __decorate([
51
+ (0, class_validator_1.IsArray)(),
52
+ __metadata("design:type", Array)
53
+ ], AltFlagPipe.prototype, "primaryPipes", void 0);
54
+ __decorate([
55
+ (0, class_validator_1.IsArray)(),
56
+ __metadata("design:type", Array)
57
+ ], AltFlagPipe.prototype, "fallbackPipes", void 0);
58
+ __decorate([
59
+ (0, class_validator_1.IsEnum)(['empty', 'null', 'undefined', 'all']),
60
+ (0, class_validator_1.IsOptional)(),
61
+ __metadata("design:type", String)
62
+ ], AltFlagPipe.prototype, "fallbackOn", void 0);
63
+ //# sourceMappingURL=alt-flag.pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt-flag.pipe.js","sourceRoot":"","sources":["../../src/pipes/alt-flag.pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA8D;AAC9D,qDAAiD;AACjD,sEAA6D;AAK7D,MAAa,WAAY,SAAQ,8BAA+B;IAC9D,IAAI,GAAG,mCAAa,CAAC,QAAQ,CAAC;IAG9B,YAAY,CAAkB;IAG9B,aAAa,CAAkB;IAI/B,UAAU,GAA4C,KAAK,CAAC;IAE5D,IAAI,CAAC,KAAc;QAEjB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAGD,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9C,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,qBAAqB,CAAC,KAAc;QAC1C,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,OAAO;gBAEV,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,KAAK,KAAK,IAAI,CAAC;YACxB,KAAK,WAAW;gBACd,OAAO,KAAK,KAAK,SAAS,CAAC;YAC7B,KAAK,KAAK,CAAC;YACX;gBACE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AA9CD,kCA8CC;AA1CC;IADC,IAAA,yBAAO,GAAE;;iDACoB;AAG9B;IADC,IAAA,yBAAO,GAAE;;kDACqB;AAI/B;IAFC,IAAA,wBAAM,EAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAA,4BAAU,GAAE;;+CAC+C"}
@@ -0,0 +1,7 @@
1
+ import { CleansingType } from '../enums/cleansing-type.enum';
2
+ export declare abstract class CleansingPipe<TInput = unknown, TOutput = unknown> {
3
+ customConfig?: Record<string, unknown>;
4
+ abstract exec(value: TInput): TOutput;
5
+ abstract type: CleansingType | string;
6
+ reverse?(): TInput;
7
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CleansingPipe = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ class CleansingPipe {
15
+ customConfig;
16
+ reverse() {
17
+ throw new Error('Reverse transformation not implemented');
18
+ }
19
+ }
20
+ exports.CleansingPipe = CleansingPipe;
21
+ __decorate([
22
+ (0, class_transformer_1.Exclude)({ toPlainOnly: true }),
23
+ __metadata("design:type", Object)
24
+ ], CleansingPipe.prototype, "customConfig", void 0);
25
+ //# sourceMappingURL=cleansing-pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleansing-pipe.js","sourceRoot":"","sources":["../../src/pipes/cleansing-pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA4C;AAU5C,MAAsB,aAAa;IAMjC,YAAY,CAA2B;IAmBvC,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;CACF;AA5BD,sCA4BC;AAtBC;IADC,IAAA,2BAAO,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;mDACQ"}
@@ -0,0 +1,10 @@
1
+ import { CleansingPipe } from './cleansing-pipe';
2
+ import { CleansingType } from '../enums/cleansing-type.enum';
3
+ import 'moment-timezone';
4
+ export declare class DateFormatPipe extends CleansingPipe<string | Date, string> {
5
+ type: CleansingType;
6
+ format?: string;
7
+ timezone?: string;
8
+ locale?: string;
9
+ exec(value: string | Date): string;
10
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DateFormatPipe = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const cleansing_pipe_1 = require("./cleansing-pipe");
15
+ const cleansing_type_enum_1 = require("../enums/cleansing-type.enum");
16
+ const moment = require("moment");
17
+ require("moment-timezone");
18
+ class DateFormatPipe extends cleansing_pipe_1.CleansingPipe {
19
+ type = cleansing_type_enum_1.CleansingType.DATE_FORMAT;
20
+ format;
21
+ timezone;
22
+ locale;
23
+ exec(value) {
24
+ if (!value) {
25
+ return value;
26
+ }
27
+ if (typeof value !== 'string' && !(value instanceof Date)) {
28
+ return String(value);
29
+ }
30
+ if (this.locale) {
31
+ moment.locale(this.locale);
32
+ }
33
+ let date;
34
+ if (value instanceof Date) {
35
+ date = moment(value);
36
+ }
37
+ else if (value &&
38
+ typeof value === 'object' &&
39
+ value['_isAMomentObject']) {
40
+ date = value;
41
+ }
42
+ else {
43
+ const timestamp = parseInt(value, 10);
44
+ if (!isNaN(timestamp) && timestamp.toString().length === 10) {
45
+ date = moment.unix(timestamp);
46
+ }
47
+ else {
48
+ date = moment(value, moment.ISO_8601, true);
49
+ if (!date.isValid()) {
50
+ const dateObj = new Date(value);
51
+ if (!isNaN(dateObj.getTime())) {
52
+ date = moment(dateObj);
53
+ }
54
+ }
55
+ }
56
+ }
57
+ if (this.timezone && date.isValid()) {
58
+ date = date.tz(this.timezone);
59
+ }
60
+ if (!date.isValid()) {
61
+ return value.toString();
62
+ }
63
+ if (this.format) {
64
+ if (this.format === 'relative') {
65
+ return date.fromNow();
66
+ }
67
+ return date.format(this.format);
68
+ }
69
+ return date.format();
70
+ }
71
+ }
72
+ exports.DateFormatPipe = DateFormatPipe;
73
+ __decorate([
74
+ (0, class_validator_1.IsOptional)(),
75
+ (0, class_validator_1.IsString)(),
76
+ __metadata("design:type", String)
77
+ ], DateFormatPipe.prototype, "format", void 0);
78
+ __decorate([
79
+ (0, class_validator_1.IsOptional)(),
80
+ (0, class_validator_1.IsString)(),
81
+ __metadata("design:type", String)
82
+ ], DateFormatPipe.prototype, "timezone", void 0);
83
+ __decorate([
84
+ (0, class_validator_1.IsOptional)(),
85
+ (0, class_validator_1.IsString)(),
86
+ __metadata("design:type", String)
87
+ ], DateFormatPipe.prototype, "locale", void 0);
88
+ //# sourceMappingURL=date-format.pipe.js.map