ppipe 2.6.5 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -13
- package/README.md +273 -329
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/pipe.d.ts +3 -0
- package/dist/pipe.d.ts.map +1 -0
- package/dist/pipe.js +211 -0
- package/dist/pipe.js.map +1 -0
- package/dist/placeholder.d.ts +4 -0
- package/dist/placeholder.d.ts.map +1 -0
- package/dist/placeholder.js +26 -0
- package/dist/placeholder.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +65 -38
- package/.eslintrc.js +0 -223
- package/.github/CONTRIBUTING.md +0 -13
- package/.github/ISSUE_TEMPLATE.md +0 -17
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -30
- package/.travis.yml +0 -4
- package/CODE_OF_CONDUCT.md +0 -46
- package/logo/logo_s.png +0 -0
- package/prettier.config.js +0 -8
- package/src/getPropertyByPath.js +0 -35
- package/src/index.js +0 -159
- package/src/lib/isFunction.js +0 -1
- package/src/lib/isPromise.js +0 -3
- package/test/examples.js +0 -175
- package/test/test.js +0 -603
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// ==========================================
|
|
2
|
+
// ppipe - Strictly-Typed Piping Library
|
|
3
|
+
// ==========================================
|
|
4
|
+
import { _ } from "./placeholder.js";
|
|
5
|
+
import { createPipe } from "./pipe.js";
|
|
6
|
+
export { isPlaceholder } from "./placeholder.js";
|
|
7
|
+
// ==========================================
|
|
8
|
+
// Factory Creation
|
|
9
|
+
// ==========================================
|
|
10
|
+
function createPpipe(extensions) {
|
|
11
|
+
// The main factory function
|
|
12
|
+
function ppipeFunc(value) {
|
|
13
|
+
return createPipe(value, extensions);
|
|
14
|
+
}
|
|
15
|
+
// Create the extend function
|
|
16
|
+
const extendFunc = (newExtensions) => createPpipe({ ...extensions, ...newExtensions });
|
|
17
|
+
// Combine function with properties using Object.assign
|
|
18
|
+
// This returns the correct intersection type
|
|
19
|
+
const factory = Object.assign(ppipeFunc, {
|
|
20
|
+
_: _,
|
|
21
|
+
extend: extendFunc,
|
|
22
|
+
});
|
|
23
|
+
return factory;
|
|
24
|
+
}
|
|
25
|
+
// ==========================================
|
|
26
|
+
// Default Export
|
|
27
|
+
// ==========================================
|
|
28
|
+
// Create the default ppipe instance with no extensions
|
|
29
|
+
const ppipe = createPpipe({});
|
|
30
|
+
// Export the placeholder for convenient destructuring
|
|
31
|
+
export { _ };
|
|
32
|
+
// Default export for CommonJS compatibility
|
|
33
|
+
export default ppipe;
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,wCAAwC;AACxC,6CAA6C;AAG7C,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,6CAA6C;AAC7C,mBAAmB;AACnB,6CAA6C;AAE7C,SAAS,WAAW,CAAuB,UAAa;IACvD,4BAA4B;IAC5B,SAAS,SAAS,CAAI,KAAQ;QAC7B,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,CAA0B,aAAmB,EAAyB,EAAE,CAC1F,WAAW,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IAElD,uDAAuD;IACvD,6CAA6C;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;QACxC,CAAC,EAAE,CAAC;QACJ,MAAM,EAAE,UAAU;KAClB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,6CAA6C;AAC7C,iBAAiB;AACjB,6CAA6C;AAE7C,uDAAuD;AACvD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAE9B,sDAAsD;AACtD,OAAO,EAAE,CAAC,EAAE,CAAC;AAEb,4CAA4C;AAC5C,eAAe,KAAK,CAAC"}
|
package/dist/pipe.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAgB,OAAO,EAAE,MAAM,YAAY,CAAC;AAuTxF,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAiBjH"}
|
package/dist/pipe.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// ==========================================
|
|
2
|
+
// Pipe Implementation (Zero Type Assertions)
|
|
3
|
+
// ==========================================
|
|
4
|
+
import { isPlaceholder } from "./placeholder.js";
|
|
5
|
+
function hasProperty(obj, key) {
|
|
6
|
+
return key in obj;
|
|
7
|
+
}
|
|
8
|
+
function isThenable(value) {
|
|
9
|
+
if (value === null || value === undefined || typeof value !== "object") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (!hasProperty(value, "then")) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return typeof value.then === "function";
|
|
16
|
+
}
|
|
17
|
+
function createSettledPromise(promise) {
|
|
18
|
+
return Promise.resolve(promise).then((value) => ({ resolved: true, value }), (error) => ({ resolved: false, error }));
|
|
19
|
+
}
|
|
20
|
+
// ==========================================
|
|
21
|
+
// Internal call helper - resolves placeholders
|
|
22
|
+
// ==========================================
|
|
23
|
+
function callWithPlaceholders(fn, value, params) {
|
|
24
|
+
if (params.length === 0) {
|
|
25
|
+
return fn(value);
|
|
26
|
+
}
|
|
27
|
+
const args = [];
|
|
28
|
+
let hasPlaceholder = false;
|
|
29
|
+
for (const p of params) {
|
|
30
|
+
if (isPlaceholder(p)) {
|
|
31
|
+
args.push(value);
|
|
32
|
+
hasPlaceholder = true;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
args.push(p);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!hasPlaceholder) {
|
|
39
|
+
args.push(value);
|
|
40
|
+
}
|
|
41
|
+
return fn(...args);
|
|
42
|
+
}
|
|
43
|
+
// ==========================================
|
|
44
|
+
// Pipe Class with Overloads
|
|
45
|
+
// ==========================================
|
|
46
|
+
class PipeImpl {
|
|
47
|
+
constructor(state, extensions) {
|
|
48
|
+
this.state = state;
|
|
49
|
+
this.extensions = extensions;
|
|
50
|
+
}
|
|
51
|
+
// ==========================================
|
|
52
|
+
// Overloads from Pipe interface (type safety for callers)
|
|
53
|
+
// ==========================================
|
|
54
|
+
// Implementation handles all pipe overloads - callers see specific types via interface
|
|
55
|
+
pipe(fn, ...params) {
|
|
56
|
+
if (this.state.kind === "error") {
|
|
57
|
+
return createPipeWithExtensions({ kind: "error", error: this.state.error }, this.extensions);
|
|
58
|
+
}
|
|
59
|
+
if (this.state.kind === "async") {
|
|
60
|
+
const nextPromise = this.state.settledPromise.then((result) => {
|
|
61
|
+
if (!result.resolved) {
|
|
62
|
+
return { resolved: false, error: result.error };
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const callResult = callWithPlaceholders(fn, result.value, params);
|
|
66
|
+
if (isThenable(callResult)) {
|
|
67
|
+
return createSettledPromise(callResult);
|
|
68
|
+
}
|
|
69
|
+
return { resolved: true, value: callResult };
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
return { resolved: false, error: e };
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return createPipeWithExtensions({ kind: "async", settledPromise: nextPromise }, this.extensions);
|
|
76
|
+
}
|
|
77
|
+
// Sync state - value is guaranteed non-thenable (createPipe detects thenables)
|
|
78
|
+
const syncValue = this.state.value;
|
|
79
|
+
try {
|
|
80
|
+
const callResult = callWithPlaceholders(fn, syncValue, params);
|
|
81
|
+
if (isThenable(callResult)) {
|
|
82
|
+
return createPipeWithExtensions({ kind: "async", settledPromise: createSettledPromise(callResult) }, this.extensions);
|
|
83
|
+
}
|
|
84
|
+
return createPipeWithExtensions({ kind: "sync", value: callResult }, this.extensions);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
return createPipeWithExtensions({ kind: "error", error: e }, this.extensions);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Value getter - returns union type
|
|
91
|
+
get value() {
|
|
92
|
+
if (this.state.kind === "error") {
|
|
93
|
+
throw this.state.error;
|
|
94
|
+
}
|
|
95
|
+
if (this.state.kind === "async") {
|
|
96
|
+
return this.state.settledPromise.then((result) => {
|
|
97
|
+
if (result.resolved) {
|
|
98
|
+
return result.value;
|
|
99
|
+
}
|
|
100
|
+
throw result.error;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return this.state.value;
|
|
104
|
+
}
|
|
105
|
+
get val() {
|
|
106
|
+
return this.value;
|
|
107
|
+
}
|
|
108
|
+
then(onFulfilled, onRejected) {
|
|
109
|
+
if (this.state.kind === "error") {
|
|
110
|
+
if (onRejected) {
|
|
111
|
+
try {
|
|
112
|
+
return Promise.resolve(onRejected(this.state.error));
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
return Promise.reject(e);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return Promise.reject(this.state.error);
|
|
119
|
+
}
|
|
120
|
+
if (this.state.kind === "async") {
|
|
121
|
+
return this.state.settledPromise.then((result) => {
|
|
122
|
+
if (result.resolved) {
|
|
123
|
+
if (onFulfilled) {
|
|
124
|
+
return onFulfilled(result.value);
|
|
125
|
+
}
|
|
126
|
+
return result.value; // No assertion - overload ensures return type
|
|
127
|
+
}
|
|
128
|
+
if (onRejected) {
|
|
129
|
+
return onRejected(result.error);
|
|
130
|
+
}
|
|
131
|
+
throw result.error;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (onFulfilled) {
|
|
135
|
+
try {
|
|
136
|
+
return Promise.resolve(onFulfilled(this.state.value));
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return Promise.reject(e);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return Promise.resolve(this.state.value); // No assertion - overload ensures return type
|
|
143
|
+
}
|
|
144
|
+
catch(onRejected) {
|
|
145
|
+
if (this.state.kind === "error") {
|
|
146
|
+
if (onRejected) {
|
|
147
|
+
try {
|
|
148
|
+
return Promise.resolve(onRejected(this.state.error));
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
return Promise.reject(e);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return Promise.reject(this.state.error);
|
|
155
|
+
}
|
|
156
|
+
if (this.state.kind === "async") {
|
|
157
|
+
return this.state.settledPromise.then((result) => {
|
|
158
|
+
if (result.resolved) {
|
|
159
|
+
return result.value;
|
|
160
|
+
}
|
|
161
|
+
if (onRejected) {
|
|
162
|
+
return onRejected(result.error);
|
|
163
|
+
}
|
|
164
|
+
throw result.error;
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
return Promise.resolve(this.state.value);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Type predicate to safely narrow unknown to callable
|
|
171
|
+
function isCallableFunction(value) {
|
|
172
|
+
return typeof value === "function";
|
|
173
|
+
}
|
|
174
|
+
// Creates an extension method that wraps the extension function
|
|
175
|
+
function createExtensionMethod(pipeInstance, extFn) {
|
|
176
|
+
const method = (...args) => pipeInstance.pipe((value) => extFn(value, ...args));
|
|
177
|
+
// The method is correctly typed by construction - overloads ensure caller type safety
|
|
178
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
179
|
+
return method;
|
|
180
|
+
}
|
|
181
|
+
// ==========================================
|
|
182
|
+
// Factory to combine pipe with extensions
|
|
183
|
+
// ==========================================
|
|
184
|
+
function createPipeWithExtensions(state, extensions) {
|
|
185
|
+
const pipeInstance = new PipeImpl(state, extensions);
|
|
186
|
+
// Build extension methods object (Object.keys returns only own enumerable properties)
|
|
187
|
+
const extMethods = {};
|
|
188
|
+
for (const key of Object.keys(extensions)) {
|
|
189
|
+
const extFn = extensions[key];
|
|
190
|
+
if (isCallableFunction(extFn)) {
|
|
191
|
+
extMethods[key] = createExtensionMethod(pipeInstance, extFn);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Use Object.assign to combine - TypeScript's type for Object.assign
|
|
195
|
+
// handles the intersection correctly
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
197
|
+
return Object.assign(pipeInstance, extMethods);
|
|
198
|
+
}
|
|
199
|
+
// ==========================================
|
|
200
|
+
// Public factory
|
|
201
|
+
// ==========================================
|
|
202
|
+
export function createPipe(value, extensions) {
|
|
203
|
+
if (isThenable(value)) {
|
|
204
|
+
const settledPromise = createSettledPromise(value);
|
|
205
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
206
|
+
return createPipeWithExtensions({ kind: "async", settledPromise }, extensions);
|
|
207
|
+
}
|
|
208
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
209
|
+
return createPipeWithExtensions({ kind: "sync", value }, extensions);
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=pipe.js.map
|
package/dist/pipe.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../src/placeholder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAapE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAMtE;AAGD,eAAO,MAAM,CAAC,EAAE,eAAsD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ==========================================
|
|
2
|
+
// Placeholder Implementation
|
|
3
|
+
// ==========================================
|
|
4
|
+
var _a;
|
|
5
|
+
import { PlaceholderBrand } from "./types.js";
|
|
6
|
+
// Internal placeholder class with the brand
|
|
7
|
+
class PlaceholderImpl {
|
|
8
|
+
constructor() {
|
|
9
|
+
this[_a] = true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
_a = PlaceholderBrand;
|
|
13
|
+
// Helper to check if an object has the placeholder brand
|
|
14
|
+
function hasPlaceholderBrand(obj) {
|
|
15
|
+
return PlaceholderBrand in obj;
|
|
16
|
+
}
|
|
17
|
+
// Type guard to check if a value is a placeholder
|
|
18
|
+
export function isPlaceholder(value) {
|
|
19
|
+
if (value === null || typeof value !== "object") {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
return hasPlaceholderBrand(value) && value[PlaceholderBrand] === true;
|
|
23
|
+
}
|
|
24
|
+
// The singleton placeholder instance - class implements PlaceholderType so no assertion needed
|
|
25
|
+
export const _ = Object.freeze(new PlaceholderImpl());
|
|
26
|
+
//# sourceMappingURL=placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../src/placeholder.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,6BAA6B;AAC7B,6CAA6C;;AAE7C,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAC;AAEpE,4CAA4C;AAC5C,MAAM,eAAe;IAArB;QACU,QAAkB,GAAG,IAAa,CAAC;IAC7C,CAAC;CAAA;KADU,gBAAgB;AAG3B,yDAAyD;AACzD,SAAS,mBAAmB,CAAC,GAAW;IACvC,OAAO,gBAAgB,IAAI,GAAG,CAAC;AAChC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACvE,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,CAAC,GAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const PlaceholderBrand: unique symbol;
|
|
2
|
+
export type PlaceholderType = {
|
|
3
|
+
readonly [PlaceholderBrand]: true;
|
|
4
|
+
};
|
|
5
|
+
export type IsAsync<T> = T extends Promise<unknown> ? true : false;
|
|
6
|
+
export type Extensions = Record<string, unknown>;
|
|
7
|
+
export type CombineAsync<A extends boolean, B extends boolean> = A extends true ? true : B extends true ? true : false;
|
|
8
|
+
export type IsFunction<T> = T extends (...args: never[]) => unknown ? true : false;
|
|
9
|
+
export interface Pipe<T, E extends Extensions = Record<string, never>, Async extends boolean = false> {
|
|
10
|
+
pipe<R>(fn: (value: Awaited<T>) => R): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
11
|
+
pipe<A, R>(fn: (a: A, value: Awaited<T>) => R, a: A): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
12
|
+
pipe<A, B, R>(fn: (a: A, b: B, value: Awaited<T>) => R, a: A, b: B): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
13
|
+
pipe<A, B, C, R>(fn: (a: A, b: B, c: C, value: Awaited<T>) => R, a: A, b: B, c: C): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
14
|
+
pipe<A, R>(fn: (a: A) => R, a: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
15
|
+
pipe<A, B, R>(fn: (a: A, b: B) => R, a: PlaceholderType, b: B): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
16
|
+
pipe<A, B, R>(fn: (a: A, b: B) => R, a: A, b: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
17
|
+
pipe<A, R>(fn: (a: A, b: A) => R, a: PlaceholderType, b: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
18
|
+
pipe<A, B, C, R>(fn: (a: A, b: B, c: C) => R, a: PlaceholderType, b: B, c: C): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
19
|
+
pipe<A, B, C, R>(fn: (a: A, b: B, c: C) => R, a: A, b: PlaceholderType, c: C): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
20
|
+
pipe<A, B, C, R>(fn: (a: A, b: B, c: C) => R, a: A, b: B, c: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
21
|
+
pipe<A, C, R>(fn: (a: A, b: A, c: C) => R, a: PlaceholderType, b: PlaceholderType, c: C): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
22
|
+
pipe<A, B, R>(fn: (a: A, b: B, c: A) => R, a: PlaceholderType, b: B, c: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
23
|
+
pipe<A, B, R>(fn: (a: A, b: B, c: B) => R, a: A, b: PlaceholderType, c: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
24
|
+
pipe<A, R>(fn: (a: A, b: A, c: A) => R, a: PlaceholderType, b: PlaceholderType, c: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
25
|
+
pipe<A, B, C, D, R>(fn: (a: A, b: B, c: C, d: D) => R, a: PlaceholderType, b: B, c: C, d: D): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
26
|
+
pipe<A, B, C, D, R>(fn: (a: A, b: B, c: C, d: D) => R, a: A, b: PlaceholderType, c: C, d: D): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
27
|
+
pipe<A, B, C, D, R>(fn: (a: A, b: B, c: C, d: D) => R, a: A, b: B, c: PlaceholderType, d: D): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
28
|
+
pipe<A, B, C, D, R>(fn: (a: A, b: B, c: C, d: D) => R, a: A, b: B, c: C, d: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
29
|
+
pipe<A, C, D, R>(fn: (a: A, b: A, c: C, d: D) => R, a: PlaceholderType, b: PlaceholderType, c: C, d: D): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
30
|
+
pipe<A, B, R>(fn: (a: A, b: B, c: A, d: B) => R, a: PlaceholderType, b: B, c: PlaceholderType, d: B): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
31
|
+
pipe<A, R>(fn: (a: A, b: A, c: A, d: A) => R, a: PlaceholderType, b: PlaceholderType, c: PlaceholderType, d: PlaceholderType): PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>>;
|
|
32
|
+
readonly value: T | Promise<T>;
|
|
33
|
+
readonly val: T | Promise<T>;
|
|
34
|
+
then<TResult1 = Awaited<T>, TResult2 = never>(onFulfilled?: ((value: Awaited<T>) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
35
|
+
catch<TResult = never>(onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<Awaited<T> | TResult>;
|
|
36
|
+
}
|
|
37
|
+
export type PipeWithExtensions<T, E extends Extensions, Async extends boolean> = Pipe<T, E, Async> & ExtensionMethods<T, E, Async>;
|
|
38
|
+
export type ExtensionMethods<_T, E extends Extensions, Async extends boolean> = {
|
|
39
|
+
[K in keyof E as E[K] extends (...args: infer _Args) => unknown ? K : never]: E[K] extends (value: infer _V, ...args: infer A) => infer R ? (...args: A) => PipeWithExtensions<Awaited<R>, E, CombineAsync<Async, IsAsync<R>>> : never;
|
|
40
|
+
};
|
|
41
|
+
export interface PipeFactory<E extends Extensions = Record<string, never>> {
|
|
42
|
+
<T>(value: T): PipeWithExtensions<T, E, IsAsync<T>>;
|
|
43
|
+
readonly _: PlaceholderType;
|
|
44
|
+
extend<NewE extends Extensions>(ext: NewE): PipeFactory<E & NewE>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// ==========================================
|
|
2
|
+
// Type Definitions for ppipe
|
|
3
|
+
// ==========================================
|
|
4
|
+
// Branded placeholder type using unique symbol
|
|
5
|
+
// Export the symbol so it can be used in placeholder.ts
|
|
6
|
+
export const PlaceholderBrand = Symbol("ppipe.placeholder");
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,6BAA6B;AAC7B,6CAA6C;AAE7C,+CAA+C;AAC/C,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,38 +1,65 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ppipe",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "piping without the operator support",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "ppipe",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Strictly-typed piping without the operator support",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"build:test": "tsc -p tsconfig.test.json",
|
|
21
|
+
"clean": "rm -rf dist dist-test",
|
|
22
|
+
"prebuild": "npm run clean",
|
|
23
|
+
"prepublishOnly": "npm run build",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"test": "npm run build:test && c8 --include='dist-test/src/**/*.js' --reporter=text --reporter=html mocha dist-test/test/test.js",
|
|
26
|
+
"coverage": "c8 check-coverage --include='dist-test/src/**/*.js' --lines 100 --functions 100 --branches 100 --statements 100",
|
|
27
|
+
"lint": "eslint --fix src/ test/",
|
|
28
|
+
"lint:check": "eslint src/ test/",
|
|
29
|
+
"prepare": "husky"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"piping",
|
|
33
|
+
"promise",
|
|
34
|
+
"chain",
|
|
35
|
+
"async",
|
|
36
|
+
"pipe",
|
|
37
|
+
"pipe-operator",
|
|
38
|
+
"pipes-values",
|
|
39
|
+
"typescript",
|
|
40
|
+
"type-safe"
|
|
41
|
+
],
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/egeozcan/ppipe.git"
|
|
45
|
+
},
|
|
46
|
+
"author": "Yavuz Ege Özcan",
|
|
47
|
+
"license": "ISC",
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@eslint/js": "^9.39.2",
|
|
50
|
+
"@types/chai": "^5.0.0",
|
|
51
|
+
"@types/mocha": "^10.0.0",
|
|
52
|
+
"@types/node": "^22.0.0",
|
|
53
|
+
"c8": "^10.1.3",
|
|
54
|
+
"chai": "^5.0.0",
|
|
55
|
+
"eslint": "^9.0.0",
|
|
56
|
+
"eslint-config-prettier": "^10.0.0",
|
|
57
|
+
"eslint-plugin-prettier": "^5.0.0",
|
|
58
|
+
"globals": "^17.0.0",
|
|
59
|
+
"husky": "^9.1.7",
|
|
60
|
+
"mocha": "^11.0.0",
|
|
61
|
+
"prettier": "^3.0.0",
|
|
62
|
+
"typescript": "^5.0.0",
|
|
63
|
+
"typescript-eslint": "^8.53.1"
|
|
64
|
+
}
|
|
65
|
+
}
|