@jambudipa/spider 0.2.3 → 0.3.1

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 (56) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +310 -332
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/Logging/SpiderLogger.service.d.ts.map +1 -1
  6. package/dist/lib/Middleware/SpiderMiddleware.d.ts +1 -1
  7. package/dist/lib/Middleware/SpiderMiddleware.d.ts.map +1 -1
  8. package/dist/lib/Resumability/backends/PostgresStorageBackend.d.ts.map +1 -1
  9. package/dist/lib/Resumability/types.d.ts +3 -3
  10. package/dist/lib/Scheduler/SpiderScheduler.service.d.ts +7 -7
  11. package/dist/lib/Scheduler/SpiderScheduler.service.d.ts.map +1 -1
  12. package/dist/lib/Scraper/Scraper.service.d.ts +1 -1
  13. package/dist/lib/Scraper/Scraper.service.d.ts.map +1 -1
  14. package/dist/lib/Spider/Spider.defaults.d.ts +24 -0
  15. package/dist/lib/Spider/Spider.defaults.d.ts.map +1 -0
  16. package/dist/lib/Spider/Spider.service.d.ts +0 -10
  17. package/dist/lib/Spider/Spider.service.d.ts.map +1 -1
  18. package/dist/lib/UrlDeduplicator/UrlDeduplicator.service.d.ts.map +1 -1
  19. package/dist/lib/WebScrapingEngine/WebScrapingEngine.service.d.ts +1 -2
  20. package/dist/lib/WebScrapingEngine/WebScrapingEngine.service.d.ts.map +1 -1
  21. package/dist/lib/api-facades.d.ts +1 -1
  22. package/dist/lib/api-facades.d.ts.map +1 -1
  23. package/dist/lib/errors/effect-errors.d.ts +167 -34
  24. package/dist/lib/errors/effect-errors.d.ts.map +1 -1
  25. package/dist/lib/utils/JsonUtils.d.ts.map +1 -1
  26. package/dist/lib/utils/UrlUtils.d.ts.map +1 -1
  27. package/dist/lib/utils/url-deduplication.d.ts.map +1 -1
  28. package/package.json +7 -10
  29. package/dist/browser/BrowserManager.d.ts +0 -63
  30. package/dist/browser/BrowserManager.d.ts.map +0 -1
  31. package/dist/browser/PlaywrightAdapter.d.ts +0 -166
  32. package/dist/browser/PlaywrightAdapter.d.ts.map +0 -1
  33. package/dist/examples/01-basic-crawl-working.d.ts +0 -13
  34. package/dist/examples/01-basic-crawl-working.d.ts.map +0 -1
  35. package/dist/examples/02-multiple-urls-working.d.ts +0 -13
  36. package/dist/examples/02-multiple-urls-working.d.ts.map +0 -1
  37. package/dist/examples/03-url-filtering.d.ts +0 -13
  38. package/dist/examples/03-url-filtering.d.ts.map +0 -1
  39. package/dist/examples/04-robots-compliance.d.ts +0 -14
  40. package/dist/examples/04-robots-compliance.d.ts.map +0 -1
  41. package/dist/examples/05-link-extraction-selectors.d.ts +0 -14
  42. package/dist/examples/05-link-extraction-selectors.d.ts.map +0 -1
  43. package/dist/examples/06-custom-middleware.d.ts +0 -18
  44. package/dist/examples/06-custom-middleware.d.ts.map +0 -1
  45. package/dist/examples/07-resumability-demo.d.ts +0 -14
  46. package/dist/examples/07-resumability-demo.d.ts.map +0 -1
  47. package/dist/examples/08-worker-monitoring.d.ts +0 -15
  48. package/dist/examples/08-worker-monitoring.d.ts.map +0 -1
  49. package/dist/examples/09-error-handling-recovery.d.ts +0 -15
  50. package/dist/examples/09-error-handling-recovery.d.ts.map +0 -1
  51. package/dist/lib/errors.d.ts +0 -172
  52. package/dist/lib/errors.d.ts.map +0 -1
  53. package/dist/lib/utils/url-deduplication.test.d.ts +0 -5
  54. package/dist/lib/utils/url-deduplication.test.d.ts.map +0 -1
  55. package/dist/test/infrastructure/EffectTestUtils.d.ts +0 -167
  56. package/dist/test/infrastructure/EffectTestUtils.d.ts.map +0 -1
@@ -1,5 +0,0 @@
1
- /**
2
- * URL Deduplication Tests
3
- */
4
- export {};
5
- //# sourceMappingURL=url-deduplication.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url-deduplication.test.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-deduplication.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,167 +0,0 @@
1
- /**
2
- * Effect Test Utilities - Enhanced Version
3
- * Comprehensive helper functions and test infrastructure for Effect-based testing
4
- */
5
- import { Cause, Context, Duration, Effect, Exit, Layer, Option, TestClock } from 'effect';
6
- declare const TestError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
7
- readonly _tag: "TestError";
8
- } & Readonly<A>;
9
- declare class TestError extends TestError_base<{
10
- readonly message: string;
11
- }> {
12
- }
13
- declare const TimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
14
- readonly _tag: "TimeoutError";
15
- } & Readonly<A>;
16
- declare class TimeoutError extends TimeoutError_base<{
17
- readonly message: string;
18
- }> {
19
- }
20
- declare const AssertionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
21
- readonly _tag: "AssertionError";
22
- } & Readonly<A>;
23
- declare class AssertionError extends AssertionError_base<{
24
- readonly message: string;
25
- }> {
26
- }
27
- declare const ConditionTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
28
- readonly _tag: "ConditionTimeoutError";
29
- } & Readonly<A>;
30
- declare class ConditionTimeoutError extends ConditionTimeoutError_base<{
31
- readonly message: string;
32
- }> {
33
- }
34
- /**
35
- * Run an Effect and return its result as a Promise
36
- */
37
- export declare const runTest: <A, E>(effect: Effect.Effect<A, E>) => Promise<A>;
38
- /**
39
- * Run an Effect synchronously - intended for test setup only
40
- */
41
- export declare const runTestSync: <A, E>(effect: Effect.Effect<A, E>) => A;
42
- /**
43
- * Run an Effect and get the Exit result
44
- */
45
- export declare const runForExit: <A, E>(effect: Effect.Effect<A, E>) => Promise<Exit.Exit<A, E>>;
46
- /**
47
- * Assert that an Effect succeeds - returns Effect for composition
48
- */
49
- export declare const expectSuccessEffect: <A, E>(effect: Effect.Effect<A, E>) => Effect.Effect<A, AssertionError | E>;
50
- /**
51
- * Assert that an Effect succeeds - Promise-based for test frameworks
52
- */
53
- export declare const expectSuccess: <A, E>(effect: Effect.Effect<A, E>) => Promise<A>;
54
- /**
55
- * Helper to extract value from Option with timeout
56
- */
57
- export declare const unwrapOption: <A>(option: Option.Option<A>) => Effect.Effect<A, TestError>;
58
- /**
59
- * Extract value from Effect<Option<A>> with timeout
60
- */
61
- export declare const extractWithTimeout: <A, E>(effect: Effect.Effect<Option.Option<A>, E>, timeout?: Duration.Duration) => Effect.Effect<A, TestError | TimeoutError | E>;
62
- /**
63
- * Assert that an Effect fails - returns Effect for composition
64
- */
65
- export declare const expectFailureEffect: <A, E>(effect: Effect.Effect<A, E>) => Effect.Effect<E, AssertionError>;
66
- /**
67
- * Assert that an Effect fails - Promise-based for test frameworks
68
- */
69
- export declare const expectFailure: <A, E>(effect: Effect.Effect<A, E>) => Promise<E>;
70
- /**
71
- * Run Effect with test context
72
- */
73
- export declare const runWithContext: <A, E, R>(effect: Effect.Effect<A, E, R>, context: Layer.Layer<R>) => Promise<A>;
74
- /**
75
- * Create a test layer
76
- */
77
- export declare const createTestLayer: <ROut, E = never, RIn = never>(layer: Layer.Layer<ROut, E, RIn>) => Layer.Layer<ROut, E, RIn>;
78
- /**
79
- * Combine multiple test layers
80
- */
81
- export declare const combineTestLayers: <R1, R2>(layer1: Layer.Layer<R1>, layer2: Layer.Layer<R2>) => Layer.Layer<R1 & R2>;
82
- /**
83
- * Wait for condition with timeout
84
- */
85
- export declare const waitForCondition: (predicate: () => boolean, options?: {
86
- timeout?: Duration.Duration;
87
- interval?: Duration.Duration;
88
- message?: string;
89
- }) => Effect.Effect<void, ConditionTimeoutError>;
90
- /**
91
- * Create Effect assertion helper - Effect-based version
92
- */
93
- export declare const expectEffectGen: <A, E>(effect: Effect.Effect<A, E>) => {
94
- toSucceedWith: (expected: A) => Effect.Effect<void, AssertionError | E>;
95
- toSucceed: () => Effect.Effect<A, AssertionError | E>;
96
- toFail: () => Effect.Effect<E, AssertionError>;
97
- toFailWith: (errorCheck: (error: E) => boolean) => Effect.Effect<void, AssertionError>;
98
- };
99
- /**
100
- * Run Effect synchronously with test services - test boundary utility
101
- */
102
- export declare const runSyncWithTestServices: <A, E>(effect: Effect.Effect<A, E>, _options?: {
103
- seed?: number;
104
- currentTime?: number;
105
- }) => A;
106
- /**
107
- * Create a mock service layer with proper typing
108
- */
109
- export declare const createMockServiceLayer: <S, I>(tag: Context.Tag<I, S>, implementation: S) => Layer.Layer<I>;
110
- /**
111
- * Test layer for common services
112
- */
113
- export declare const commonTestLayers: {
114
- clock: Layer.Layer<TestClock.TestClock, never, import("effect/TestAnnotations").TestAnnotations | import("effect/TestLive").TestLive>;
115
- random: Layer.Layer<never, never, never>;
116
- deterministic: Layer.Layer<TestClock.TestClock, never, import("effect/TestAnnotations").TestAnnotations | import("effect/TestLive").TestLive>;
117
- };
118
- /**
119
- * Helper to test Effect retries
120
- */
121
- export declare const testWithRetries: <A, E>(effect: Effect.Effect<A, E>, maxAttempts?: number) => Effect.Effect<{
122
- result: Exit.Exit<A, E>;
123
- attempts: number;
124
- }>;
125
- /**
126
- * Test helper for timeout scenarios
127
- */
128
- export declare const testTimeout: <A, E>(effect: Effect.Effect<A, E>, duration: Duration.Duration) => Effect.Effect<Option.Option<A>, E>;
129
- /**
130
- * Helper for testing concurrent operations
131
- */
132
- export declare const testConcurrent: <A, E>(effects: Effect.Effect<A, E>[], options?: {
133
- concurrency?: number;
134
- }) => Effect.Effect<A[], E>;
135
- /**
136
- * Create a test environment with all common test services
137
- */
138
- export declare const createTestEnvironment: () => {
139
- provide: <A, E, R>(effect: Effect.Effect<A, E, R>, layer: Layer.Layer<R>) => Effect.Effect<A, E, Exclude<R, R>>;
140
- cleanup: () => void;
141
- addCleanup: (fn: () => void) => void;
142
- };
143
- /**
144
- * Test data generators
145
- */
146
- export declare const testData: {
147
- randomString: (length?: number) => Effect.Effect<string>;
148
- randomNumber: (min: number, max: number) => Effect.Effect<number>;
149
- randomBoolean: () => Effect.Effect<boolean>;
150
- };
151
- /**
152
- * Matcher for Effect errors
153
- */
154
- export declare const errorMatchers: {
155
- isTaggedError: (error: unknown, tag: string) => boolean;
156
- hasMessage: (error: unknown, message: string | RegExp) => boolean;
157
- hasProperty: <T>(error: unknown, property: string, value?: T) => boolean;
158
- };
159
- /**
160
- * Test fixtures factory - Effect-based version
161
- */
162
- export declare const createFixture: <T>(setup: () => Effect.Effect<T>, teardown?: (fixture: T) => Effect.Effect<void>) => {
163
- use: <A, E>(test: (fixture: T) => Effect.Effect<A, E>) => Effect.Effect<A, E>;
164
- usePromise: <A, E_1>(test: (fixture: T) => Effect.Effect<A, E_1>) => Promise<A>;
165
- };
166
- export {};
167
- //# sourceMappingURL=EffectTestUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EffectTestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/infrastructure/EffectTestUtils.ts"],"names":[],"mappings":"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"}