rahad-all-downloader 2.1.2 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. package/.cache/typescript/5.4/node_modules/.package-lock.json +110 -0
  2. package/.cache/typescript/5.4/node_modules/@types/caseless/LICENSE +21 -0
  3. package/.cache/typescript/5.4/node_modules/@types/caseless/README.md +48 -0
  4. package/.cache/typescript/5.4/node_modules/@types/caseless/index.d.ts +29 -0
  5. package/.cache/typescript/5.4/node_modules/@types/caseless/package.json +35 -0
  6. package/.cache/typescript/5.4/node_modules/@types/node-fetch/LICENSE +21 -0
  7. package/.cache/typescript/5.4/node_modules/@types/node-fetch/README.md +15 -0
  8. package/.cache/typescript/5.4/node_modules/@types/node-fetch/externals.d.ts +32 -0
  9. package/.cache/typescript/5.4/node_modules/@types/node-fetch/index.d.ts +238 -0
  10. package/.cache/typescript/5.4/node_modules/@types/node-fetch/package.json +83 -0
  11. package/.cache/typescript/5.4/node_modules/@types/request/LICENSE +21 -0
  12. package/.cache/typescript/5.4/node_modules/@types/request/README.md +15 -0
  13. package/.cache/typescript/5.4/node_modules/@types/request/index.d.ts +395 -0
  14. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/License +19 -0
  15. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/README.md +350 -0
  16. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/README.md.bak +350 -0
  17. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/index.d.ts +51 -0
  18. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/browser.js +2 -0
  19. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/form_data.js +483 -0
  20. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/populate.js +10 -0
  21. package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/package.json +68 -0
  22. package/.cache/typescript/5.4/node_modules/@types/request/package.json +70 -0
  23. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/LICENSE +21 -0
  24. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/README.md +15 -0
  25. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/index.d.ts +321 -0
  26. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/package.json +35 -0
  27. package/.cache/typescript/5.4/node_modules/asynckit/LICENSE +21 -0
  28. package/.cache/typescript/5.4/node_modules/asynckit/README.md +233 -0
  29. package/.cache/typescript/5.4/node_modules/asynckit/bench.js +76 -0
  30. package/.cache/typescript/5.4/node_modules/asynckit/index.js +6 -0
  31. package/.cache/typescript/5.4/node_modules/asynckit/lib/abort.js +29 -0
  32. package/.cache/typescript/5.4/node_modules/asynckit/lib/async.js +34 -0
  33. package/.cache/typescript/5.4/node_modules/asynckit/lib/defer.js +26 -0
  34. package/.cache/typescript/5.4/node_modules/asynckit/lib/iterate.js +75 -0
  35. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  36. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_parallel.js +25 -0
  37. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial.js +25 -0
  38. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  39. package/.cache/typescript/5.4/node_modules/asynckit/lib/state.js +37 -0
  40. package/.cache/typescript/5.4/node_modules/asynckit/lib/streamify.js +141 -0
  41. package/.cache/typescript/5.4/node_modules/asynckit/lib/terminator.js +29 -0
  42. package/.cache/typescript/5.4/node_modules/asynckit/package.json +63 -0
  43. package/.cache/typescript/5.4/node_modules/asynckit/parallel.js +43 -0
  44. package/.cache/typescript/5.4/node_modules/asynckit/serial.js +17 -0
  45. package/.cache/typescript/5.4/node_modules/asynckit/serialOrdered.js +75 -0
  46. package/.cache/typescript/5.4/node_modules/asynckit/stream.js +21 -0
  47. package/.cache/typescript/5.4/node_modules/combined-stream/License +19 -0
  48. package/.cache/typescript/5.4/node_modules/combined-stream/Readme.md +138 -0
  49. package/.cache/typescript/5.4/node_modules/combined-stream/lib/combined_stream.js +208 -0
  50. package/.cache/typescript/5.4/node_modules/combined-stream/package.json +25 -0
  51. package/.cache/typescript/5.4/node_modules/combined-stream/yarn.lock +17 -0
  52. package/.cache/typescript/5.4/node_modules/delayed-stream/License +19 -0
  53. package/.cache/typescript/5.4/node_modules/delayed-stream/Makefile +7 -0
  54. package/.cache/typescript/5.4/node_modules/delayed-stream/Readme.md +141 -0
  55. package/.cache/typescript/5.4/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  56. package/.cache/typescript/5.4/node_modules/delayed-stream/package.json +27 -0
  57. package/.cache/typescript/5.4/node_modules/form-data/License +19 -0
  58. package/.cache/typescript/5.4/node_modules/form-data/README.md.bak +358 -0
  59. package/.cache/typescript/5.4/node_modules/form-data/Readme.md +358 -0
  60. package/.cache/typescript/5.4/node_modules/form-data/index.d.ts +62 -0
  61. package/.cache/typescript/5.4/node_modules/form-data/lib/browser.js +2 -0
  62. package/.cache/typescript/5.4/node_modules/form-data/lib/form_data.js +501 -0
  63. package/.cache/typescript/5.4/node_modules/form-data/lib/populate.js +10 -0
  64. package/.cache/typescript/5.4/node_modules/form-data/package.json +68 -0
  65. package/.cache/typescript/5.4/node_modules/mime-db/HISTORY.md +507 -0
  66. package/.cache/typescript/5.4/node_modules/mime-db/LICENSE +23 -0
  67. package/.cache/typescript/5.4/node_modules/mime-db/README.md +100 -0
  68. package/.cache/typescript/5.4/node_modules/mime-db/db.json +8519 -0
  69. package/.cache/typescript/5.4/node_modules/mime-db/index.js +12 -0
  70. package/.cache/typescript/5.4/node_modules/mime-db/package.json +60 -0
  71. package/.cache/typescript/5.4/node_modules/mime-types/HISTORY.md +397 -0
  72. package/.cache/typescript/5.4/node_modules/mime-types/LICENSE +23 -0
  73. package/.cache/typescript/5.4/node_modules/mime-types/README.md +113 -0
  74. package/.cache/typescript/5.4/node_modules/mime-types/index.js +188 -0
  75. package/.cache/typescript/5.4/node_modules/mime-types/package.json +44 -0
  76. package/.cache/typescript/5.4/package-lock.json +113 -1
  77. package/.cache/typescript/5.4/package.json +1 -1
  78. package/README.md +12 -0
  79. package/index.js +19 -1
  80. package/package.json +18 -3
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
@@ -0,0 +1,15 @@
1
+ # Installation
2
+ > `npm install --save @types/tough-cookie`
3
+
4
+ # Summary
5
+ This package contains type definitions for tough-cookie (https://github.com/salesforce/tough-cookie).
6
+
7
+ # Details
8
+ Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tough-cookie.
9
+
10
+ ### Additional Details
11
+ * Last updated: Tue, 07 Nov 2023 20:08:00 GMT
12
+ * Dependencies: none
13
+
14
+ # Credits
15
+ These definitions were written by [Leonard Thieu](https://github.com/leonard-thieu), [LiJinyao](https://github.com/LiJinyao), and [Michael Wei](https://github.com/no2chem).
@@ -0,0 +1,321 @@
1
+ export const version: string;
2
+
3
+ export const PrefixSecurityEnum: Readonly<{
4
+ DISABLED: string;
5
+ SILENT: string;
6
+ STRICT: string;
7
+ }>;
8
+
9
+ /**
10
+ * Parse a cookie date string into a Date.
11
+ * Parses according to RFC6265 Section 5.1.1, not Date.parse().
12
+ */
13
+ export function parseDate(string: string): Date;
14
+
15
+ /**
16
+ * Format a Date into a RFC1123 string (the RFC6265-recommended format).
17
+ */
18
+ export function formatDate(date: Date): string;
19
+
20
+ /**
21
+ * Transforms a domain-name into a canonical domain-name.
22
+ * The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot
23
+ * and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265).
24
+ * For the most part, this function is idempotent (can be run again on its output without ill effects).
25
+ */
26
+ export function canonicalDomain(str: string): string;
27
+
28
+ /**
29
+ * Answers "does this real domain match the domain in a cookie?".
30
+ * The str is the "current" domain-name and the domStr is the "cookie" domain-name.
31
+ * Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match".
32
+ *
33
+ * The canonicalize parameter will run the other two parameters through canonicalDomain or not.
34
+ */
35
+ export function domainMatch(str: string, domStr: string, canonicalize?: boolean): boolean;
36
+
37
+ /**
38
+ * Given a current request/response path, gives the Path apropriate for storing in a cookie.
39
+ * This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC.
40
+ *
41
+ * The path parameter MUST be only the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.).
42
+ * This is the .pathname property of node's uri.parse() output.
43
+ */
44
+ export function defaultPath(path: string): string;
45
+
46
+ /**
47
+ * Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4.
48
+ * Returns a boolean.
49
+ *
50
+ * This is essentially a prefix-match where cookiePath is a prefix of reqPath.
51
+ */
52
+ export function pathMatch(reqPath: string, cookiePath: string): boolean;
53
+
54
+ /**
55
+ * alias for Cookie.parse(cookieString[, options])
56
+ */
57
+ export function parse(cookieString: string, options?: Cookie.ParseOptions): Cookie | undefined;
58
+
59
+ /**
60
+ * alias for Cookie.fromJSON(string)
61
+ */
62
+ export function fromJSON(string: string): Cookie;
63
+
64
+ export function getPublicSuffix(hostname: string): string | null;
65
+
66
+ export function cookieCompare(a: Cookie, b: Cookie): number;
67
+
68
+ export function permuteDomain(domain: string, allowSpecialUseDomain?: boolean): string[];
69
+
70
+ export function permutePath(path: string): string[];
71
+
72
+ export class Cookie {
73
+ static parse(cookieString: string, options?: Cookie.ParseOptions): Cookie | undefined;
74
+
75
+ static fromJSON(strOrObj: string | object): Cookie | null;
76
+
77
+ constructor(properties?: Cookie.Properties);
78
+
79
+ key: string;
80
+ value: string;
81
+ expires: Date | "Infinity";
82
+ maxAge: number | "Infinity" | "-Infinity";
83
+ domain: string | null;
84
+ path: string | null;
85
+ secure: boolean;
86
+ httpOnly: boolean;
87
+ extensions: string[] | null;
88
+ creation: Date | null;
89
+ creationIndex: number;
90
+
91
+ hostOnly: boolean | null;
92
+ pathIsDefault: boolean | null;
93
+ lastAccessed: Date | null;
94
+ sameSite: string;
95
+
96
+ toString(): string;
97
+
98
+ cookieString(): string;
99
+
100
+ setExpires(exp: Date | string): void;
101
+
102
+ setMaxAge(number: number): void;
103
+
104
+ expiryTime(now?: number): number;
105
+
106
+ expiryDate(now?: number): Date;
107
+
108
+ TTL(now?: Date): number | typeof Infinity;
109
+
110
+ isPersistent(): boolean;
111
+
112
+ canonicalizedDomain(): string | null;
113
+
114
+ cdomain(): string | null;
115
+
116
+ inspect(): string;
117
+
118
+ toJSON(): { [key: string]: any };
119
+
120
+ clone(): Cookie;
121
+
122
+ validate(): boolean | string;
123
+ }
124
+
125
+ export namespace Cookie {
126
+ interface ParseOptions {
127
+ loose?: boolean | undefined;
128
+ }
129
+
130
+ interface Properties {
131
+ key?: string | undefined;
132
+ value?: string | undefined;
133
+ expires?: Date | "Infinity" | undefined;
134
+ maxAge?: number | "Infinity" | "-Infinity" | undefined;
135
+ domain?: string | undefined;
136
+ path?: string | undefined;
137
+ secure?: boolean | undefined;
138
+ httpOnly?: boolean | undefined;
139
+ extensions?: string[] | undefined;
140
+ creation?: Date | undefined;
141
+ creationIndex?: number | undefined;
142
+
143
+ hostOnly?: boolean | undefined;
144
+ pathIsDefault?: boolean | undefined;
145
+ lastAccessed?: Date | undefined;
146
+ sameSite?: string | undefined;
147
+ }
148
+
149
+ interface Serialized {
150
+ [key: string]: any;
151
+ }
152
+ }
153
+
154
+ export class CookieJar {
155
+ static deserialize(serialized: CookieJar.Serialized | string, store?: Store): Promise<CookieJar>;
156
+ static deserialize(
157
+ serialized: CookieJar.Serialized | string,
158
+ store: Store,
159
+ cb: (err: Error | null, object: CookieJar) => void,
160
+ ): void;
161
+ static deserialize(
162
+ serialized: CookieJar.Serialized | string,
163
+ cb: (err: Error | null, object: CookieJar) => void,
164
+ ): void;
165
+
166
+ static deserializeSync(serialized: CookieJar.Serialized | string, store?: Store): CookieJar;
167
+
168
+ static fromJSON(string: string): CookieJar;
169
+
170
+ constructor(store?: Store, options?: CookieJar.Options);
171
+
172
+ setCookie(
173
+ cookieOrString: Cookie | string,
174
+ currentUrl: string,
175
+ options?: CookieJar.SetCookieOptions,
176
+ ): Promise<Cookie>;
177
+ setCookie(
178
+ cookieOrString: Cookie | string,
179
+ currentUrl: string,
180
+ options: CookieJar.SetCookieOptions,
181
+ cb: (err: Error | null, cookie: Cookie) => void,
182
+ ): void;
183
+ setCookie(
184
+ cookieOrString: Cookie | string,
185
+ currentUrl: string,
186
+ cb: (err: Error | null, cookie: Cookie) => void,
187
+ ): void;
188
+
189
+ setCookieSync(cookieOrString: Cookie | string, currentUrl: string, options?: CookieJar.SetCookieOptions): Cookie;
190
+
191
+ getCookies(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<Cookie[]>;
192
+ getCookies(
193
+ currentUrl: string,
194
+ options: CookieJar.GetCookiesOptions,
195
+ cb: (err: Error | null, cookies: Cookie[]) => void,
196
+ ): void;
197
+ getCookies(currentUrl: string, cb: (err: Error | null, cookies: Cookie[]) => void): void;
198
+
199
+ getCookiesSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): Cookie[];
200
+
201
+ getCookieString(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<string>;
202
+ getCookieString(
203
+ currentUrl: string,
204
+ options: CookieJar.GetCookiesOptions,
205
+ cb: (err: Error | null, cookies: string) => void,
206
+ ): void;
207
+ getCookieString(currentUrl: string, cb: (err: Error | null, cookies: string) => void): void;
208
+
209
+ getCookieStringSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): string;
210
+
211
+ getSetCookieStrings(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<string[]>;
212
+ getSetCookieStrings(
213
+ currentUrl: string,
214
+ options: CookieJar.GetCookiesOptions,
215
+ cb: (err: Error | null, cookies: string[]) => void,
216
+ ): void;
217
+ getSetCookieStrings(currentUrl: string, cb: (err: Error | null, cookies: string[]) => void): void;
218
+
219
+ getSetCookieStringsSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): string[];
220
+
221
+ serialize(): Promise<CookieJar.Serialized>;
222
+ serialize(cb: (err: Error | null, serializedObject: CookieJar.Serialized) => void): void;
223
+
224
+ serializeSync(): CookieJar.Serialized;
225
+
226
+ toJSON(): CookieJar.Serialized;
227
+
228
+ clone(store?: Store): Promise<CookieJar>;
229
+ clone(store: Store, cb: (err: Error | null, newJar: CookieJar) => void): void;
230
+ clone(cb: (err: Error | null, newJar: CookieJar) => void): void;
231
+
232
+ cloneSync(store?: Store): CookieJar;
233
+
234
+ removeAllCookies(): Promise<void>;
235
+ removeAllCookies(cb: (err: Error | null) => void): void;
236
+
237
+ removeAllCookiesSync(): void;
238
+ }
239
+
240
+ export namespace CookieJar {
241
+ interface Options {
242
+ allowSpecialUseDomain?: boolean | undefined;
243
+ looseMode?: boolean | undefined;
244
+ rejectPublicSuffixes?: boolean | undefined;
245
+ prefixSecurity?: string | undefined;
246
+ }
247
+
248
+ interface SetCookieOptions {
249
+ http?: boolean | undefined;
250
+ secure?: boolean | undefined;
251
+ now?: Date | undefined;
252
+ ignoreError?: boolean | undefined;
253
+ }
254
+
255
+ interface GetCookiesOptions {
256
+ http?: boolean | undefined;
257
+ secure?: boolean | undefined;
258
+ now?: Date | undefined;
259
+ expire?: boolean | undefined;
260
+ allPaths?: boolean | undefined;
261
+ }
262
+
263
+ interface Serialized {
264
+ version: string;
265
+ storeType: string;
266
+ rejectPublicSuffixes: boolean;
267
+ cookies: Cookie.Serialized[];
268
+ }
269
+ }
270
+
271
+ export abstract class Store {
272
+ synchronous: boolean;
273
+
274
+ findCookie(domain: string, path: string, key: string, cb: (err: Error | null, cookie: Cookie | null) => void): void;
275
+
276
+ findCookies(
277
+ domain: string,
278
+ path: string,
279
+ allowSpecialUseDomain: boolean,
280
+ cb: (err: Error | null, cookie: Cookie[]) => void,
281
+ ): void;
282
+
283
+ putCookie(cookie: Cookie, cb: (err: Error | null) => void): void;
284
+
285
+ updateCookie(oldCookie: Cookie, newCookie: Cookie, cb: (err: Error | null) => void): void;
286
+
287
+ removeCookie(domain: string, path: string, key: string, cb: (err: Error | null) => void): void;
288
+
289
+ removeCookies(domain: string, path: string, cb: (err: Error | null) => void): void;
290
+
291
+ getAllCookies(cb: (err: Error | null, cookie: Cookie[]) => void): void;
292
+ }
293
+
294
+ export class MemoryCookieStore extends Store {
295
+ findCookie(domain: string, path: string, key: string, cb: (err: Error | null, cookie: Cookie | null) => void): void;
296
+ findCookie(domain: string, path: string, key: string): Promise<Cookie | null>;
297
+
298
+ findCookies(
299
+ domain: string,
300
+ path: string,
301
+ allowSpecialUseDomain: boolean,
302
+ cb: (err: Error | null, cookie: Cookie[]) => void,
303
+ ): void;
304
+ findCookies(domain: string, path: string, cb: (err: Error | null, cookie: Cookie[]) => void): void;
305
+ findCookies(domain: string, path: string, allowSpecialUseDomain?: boolean): Promise<Cookie[]>;
306
+
307
+ putCookie(cookie: Cookie, cb: (err: Error | null) => void): void;
308
+ putCookie(cookie: Cookie): Promise<void>;
309
+
310
+ updateCookie(oldCookie: Cookie, newCookie: Cookie, cb: (err: Error | null) => void): void;
311
+ updateCookie(oldCookie: Cookie, newCookie: Cookie): Promise<void>;
312
+
313
+ removeCookie(domain: string, path: string, key: string, cb: (err: Error | null) => void): void;
314
+ removeCookie(domain: string, path: string, key: string): Promise<void>;
315
+
316
+ removeCookies(domain: string, path: string, cb: (err: Error | null) => void): void;
317
+ removeCookies(domain: string, path: string): Promise<void>;
318
+
319
+ getAllCookies(cb: (err: Error | null, cookie: Cookie[]) => void): void;
320
+ getAllCookies(): Promise<Cookie[]>;
321
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@types/tough-cookie",
3
+ "version": "4.0.5",
4
+ "description": "TypeScript definitions for tough-cookie",
5
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tough-cookie",
6
+ "license": "MIT",
7
+ "contributors": [
8
+ {
9
+ "name": "Leonard Thieu",
10
+ "githubUsername": "leonard-thieu",
11
+ "url": "https://github.com/leonard-thieu"
12
+ },
13
+ {
14
+ "name": "LiJinyao",
15
+ "githubUsername": "LiJinyao",
16
+ "url": "https://github.com/LiJinyao"
17
+ },
18
+ {
19
+ "name": "Michael Wei",
20
+ "githubUsername": "no2chem",
21
+ "url": "https://github.com/no2chem"
22
+ }
23
+ ],
24
+ "main": "",
25
+ "types": "index.d.ts",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
29
+ "directory": "types/tough-cookie"
30
+ },
31
+ "scripts": {},
32
+ "dependencies": {},
33
+ "typesPublisherContentHash": "adafa53ff34d3665a708d3ab1af232a46d4efb906d46f48d7d0cd3206c987a58",
34
+ "typeScriptVersion": "4.5"
35
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Alex Indigo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,233 @@
1
+ # asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit)
2
+
3
+ Minimal async jobs utility library, with streams support.
4
+
5
+ [![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit)
6
+ [![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit)
7
+ [![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit)
8
+
9
+ [![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master)
10
+ [![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit)
11
+ [![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit)
12
+
13
+ <!-- [![Readme](https://img.shields.io/badge/readme-tested-brightgreen.svg?style=flat)](https://www.npmjs.com/package/reamde) -->
14
+
15
+ AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects.
16
+ Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method.
17
+
18
+ It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators.
19
+
20
+ | compression | size |
21
+ | :----------------- | -------: |
22
+ | asynckit.js | 12.34 kB |
23
+ | asynckit.min.js | 4.11 kB |
24
+ | asynckit.min.js.gz | 1.47 kB |
25
+
26
+
27
+ ## Install
28
+
29
+ ```sh
30
+ $ npm install --save asynckit
31
+ ```
32
+
33
+ ## Examples
34
+
35
+ ### Parallel Jobs
36
+
37
+ Runs iterator over provided array in parallel. Stores output in the `result` array,
38
+ on the matching positions. In unlikely event of an error from one of the jobs,
39
+ will terminate rest of the active jobs (if abort function is provided)
40
+ and return error along with salvaged data to the main callback function.
41
+
42
+ #### Input Array
43
+
44
+ ```javascript
45
+ var parallel = require('asynckit').parallel
46
+ , assert = require('assert')
47
+ ;
48
+
49
+ var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
50
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
51
+ , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
52
+ , target = []
53
+ ;
54
+
55
+ parallel(source, asyncJob, function(err, result)
56
+ {
57
+ assert.deepEqual(result, expectedResult);
58
+ assert.deepEqual(target, expectedTarget);
59
+ });
60
+
61
+ // async job accepts one element from the array
62
+ // and a callback function
63
+ function asyncJob(item, cb)
64
+ {
65
+ // different delays (in ms) per item
66
+ var delay = item * 25;
67
+
68
+ // pretend different jobs take different time to finish
69
+ // and not in consequential order
70
+ var timeoutId = setTimeout(function() {
71
+ target.push(item);
72
+ cb(null, item * 2);
73
+ }, delay);
74
+
75
+ // allow to cancel "leftover" jobs upon error
76
+ // return function, invoking of which will abort this job
77
+ return clearTimeout.bind(null, timeoutId);
78
+ }
79
+ ```
80
+
81
+ More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js).
82
+
83
+ #### Input Object
84
+
85
+ Also it supports named jobs, listed via object.
86
+
87
+ ```javascript
88
+ var parallel = require('asynckit/parallel')
89
+ , assert = require('assert')
90
+ ;
91
+
92
+ var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
93
+ , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
94
+ , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
95
+ , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ]
96
+ , target = []
97
+ , keys = []
98
+ ;
99
+
100
+ parallel(source, asyncJob, function(err, result)
101
+ {
102
+ assert.deepEqual(result, expectedResult);
103
+ assert.deepEqual(target, expectedTarget);
104
+ assert.deepEqual(keys, expectedKeys);
105
+ });
106
+
107
+ // supports full value, key, callback (shortcut) interface
108
+ function asyncJob(item, key, cb)
109
+ {
110
+ // different delays (in ms) per item
111
+ var delay = item * 25;
112
+
113
+ // pretend different jobs take different time to finish
114
+ // and not in consequential order
115
+ var timeoutId = setTimeout(function() {
116
+ keys.push(key);
117
+ target.push(item);
118
+ cb(null, item * 2);
119
+ }, delay);
120
+
121
+ // allow to cancel "leftover" jobs upon error
122
+ // return function, invoking of which will abort this job
123
+ return clearTimeout.bind(null, timeoutId);
124
+ }
125
+ ```
126
+
127
+ More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js).
128
+
129
+ ### Serial Jobs
130
+
131
+ Runs iterator over provided array sequentially. Stores output in the `result` array,
132
+ on the matching positions. In unlikely event of an error from one of the jobs,
133
+ will not proceed to the rest of the items in the list
134
+ and return error along with salvaged data to the main callback function.
135
+
136
+ #### Input Array
137
+
138
+ ```javascript
139
+ var serial = require('asynckit/serial')
140
+ , assert = require('assert')
141
+ ;
142
+
143
+ var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
144
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
145
+ , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
146
+ , target = []
147
+ ;
148
+
149
+ serial(source, asyncJob, function(err, result)
150
+ {
151
+ assert.deepEqual(result, expectedResult);
152
+ assert.deepEqual(target, expectedTarget);
153
+ });
154
+
155
+ // extended interface (item, key, callback)
156
+ // also supported for arrays
157
+ function asyncJob(item, key, cb)
158
+ {
159
+ target.push(key);
160
+
161
+ // it will be automatically made async
162
+ // even it iterator "returns" in the same event loop
163
+ cb(null, item * 2);
164
+ }
165
+ ```
166
+
167
+ More examples could be found in [test/test-serial-array.js](test/test-serial-array.js).
168
+
169
+ #### Input Object
170
+
171
+ Also it supports named jobs, listed via object.
172
+
173
+ ```javascript
174
+ var serial = require('asynckit').serial
175
+ , assert = require('assert')
176
+ ;
177
+
178
+ var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
179
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
180
+ , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
181
+ , target = []
182
+ ;
183
+
184
+ var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
185
+ , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
186
+ , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
187
+ , target = []
188
+ ;
189
+
190
+
191
+ serial(source, asyncJob, function(err, result)
192
+ {
193
+ assert.deepEqual(result, expectedResult);
194
+ assert.deepEqual(target, expectedTarget);
195
+ });
196
+
197
+ // shortcut interface (item, callback)
198
+ // works for object as well as for the arrays
199
+ function asyncJob(item, cb)
200
+ {
201
+ target.push(item);
202
+
203
+ // it will be automatically made async
204
+ // even it iterator "returns" in the same event loop
205
+ cb(null, item * 2);
206
+ }
207
+ ```
208
+
209
+ More examples could be found in [test/test-serial-object.js](test/test-serial-object.js).
210
+
211
+ _Note: Since _object_ is an _unordered_ collection of properties,
212
+ it may produce unexpected results with sequential iterations.
213
+ Whenever order of the jobs' execution is important please use `serialOrdered` method._
214
+
215
+ ### Ordered Serial Iterations
216
+
217
+ TBD
218
+
219
+ For example [compare-property](compare-property) package.
220
+
221
+ ### Streaming interface
222
+
223
+ TBD
224
+
225
+ ## Want to Know More?
226
+
227
+ More examples can be found in [test folder](test/).
228
+
229
+ Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions.
230
+
231
+ ## License
232
+
233
+ AsyncKit is licensed under the MIT license.