pwi-plata-type 0.4.191 → 0.4.192
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/__BUILD__/libs/runtime.js +14 -11
- package/__BUILD__/libs/runtime.js.map +1 -1
- package/package.json +1 -1
- package/src/libs/runtime.ts +19 -11
- package/src/tests/2-effect.test.ts +45 -1
|
@@ -7,7 +7,6 @@ exports.PlataGlobalRuntime = void 0;
|
|
|
7
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
8
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
9
|
const node_cluster_1 = __importDefault(require("node:cluster"));
|
|
10
|
-
const effect_1 = require("effect");
|
|
11
10
|
const fs_1 = require("./fs");
|
|
12
11
|
const glob_1 = require("glob");
|
|
13
12
|
class PlataGlobalRuntime {
|
|
@@ -21,6 +20,7 @@ class PlataGlobalRuntime {
|
|
|
21
20
|
_knexExtended = false;
|
|
22
21
|
_loadedsWasms = new Set();
|
|
23
22
|
config = process.env;
|
|
23
|
+
effectLib = null;
|
|
24
24
|
constructor() {
|
|
25
25
|
this.ProjectDir = node_path_1.default.resolve('.');
|
|
26
26
|
this.ProjectJson = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(this.ProjectDir, 'package.json')).toString());
|
|
@@ -38,6 +38,12 @@ class PlataGlobalRuntime {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
+
getEffectLib() {
|
|
42
|
+
if (this.effectLib === null) {
|
|
43
|
+
this.effectLib = require('effect').Effect;
|
|
44
|
+
}
|
|
45
|
+
return this.effectLib;
|
|
46
|
+
}
|
|
41
47
|
CacheClass(newFunction) {
|
|
42
48
|
const p = process;
|
|
43
49
|
if (p._plata_cache === undefined) {
|
|
@@ -52,21 +58,18 @@ class PlataGlobalRuntime {
|
|
|
52
58
|
if (promises.length === 0) {
|
|
53
59
|
return [];
|
|
54
60
|
}
|
|
55
|
-
const
|
|
61
|
+
const Effect = this.getEffectLib();
|
|
62
|
+
const results = new Array(promises.length);
|
|
56
63
|
let error = null;
|
|
57
|
-
const
|
|
58
|
-
promise
|
|
59
|
-
id: i
|
|
60
|
-
}));
|
|
61
|
-
const effect = effect_1.Effect.forEach(promisesWithID, (p) => effect_1.Effect.gen(function* (_) {
|
|
62
|
-
const result = yield* _(effect_1.Effect.promise(() => p.promise));
|
|
64
|
+
const effect = Effect.forEach(promises, (p, i) => Effect.gen(function* (_) {
|
|
65
|
+
const result = yield* _(Effect.promise(() => p));
|
|
63
66
|
if (result.errorID !== undefined) {
|
|
64
67
|
error = result;
|
|
65
|
-
return yield* _(
|
|
68
|
+
return yield* _(Effect.interrupt);
|
|
66
69
|
}
|
|
67
|
-
results[
|
|
70
|
+
results[i] = result;
|
|
68
71
|
}), { concurrency: 'unbounded' });
|
|
69
|
-
await
|
|
72
|
+
await Effect.runPromise(effect).catch((err) => {
|
|
70
73
|
if (error === null)
|
|
71
74
|
error = {
|
|
72
75
|
errorID: 'PBRUNEFFPROALL001',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/libs/runtime.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAC5B,sDAAwB;AACxB,gEAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/libs/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/libs/runtime.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
import fs from 'node:fs'
|
|
3
3
|
import cluster from "node:cluster";
|
|
4
|
-
import { Effect } from 'effect'
|
|
5
4
|
import { PlataFs } from './fs'
|
|
6
5
|
import { glob } from 'glob'
|
|
7
6
|
|
|
@@ -30,7 +29,9 @@ export class PlataGlobalRuntime {
|
|
|
30
29
|
public readonly _loadedsWasms: Set<string> = new Set()
|
|
31
30
|
|
|
32
31
|
// Env
|
|
33
|
-
public config: PlataEnvAutoComplete = process.env
|
|
32
|
+
public config: PlataEnvAutoComplete = process.env
|
|
33
|
+
|
|
34
|
+
private effectLib: (typeof import('effect').Effect) | null = null
|
|
34
35
|
|
|
35
36
|
constructor() {
|
|
36
37
|
// Caminhos da Plata
|
|
@@ -60,6 +61,14 @@ export class PlataGlobalRuntime {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
|
|
64
|
+
private getEffectLib(): typeof import('effect').Effect {
|
|
65
|
+
if (this.effectLib === null) {
|
|
66
|
+
this.effectLib = require('effect').Effect as typeof import('effect').Effect
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return this.effectLib
|
|
70
|
+
}
|
|
71
|
+
|
|
63
72
|
public CacheClass<T>(newFunction: (...args: any) => T): T {
|
|
64
73
|
const p = process as any
|
|
65
74
|
|
|
@@ -74,27 +83,26 @@ export class PlataGlobalRuntime {
|
|
|
74
83
|
return p._plata_cache[newFunction.name]
|
|
75
84
|
}
|
|
76
85
|
|
|
77
|
-
public async PromiseAll<T extends readonly unknown[] | [], R = RemovePlataResultOnPromiseAll<{ -readonly [P in keyof T]: Awaited<T[P]> }>>(promises: T): PlataPromiseAllReturn<T, R> {
|
|
86
|
+
public async PromiseAll<T extends readonly unknown[] | [], R = RemovePlataResultOnPromiseAll<{ -readonly [P in keyof T]: Awaited<T[P]> }>>(promises: T): PlataPromiseAllReturn<T, R> {
|
|
78
87
|
if (promises.length === 0) {
|
|
79
88
|
return [] as any
|
|
80
89
|
}
|
|
81
90
|
|
|
82
|
-
const
|
|
91
|
+
const Effect = this.getEffectLib()
|
|
92
|
+
|
|
93
|
+
const results = new Array<any>(promises.length)
|
|
83
94
|
let error: PlataError | null = null
|
|
84
|
-
const promisesWithID = promises.map((p, i) => ({
|
|
85
|
-
promise: p,
|
|
86
|
-
id: i
|
|
87
|
-
}))
|
|
88
95
|
|
|
89
|
-
|
|
90
|
-
|
|
96
|
+
|
|
97
|
+
const effect = Effect.forEach(promises as Promise<any>[], (p, i) => Effect.gen(function* (_) {
|
|
98
|
+
const result: PlataResult<any> = yield* _(Effect.promise(() => p))
|
|
91
99
|
|
|
92
100
|
if (result.errorID !== undefined) {
|
|
93
101
|
error = result
|
|
94
102
|
return yield* _(Effect.interrupt)
|
|
95
103
|
}
|
|
96
104
|
|
|
97
|
-
results[
|
|
105
|
+
results[i] = result
|
|
98
106
|
}), { concurrency: 'unbounded' })
|
|
99
107
|
|
|
100
108
|
await Effect.runPromise(effect).catch((err) => {
|
|
@@ -15,7 +15,7 @@ describe('PromiseAll', () => {
|
|
|
15
15
|
await plataPromise
|
|
16
16
|
})
|
|
17
17
|
|
|
18
|
-
it('should resolve an array of promises', async () => {
|
|
18
|
+
it('should resolve an array of promises (cold start)', async () => {
|
|
19
19
|
const promises = [
|
|
20
20
|
Plata.FastPromise(async (): Promise<1> => 1),
|
|
21
21
|
Plata.FastPromise(async (): Promise<2> => 2),
|
|
@@ -31,6 +31,36 @@ describe('PromiseAll', () => {
|
|
|
31
31
|
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
+
it('should resolve an array of promises (hot start)', async () => {
|
|
35
|
+
const promises = [
|
|
36
|
+
Plata.FastPromise(async (): Promise<1> => 1),
|
|
37
|
+
Plata.FastPromise(async (): Promise<2> => 2),
|
|
38
|
+
Plata.FastPromise(async (): Promise<3> => 3),
|
|
39
|
+
] as const
|
|
40
|
+
|
|
41
|
+
const result = await Plata.PromiseAll(promises)
|
|
42
|
+
|
|
43
|
+
assert.strictEqual(result.errorID, undefined)
|
|
44
|
+
|
|
45
|
+
const type: [ 1, 2, 3 ] = result
|
|
46
|
+
assert.deepStrictEqual(result, [1, 2, 3])
|
|
47
|
+
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('(stress) should resolve an array in order', async () => {
|
|
51
|
+
const arrayAleatorio = new Array<number>()
|
|
52
|
+
const arrayPromises = new Array<Promise<number>>()
|
|
53
|
+
|
|
54
|
+
for (let i = 0; i < 3_000; i++) {
|
|
55
|
+
arrayAleatorio.push(Math.random())
|
|
56
|
+
arrayPromises.push(Plata.FastPromise(() => Promise.resolve(arrayAleatorio[i])))
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const newArray = await Plata.PromiseAll(arrayPromises)
|
|
60
|
+
assert.deepStrictEqual(newArray, arrayAleatorio)
|
|
61
|
+
|
|
62
|
+
})
|
|
63
|
+
|
|
34
64
|
it('should return an empty array if input is an empty array', async () => {
|
|
35
65
|
const promises: [] = []
|
|
36
66
|
|
|
@@ -61,4 +91,18 @@ describe('PromiseAll', () => {
|
|
|
61
91
|
|
|
62
92
|
assert.strictEqual(result.errorID, 'a')
|
|
63
93
|
})
|
|
94
|
+
|
|
95
|
+
it('should run in concurrency', async () => {
|
|
96
|
+
const promises = [
|
|
97
|
+
Plata.FastPromise(() => new Promise<number>(r => setTimeout(() => r(100), 100))),
|
|
98
|
+
Plata.FastPromise(() => new Promise<number>(r => setTimeout(() => r(200), 200))),
|
|
99
|
+
Plata.FastPromise(() => new Promise<number>(r => setTimeout(() => r(100), 100))),
|
|
100
|
+
]
|
|
101
|
+
|
|
102
|
+
const startTime = performance.now()
|
|
103
|
+
await Plata.PromiseAll(promises)
|
|
104
|
+
const endTime = performance.now()
|
|
105
|
+
|
|
106
|
+
assert.equal((endTime - startTime) < 400, true)
|
|
107
|
+
})
|
|
64
108
|
})
|