@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,78 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CleansingService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const trim_pipe_1 = require("../pipes/trim.pipe");
12
+ const to_number_pipe_1 = require("../pipes/to-number.pipe");
13
+ const to_lower_case_pipe_1 = require("../pipes/to-lower-case.pipe");
14
+ const to_upper_case_pipe_1 = require("../pipes/to-upper-case.pipe");
15
+ const sanitize_text_pipe_1 = require("../pipes/sanitize-text.pipe");
16
+ const normalize_whitespace_pipe_1 = require("../pipes/normalize-whitespace.pipe");
17
+ const remove_line_breaks_pipe_1 = require("../pipes/remove-line-breaks.pipe");
18
+ const date_format_pipe_1 = require("../pipes/date-format.pipe");
19
+ const regex_replace_pipe_1 = require("../pipes/regex-replace.pipe");
20
+ const regex_extract_pipe_1 = require("../pipes/regex-extract.pipe");
21
+ const remove_currency_symbol_pipe_1 = require("../pipes/remove-currency-symbol.pipe");
22
+ const remove_special_chars_pipe_1 = require("../pipes/remove-special-chars.pipe");
23
+ const alt_flag_pipe_1 = require("../pipes/alt-flag.pipe");
24
+ const profiles_1 = require("../pipes/profiles");
25
+ const cleansing_type_enum_1 = require("../enums/cleansing-type.enum");
26
+ let CleansingService = class CleansingService {
27
+ PIPE_TYPE_MAP = {
28
+ [cleansing_type_enum_1.CleansingType.TRIM]: trim_pipe_1.TrimPipe,
29
+ [cleansing_type_enum_1.CleansingType.TO_NUMBER]: to_number_pipe_1.ToNumberPipe,
30
+ [cleansing_type_enum_1.CleansingType.SANITIZE_TEXT]: sanitize_text_pipe_1.SanitizeTextPipe,
31
+ [cleansing_type_enum_1.CleansingType.DATE_FORMAT]: date_format_pipe_1.DateFormatPipe,
32
+ [cleansing_type_enum_1.CleansingType.REGEX_REPLACE]: regex_replace_pipe_1.RegexReplacePipe,
33
+ [cleansing_type_enum_1.CleansingType.REGEX_EXTRACT]: regex_extract_pipe_1.RegexExtractPipe,
34
+ [cleansing_type_enum_1.CleansingType.REMOVE_CURRENCY_SYMBOL]: remove_currency_symbol_pipe_1.RemoveCurrencySymbolPipe,
35
+ [cleansing_type_enum_1.CleansingType.REMOVE_SPECIAL_CHARS]: remove_special_chars_pipe_1.RemoveSpecialCharsPipe,
36
+ [cleansing_type_enum_1.CleansingType.TO_LOWER_CASE]: to_lower_case_pipe_1.ToLowerCasePipe,
37
+ [cleansing_type_enum_1.CleansingType.TO_UPPER_CASE]: to_upper_case_pipe_1.ToUpperCasePipe,
38
+ [cleansing_type_enum_1.CleansingType.NORMALIZE_WHITESPACE]: normalize_whitespace_pipe_1.NormalizeWhitespacePipe,
39
+ [cleansing_type_enum_1.CleansingType.REMOVE_LINE_BREAKS]: remove_line_breaks_pipe_1.RemoveLineBreaksPipe,
40
+ [cleansing_type_enum_1.CleansingType.ALT_FLAG]: alt_flag_pipe_1.AltFlagPipe,
41
+ };
42
+ cleanse(data, pipes) {
43
+ return pipes.reduce((result, pipe) => pipe.exec(result), data);
44
+ }
45
+ cleanseWithProfile(data, profileName) {
46
+ const profilePipes = profiles_1.CLEANSING_PROFILES[profileName];
47
+ return this.cleanse(data, this.loadPipesSync(profilePipes));
48
+ }
49
+ loadPipes(config) {
50
+ const pipes = [];
51
+ for (const pipeConfig of config) {
52
+ const PipeClass = this.PIPE_TYPE_MAP[pipeConfig.type];
53
+ if (!PipeClass) {
54
+ throw new Error(`Unknown pipe type: ${pipeConfig.type}`);
55
+ }
56
+ const pipeParams = pipeConfig.params || {};
57
+ const pipeInstance = new PipeClass();
58
+ Object.assign(pipeInstance, { customConfig: pipeParams });
59
+ pipes.push(pipeInstance);
60
+ }
61
+ return pipes;
62
+ }
63
+ loadPipesSync(config) {
64
+ const pipes = [];
65
+ for (const pipeConfig of config) {
66
+ const PipeClass = this.PIPE_TYPE_MAP[pipeConfig.type];
67
+ if (PipeClass) {
68
+ pipes.push(new PipeClass());
69
+ }
70
+ }
71
+ return pipes;
72
+ }
73
+ };
74
+ exports.CleansingService = CleansingService;
75
+ exports.CleansingService = CleansingService = __decorate([
76
+ (0, common_1.Injectable)()
77
+ ], CleansingService);
78
+ //# sourceMappingURL=cleansing.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleansing.service.js","sourceRoot":"","sources":["../../src/services/cleansing.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Page } from 'puppeteer';
2
+ import type { BrowserActionOptions } from '../interfaces/browser-action-options';
3
+ import type { CookieSaveOptions, CookieLoadOptions, CookieSession, CookieSessionInfo } from '../interfaces/cookie-options';
4
+ export declare class CookieService {
5
+ private readonly options;
6
+ private readonly logger;
7
+ private readonly cookiesDir;
8
+ private readonly enabled;
9
+ constructor(options: BrowserActionOptions);
10
+ isEnabled(): boolean;
11
+ private sanitizeSessionName;
12
+ private getSessionPath;
13
+ private ensureDirectory;
14
+ saveCookies<TMetadata extends Record<string, unknown> = Record<string, unknown>>(page: Page, sessionName: string, options?: CookieSaveOptions<TMetadata>): Promise<CookieSession<TMetadata>>;
15
+ loadCookies<TMetadata extends Record<string, unknown> = Record<string, unknown>>(page: Page, sessionName: string, options?: CookieLoadOptions): Promise<CookieSession<TMetadata>>;
16
+ deleteCookies(sessionName: string): Promise<void>;
17
+ clearAllCookies(): Promise<void>;
18
+ listCookies<TMetadata extends Record<string, unknown> = Record<string, unknown>>(): Promise<CookieSessionInfo<TMetadata>[]>;
19
+ hasSession(sessionName: string): Promise<boolean>;
20
+ }
@@ -0,0 +1,246 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var CookieService_1;
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.CookieService = void 0;
50
+ const common_1 = require("@nestjs/common");
51
+ const fs_1 = require("fs");
52
+ const path = __importStar(require("path"));
53
+ const browser_action_constants_1 = require("../constants/browser-action.constants");
54
+ const logger_util_1 = require("../helpers/logger.util");
55
+ let CookieService = CookieService_1 = class CookieService {
56
+ options;
57
+ logger;
58
+ cookiesDir;
59
+ enabled;
60
+ constructor(options) {
61
+ this.options = options;
62
+ this.enabled =
63
+ this.options.cookies?.enabled ?? browser_action_constants_1.DEFAULT_COOKIE_OPTIONS.enabled;
64
+ this.cookiesDir =
65
+ this.options.cookies?.cookiesDir ?? browser_action_constants_1.DEFAULT_COOKIE_OPTIONS.cookiesDir;
66
+ this.logger = new logger_util_1.LoggerWithLevel(CookieService_1.name, this.options.logLevel || 'log');
67
+ }
68
+ isEnabled() {
69
+ return this.enabled;
70
+ }
71
+ sanitizeSessionName(sessionName) {
72
+ return sessionName.replace(/[^a-zA-Z0-9_-]/g, '_');
73
+ }
74
+ getSessionPath(sessionName, cookiesDir) {
75
+ const sanitized = this.sanitizeSessionName(sessionName);
76
+ const dir = cookiesDir || this.cookiesDir;
77
+ return path.join(dir, `${sanitized}.json`);
78
+ }
79
+ async ensureDirectory(dir) {
80
+ try {
81
+ await fs_1.promises.mkdir(dir, { recursive: true });
82
+ }
83
+ catch {
84
+ throw new Error(`Failed to create cookies directory: ${dir}`);
85
+ }
86
+ }
87
+ async saveCookies(page, sessionName, options) {
88
+ this.logger.log(`Saving cookies for session: ${sessionName}`, 'debug');
89
+ const cookiesDir = options?.cookiesDir || this.cookiesDir;
90
+ const sessionPath = this.getSessionPath(sessionName, cookiesDir);
91
+ const sanitized = this.sanitizeSessionName(sessionName);
92
+ await this.ensureDirectory(cookiesDir);
93
+ if (!options?.overwrite) {
94
+ try {
95
+ await fs_1.promises.access(sessionPath);
96
+ throw new Error(`Session '${sessionName}' already exists. Use overwrite: true to replace.`);
97
+ }
98
+ catch {
99
+ }
100
+ }
101
+ const cookies = await page.cookies();
102
+ const sessionData = {
103
+ name: sanitized,
104
+ cookies,
105
+ savedAt: new Date().toISOString(),
106
+ url: page.url(),
107
+ metadata: options?.metadata,
108
+ };
109
+ const tempPath = `${sessionPath}.tmp`;
110
+ try {
111
+ await fs_1.promises.writeFile(tempPath, JSON.stringify(sessionData, null, 2), 'utf-8');
112
+ await fs_1.promises.rename(tempPath, sessionPath);
113
+ }
114
+ catch (error) {
115
+ try {
116
+ await fs_1.promises.unlink(tempPath);
117
+ }
118
+ catch {
119
+ }
120
+ throw new Error(`Failed to save cookies to ${sessionPath}: ${error instanceof Error ? error.message : String(error)}`);
121
+ }
122
+ this.logger.log(`Saved ${cookies.length} cookies to session: ${sessionName}`);
123
+ return {
124
+ name: sanitized,
125
+ cookies,
126
+ savedAt: new Date(sessionData.savedAt),
127
+ url: sessionData.url,
128
+ metadata: sessionData.metadata,
129
+ };
130
+ }
131
+ async loadCookies(page, sessionName, options) {
132
+ this.logger.log(`Loading cookies for session: ${sessionName}`, 'debug');
133
+ const cookiesDir = options?.cookiesDir || this.cookiesDir;
134
+ const sessionPath = this.getSessionPath(sessionName, cookiesDir);
135
+ try {
136
+ await fs_1.promises.access(sessionPath);
137
+ }
138
+ catch {
139
+ if (options?.throwIfNotExists !== false) {
140
+ throw new Error(`Session '${sessionName}' not found at ${sessionPath}`);
141
+ }
142
+ return {
143
+ name: sessionName,
144
+ cookies: [],
145
+ savedAt: new Date(),
146
+ };
147
+ }
148
+ let sessionData;
149
+ try {
150
+ const content = await fs_1.promises.readFile(sessionPath, 'utf-8');
151
+ sessionData = JSON.parse(content);
152
+ }
153
+ catch (error) {
154
+ throw new Error(`Failed to read session file ${sessionPath}: ${error instanceof Error ? error.message : String(error)}`);
155
+ }
156
+ try {
157
+ await page.setCookie(...sessionData.cookies);
158
+ }
159
+ catch (error) {
160
+ this.logger.log(`Failed to apply some cookies: ${error}`, 'warn');
161
+ }
162
+ if (sessionData.url) {
163
+ try {
164
+ await page.goto(sessionData.url, { waitUntil: 'domcontentloaded' });
165
+ }
166
+ catch {
167
+ }
168
+ }
169
+ this.logger.log(`Loaded ${sessionData.cookies.length} cookies from session: ${sessionName}`);
170
+ return {
171
+ name: sessionData.name,
172
+ cookies: sessionData.cookies,
173
+ savedAt: new Date(sessionData.savedAt),
174
+ url: sessionData.url,
175
+ metadata: sessionData.metadata,
176
+ };
177
+ }
178
+ async deleteCookies(sessionName) {
179
+ this.logger.log(`Deleting session: ${sessionName}`, 'debug');
180
+ const sessionPath = this.getSessionPath(sessionName);
181
+ try {
182
+ await fs_1.promises.access(sessionPath);
183
+ }
184
+ catch {
185
+ throw new Error(`Session '${sessionName}' not found at ${sessionPath}`);
186
+ }
187
+ await fs_1.promises.unlink(sessionPath);
188
+ this.logger.log(`Deleted session: ${sessionName}`);
189
+ }
190
+ async clearAllCookies() {
191
+ this.logger.log('Clearing all cookie sessions', 'debug');
192
+ const files = await fs_1.promises.readdir(this.cookiesDir);
193
+ const jsonFiles = files.filter((f) => f.endsWith('.json'));
194
+ for (const file of jsonFiles) {
195
+ const filePath = path.join(this.cookiesDir, file);
196
+ await fs_1.promises.unlink(filePath);
197
+ }
198
+ this.logger.log(`Cleared ${jsonFiles.length} cookie sessions`);
199
+ }
200
+ async listCookies() {
201
+ this.logger.log('Listing cookie sessions', 'debug');
202
+ try {
203
+ const files = await fs_1.promises.readdir(this.cookiesDir);
204
+ const jsonFiles = files.filter((f) => f.endsWith('.json'));
205
+ const sessions = [];
206
+ for (const file of jsonFiles) {
207
+ const filePath = path.join(this.cookiesDir, file);
208
+ try {
209
+ const content = await fs_1.promises.readFile(filePath, 'utf-8');
210
+ const data = JSON.parse(content);
211
+ sessions.push({
212
+ name: data.name,
213
+ savedAt: new Date(data.savedAt),
214
+ cookieCount: data.cookies.length,
215
+ url: data.url,
216
+ metadata: data.metadata,
217
+ });
218
+ }
219
+ catch {
220
+ this.logger.log(`Skipping invalid session file: ${file}`, 'warn');
221
+ }
222
+ }
223
+ return sessions;
224
+ }
225
+ catch {
226
+ return [];
227
+ }
228
+ }
229
+ async hasSession(sessionName) {
230
+ const sessionPath = this.getSessionPath(sessionName);
231
+ try {
232
+ await fs_1.promises.access(sessionPath);
233
+ return true;
234
+ }
235
+ catch {
236
+ return false;
237
+ }
238
+ }
239
+ };
240
+ exports.CookieService = CookieService;
241
+ exports.CookieService = CookieService = CookieService_1 = __decorate([
242
+ (0, common_1.Injectable)(),
243
+ __param(0, (0, common_1.Inject)(browser_action_constants_1.BROWSER_ACTION_OPTIONS)),
244
+ __metadata("design:paramtypes", [Object])
245
+ ], CookieService);
246
+ //# sourceMappingURL=cookie.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.service.js","sourceRoot":"","sources":["../../src/services/cookie.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './browser-pool.service';
2
+ export * from './browser-manager.service';
3
+ export * from './page-service';
4
+ export * from './cleansing.service';
@@ -0,0 +1,21 @@
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-pool.service"), exports);
18
+ __exportStar(require("./browser-manager.service"), exports);
19
+ __exportStar(require("./page-service"), exports);
20
+ __exportStar(require("./cleansing.service"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,4DAA0C;AAC1C,iDAA+B;AAC/B,sDAAoC"}
@@ -0,0 +1,16 @@
1
+ import type { Browser, Page, WaitForOptions } from 'puppeteer';
2
+ import { BrowserManagerService } from './browser-manager.service';
3
+ import type { LogLevel } from '@nestjs/common';
4
+ export declare class PageService {
5
+ private readonly browserManager;
6
+ private readonly logger;
7
+ private currentBrowser?;
8
+ private currentPage?;
9
+ constructor(browserManager: BrowserManagerService);
10
+ createPage(): Promise<Page>;
11
+ navigateTo(url: string, options?: WaitForOptions): Promise<Page>;
12
+ closePage(): Promise<void>;
13
+ getCurrentPage(): Page | undefined;
14
+ getCurrentBrowser(): Browser | undefined;
15
+ getLogLevel(): LogLevel;
16
+ }
@@ -0,0 +1,68 @@
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
+ var PageService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.PageService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const browser_manager_service_1 = require("./browser-manager.service");
16
+ const logger_util_1 = require("../helpers/logger.util");
17
+ let PageService = PageService_1 = class PageService {
18
+ browserManager;
19
+ logger;
20
+ currentBrowser;
21
+ currentPage;
22
+ constructor(browserManager) {
23
+ this.browserManager = browserManager;
24
+ this.logger = new logger_util_1.LoggerWithLevel(PageService_1.name, this.browserManager.getLogLevel());
25
+ }
26
+ async createPage() {
27
+ this.logger.log('Creating new page', 'debug');
28
+ this.currentBrowser = await this.browserManager.getBrowser();
29
+ this.currentPage = await this.currentBrowser.newPage();
30
+ return this.currentPage;
31
+ }
32
+ async navigateTo(url, options) {
33
+ if (!this.currentPage) {
34
+ await this.createPage();
35
+ }
36
+ this.logger.log(`Navigating to ${url}`, 'debug');
37
+ if (this.currentPage) {
38
+ await this.currentPage.goto(url, options);
39
+ return this.currentPage;
40
+ }
41
+ throw new Error('Failed to create page');
42
+ }
43
+ async closePage() {
44
+ if (this.currentPage) {
45
+ await this.currentPage.close();
46
+ this.currentPage = undefined;
47
+ }
48
+ if (this.currentBrowser) {
49
+ this.browserManager.releaseBrowser(this.currentBrowser);
50
+ this.currentBrowser = undefined;
51
+ }
52
+ }
53
+ getCurrentPage() {
54
+ return this.currentPage;
55
+ }
56
+ getCurrentBrowser() {
57
+ return this.currentBrowser;
58
+ }
59
+ getLogLevel() {
60
+ return this.logger.getLogLevel();
61
+ }
62
+ };
63
+ exports.PageService = PageService;
64
+ exports.PageService = PageService = PageService_1 = __decorate([
65
+ (0, common_1.Injectable)(),
66
+ __metadata("design:paramtypes", [browser_manager_service_1.BrowserManagerService])
67
+ ], PageService);
68
+ //# sourceMappingURL=page-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-service.js","sourceRoot":"","sources":["../../src/services/page-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,uEAAkE;AAElE,wDAAyD;AAGlD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAKO;IAJZ,MAAM,CAAkB;IACjC,cAAc,CAAW;IACzB,WAAW,CAAQ;IAE3B,YAA6B,cAAqC;QAArC,mBAAc,GAAd,cAAc,CAAuB;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,6BAAe,CAC/B,aAAW,CAAC,IAAI,EAChB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,OAAwB;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AArDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAMkC,+CAAqB;GALvD,WAAW,CAqDvB"}