Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@berlysia/p-fied
Advanced tools
PromisiFIED asynchronous utility module.
async.js proposed a lot of asynchronous way in JavaScript. But now we have a Promise
.
Some of async.js functions can be easily expressed with the Promise
(e.g. series
, parallel
...), so p-fied doesn't have these functions.
ここまで書いて async.js と Bluebird で足りたんじゃないのという気持ちになった.元気がなくなったので日本語で書く.
for([initialState], [test], [update]){
[routine]
}
initialState
- 初期状態を示すObject
.
test
- (state: Object) => bool | Promise<bool>
.true
ならループ続行,false
でループ終了.
update
- (state: Object) => state
.状態を更新する.返値を更新後の値とする.返さなかった場合はroutine
の返値
routine
- (state: Object) => state | Promise<state> | true | Promise<true> | any
.ループのメイン処理を表現する.返値が状態オブジェクトやそのPromiseであるならば,update
に渡す値はここで返した値となる.ループ中のいわゆるcontinue
を,routine
がsynchronousである場合はreturn
で,asynchronousである場合はreturn resolvedPromise
で表現する.break
はreturn rejectedPromise(true)
で表現する.
returns Promise<state>
. エラー終了した場合はrejected
,その他の場合はresolved
.
pfied.pfor({i: 0}, s => s.i < 5, s => {i: s.i+1}, s => {
setImmediate(_ => console.log(s.i));
}).then(s => console.log("done! %d", s.i));
/*
0
1
2
3
4
done! 5
*/
動作の詳細例はテストコードが参考になるだろう.
while
文に対応.test
がtrue || Promise<true>
な間,routine
を実行する.initialState
は省略可能.routine
の挙動はpfor
のものに従う.
doWhilst
はそのままdo-while
文に対応する.
while
文に対応するが,test
がfalse || Promise<false>
である間にroutine
を実行する.他はwhilst
やdoWhilst
に従う.
無限ループ.routine
はpfor
のものと同様の動作を期待する.
async.jsのQueueと同様の機能を提供する.
worker
- (task: Object) => any
.キューからタスクを受け取って処理する.
concurrency
- 並行して最大いくつまでworker
を実行するか指定する.初期値は1.
Queue#push(task: Object) => Promise<worker returning value>
Queue#unshift(task: Object) => Promise<worker returning value>
キューにタスクを追加する.push
はFIFO,unshift
はLIFO.返値はそのタスクが処理されたときに解決されるPromise
.
Queue#pushBulk(tasks: [Object]) => [Promise<worker returning value>]
Queue#unshiftBulk(tasks: [Object]) => [Promise<worker returning value>]
キューにタスクを一度に複数個追加する.返値は単体時と同様のPromise
からなるArray
.与えたタスク列の順に対応している.
running()
- ワーカーが処理中か否か true
/false
idle()
- !running()
pause()
- ワーカーの追加を中止する.現在処理中のものは続行する.
resume()
- ワーカーの追加を再開する.
kill()
- ワーカーに渡されていないタスクをドロップする.
saturated
- タスクを追加する操作をしたとき,保持するタスク数がcurrency
を超えた場合にコールバックする関数を指定する.
empty
- タスク保持数がゼロになったときにコールバックする関数を指定する.
drain
- ワーカー稼働数がゼロになったときにコールバックする関数を指定する.
error
- ワーカー稼働中にエラーが発生した場合にコールバックする関数を指定する.エラーを第一引数で受け取れる.
Queue
に近いが,ワーカーに渡すときpayload
の数を最大値として取れるだけ取り,配列に詰めて渡す.結果のPromise
はワーカーが正常終了すれば個別に返る.ワーカーが失敗すると一緒に渡されたタスクの結果Promise
は失敗原因でreject
される.
Queue
に近いが,タスク間の順序を定義しておくことで,その順にワーカーに渡す.先頭や末尾に追加するという概念がないので,unshift
を持たない.順序定義用の関数comperator
は,Array.prototype.sort
が引数として要求する形式を満たすこと.
async.jsのものは固定値で優先度を定義してその順に取り出していたため,優先度の与え方がまったく異なる.
FAQs
PromisiFIED asynchronous utility module.
We found that @berlysia/p-fied demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.