@hanivanrizky/nestjs-browser-action 0.20.1 → 0.22.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.
- package/README.md +72 -31
- package/dist/browser-action.module-definition.d.ts +1 -0
- package/dist/browser-action.module.d.ts +3 -0
- package/dist/browser-action.module.js +146 -27
- package/dist/browser-action.module.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.js +18 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/tokens.d.ts +7 -0
- package/dist/common/tokens.js +36 -0
- package/dist/common/tokens.js.map +1 -0
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.js +1 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/inject-browser.decorator.d.ts +2 -1
- package/dist/decorators/inject-browser.decorator.js +2 -1
- package/dist/decorators/inject-browser.decorator.js.map +1 -1
- package/dist/decorators/inject-page-controller.decorator.d.ts +2 -0
- package/dist/decorators/inject-page-controller.decorator.js +8 -0
- package/dist/decorators/inject-page-controller.decorator.js.map +1 -0
- package/dist/decorators/inject-page.decorator.d.ts +2 -1
- package/dist/decorators/inject-page.decorator.js +2 -1
- package/dist/decorators/inject-page.decorator.js.map +1 -1
- package/dist/examples/named-browser-example.d.ts +1 -0
- package/dist/examples/named-browser-example.js +183 -0
- package/dist/examples/named-browser-example.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/browser-action-options.d.ts +1 -0
- package/dist/operators/capture.operator.d.ts +11 -0
- package/dist/operators/capture.operator.js +62 -0
- package/dist/operators/capture.operator.js.map +1 -0
- package/dist/operators/container.operator.d.ts +13 -0
- package/dist/operators/container.operator.js +149 -0
- package/dist/operators/container.operator.js.map +1 -0
- package/dist/operators/extraction.operator.d.ts +22 -0
- package/dist/operators/extraction.operator.js +204 -0
- package/dist/operators/extraction.operator.js.map +1 -0
- package/dist/operators/index.d.ts +5 -0
- package/dist/operators/index.js +14 -0
- package/dist/operators/index.js.map +1 -0
- package/dist/operators/pagination.operator.d.ts +24 -0
- package/dist/operators/pagination.operator.js +182 -0
- package/dist/operators/pagination.operator.js.map +1 -0
- package/dist/operators/workflow.operator.d.ts +35 -0
- package/dist/operators/workflow.operator.js +501 -0
- package/dist/operators/workflow.operator.js.map +1 -0
- package/dist/services/browser-action.service.d.ts +10 -30
- package/dist/services/browser-action.service.js +72 -995
- package/dist/services/browser-action.service.js.map +1 -1
- package/dist/services/browser-holder.d.ts +7 -0
- package/dist/services/browser-holder.js +26 -0
- package/dist/services/browser-holder.js.map +1 -0
- package/dist/services/browser-manager.service.js +3 -2
- package/dist/services/browser-manager.service.js.map +1 -1
- package/dist/services/browser-pool.service.d.ts +4 -4
- package/dist/services/browser-pool.service.js +45 -104
- package/dist/services/browser-pool.service.js.map +1 -1
- package/dist/services/named-browser-shutdown.d.ts +9 -0
- package/dist/services/named-browser-shutdown.js +47 -0
- package/dist/services/named-browser-shutdown.js.map +1 -0
- package/dist/services/page-controller.d.ts +39 -0
- package/dist/services/page-controller.js +325 -0
- package/dist/services/page-controller.js.map +1 -0
- package/dist/services/page-session.d.ts +26 -0
- package/dist/services/page-session.js +135 -0
- package/dist/services/page-session.js.map +1 -0
- package/dist/services/page.service.js +14 -3
- package/dist/services/page.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/browser-launcher.d.ts +6 -0
- package/dist/utils/browser-launcher.js +100 -0
- package/dist/utils/browser-launcher.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<a href="https://www.npmjs.com/package/@hanivanrizky/nestjs-browser-action" target="_blank"><img src="https://img.shields.io/npm/v/@hanivanrizky/nestjs-browser-action.svg" alt="NPM Version" /></a>
|
|
11
11
|
<a href="https://www.npmjs.com/package/@hanivanrizky/nestjs-browser-action" target="_blank"><img src="https://img.shields.io/npm/l/@hanivanrizky/nestjs-browser-action.svg" alt="Package License" /></a>
|
|
12
12
|
<a href="https://www.npmjs.com/package/@hanivanrizky/nestjs-browser-action" target="_blank"><img src="https://img.shields.io/npm/dm/@hanivanrizky/nestjs-browser-action.svg" alt="NPM Downloads" /></a>
|
|
13
|
-
<img src="https://img.shields.io/badge/tests-
|
|
13
|
+
<img src="https://img.shields.io/badge/tests-463%20passed-brightgreen.svg" alt="Tests: 463 passed" />
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
> **⚠️ Status: Experimental** — personal use only; API subject to change.
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
- **(.\_.) Remote Chrome**: Connect to remote Chrome instances via CDP (browserURL / browserWSEndpoint)
|
|
40
40
|
- **(>\_<) TLS Fingerprint**: Capture the browser's own TLS/HTTP handshake (ja3/ja4, ciphers, http2 akamai, headers) for use with `nestjs-xpath-parser`'s CycleTLS engine
|
|
41
41
|
- **(☆^O^☆) TypeScript Generics**: Full generic type support for type-safe results
|
|
42
|
-
- **(o_o) Fully Tested**:
|
|
42
|
+
- **(o_o) Fully Tested**: 463 tests across 51 suites
|
|
43
|
+
- **(☆^O^☆) Named Browsers & Pages (v0.22+)**: persistent named browser/page pairs with `PageController` — cookies/state carry over across calls, no open/close per scrape
|
|
43
44
|
|
|
44
45
|
## Installation
|
|
45
46
|
|
|
@@ -53,21 +54,7 @@ npm install @hanivanrizky/nestjs-browser-action
|
|
|
53
54
|
|
|
54
55
|
## Quick Start
|
|
55
56
|
|
|
56
|
-
###
|
|
57
|
-
|
|
58
|
-
**Basic usage:**
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
import { Module } from '@nestjs/common';
|
|
62
|
-
import { BrowserActionModule } from '@hanivanrizky/nestjs-browser-action';
|
|
63
|
-
|
|
64
|
-
@Module({
|
|
65
|
-
imports: [BrowserActionModule.forRoot()],
|
|
66
|
-
})
|
|
67
|
-
export class AppModule {}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**With pool and cookie options:**
|
|
57
|
+
### Register a Named Browser + Pages
|
|
71
58
|
|
|
72
59
|
```typescript
|
|
73
60
|
import { Module } from '@nestjs/common';
|
|
@@ -75,17 +62,14 @@ import { BrowserActionModule } from '@hanivanrizky/nestjs-browser-action';
|
|
|
75
62
|
|
|
76
63
|
@Module({
|
|
77
64
|
imports: [
|
|
78
|
-
BrowserActionModule.forRoot({
|
|
79
|
-
|
|
80
|
-
cookies: { enabled: true, cookiesDir: './cookies' },
|
|
81
|
-
logLevel: 'log',
|
|
82
|
-
}),
|
|
65
|
+
BrowserActionModule.forRoot({ name: 'stealth', cloak: { headless: true } }),
|
|
66
|
+
BrowserActionModule.forFeature(['products'], 'stealth'),
|
|
83
67
|
],
|
|
84
68
|
})
|
|
85
69
|
export class AppModule {}
|
|
86
70
|
```
|
|
87
71
|
|
|
88
|
-
**
|
|
72
|
+
**With cookies and async config:**
|
|
89
73
|
|
|
90
74
|
```typescript
|
|
91
75
|
import { Module } from '@nestjs/common';
|
|
@@ -96,36 +80,41 @@ import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
|
96
80
|
imports: [
|
|
97
81
|
ConfigModule.forRoot(),
|
|
98
82
|
BrowserActionModule.forRootAsync({
|
|
83
|
+
name: 'stealth',
|
|
99
84
|
imports: [ConfigModule],
|
|
100
85
|
useFactory: (configService: ConfigService) => ({
|
|
101
|
-
pool: {
|
|
102
|
-
min: configService.get<number>('POOL_MIN', 2),
|
|
103
|
-
max: configService.get<number>('POOL_MAX', 10),
|
|
104
|
-
},
|
|
105
86
|
cloak: {
|
|
106
87
|
proxy: { server: configService.get<string>('PROXY_URL', '') },
|
|
107
88
|
},
|
|
89
|
+
cookies: { enabled: true, cookiesDir: './cookies' },
|
|
108
90
|
logLevel: configService.get<string>('LOG_LEVEL', 'log'),
|
|
109
91
|
}),
|
|
110
92
|
inject: [ConfigService],
|
|
111
93
|
}),
|
|
94
|
+
BrowserActionModule.forFeature(['products'], 'stealth'),
|
|
112
95
|
],
|
|
113
96
|
})
|
|
114
97
|
export class AppModule {}
|
|
115
98
|
```
|
|
116
99
|
|
|
117
|
-
### Inject the
|
|
100
|
+
### Inject the Page Controller
|
|
118
101
|
|
|
119
102
|
```typescript
|
|
120
103
|
import { Injectable } from '@nestjs/common';
|
|
121
|
-
import {
|
|
104
|
+
import {
|
|
105
|
+
InjectPageController,
|
|
106
|
+
PageController,
|
|
107
|
+
} from '@hanivanrizky/nestjs-browser-action';
|
|
122
108
|
|
|
123
109
|
@Injectable()
|
|
124
110
|
export class YourService {
|
|
125
|
-
constructor(
|
|
111
|
+
constructor(
|
|
112
|
+
@InjectPageController('products', 'stealth')
|
|
113
|
+
private readonly products: PageController,
|
|
114
|
+
) {}
|
|
126
115
|
|
|
127
116
|
async scrapeProducts() {
|
|
128
|
-
const result = await this.
|
|
117
|
+
const result = await this.products.evaluateWebsite({
|
|
129
118
|
url: 'https://www.scrapingcourse.com/ecommerce/',
|
|
130
119
|
patterns: [
|
|
131
120
|
{
|
|
@@ -157,6 +146,49 @@ export class YourService {
|
|
|
157
146
|
}
|
|
158
147
|
```
|
|
159
148
|
|
|
149
|
+
> Pool mode (`forRoot()`/`forRootAsync()` without `name`, plain
|
|
150
|
+
> `BrowserActionService`) still works but is deprecated — see
|
|
151
|
+
> [Named Browsers & Pages (v0.22+)](#named-browsers--pages-v022) for full
|
|
152
|
+
> details, decorators, and the pool → controller migration table.
|
|
153
|
+
|
|
154
|
+
## Named Browsers & Pages (v0.22+)
|
|
155
|
+
|
|
156
|
+
Persistent, named browser + page pairs — an alternative to pool mode for
|
|
157
|
+
workloads that want cookies/localStorage/navigation state to carry over
|
|
158
|
+
between calls (login sessions, authenticated crawls) instead of a fresh
|
|
159
|
+
page opened and closed per scrape. Full details, decorators, auto-recreate
|
|
160
|
+
semantics, and a pool → controller migration table live in
|
|
161
|
+
[Named Browsers & Pages](docs/features/named-browsers.md).
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { Module, Injectable } from '@nestjs/common';
|
|
165
|
+
import {
|
|
166
|
+
BrowserActionModule,
|
|
167
|
+
InjectPageController,
|
|
168
|
+
PageController,
|
|
169
|
+
} from '@hanivanrizky/nestjs-browser-action';
|
|
170
|
+
|
|
171
|
+
@Module({
|
|
172
|
+
imports: [
|
|
173
|
+
BrowserActionModule.forRoot({ name: 'stealth', cloak: { headless: true } }),
|
|
174
|
+
BrowserActionModule.forFeature(['login', 'search'], 'stealth'),
|
|
175
|
+
],
|
|
176
|
+
})
|
|
177
|
+
export class AppModule {}
|
|
178
|
+
|
|
179
|
+
@Injectable()
|
|
180
|
+
export class MyService {
|
|
181
|
+
constructor(
|
|
182
|
+
@InjectPageController('login', 'stealth')
|
|
183
|
+
private readonly login: PageController,
|
|
184
|
+
) {}
|
|
185
|
+
|
|
186
|
+
async run() {
|
|
187
|
+
return this.login.scrape('https://example.com', { title: 'h1' });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
160
192
|
## Documentation
|
|
161
193
|
|
|
162
194
|
### Features
|
|
@@ -166,6 +198,7 @@ export class YourService {
|
|
|
166
198
|
- [Data Cleaning Pipes](docs/features/pipes.md) - Transform extracted data with pipes
|
|
167
199
|
- [Cookie Management](docs/features/cookies.md) - Session persistence
|
|
168
200
|
- [Workflow Actions](docs/methods/workflow.md) - Declarative step-by-step automation
|
|
201
|
+
- [Named Browsers & Pages](docs/features/named-browsers.md) - Persistent named browser/page pairs with `PageController`
|
|
169
202
|
|
|
170
203
|
### Reference
|
|
171
204
|
|
|
@@ -331,6 +364,14 @@ pnpm format
|
|
|
331
364
|
4. Push to the branch (`git push origin feature/yourusername/amazing-feature`)
|
|
332
365
|
5. Open a Pull Request
|
|
333
366
|
|
|
367
|
+
## Acknowledgments
|
|
368
|
+
|
|
369
|
+
The [Named Browsers & Pages](#named-browsers--pages-v022) DI pattern
|
|
370
|
+
(`forRoot({ name })` + `forFeature(pages, name)` +
|
|
371
|
+
`@InjectBrowser`/`@InjectPage`/`@InjectPageController`) was inspired by
|
|
372
|
+
[oblakstudio/nestjs-puppeteer](https://github.com/oblakstudio/nestjs-puppeteer).
|
|
373
|
+
Thanks to the maintainers for the clean named-instance design.
|
|
374
|
+
|
|
334
375
|
## License
|
|
335
376
|
|
|
336
377
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -4,4 +4,5 @@ export type BrowserActionModuleOptions = BrowserActionOptions;
|
|
|
4
4
|
export interface BrowserActionAsyncModuleOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
5
5
|
useFactory: (...args: unknown[]) => Promise<BrowserActionModuleOptions> | BrowserActionModuleOptions;
|
|
6
6
|
inject?: Array<Type | string | symbol>;
|
|
7
|
+
name?: string;
|
|
7
8
|
}
|
|
@@ -3,6 +3,9 @@ import { BrowserActionModuleOptions, BrowserActionAsyncModuleOptions } from './b
|
|
|
3
3
|
export declare class BrowserActionModule {
|
|
4
4
|
static register(options: BrowserActionModuleOptions): DynamicModule;
|
|
5
5
|
static forRoot(options: BrowserActionModuleOptions): DynamicModule;
|
|
6
|
+
private static forNamedBrowser;
|
|
6
7
|
static forRootAsync(options: BrowserActionAsyncModuleOptions): DynamicModule;
|
|
8
|
+
private static forNamedBrowserAsync;
|
|
9
|
+
static forFeature(pages: string[], browserName?: string): DynamicModule;
|
|
7
10
|
onModuleDestroy(): Promise<void>;
|
|
8
11
|
}
|
|
@@ -15,7 +15,48 @@ const page_service_1 = require("./services/page.service");
|
|
|
15
15
|
const browser_action_service_1 = require("./services/browser-action.service");
|
|
16
16
|
const cookie_service_1 = require("./services/cookie.service");
|
|
17
17
|
const cleansing_service_1 = require("./services/cleansing.service");
|
|
18
|
+
const named_browser_shutdown_1 = require("./services/named-browser-shutdown");
|
|
19
|
+
const browser_holder_1 = require("./services/browser-holder");
|
|
18
20
|
const constants_1 = require("./constants");
|
|
21
|
+
const tokens_1 = require("./common/tokens");
|
|
22
|
+
const browser_launcher_1 = require("./utils/browser-launcher");
|
|
23
|
+
const logger_util_1 = require("./utils/logger.util");
|
|
24
|
+
const pipe_engine_1 = require("./pipes/pipe-engine");
|
|
25
|
+
const operators_1 = require("./operators");
|
|
26
|
+
const page_session_1 = require("./services/page-session");
|
|
27
|
+
const page_controller_1 = require("./services/page-controller");
|
|
28
|
+
const browser_action_constants_1 = require("./constants/browser-action.constants");
|
|
29
|
+
const POOL_MODE_SERVICES = [
|
|
30
|
+
browser_pool_service_1.BrowserPoolService,
|
|
31
|
+
browser_manager_service_1.BrowserManagerService,
|
|
32
|
+
page_service_1.PageService,
|
|
33
|
+
browser_action_service_1.BrowserActionService,
|
|
34
|
+
cookie_service_1.CookieService,
|
|
35
|
+
cleansing_service_1.CleansingService,
|
|
36
|
+
];
|
|
37
|
+
const POOL_MODE_EXPORTS = [
|
|
38
|
+
browser_manager_service_1.BrowserManagerService,
|
|
39
|
+
page_service_1.PageService,
|
|
40
|
+
browser_action_service_1.BrowserActionService,
|
|
41
|
+
cookie_service_1.CookieService,
|
|
42
|
+
cleansing_service_1.CleansingService,
|
|
43
|
+
];
|
|
44
|
+
function resolveLogLevel(logLevel) {
|
|
45
|
+
return (Array.isArray(logLevel) ? logLevel[0] : logLevel) || 'log';
|
|
46
|
+
}
|
|
47
|
+
async function launchNamedBrowser(options) {
|
|
48
|
+
const logger = new logger_util_1.LoggerWithLevel('BrowserActionModule', resolveLogLevel(options.logLevel));
|
|
49
|
+
return options.remote
|
|
50
|
+
? await (0, browser_launcher_1.connectRemoteBrowser)(options.remote, logger)
|
|
51
|
+
: await (0, browser_launcher_1.launchLocalBrowser)(options, undefined, logger);
|
|
52
|
+
}
|
|
53
|
+
function namedBrowserHolderProvider(name) {
|
|
54
|
+
return {
|
|
55
|
+
provide: (0, tokens_1.getBrowserHolderToken)(name),
|
|
56
|
+
useFactory: (browser) => new browser_holder_1.BrowserHolder(browser),
|
|
57
|
+
inject: [(0, tokens_1.getBrowserToken)(name)],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
19
60
|
let BrowserActionModule = BrowserActionModule_1 = class BrowserActionModule {
|
|
20
61
|
static register(options) {
|
|
21
62
|
const optionsProvider = {
|
|
@@ -29,31 +70,52 @@ let BrowserActionModule = BrowserActionModule_1 = class BrowserActionModule {
|
|
|
29
70
|
};
|
|
30
71
|
}
|
|
31
72
|
static forRoot(options) {
|
|
73
|
+
if (options.name)
|
|
74
|
+
return this.forNamedBrowser(options);
|
|
32
75
|
const optionsProvider = {
|
|
33
76
|
provide: constants_1.BROWSER_ACTION_OPTIONS,
|
|
34
77
|
useValue: options,
|
|
35
78
|
};
|
|
36
79
|
return {
|
|
37
80
|
module: BrowserActionModule_1,
|
|
81
|
+
providers: [optionsProvider, ...POOL_MODE_SERVICES],
|
|
82
|
+
exports: [...POOL_MODE_EXPORTS],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
static forNamedBrowser(options) {
|
|
86
|
+
const name = options.name;
|
|
87
|
+
(0, tokens_1.claimBrowserName)(name);
|
|
88
|
+
if (options.remote)
|
|
89
|
+
(0, browser_launcher_1.validateRemoteOptions)(options.remote);
|
|
90
|
+
const optionsProvider = {
|
|
91
|
+
provide: (0, tokens_1.getNamedOptionsToken)(name),
|
|
92
|
+
useValue: options,
|
|
93
|
+
};
|
|
94
|
+
const browserProvider = {
|
|
95
|
+
provide: (0, tokens_1.getBrowserToken)(name),
|
|
96
|
+
useFactory: () => launchNamedBrowser(options),
|
|
97
|
+
};
|
|
98
|
+
const holderProvider = namedBrowserHolderProvider(name);
|
|
99
|
+
const shutdownProvider = {
|
|
100
|
+
provide: `${(0, tokens_1.getBrowserToken)(name)}Shutdown`,
|
|
101
|
+
useFactory: (holder) => new named_browser_shutdown_1.NamedBrowserShutdown(name, holder, !!options.remote),
|
|
102
|
+
inject: [(0, tokens_1.getBrowserHolderToken)(name)],
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
module: BrowserActionModule_1,
|
|
106
|
+
global: true,
|
|
38
107
|
providers: [
|
|
39
108
|
optionsProvider,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
browser_action_service_1.BrowserActionService,
|
|
44
|
-
cookie_service_1.CookieService,
|
|
45
|
-
cleansing_service_1.CleansingService,
|
|
46
|
-
],
|
|
47
|
-
exports: [
|
|
48
|
-
browser_manager_service_1.BrowserManagerService,
|
|
49
|
-
page_service_1.PageService,
|
|
50
|
-
browser_action_service_1.BrowserActionService,
|
|
51
|
-
cookie_service_1.CookieService,
|
|
52
|
-
cleansing_service_1.CleansingService,
|
|
109
|
+
browserProvider,
|
|
110
|
+
holderProvider,
|
|
111
|
+
shutdownProvider,
|
|
53
112
|
],
|
|
113
|
+
exports: [browserProvider, holderProvider, optionsProvider],
|
|
54
114
|
};
|
|
55
115
|
}
|
|
56
116
|
static forRootAsync(options) {
|
|
117
|
+
if (options.name)
|
|
118
|
+
return this.forNamedBrowserAsync(options);
|
|
57
119
|
const asyncOptionsProvider = {
|
|
58
120
|
provide: constants_1.BROWSER_ACTION_OPTIONS,
|
|
59
121
|
useFactory: async (...args) => {
|
|
@@ -64,24 +126,81 @@ let BrowserActionModule = BrowserActionModule_1 = class BrowserActionModule {
|
|
|
64
126
|
return {
|
|
65
127
|
module: BrowserActionModule_1,
|
|
66
128
|
imports: options.imports || [],
|
|
129
|
+
providers: [asyncOptionsProvider, ...POOL_MODE_SERVICES],
|
|
130
|
+
exports: [...POOL_MODE_EXPORTS],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
static forNamedBrowserAsync(options) {
|
|
134
|
+
const name = options.name;
|
|
135
|
+
(0, tokens_1.claimBrowserName)(name);
|
|
136
|
+
const optionsToken = (0, tokens_1.getNamedOptionsToken)(name);
|
|
137
|
+
const optionsProvider = {
|
|
138
|
+
provide: optionsToken,
|
|
139
|
+
useFactory: async (...args) => {
|
|
140
|
+
const resolved = await options.useFactory(...args);
|
|
141
|
+
if (resolved.remote)
|
|
142
|
+
(0, browser_launcher_1.validateRemoteOptions)(resolved.remote);
|
|
143
|
+
return resolved;
|
|
144
|
+
},
|
|
145
|
+
inject: options.inject || [],
|
|
146
|
+
};
|
|
147
|
+
const browserProvider = {
|
|
148
|
+
provide: (0, tokens_1.getBrowserToken)(name),
|
|
149
|
+
useFactory: (resolved) => launchNamedBrowser(resolved),
|
|
150
|
+
inject: [optionsToken],
|
|
151
|
+
};
|
|
152
|
+
const holderProvider = namedBrowserHolderProvider(name);
|
|
153
|
+
const shutdownProvider = {
|
|
154
|
+
provide: `${(0, tokens_1.getBrowserToken)(name)}Shutdown`,
|
|
155
|
+
useFactory: (holder, resolved) => new named_browser_shutdown_1.NamedBrowserShutdown(name, holder, !!resolved.remote),
|
|
156
|
+
inject: [(0, tokens_1.getBrowserHolderToken)(name), optionsToken],
|
|
157
|
+
};
|
|
158
|
+
return {
|
|
159
|
+
module: BrowserActionModule_1,
|
|
160
|
+
global: true,
|
|
161
|
+
imports: options.imports || [],
|
|
67
162
|
providers: [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
browser_action_service_1.BrowserActionService,
|
|
73
|
-
cookie_service_1.CookieService,
|
|
74
|
-
cleansing_service_1.CleansingService,
|
|
75
|
-
],
|
|
76
|
-
exports: [
|
|
77
|
-
browser_manager_service_1.BrowserManagerService,
|
|
78
|
-
page_service_1.PageService,
|
|
79
|
-
browser_action_service_1.BrowserActionService,
|
|
80
|
-
cookie_service_1.CookieService,
|
|
81
|
-
cleansing_service_1.CleansingService,
|
|
163
|
+
optionsProvider,
|
|
164
|
+
browserProvider,
|
|
165
|
+
holderProvider,
|
|
166
|
+
shutdownProvider,
|
|
82
167
|
],
|
|
168
|
+
exports: [browserProvider, holderProvider, optionsProvider],
|
|
83
169
|
};
|
|
84
170
|
}
|
|
171
|
+
static forFeature(pages, browserName = 'default') {
|
|
172
|
+
const providers = pages.flatMap((pageName) => {
|
|
173
|
+
const pageProvider = {
|
|
174
|
+
provide: (0, tokens_1.getPageToken)(pageName, browserName),
|
|
175
|
+
useFactory: async (browser) => await browser.newPage(),
|
|
176
|
+
inject: [(0, tokens_1.getBrowserToken)(browserName)],
|
|
177
|
+
};
|
|
178
|
+
const controllerProvider = {
|
|
179
|
+
provide: (0, tokens_1.getPageControllerToken)(pageName, browserName),
|
|
180
|
+
useFactory: (holder, page, options) => {
|
|
181
|
+
const debugLen = options.debugLogMaxLength ?? browser_action_constants_1.DEFAULT_DEBUG_LOG_MAX_LENGTH;
|
|
182
|
+
const logger = new logger_util_1.LoggerWithLevel(`PageController:${browserName}/${pageName}`, resolveLogLevel(options.logLevel));
|
|
183
|
+
const pipeEngine = new pipe_engine_1.PipeEngine();
|
|
184
|
+
const extraction = new operators_1.ExtractionOperator(pipeEngine, logger);
|
|
185
|
+
const container = new operators_1.ContainerOperator(extraction, pipeEngine, logger);
|
|
186
|
+
const cleansingService = new cleansing_service_1.CleansingService(options);
|
|
187
|
+
const cookieService = new cookie_service_1.CookieService(options);
|
|
188
|
+
const workflow = new operators_1.WorkflowOperator(extraction, container, pipeEngine, cleansingService, logger, () => cookieService);
|
|
189
|
+
const pagination = new operators_1.PaginationOperator(logger);
|
|
190
|
+
const capture = new operators_1.CaptureOperator(logger);
|
|
191
|
+
const session = new page_session_1.PageSession(browserName, holder, page, options, logger);
|
|
192
|
+
return new page_controller_1.PageController(session, extraction, container, workflow, pagination, capture, logger, debugLen);
|
|
193
|
+
},
|
|
194
|
+
inject: [
|
|
195
|
+
(0, tokens_1.getBrowserHolderToken)(browserName),
|
|
196
|
+
(0, tokens_1.getPageToken)(pageName, browserName),
|
|
197
|
+
(0, tokens_1.getNamedOptionsToken)(browserName),
|
|
198
|
+
],
|
|
199
|
+
};
|
|
200
|
+
return [pageProvider, controllerProvider];
|
|
201
|
+
});
|
|
202
|
+
return { module: BrowserActionModule_1, providers, exports: providers };
|
|
203
|
+
}
|
|
85
204
|
async onModuleDestroy() {
|
|
86
205
|
}
|
|
87
206
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-action.module.js","sourceRoot":"","sources":["../src/browser-action.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"browser-action.module.js","sourceRoot":"","sources":["../src/browser-action.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAMwB;AAMxB,0EAAqE;AACrE,gFAA2E;AAC3E,0DAAsD;AACtD,8EAAyE;AACzE,8DAA0D;AAC1D,oEAAgE;AAChE,8EAAyE;AACzE,8DAA0D;AAC1D,2CAAqD;AACrD,4CAOyB;AACzB,+DAIkC;AAClC,qDAAsD;AACtD,qDAAiD;AACjD,2CAMqB;AACrB,0DAAsD;AACtD,gEAA4D;AAE5D,mFAAoF;AAEpF,MAAM,kBAAkB,GAAG;IACzB,yCAAkB;IAClB,+CAAqB;IACrB,0BAAW;IACX,6CAAoB;IACpB,8BAAa;IACb,oCAAgB;CACR,CAAC;AAEX,MAAM,iBAAiB,GAAG;IACxB,+CAAqB;IACrB,0BAAW;IACX,6CAAoB;IACpB,8BAAa;IACb,oCAAgB;CACR,CAAC;AAEX,SAAS,eAAe,CACtB,QAA2C;IAE3C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,6BAAe,CAChC,qBAAqB,EACrB,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAClC,CAAC;IACF,OAAO,OAAO,CAAC,MAAM;QACnB,CAAC,CAAC,MAAM,IAAA,uCAAoB,EAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;QACpD,CAAC,CAAC,MAAM,IAAA,qCAAkB,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,OAAO;QACL,OAAO,EAAE,IAAA,8BAAqB,EAAC,IAAI,CAAC;QACpC,UAAU,EAAE,CAAC,OAAgB,EAAiB,EAAE,CAAC,IAAI,8BAAa,CAAC,OAAO,CAAC;QAC3E,MAAM,EAAE,CAAC,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC;KAChC,CAAC;AACJ,CAAC;AAIM,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAI9B,MAAM,CAAC,QAAQ,CAAC,OAAmC;QACjD,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,kCAAsB;YAC/B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,OAAO,CAAC,OAAmC;QAChD,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,kCAAsB;YAC/B,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,SAAS,EAAE,CAAC,eAAe,EAAE,GAAG,kBAAkB,CAAC;YACnD,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC;SAChC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,OAAmC;QAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC;QAC3B,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,MAAM;YAAE,IAAA,wCAAqB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,IAAA,6BAAoB,EAAC,IAAI,CAAC;YACnC,QAAQ,EAAE,OAAO;SAClB,CAAC;QACF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,IAAA,wBAAe,EAAC,IAAI,CAAC;YAC9B,UAAU,EAAE,GAAqB,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;SAChE,CAAC;QACF,MAAM,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAa;YACjC,OAAO,EAAE,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,UAAU;YAC3C,UAAU,EAAE,CAAC,MAAqB,EAAwB,EAAE,CAC1D,IAAI,6CAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1D,MAAM,EAAE,CAAC,IAAA,8BAAqB,EAAC,IAAI,CAAC,CAAC;SACtC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,eAAe;gBACf,eAAe;gBACf,cAAc;gBACd,gBAAgB;aACjB;YACD,OAAO,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,CAAC;SAC5D,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,YAAY,CAAC,OAAwC;QAC1D,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,oBAAoB,GAAa;YACrC,OAAO,EAAE,kCAAsB;YAC/B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACvC,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,CAAC,oBAAoB,EAAE,GAAG,kBAAkB,CAAC;YACxD,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC;SAChC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAAwC;QAExC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC;QAC3B,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,YAAY,GAAG,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;QAChD,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBACnD,IAAI,QAAQ,CAAC,MAAM;oBAAE,IAAA,wCAAqB,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5D,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;QACF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,IAAA,wBAAe,EAAC,IAAI,CAAC;YAC9B,UAAU,EAAE,CAAC,QAAoC,EAAoB,EAAE,CACrE,kBAAkB,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,CAAC,YAAY,CAAC;SACvB,CAAC;QACF,MAAM,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAa;YACjC,OAAO,EAAE,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,UAAU;YAC3C,UAAU,EAAE,CACV,MAAqB,EACrB,QAAoC,EACd,EAAE,CACxB,IAAI,6CAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3D,MAAM,EAAE,CAAC,IAAA,8BAAqB,EAAC,IAAI,CAAC,EAAE,YAAY,CAAC;SACpD,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT,eAAe;gBACf,eAAe;gBACf,cAAc;gBACd,gBAAgB;aACjB;YACD,OAAO,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAe,EAAE,WAAW,GAAG,SAAS;QACxD,MAAM,SAAS,GAAe,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACvD,MAAM,YAAY,GAAa;gBAC7B,OAAO,EAAE,IAAA,qBAAY,EAAC,QAAQ,EAAE,WAAW,CAAC;gBAC5C,UAAU,EAAE,KAAK,EAAE,OAAgB,EAAiB,EAAE,CACpD,MAAM,OAAO,CAAC,OAAO,EAAE;gBACzB,MAAM,EAAE,CAAC,IAAA,wBAAe,EAAC,WAAW,CAAC,CAAC;aACvC,CAAC;YACF,MAAM,kBAAkB,GAAa;gBACnC,OAAO,EAAE,IAAA,+BAAsB,EAAC,QAAQ,EAAE,WAAW,CAAC;gBACtD,UAAU,EAAE,CACV,MAAqB,EACrB,IAAU,EACV,OAA6B,EACb,EAAE;oBAClB,MAAM,QAAQ,GACZ,OAAO,CAAC,iBAAiB,IAAI,uDAA4B,CAAC;oBAC5D,MAAM,MAAM,GAAG,IAAI,6BAAe,CAChC,kBAAkB,WAAW,IAAI,QAAQ,EAAE,EAC3C,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAClC,CAAC;oBACF,MAAM,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,8BAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC9D,MAAM,SAAS,GAAG,IAAI,6BAAiB,CACrC,UAAU,EACV,UAAU,EACV,MAAM,CACP,CAAC;oBACF,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;oBACjD,MAAM,QAAQ,GAAG,IAAI,4BAAgB,CACnC,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,GAAG,EAAE,CAAC,aAAa,CACpB,CAAC;oBACF,MAAM,UAAU,GAAG,IAAI,8BAAkB,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM,OAAO,GAAG,IAAI,2BAAe,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,OAAO,GAAG,IAAI,0BAAW,CAC7B,WAAW,EACX,MAAM,EACN,IAAI,EACJ,OAAO,EACP,MAAM,CACP,CAAC;oBACF,OAAO,IAAI,gCAAc,CACvB,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,MAAM,EACN,QAAQ,CACT,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE;oBACN,IAAA,8BAAqB,EAAC,WAAW,CAAC;oBAClC,IAAA,qBAAY,EAAC,QAAQ,EAAE,WAAW,CAAC;oBACnC,IAAA,6BAAoB,EAAC,WAAW,CAAC;iBAClC;aACF,CAAC;YACF,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,qBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,eAAe;IAErB,CAAC;CACF,CAAA;AAvNY,kDAAmB;8BAAnB,mBAAmB;IAF/B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CAuN/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './tokens';
|
|
@@ -0,0 +1,18 @@
|
|
|
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("./tokens"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function getBrowserToken(name: string): string;
|
|
2
|
+
export declare function getPageToken(page: string, name: string): string;
|
|
3
|
+
export declare function getPageControllerToken(page: string, name: string): string;
|
|
4
|
+
export declare function getBrowserHolderToken(name: string): string;
|
|
5
|
+
export declare function getNamedOptionsToken(name: string): string;
|
|
6
|
+
export declare function claimBrowserName(name: string): void;
|
|
7
|
+
export declare function releaseBrowserName(name: string): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBrowserToken = getBrowserToken;
|
|
4
|
+
exports.getPageToken = getPageToken;
|
|
5
|
+
exports.getPageControllerToken = getPageControllerToken;
|
|
6
|
+
exports.getBrowserHolderToken = getBrowserHolderToken;
|
|
7
|
+
exports.getNamedOptionsToken = getNamedOptionsToken;
|
|
8
|
+
exports.claimBrowserName = claimBrowserName;
|
|
9
|
+
exports.releaseBrowserName = releaseBrowserName;
|
|
10
|
+
function getBrowserToken(name) {
|
|
11
|
+
return `${name}BrowserActionBrowser`;
|
|
12
|
+
}
|
|
13
|
+
function getPageToken(page, name) {
|
|
14
|
+
return `${name}_${page}BrowserActionPage`;
|
|
15
|
+
}
|
|
16
|
+
function getPageControllerToken(page, name) {
|
|
17
|
+
return `${name}_${page}BrowserActionPageController`;
|
|
18
|
+
}
|
|
19
|
+
function getBrowserHolderToken(name) {
|
|
20
|
+
return `${getBrowserToken(name)}Holder`;
|
|
21
|
+
}
|
|
22
|
+
function getNamedOptionsToken(name) {
|
|
23
|
+
return `BROWSER_ACTION_OPTIONS:${name}`;
|
|
24
|
+
}
|
|
25
|
+
const registeredBrowserNames = new Set();
|
|
26
|
+
function claimBrowserName(name) {
|
|
27
|
+
if (registeredBrowserNames.has(name)) {
|
|
28
|
+
throw new Error(`BrowserActionModule: a browser with name "${name}" is already registered. ` +
|
|
29
|
+
`Each forRoot()/forRootAsync() call must use a unique \`name\`.`);
|
|
30
|
+
}
|
|
31
|
+
registeredBrowserNames.add(name);
|
|
32
|
+
}
|
|
33
|
+
function releaseBrowserName(name) {
|
|
34
|
+
registeredBrowserNames.delete(name);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/common/tokens.ts"],"names":[],"mappings":";;AAAA,0CAEC;AAED,oCAEC;AAED,wDAEC;AAED,sDAEC;AAED,oDAEC;AASD,4CAQC;AAED,gDAEC;AAvCD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,GAAG,IAAI,sBAAsB,CAAC;AACvC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,OAAO,GAAG,IAAI,IAAI,IAAI,mBAAmB,CAAC;AAC5C,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAY,EAAE,IAAY;IAC/D,OAAO,GAAG,IAAI,IAAI,IAAI,6BAA6B,CAAC;AACtD,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,OAAO,0BAA0B,IAAI,EAAE,CAAC;AAC1C,CAAC;AAOD,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEjD,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,2BAA2B;YAC1E,gEAAgE,CACnE,CAAC;IACJ,CAAC;IACD,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/decorators/index.js
CHANGED
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./inject-browser.decorator"), exports);
|
|
18
18
|
__exportStar(require("./inject-page.decorator"), exports);
|
|
19
|
+
__exportStar(require("./inject-page-controller.decorator"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,0DAAwC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,0DAAwC;AACxC,qEAAmD"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Inject } from '@nestjs/common';
|
|
2
|
+
export declare const InjectBrowser: (name?: string) => ReturnType<typeof Inject>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InjectBrowser = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
-
const
|
|
5
|
+
const tokens_1 = require("../common/tokens");
|
|
6
|
+
const InjectBrowser = (name = 'default') => (0, common_1.Inject)((0, tokens_1.getBrowserToken)(name));
|
|
6
7
|
exports.InjectBrowser = InjectBrowser;
|
|
7
8
|
//# sourceMappingURL=inject-browser.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject-browser.decorator.js","sourceRoot":"","sources":["../../src/decorators/inject-browser.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"inject-browser.decorator.js","sourceRoot":"","sources":["../../src/decorators/inject-browser.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAAmD;AAM5C,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,SAAS,EAA6B,EAAE,CAC3E,IAAA,eAAM,EAAC,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC,CAAC;AADnB,QAAA,aAAa,iBACM"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InjectPageController = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const tokens_1 = require("../common/tokens");
|
|
6
|
+
const InjectPageController = (page, name = 'default') => (0, common_1.Inject)((0, tokens_1.getPageControllerToken)(page, name));
|
|
7
|
+
exports.InjectPageController = InjectPageController;
|
|
8
|
+
//# sourceMappingURL=inject-page-controller.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-page-controller.decorator.js","sourceRoot":"","sources":["../../src/decorators/inject-page-controller.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAA0D;AAMnD,MAAM,oBAAoB,GAAG,CAClC,IAAY,EACZ,IAAI,GAAG,SAAS,EACW,EAAE,CAAC,IAAA,eAAM,EAAC,IAAA,+BAAsB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAH9D,QAAA,oBAAoB,wBAG0C"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { Inject } from '@nestjs/common';
|
|
2
|
+
export declare const InjectPage: (page: string, name?: string) => ReturnType<typeof Inject>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InjectPage = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
-
const
|
|
5
|
+
const tokens_1 = require("../common/tokens");
|
|
6
|
+
const InjectPage = (page, name = 'default') => (0, common_1.Inject)((0, tokens_1.getPageToken)(page, name));
|
|
6
7
|
exports.InjectPage = InjectPage;
|
|
7
8
|
//# sourceMappingURL=inject-page.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject-page.decorator.js","sourceRoot":"","sources":["../../src/decorators/inject-page.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"inject-page.decorator.js","sourceRoot":"","sources":["../../src/decorators/inject-page.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAAgD;AAMzC,MAAM,UAAU,GAAG,CACxB,IAAY,EACZ,IAAI,GAAG,SAAS,EACW,EAAE,CAAC,IAAA,eAAM,EAAC,IAAA,qBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAHpD,QAAA,UAAU,cAG0C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|