JSer.info #438 - 비동기 처리 흐름을 다루는 라이브러리인 Async 3이 릴리스 됐습니다.
Async 3.0.0에서 async.mapLimit
등의 Async 메서드에서 Promise를 반환하도록 변경됐습니다.
이로써 async.mapLimit
등의 메서드를 async
/await
와 조합해 사용할 수 있게 됐습니다.
이미 2.3.0에서 Async Function을 인수로 전달할 수 있었으며 이번 릴리스에서 async.*
메서드에 콜백 함수를 전달하지 않으면 Promise를 반환하도록 변경됐습니다.
버전별 코드를 비교하면 다은과 같습니다.
// DUMMY CODES
const async = require("async");
const urls = ["https://example.com", ...];
(async function(){
// 2.3.0 <
async.mapLimit(urls, 10, async.asyncify(async (url) => {
const res = await fetch(url);
return res.json();
}), (err, results) => {
if (err) throw err;
console.log(results)
});
// 2.3.0 >=
async.mapLimit(urls, 10, async (url) => {
const res = await fetch(url);
return res.json();
}, (err, results) => {
if (err) throw err;
console.log(results)
});
// 3.0.0 >=
try {
const results = await async.mapLimit(urls, 10, async (url) => {
const res = await fetch(url);
return res.json();
});
console.log(results);
} catch (err) {
console.log(err);
}
})();
또 3.0에선 ES2015 기반으로 코드를 배포하며 때문에 ES2015를 미지원하는 환경은 공식적으로 지원하지 않습니다.
Node.js 테스트 프레임워크 AVA 2.0.0이 릴리스됐습니다.
Node.js 8.9.4 이후의 환경을 지원합니다.
비호환 변경사항으로 스냅샷이 만들어져 있지 않은 경우 CI에서 실패하며 assertion 메시지가 문자열이 아닌 경우는 예외가 발생합니다.
OSS한 npm package registry server 구현체인 Verdaccio 4가 릴리스 됐습니다.
Verdaccio는 본래sinopia라는 npm registry server를 fork한 것으로 이번 릴리스에서 sinopia의 구현과 웹 UI를 버리고 새롭게 바꿨습니다.
검색, Register 정보, 패키지의 상세 화면 등의 UI가 변경됐습니다.
함께 npm package registry 관련 소식으로 npm inc 전 CTO인 @ceejbot가 Entropic라는 Federated한 npm package registry를 개발하고 있다는 발표가 JSConf EU 2019에서 있었습니다.
왜 이렇게 새로운 npm package registry를 만들려고 하는지에 대해서는 JSConf EU의 영상과 슬라이드에서 언급하고 있으니 관심있는 분은 함께 살펴보시길 바랍니다.
- The economics of open source by C J Silverio | JSConf EU 2019 - YouTube
- ceejbot/economics-of-package-management: ceejbot's talk from JSConfEU 2019
헤드라인
async/CHANGELOG.md at master · caolan/async
github.com/caolan/async/blob/master/CHANGELOG.md#v300
async 3.0.0이 릴리스 됐습니다.
async
모듈의 메서드가 callback을 전달하지 않은 경우 Promise를 반환하도록 변경됐으며 컬렉션 메서드에서 Async Generator를 지원하고 cargoQueue
가 추가됐습니다.
또, 이번 버전부터 ES2015를 기준으로 코드를 배포하기 때문에 구버전 브라우저나 Node 4 이하의 환경은 지원하지 않습니다.
Node v10.16.0 (LTS) | Node.js
nodejs.org/en/blog/release/v10.16.0/
Node v10.16.0(LTS)이 릴리스 됐습니다.
npm 6.9.0로 갱신됐고 zlib
모듈의 brotli와 events
모듈의 once
메서드를 지원(백포트) 합니다.
W3C and WHATWG to work together to advance the open Web platform | W3C Blog
www.w3.org/blog/2019/05/w3c-and-whatwg-to-work-together-to-advance-the-open-web-platform/
W3C는 HTML와 DOM과 관련한 표준 책정을 중단, WHATWG가 책정하고 있는 Living Standard를 공동으로 책정하기로 합의했습니다.
WHATWG는 리뷰 드리프트라고 부르는 정기적인 스냅샷을 내고 이를 W3C 프로세스를 이용해 권고까지 진행하는 형태로 변경됩니다.
Version 8 of Angular — Smaller bundles, CLI APIs, and alignment with the ecosystem
Angular 8.0.0이 릴리스 됐습니다.
modern build(es2015)와 legacy build(es5)를 나눠 빌드하여 브라우저 환경에 맞춰 불러오는 Differential Loading를 활성화했습니다.
Route Config에서 Dynamic Imports를 사용하도록 변경됐고 CLI 용 Builders API가 추가됐습니다.
또, Ivy를 enableIvy
컴파일 옵션을 이용해 사용해 볼 수 있습니다.
Release Notes for Safari Technology Preview 83 | WebKit
webkit.org/blog/8967/release-notes-for-safari-technology-preview-83/
Safari Technology Preview 83이 릴리스됐습니다.
WebAuthN을 기본적으로 활성화 했으며 line-break: anywhere
, display: flow-root
CSS 속성을 지원합니다.
Release v0.19.0 · axios/axios
github.com/axios/axios/releases/tag/v0.19.0
axios 0.19.0이 릴리스됐습니다.
Node.js에서 응답이 Content-ENcoding이 gzip, deflate 등 이면서 상태 코드가 204인 경우 예외가 발생하는 문제가 수정됐으며 maxContentLength
설정을 무시하고 요청을 계속해 Dos로 이어지는 문제가 수정됐습니다.
- Release v0.18.1 · axios/axios
- Destroy stream on exceeding maxContentLength (fixes #1098) by resure · Pull Request #1485 · axios/axios
Announcing TypeScript 3.5 | TypeScript
devblogs.microsoft.com/typescript/announcing-typescript-3-5/
TypeScript 3.5가 릴리스됐습니다.
타입 체크 성능과 --incremental
빌드 성능이 개선됐으며 Omit
헬프 타입이 추가됐습니다.
비호환 변경 사항으로 타입이 불분명한 경우의 표기가 {}
에서 unknown
으로 변경됐습니다.
- What's new in TypeScript · microsoft/TypeScript Wiki
- Breaking Changes · microsoft/TypeScript Wiki
- TypeScript v3.5.1 変更点 - Qiita
Release v2.8.0 · nuxt/nuxt.js
github.com/nuxt/nuxt.js/releases/tag/v2.8.0
Nuxt.js 2.8.0이 릴리스됐습니다.
SSR의 로그 출력 방식과 빌드 중 인디케이터 표현 방법이 개선됐습니다.
Release 2.0.0 · avajs/ava
github.com/avajs/ava/releases/tag/v2.0.0
AVA 2.0.0이 릴리스됐습니다.
비호환 변경사항으로 스냅샷이 만들어져 있지 않은 경우 CI에서 실패하며 assertion 메시지가 문자열이 아닌 경우는 예외가 발생합니다.
Verdaccio 4 released !!! · Verdaccio
verdaccio.org/blog/2019/05/19/15-verdaccio-4-release.html
npm registry server의 OSS 구현체인 Verdaccio 4가 릴리스됐습니다.
새로운 UI로 변경했으며 npm star
/ npm profile
, JWT, Plugins를 지원합니다.
아티클
What's New In DevTools (Chrome 76) | Web | Google Developers
developers.google.com/web/updates/2019/05/devtools
Chrome 76 개발자 도구의 변경 사항이 정리돼 있습니다.
네트워크 패널의 설정 부분 UI가 변경 됐고 WebSocket 메시지를 HAR 파일로 추출할 수 있으며 총 메모리 소비량을 실시간으로 확인할 수 있습니다. 또, Background Fetch 디버깅 기능이 추가됐습니다.
이미지로 전하자! 도형을 이용한 JavaScript 비동기 처리의 이해 - 메모비비기(일본어)
memowomome.hatenablog.com/entry/js_async_viz
JavaScript의 동기 / 비동기 처리 동작의 차이와 구현 방법과 접근 방법에 대해 정리돼 있습니다.
슬라이드, 영상
JSConf EU 2019 - YouTube
www.youtube.com/playlist?list=PL37ZVnwpeshHwJPVBqEnZild7QHWhdufu
JSConf EU 2019의 영상이 공개됐습니다.
소프트웨어, 도구, 라이브러리
Zdog · Round, flat, designer-friendly pseudo-3D engine for canvas and SVG
유사 3D 효과를 표현할 수 있는 Canvas, SVG 라이브러리입니다.
atomicojs/atomico: Small library for the creation of interfaces based on web-components, only using functions and hooks.
JSX를 이용한 DOM 정의와 React Hooks 스러운 API를 제공하는 Web Components 라이브러리입니다.
mholt/PapaParse: Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input
CSV 파싱 라이브러리입니다.