@effectionx/watch 0.1.2
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 +46 -0
- package/esm/child-process.d.ts +13 -0
- package/esm/child-process.d.ts.map +1 -0
- package/esm/child-process.js +58 -0
- package/esm/deno.d.ts +29 -0
- package/esm/deno.d.ts.map +1 -0
- package/esm/deno.js +27 -0
- package/esm/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.d.ts +113 -0
- package/esm/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.d.ts.map +1 -0
- package/esm/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.js +18 -0
- package/esm/main.d.ts +2 -0
- package/esm/main.d.ts.map +1 -0
- package/esm/main.js +70 -0
- package/esm/mod.d.ts +5 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +4 -0
- package/esm/package.json +3 -0
- package/esm/stream-helpers.d.ts +4 -0
- package/esm/stream-helpers.d.ts.map +1 -0
- package/esm/stream-helpers.js +38 -0
- package/esm/watch.d.ts +72 -0
- package/esm/watch.d.ts.map +1 -0
- package/esm/watch.js +118 -0
- package/package.json +33 -0
- package/script/child-process.d.ts +13 -0
- package/script/child-process.d.ts.map +1 -0
- package/script/child-process.js +61 -0
- package/script/deno.d.ts +29 -0
- package/script/deno.d.ts.map +1 -0
- package/script/deno.js +29 -0
- package/script/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.d.ts +113 -0
- package/script/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.d.ts.map +1 -0
- package/script/deps/jsr.io/@gordonb/pipe/0.1.0/pipe.js +24 -0
- package/script/main.d.ts +2 -0
- package/script/main.d.ts.map +1 -0
- package/script/main.js +75 -0
- package/script/mod.d.ts +5 -0
- package/script/mod.d.ts.map +1 -0
- package/script/mod.js +20 -0
- package/script/package.json +3 -0
- package/script/stream-helpers.d.ts +4 -0
- package/script/stream-helpers.d.ts.map +1 -0
- package/script/stream-helpers.js +42 -0
- package/script/watch.d.ts +72 -0
- package/script/watch.d.ts.map +1 -0
- package/script/watch.js +124 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { race, sleep } from "effection";
|
|
2
|
+
export function debounce(ms) {
|
|
3
|
+
return (stream) => ({
|
|
4
|
+
*[Symbol.iterator]() {
|
|
5
|
+
let subscription = yield* stream;
|
|
6
|
+
return {
|
|
7
|
+
*next() {
|
|
8
|
+
let next = yield* subscription.next();
|
|
9
|
+
while (true) {
|
|
10
|
+
let result = yield* race([sleep(ms), subscription.next()]);
|
|
11
|
+
if (!result) {
|
|
12
|
+
return next;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
next = result;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function filter(predicate) {
|
|
24
|
+
return (stream) => ({
|
|
25
|
+
*[Symbol.iterator]() {
|
|
26
|
+
let subscription = yield* stream;
|
|
27
|
+
return {
|
|
28
|
+
*next() {
|
|
29
|
+
let next = yield* subscription.next();
|
|
30
|
+
while (!next.done && !predicate(next.value)) {
|
|
31
|
+
next = yield* subscription.next();
|
|
32
|
+
}
|
|
33
|
+
return next;
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
package/esm/watch.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type Operation, type Result, type Stream } from "effection";
|
|
2
|
+
import { type Process } from "./child-process.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a single start of the specified command
|
|
5
|
+
*/
|
|
6
|
+
export interface Start {
|
|
7
|
+
/**
|
|
8
|
+
* A result containing the {Process} on a successful start, or
|
|
9
|
+
* an error otherwise.
|
|
10
|
+
*/
|
|
11
|
+
result: Result<Process>;
|
|
12
|
+
/**
|
|
13
|
+
* An operation that resolves when the current start begins its
|
|
14
|
+
* shutdown.
|
|
15
|
+
*/
|
|
16
|
+
restarting: Operation<void>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A watch is a strema of process starts that happen in reaction
|
|
20
|
+
* to some source file changing on the file system.
|
|
21
|
+
*/
|
|
22
|
+
export interface Watch extends Stream<Result<Process>, never> {
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options available to configure what is watched
|
|
26
|
+
*/
|
|
27
|
+
export interface WatchOptions {
|
|
28
|
+
/**
|
|
29
|
+
* The directory to watch
|
|
30
|
+
*/
|
|
31
|
+
path: string;
|
|
32
|
+
/**
|
|
33
|
+
* The command to run (and re-run every time a change is detected)
|
|
34
|
+
*/
|
|
35
|
+
cmd: string;
|
|
36
|
+
/**
|
|
37
|
+
* @ignore
|
|
38
|
+
*/
|
|
39
|
+
event?: "all" | "change";
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a watch configuration that observes file system changes and executes a command
|
|
43
|
+
* when changes are detected. The watch can be consumed as a stream of process starts.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const watcher = yield* watch({
|
|
48
|
+
* path: './src',
|
|
49
|
+
* cmd: 'npm test'
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @param options - Configuration options for the watch
|
|
54
|
+
* @param options.path - The directory path to watch for changes
|
|
55
|
+
* @param options.cmd - The command to execute when changes are detected
|
|
56
|
+
* @param options.event - The type of event to watch for ('all' or 'change', defaults to 'all')
|
|
57
|
+
*
|
|
58
|
+
* @returns A Stream that emits `Result<Process>` for each command execution
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* - Uses chokidar for file system watching
|
|
62
|
+
* - Respects .gitignore patterns if present
|
|
63
|
+
* - Implements debouncing to prevent rapid successive executions
|
|
64
|
+
* - Filters out stale events using the fresh() function
|
|
65
|
+
*
|
|
66
|
+
* @throws Will throw an error if the process execution fails
|
|
67
|
+
*
|
|
68
|
+
* @see {@link WatchOptions} for configuration options
|
|
69
|
+
* @see {@link Process} for process execution details
|
|
70
|
+
*/
|
|
71
|
+
export declare function watch(options: WatchOptions): Stream<Start, never>;
|
|
72
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,SAAS,EAEd,KAAK,MAAM,EAEX,KAAK,MAAM,EAEZ,MAAM,WAAW,CAAC;AAKnB,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB;;;OAGG;IACH,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,KAAM,SAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;CAAG;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CA0DjE"}
|
package/esm/watch.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { exists } from "@std/fs";
|
|
2
|
+
import { join, relative } from "@std/path";
|
|
3
|
+
import chokidar from "chokidar";
|
|
4
|
+
import { call, createChannel, createSignal, Err, Ok, resource, spawn, withResolvers, } from "effection";
|
|
5
|
+
import { default as createIgnore } from "ignore";
|
|
6
|
+
import { pipe } from "./deps/jsr.io/@gordonb/pipe/0.1.0/pipe.js";
|
|
7
|
+
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { useProcess } from "./child-process.js";
|
|
9
|
+
import { debounce } from "./stream-helpers.js";
|
|
10
|
+
/**
|
|
11
|
+
* Create a watch configuration that observes file system changes and executes a command
|
|
12
|
+
* when changes are detected. The watch can be consumed as a stream of process starts.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const watcher = yield* watch({
|
|
17
|
+
* path: './src',
|
|
18
|
+
* cmd: 'npm test'
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param options - Configuration options for the watch
|
|
23
|
+
* @param options.path - The directory path to watch for changes
|
|
24
|
+
* @param options.cmd - The command to execute when changes are detected
|
|
25
|
+
* @param options.event - The type of event to watch for ('all' or 'change', defaults to 'all')
|
|
26
|
+
*
|
|
27
|
+
* @returns A Stream that emits `Result<Process>` for each command execution
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* - Uses chokidar for file system watching
|
|
31
|
+
* - Respects .gitignore patterns if present
|
|
32
|
+
* - Implements debouncing to prevent rapid successive executions
|
|
33
|
+
* - Filters out stale events using the fresh() function
|
|
34
|
+
*
|
|
35
|
+
* @throws Will throw an error if the process execution fails
|
|
36
|
+
*
|
|
37
|
+
* @see {@link WatchOptions} for configuration options
|
|
38
|
+
* @see {@link Process} for process execution details
|
|
39
|
+
*/
|
|
40
|
+
export function watch(options) {
|
|
41
|
+
return resource(function* (provide) {
|
|
42
|
+
let starts = createChannel();
|
|
43
|
+
let input = createSignal();
|
|
44
|
+
let gitignored = yield* findIgnores(options.path);
|
|
45
|
+
let watcher = chokidar.watch(options.path, {
|
|
46
|
+
ignored: (path) => {
|
|
47
|
+
let relpath = relative(options.path, path);
|
|
48
|
+
let isGit = relpath === ".git" || relpath.startsWith(".git");
|
|
49
|
+
return isGit || gitignored(path);
|
|
50
|
+
},
|
|
51
|
+
ignoreInitial: true,
|
|
52
|
+
});
|
|
53
|
+
let { event = "all" } = options;
|
|
54
|
+
watcher.on(event, (...args) => {
|
|
55
|
+
if (event !== "all") {
|
|
56
|
+
args.unshift(event);
|
|
57
|
+
}
|
|
58
|
+
let [, path] = args;
|
|
59
|
+
if (fresh(500)(args) && !gitignored(path)) {
|
|
60
|
+
input.send(args);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
let changes = yield* pipe(input, debounce(100));
|
|
64
|
+
yield* spawn(function* () {
|
|
65
|
+
while (true) {
|
|
66
|
+
let task = yield* spawn(function* () {
|
|
67
|
+
let restarting = withResolvers();
|
|
68
|
+
try {
|
|
69
|
+
let process = yield* useProcess(options.cmd);
|
|
70
|
+
yield* starts.send({
|
|
71
|
+
result: Ok(process),
|
|
72
|
+
restarting: restarting.operation,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
yield* starts.send({
|
|
77
|
+
result: Err(error),
|
|
78
|
+
restarting: restarting.operation,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
yield* changes.next();
|
|
82
|
+
restarting.resolve();
|
|
83
|
+
});
|
|
84
|
+
yield* task;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
try {
|
|
88
|
+
yield* provide(yield* starts);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
yield* call(() => watcher.close());
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* locate a `.gitignore` file if it exists and use it to filter
|
|
97
|
+
* out any change events against paths that are matched by it
|
|
98
|
+
*/
|
|
99
|
+
function* findIgnores(path) {
|
|
100
|
+
let gitignore = join(path, ".gitignore");
|
|
101
|
+
if (yield* call(() => exists(gitignore))) {
|
|
102
|
+
let ignores = createIgnore();
|
|
103
|
+
let buffer = yield* call(() => readFile(gitignore));
|
|
104
|
+
ignores.add(buffer.toString());
|
|
105
|
+
return (pathname) => {
|
|
106
|
+
let relativePathname = relative(path, pathname).trim();
|
|
107
|
+
return relativePathname !== "" && ignores.ignores(relativePathname);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return () => false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function fresh(staletime) {
|
|
115
|
+
return ([, , stats]) => {
|
|
116
|
+
return !stats || (Date.now() - stats.mtimeMs) < staletime;
|
|
117
|
+
};
|
|
118
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effectionx/watch",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"author": "engineering@frontside.com",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/thefrontside/effectionx.git"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/thefrontside/effectionx/issues"
|
|
12
|
+
},
|
|
13
|
+
"main": "./script/main.js",
|
|
14
|
+
"module": "./esm/main.js",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": "./esm/main.js",
|
|
18
|
+
"require": "./script/main.js"
|
|
19
|
+
},
|
|
20
|
+
"./lib": {
|
|
21
|
+
"import": "./esm/mod.js",
|
|
22
|
+
"require": "./script/mod.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">= 16"
|
|
27
|
+
},
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@types/node": "16.18.126"
|
|
31
|
+
},
|
|
32
|
+
"_generatedBy": "dnt@dev"
|
|
33
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Signals } from "@types/node";
|
|
2
|
+
import type { Operation, Stream } from "effection";
|
|
3
|
+
export interface ProcessResult {
|
|
4
|
+
code: number;
|
|
5
|
+
signal?: Signals;
|
|
6
|
+
}
|
|
7
|
+
export interface Process extends Operation<ProcessResult> {
|
|
8
|
+
stdout: Stream<string, void>;
|
|
9
|
+
stderr: Stream<string, void>;
|
|
10
|
+
send(signal: Signals): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function useProcess(command: string): Operation<Process>;
|
|
13
|
+
//# sourceMappingURL=child-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process.d.ts","sourceRoot":"","sources":["../src/child-process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,OAAQ,SAAQ,SAAS,CAAC,aAAa,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CA6D9D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useProcess = useProcess;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const effection_1 = require("effection");
|
|
6
|
+
function useProcess(command) {
|
|
7
|
+
return (0, effection_1.resource)(function* (provide) {
|
|
8
|
+
let closed = (0, effection_1.withResolvers)();
|
|
9
|
+
let stdout = (0, effection_1.createSignal)();
|
|
10
|
+
let stderr = (0, effection_1.createSignal)();
|
|
11
|
+
let nodeproc = (0, node_child_process_1.spawn)(command, {
|
|
12
|
+
shell: true,
|
|
13
|
+
stdio: "pipe",
|
|
14
|
+
});
|
|
15
|
+
// fail on an "error" event, but only until the process is successfully spawned.
|
|
16
|
+
yield* (0, effection_1.spawn)(function* () {
|
|
17
|
+
yield* (0, effection_1.spawn)(() => (0, effection_1.action)((_, reject) => {
|
|
18
|
+
nodeproc.on("error", reject);
|
|
19
|
+
return () => nodeproc.off("error", reject);
|
|
20
|
+
}));
|
|
21
|
+
yield* (0, effection_1.action)((resolve) => {
|
|
22
|
+
nodeproc.on("spawn", resolve);
|
|
23
|
+
return () => nodeproc.off("spawn", resolve);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
let onstdout = (chunk) => {
|
|
27
|
+
stdout.send(String(chunk));
|
|
28
|
+
};
|
|
29
|
+
let onstderr = (chunk) => {
|
|
30
|
+
stderr.send(String(chunk));
|
|
31
|
+
};
|
|
32
|
+
let onclose = (code, signal) => {
|
|
33
|
+
stdout.close();
|
|
34
|
+
stderr.close();
|
|
35
|
+
closed.resolve({ code, signal });
|
|
36
|
+
};
|
|
37
|
+
try {
|
|
38
|
+
nodeproc.stdout.on("data", onstdout);
|
|
39
|
+
nodeproc.stderr.on("data", onstderr);
|
|
40
|
+
nodeproc.on("close", onclose);
|
|
41
|
+
yield* provide({
|
|
42
|
+
[Symbol.iterator]: closed.operation[Symbol.iterator],
|
|
43
|
+
stdout,
|
|
44
|
+
stderr,
|
|
45
|
+
*send(signal) {
|
|
46
|
+
nodeproc.kill(signal);
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
nodeproc.kill("SIGINT");
|
|
52
|
+
nodeproc.kill("SIGTERM");
|
|
53
|
+
yield* closed.operation;
|
|
54
|
+
stdout.close();
|
|
55
|
+
stderr.close();
|
|
56
|
+
nodeproc.stdout.off("data", onstdout);
|
|
57
|
+
nodeproc.stderr.off("data", onstderr);
|
|
58
|
+
nodeproc.off("close", onclose);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
package/script/deno.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
let name: string;
|
|
3
|
+
let version: string;
|
|
4
|
+
let license: string;
|
|
5
|
+
let exports: {
|
|
6
|
+
".": string;
|
|
7
|
+
"./lib": string;
|
|
8
|
+
};
|
|
9
|
+
let imports: {
|
|
10
|
+
effection: string;
|
|
11
|
+
ignore: string;
|
|
12
|
+
"@std/fs": string;
|
|
13
|
+
"@std/path": string;
|
|
14
|
+
chokidar: string;
|
|
15
|
+
zod: string;
|
|
16
|
+
"zod-opts": string;
|
|
17
|
+
};
|
|
18
|
+
namespace lint {
|
|
19
|
+
namespace rules {
|
|
20
|
+
let exclude: string[];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
namespace tasks {
|
|
24
|
+
let compile: string;
|
|
25
|
+
let dev: string;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export default _default;
|
|
29
|
+
//# sourceMappingURL=deno.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deno.d.ts","sourceRoot":"","sources":["../src/deno.js"],"names":[],"mappings":""}
|
package/script/deno.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = {
|
|
4
|
+
"name": "@effectionx/watch",
|
|
5
|
+
"version": "0.1.2",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./main.ts",
|
|
9
|
+
"./lib": "./mod.ts"
|
|
10
|
+
},
|
|
11
|
+
"imports": {
|
|
12
|
+
"effection": "npm:effection@^4.0.0-alpha.6",
|
|
13
|
+
"ignore": "npm:ignore@^7.0.3",
|
|
14
|
+
"@std/fs": "jsr:@std/fs@^1.0.11",
|
|
15
|
+
"@std/path": "jsr:@std/path@^1.0.8",
|
|
16
|
+
"chokidar": "npm:chokidar@^4.0.3",
|
|
17
|
+
"zod": "npm:zod@^3.20.2",
|
|
18
|
+
"zod-opts": "npm:zod-opts@0.1.8"
|
|
19
|
+
},
|
|
20
|
+
"lint": {
|
|
21
|
+
"rules": {
|
|
22
|
+
"exclude": ["prefer-const", "require-yield"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"tasks": {
|
|
26
|
+
"compile": "deno compile --allow-env --allow-read --allow-run main.ts",
|
|
27
|
+
"dev": "deno --allow-env --allow-read --allow-run main.ts deno task compile"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies functions over value from left to right.
|
|
3
|
+
* @param value - The initial value to pipe
|
|
4
|
+
* @param fns - The functions to pipe the value through
|
|
5
|
+
* @returns The final value after all functions have been applied
|
|
6
|
+
*/
|
|
7
|
+
export declare function pipe<A>(value: A): A;
|
|
8
|
+
export declare function pipe<A, B>(value: A, a: (input: A) => B): B;
|
|
9
|
+
export declare function pipe<A, B, C>(value: A, a: (input: A) => B, b: (input: B) => C): C;
|
|
10
|
+
export declare function pipe<A, B, C, D>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D): D;
|
|
11
|
+
export declare function pipe<A, B, C, D, E>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E): E;
|
|
12
|
+
export declare function pipe<A, B, C, D, E, F>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F): F;
|
|
13
|
+
export declare function pipe<A, B, C, D, E, F, G>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G): G;
|
|
14
|
+
export declare function pipe<A, B, C, D, E, F, G, H>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H): H;
|
|
15
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I): I;
|
|
16
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J): J;
|
|
17
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K): K;
|
|
18
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L): L;
|
|
19
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M): M;
|
|
20
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N): N;
|
|
21
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O): O;
|
|
22
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P): P;
|
|
23
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q): Q;
|
|
24
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R): R;
|
|
25
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S): S;
|
|
26
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S, s: (input: S) => T): T;
|
|
27
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(value: A, a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S, s: (input: S) => T, t: (input: T) => U): U;
|
|
28
|
+
export declare function pipe(value: unknown, ...fns: Array<(input: unknown) => unknown>): unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Composes functions from left to right
|
|
31
|
+
* @param fns - The functions to compose
|
|
32
|
+
* @returns A function that applies the composed functions in order
|
|
33
|
+
*/
|
|
34
|
+
export declare function flow<A>(a: (input: A) => A): (input: A) => A;
|
|
35
|
+
export declare function flow<A, B>(a: (input: A) => B): (input: A) => B;
|
|
36
|
+
export declare function flow<A, B, C>(a: (input: A) => B, b: (input: B) => C): (input: A) => C;
|
|
37
|
+
export declare function flow<A, B, C, D>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D): (input: A) => D;
|
|
38
|
+
export declare function flow<A, B, C, D, E>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E): (input: A) => E;
|
|
39
|
+
export declare function flow<A, B, C, D, E, F>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F): (input: A) => F;
|
|
40
|
+
export declare function flow<A, B, C, D, E, F, G>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G): (input: A) => G;
|
|
41
|
+
export declare function flow<A, B, C, D, E, F, G, H>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H): (input: A) => H;
|
|
42
|
+
export declare function flow<A, B, C, D, E, F, G, H, I>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I): (input: A) => I;
|
|
43
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J): (input: A) => J;
|
|
44
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K): (input: A) => K;
|
|
45
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L): (input: A) => L;
|
|
46
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M): (input: A) => M;
|
|
47
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N): (input: A) => N;
|
|
48
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O): (input: A) => O;
|
|
49
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P): (input: A) => P;
|
|
50
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q): (input: A) => Q;
|
|
51
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R): (input: A) => R;
|
|
52
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S): (input: A) => S;
|
|
53
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S, s: (input: S) => T): (input: A) => T;
|
|
54
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(a: (input: A) => B, b: (input: B) => C, c: (input: C) => D, d: (input: D) => E, e: (input: E) => F, f: (input: F) => G, g: (input: G) => H, h: (input: H) => I, i: (input: I) => J, j: (input: J) => K, k: (input: K) => L, l: (input: L) => M, m: (input: M) => N, n: (input: N) => O, o: (input: O) => P, p: (input: P) => Q, q: (input: Q) => R, r: (input: R) => S, s: (input: S) => T, t: (input: T) => U): (input: A) => U;
|
|
55
|
+
export declare function flow(...fns: Array<(input: unknown) => unknown>): (input: unknown) => unknown;
|
|
56
|
+
/** An awaitable value (a value that is either T or a promise for T) */
|
|
57
|
+
export type Awaitable<T> = T | Promise<T>;
|
|
58
|
+
/**
|
|
59
|
+
* Applies sync or async functions over value from left to right.
|
|
60
|
+
* @param value - The initial value to pipe
|
|
61
|
+
* @param fns - The functions to pipe the value through
|
|
62
|
+
* @returns a promise for final value after all functions have been applied
|
|
63
|
+
*/
|
|
64
|
+
export declare function pipeAsync<A>(value: A): Promise<A>;
|
|
65
|
+
export declare function pipeAsync<A, B>(value: A, a: (input: A) => Awaitable<B>): Promise<B>;
|
|
66
|
+
export declare function pipeAsync<A, B, C>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>): Promise<C>;
|
|
67
|
+
export declare function pipeAsync<A, B, C, D>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>): Promise<D>;
|
|
68
|
+
export declare function pipeAsync<A, B, C, D, E>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>): Promise<E>;
|
|
69
|
+
export declare function pipeAsync<A, B, C, D, E, F>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>): Promise<F>;
|
|
70
|
+
export declare function pipeAsync<A, B, C, D, E, F, G>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>): Promise<G>;
|
|
71
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>): Promise<H>;
|
|
72
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>): Promise<I>;
|
|
73
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>): Promise<J>;
|
|
74
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>): Promise<K>;
|
|
75
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>): Promise<L>;
|
|
76
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>): Promise<M>;
|
|
77
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>): Promise<N>;
|
|
78
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>): Promise<O>;
|
|
79
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>): Promise<P>;
|
|
80
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>): Promise<Q>;
|
|
81
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>): Promise<R>;
|
|
82
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>): Promise<S>;
|
|
83
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>, s: (input: S) => Awaitable<T>): Promise<T>;
|
|
84
|
+
export declare function pipeAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(value: A, a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>, s: (input: S) => Awaitable<T>, t: (input: T) => Awaitable<U>): Promise<U>;
|
|
85
|
+
export declare function pipeAsync(value: unknown, ...fns: Array<(input: unknown) => Awaitable<unknown>>): Promise<unknown>;
|
|
86
|
+
/**
|
|
87
|
+
* Composes async or sync functions from left to right
|
|
88
|
+
* @param fns - The functions to compose
|
|
89
|
+
* @returns A function that applies the composed functions in left-to-right order
|
|
90
|
+
*/
|
|
91
|
+
export declare function flowAsync<A>(a: (input: A) => Awaitable<A>): (input: A) => Promise<A>;
|
|
92
|
+
export declare function flowAsync<A, B>(a: (input: A) => Awaitable<B>): (input: A) => Promise<B>;
|
|
93
|
+
export declare function flowAsync<A, B, C>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>): (input: A) => Promise<C>;
|
|
94
|
+
export declare function flowAsync<A, B, C, D>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>): (input: A) => Promise<D>;
|
|
95
|
+
export declare function flowAsync<A, B, C, D, E>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>): (input: A) => Promise<E>;
|
|
96
|
+
export declare function flowAsync<A, B, C, D, E, F>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>): (input: A) => Promise<F>;
|
|
97
|
+
export declare function flowAsync<A, B, C, D, E, F, G>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>): (input: A) => Promise<G>;
|
|
98
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>): (input: A) => Promise<H>;
|
|
99
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>): (input: A) => Promise<I>;
|
|
100
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>): (input: A) => Promise<J>;
|
|
101
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>): (input: A) => Promise<K>;
|
|
102
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>): (input: A) => Promise<L>;
|
|
103
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>): (input: A) => Promise<M>;
|
|
104
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>): (input: A) => Promise<N>;
|
|
105
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>): (input: A) => Promise<O>;
|
|
106
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>): (input: A) => Promise<P>;
|
|
107
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>): (input: A) => Promise<Q>;
|
|
108
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>): (input: A) => Promise<R>;
|
|
109
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>): (input: A) => Promise<S>;
|
|
110
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>, s: (input: S) => Awaitable<T>): (input: A) => Promise<T>;
|
|
111
|
+
export declare function flowAsync<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(a: (input: A) => Awaitable<B>, b: (input: B) => Awaitable<C>, c: (input: C) => Awaitable<D>, d: (input: D) => Awaitable<E>, e: (input: E) => Awaitable<F>, f: (input: F) => Awaitable<G>, g: (input: G) => Awaitable<H>, h: (input: H) => Awaitable<I>, i: (input: I) => Awaitable<J>, j: (input: J) => Awaitable<K>, k: (input: K) => Awaitable<L>, l: (input: L) => Awaitable<M>, m: (input: M) => Awaitable<N>, n: (input: N) => Awaitable<O>, o: (input: O) => Awaitable<P>, p: (input: P) => Awaitable<Q>, q: (input: Q) => Awaitable<R>, r: (input: R) => Awaitable<S>, s: (input: S) => Awaitable<T>, t: (input: T) => Awaitable<U>): (input: A) => Promise<U>;
|
|
112
|
+
export declare function flowAsync(...fns: Array<(input: unknown) => Awaitable<unknown>>): (input: unknown) => Promise<unknown>;
|
|
113
|
+
//# sourceMappingURL=pipe.d.ts.map
|