@nlozgachev/fp-lib 0.1.3 → 0.1.4
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/esm/src/Core/Task.js +1 -21
- package/package.json +1 -4
- package/script/src/Core/Task.js +1 -54
- package/types/src/Core/Task.d.ts +19 -0
- package/types/src/Core/Task.d.ts.map +1 -1
- package/esm/_dnt.shims.js +0 -62
- package/script/_dnt.shims.js +0 -67
- package/types/_dnt.shims.d.ts +0 -7
- package/types/_dnt.shims.d.ts.map +0 -1
package/esm/src/Core/Task.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task represents a lazy asynchronous computation.
|
|
3
|
-
* Unlike Promise, a Task doesn't execute until you call it.
|
|
4
|
-
* This makes Tasks composable and referentially transparent.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```ts
|
|
8
|
-
* const fetchData: Task<Data> = () => fetch('/api/data').then(r => r.json());
|
|
9
|
-
*
|
|
10
|
-
* // Nothing happens yet - the task is just defined
|
|
11
|
-
* const processedData = pipe(
|
|
12
|
-
* fetchData,
|
|
13
|
-
* Task.map(data => transform(data))
|
|
14
|
-
* );
|
|
15
|
-
*
|
|
16
|
-
* // Now execute the task
|
|
17
|
-
* processedData().then(result => console.log(result));
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
import * as dntShim from "../../_dnt.shims.js";
|
|
21
1
|
export var Task;
|
|
22
2
|
(function (Task) {
|
|
23
3
|
/**
|
|
@@ -124,5 +104,5 @@ export var Task;
|
|
|
124
104
|
* )(); // Resolves after 1 second
|
|
125
105
|
* ```
|
|
126
106
|
*/
|
|
127
|
-
Task.delay = (ms) => (data) => () => new Promise((resolve, reject) =>
|
|
107
|
+
Task.delay = (ms) => (data) => () => new Promise((resolve, reject) => setTimeout(() => data().then(resolve, reject), ms));
|
|
128
108
|
})(Task || (Task = {}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlozgachev/fp-lib",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Simple functional programming toolkit for TypeScript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"functional",
|
|
@@ -52,9 +52,6 @@
|
|
|
52
52
|
"engines": {
|
|
53
53
|
"node": ">=22"
|
|
54
54
|
},
|
|
55
|
-
"dependencies": {
|
|
56
|
-
"@deno/shim-timers": "~0.1.0"
|
|
57
|
-
},
|
|
58
55
|
"files": [
|
|
59
56
|
"esm",
|
|
60
57
|
"script",
|
package/script/src/Core/Task.js
CHANGED
|
@@ -1,59 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.Task = void 0;
|
|
37
|
-
/**
|
|
38
|
-
* Task represents a lazy asynchronous computation.
|
|
39
|
-
* Unlike Promise, a Task doesn't execute until you call it.
|
|
40
|
-
* This makes Tasks composable and referentially transparent.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```ts
|
|
44
|
-
* const fetchData: Task<Data> = () => fetch('/api/data').then(r => r.json());
|
|
45
|
-
*
|
|
46
|
-
* // Nothing happens yet - the task is just defined
|
|
47
|
-
* const processedData = pipe(
|
|
48
|
-
* fetchData,
|
|
49
|
-
* Task.map(data => transform(data))
|
|
50
|
-
* );
|
|
51
|
-
*
|
|
52
|
-
* // Now execute the task
|
|
53
|
-
* processedData().then(result => console.log(result));
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
const dntShim = __importStar(require("../../_dnt.shims.js"));
|
|
57
4
|
var Task;
|
|
58
5
|
(function (Task) {
|
|
59
6
|
/**
|
|
@@ -160,5 +107,5 @@ var Task;
|
|
|
160
107
|
* )(); // Resolves after 1 second
|
|
161
108
|
* ```
|
|
162
109
|
*/
|
|
163
|
-
Task.delay = (ms) => (data) => () => new Promise((resolve, reject) =>
|
|
110
|
+
Task.delay = (ms) => (data) => () => new Promise((resolve, reject) => setTimeout(() => data().then(resolve, reject), ms));
|
|
164
111
|
})(Task || (exports.Task = Task = {}));
|
package/types/src/Core/Task.d.ts
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task represents a lazy asynchronous computation.
|
|
3
|
+
* Unlike Promise, a Task doesn't execute until you call it.
|
|
4
|
+
* This makes Tasks composable and referentially transparent.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const fetchData: Task<Data> = () => fetch('/api/data').then(r => r.json());
|
|
9
|
+
*
|
|
10
|
+
* // Nothing happens yet - the task is just defined
|
|
11
|
+
* const processedData = pipe(
|
|
12
|
+
* fetchData,
|
|
13
|
+
* Task.map(data => transform(data))
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* // Now execute the task
|
|
17
|
+
* processedData().then(result => console.log(result));
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
1
20
|
export type Task<A> = () => Promise<A>;
|
|
2
21
|
export declare namespace Task {
|
|
3
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvC,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;OAQG;IACI,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,IAAI,CAAC,CAAC,CAAiC,CAAC;IAEzE;;OAEG;IACI,MAAM,IAAI,GAAI,CAAC,EAAE,OAAO,OAAO,KAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;IAEhF;;;;;;;;OAQG;IACI,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IAE3D;;;;;;;;;;OAUG;IACI,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CAAyB,CAAC;IAE9F;;;;;;;;;;;;;OAaG;IACI,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CAChD,CAAC;IAE7B;;;;;;;;;;;;;OAaG;IACI,MAAM,EAAE,GAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CACtB,CAAC;IAEtD;;;;;;;;;;;;OAYG;IACI,MAAM,GAAG,GAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CAIhE,CAAC;IAEL;;;;;;;;OAQG;IACI,MAAM,GAAG,GAAI,CAAC,SAAS,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,EACpD,OAAO,CAAC,KACP,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAE,CAI/D,CAAC;IAEJ;;;;;;;;;;OAUG;IACI,MAAM,KAAK,GAAI,IAAI,MAAM,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAAC,CAAC,CACuB,CAAC;CACxF"}
|
package/esm/_dnt.shims.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { setInterval, setTimeout } from "@deno/shim-timers";
|
|
2
|
-
export { setInterval, setTimeout } from "@deno/shim-timers";
|
|
3
|
-
const dntGlobals = {
|
|
4
|
-
setInterval,
|
|
5
|
-
setTimeout,
|
|
6
|
-
};
|
|
7
|
-
export const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
|
8
|
-
function createMergeProxy(baseObj, extObj) {
|
|
9
|
-
return new Proxy(baseObj, {
|
|
10
|
-
get(_target, prop, _receiver) {
|
|
11
|
-
if (prop in extObj) {
|
|
12
|
-
return extObj[prop];
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
return baseObj[prop];
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
set(_target, prop, value) {
|
|
19
|
-
if (prop in extObj) {
|
|
20
|
-
delete extObj[prop];
|
|
21
|
-
}
|
|
22
|
-
baseObj[prop] = value;
|
|
23
|
-
return true;
|
|
24
|
-
},
|
|
25
|
-
deleteProperty(_target, prop) {
|
|
26
|
-
let success = false;
|
|
27
|
-
if (prop in extObj) {
|
|
28
|
-
delete extObj[prop];
|
|
29
|
-
success = true;
|
|
30
|
-
}
|
|
31
|
-
if (prop in baseObj) {
|
|
32
|
-
delete baseObj[prop];
|
|
33
|
-
success = true;
|
|
34
|
-
}
|
|
35
|
-
return success;
|
|
36
|
-
},
|
|
37
|
-
ownKeys(_target) {
|
|
38
|
-
const baseKeys = Reflect.ownKeys(baseObj);
|
|
39
|
-
const extKeys = Reflect.ownKeys(extObj);
|
|
40
|
-
const extKeysSet = new Set(extKeys);
|
|
41
|
-
return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];
|
|
42
|
-
},
|
|
43
|
-
defineProperty(_target, prop, desc) {
|
|
44
|
-
if (prop in extObj) {
|
|
45
|
-
delete extObj[prop];
|
|
46
|
-
}
|
|
47
|
-
Reflect.defineProperty(baseObj, prop, desc);
|
|
48
|
-
return true;
|
|
49
|
-
},
|
|
50
|
-
getOwnPropertyDescriptor(_target, prop) {
|
|
51
|
-
if (prop in extObj) {
|
|
52
|
-
return Reflect.getOwnPropertyDescriptor(extObj, prop);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return Reflect.getOwnPropertyDescriptor(baseObj, prop);
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
has(_target, prop) {
|
|
59
|
-
return prop in extObj || prop in baseObj;
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
}
|
package/script/_dnt.shims.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dntGlobalThis = exports.setTimeout = exports.setInterval = void 0;
|
|
4
|
-
const shim_timers_1 = require("@deno/shim-timers");
|
|
5
|
-
var shim_timers_2 = require("@deno/shim-timers");
|
|
6
|
-
Object.defineProperty(exports, "setInterval", { enumerable: true, get: function () { return shim_timers_2.setInterval; } });
|
|
7
|
-
Object.defineProperty(exports, "setTimeout", { enumerable: true, get: function () { return shim_timers_2.setTimeout; } });
|
|
8
|
-
const dntGlobals = {
|
|
9
|
-
setInterval: shim_timers_1.setInterval,
|
|
10
|
-
setTimeout: shim_timers_1.setTimeout,
|
|
11
|
-
};
|
|
12
|
-
exports.dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
|
13
|
-
function createMergeProxy(baseObj, extObj) {
|
|
14
|
-
return new Proxy(baseObj, {
|
|
15
|
-
get(_target, prop, _receiver) {
|
|
16
|
-
if (prop in extObj) {
|
|
17
|
-
return extObj[prop];
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return baseObj[prop];
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
set(_target, prop, value) {
|
|
24
|
-
if (prop in extObj) {
|
|
25
|
-
delete extObj[prop];
|
|
26
|
-
}
|
|
27
|
-
baseObj[prop] = value;
|
|
28
|
-
return true;
|
|
29
|
-
},
|
|
30
|
-
deleteProperty(_target, prop) {
|
|
31
|
-
let success = false;
|
|
32
|
-
if (prop in extObj) {
|
|
33
|
-
delete extObj[prop];
|
|
34
|
-
success = true;
|
|
35
|
-
}
|
|
36
|
-
if (prop in baseObj) {
|
|
37
|
-
delete baseObj[prop];
|
|
38
|
-
success = true;
|
|
39
|
-
}
|
|
40
|
-
return success;
|
|
41
|
-
},
|
|
42
|
-
ownKeys(_target) {
|
|
43
|
-
const baseKeys = Reflect.ownKeys(baseObj);
|
|
44
|
-
const extKeys = Reflect.ownKeys(extObj);
|
|
45
|
-
const extKeysSet = new Set(extKeys);
|
|
46
|
-
return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];
|
|
47
|
-
},
|
|
48
|
-
defineProperty(_target, prop, desc) {
|
|
49
|
-
if (prop in extObj) {
|
|
50
|
-
delete extObj[prop];
|
|
51
|
-
}
|
|
52
|
-
Reflect.defineProperty(baseObj, prop, desc);
|
|
53
|
-
return true;
|
|
54
|
-
},
|
|
55
|
-
getOwnPropertyDescriptor(_target, prop) {
|
|
56
|
-
if (prop in extObj) {
|
|
57
|
-
return Reflect.getOwnPropertyDescriptor(extObj, prop);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return Reflect.getOwnPropertyDescriptor(baseObj, prop);
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
has(_target, prop) {
|
|
64
|
-
return prop in extObj || prop in baseObj;
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
}
|
package/types/_dnt.shims.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { setInterval, setTimeout } from "@deno/shim-timers";
|
|
2
|
-
export { setInterval, setTimeout } from "@deno/shim-timers";
|
|
3
|
-
export declare const dntGlobalThis: Omit<typeof globalThis, "setInterval" | "setTimeout"> & {
|
|
4
|
-
setInterval: typeof setInterval;
|
|
5
|
-
setTimeout: typeof setTimeout;
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=_dnt.shims.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_dnt.shims.d.ts","sourceRoot":"","sources":["../src/_dnt.shims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM5D,eAAO,MAAM,aAAa;;;CAA2C,CAAC"}
|