Fork me on GitHub

2019-06-04: async.js 3.0.0(async/await 대응), AVA 2.0.0, Verdaccio 4(npm registry)

Translator: U-Yeong Ju Edit on GitHub See Revisions

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인 @ceejbotEntropic라는 Federated한 npm package registry를 개발하고 있다는 발표가 JSConf EU 2019에서 있었습니다.
왜 이렇게 새로운 npm package registry를 만들려고 하는지에 대해서는 JSConf EU의 영상과 슬라이드에서 언급하고 있으니 관심있는 분은 함께 살펴보시길 바랍니다.


헤드라인


async/CHANGELOG.md at master · caolan/async

github.com/caolan/async/blob/master/CHANGELOG.md#v300

JavaScript library ReleaseNote

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.js ReleaseNote

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 WHATWG news

W3C는 HTML와 DOM과 관련한 표준 책정을 중단, WHATWG가 책정하고 있는 Living Standard를 공동으로 책정하기로 합의했습니다.
WHATWG는 리뷰 드리프트라고 부르는 정기적인 스냅샷을 내고 이를 W3C 프로세스를 이용해 권고까지 진행하는 형태로 변경됩니다.


Version 8 of Angular — Smaller bundles, CLI APIs, and alignment with the ecosystem

blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27

Angular ReleaseNote

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 ReleaseNote

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

JavaScript library ReleaseNote

axios 0.19.0이 릴리스됐습니다.
Node.js에서 응답이 Content-ENcoding이 gzip, deflate 등 이면서 상태 코드가 204인 경우 예외가 발생하는 문제가 수정됐으며 maxContentLength 설정을 무시하고 요청을 계속해 Dos로 이어지는 문제가 수정됐습니다.


Announcing TypeScript 3.5 | TypeScript

devblogs.microsoft.com/typescript/announcing-typescript-3-5/

TypeScript ReleaseNote

TypeScript 3.5가 릴리스됐습니다.
타입 체크 성능과 --incremental 빌드 성능이 개선됐으며 Omit 헬프 타입이 추가됐습니다.
비호환 변경 사항으로 타입이 불분명한 경우의 표기가 {}에서 unknown으로 변경됐습니다.


Release v2.8.0 · nuxt/nuxt.js

github.com/nuxt/nuxt.js/releases/tag/v2.8.0

Vue library ReleaseNote

Nuxt.js 2.8.0이 릴리스됐습니다.
SSR의 로그 출력 방식과 빌드 중 인디케이터 표현 방법이 개선됐습니다.


Release 2.0.0 · avajs/ava

github.com/avajs/ava/releases/tag/v2.0.0

JavaScript testing node.js ReleaseNote

AVA 2.0.0이 릴리스됐습니다.
비호환 변경사항으로 스냅샷이 만들어져 있지 않은 경우 CI에서 실패하며 assertion 메시지가 문자열이 아닌 경우는 예외가 발생합니다.


Verdaccio 4 released !!! · Verdaccio

verdaccio.org/blog/2019/05/19/15-verdaccio-4-release.html

npm Tools ReleaseNote

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 article

Chrome 76 개발자 도구의 변경 사항이 정리돼 있습니다.
네트워크 패널의 설정 부분 UI가 변경 됐고 WebSocket 메시지를 HAR 파일로 추출할 수 있으며 총 메모리 소비량을 실시간으로 확인할 수 있습니다. 또, Background Fetch 디버깅 기능이 추가됐습니다.


이미지로 전하자! 도형을 이용한 JavaScript 비동기 처리의 이해 - 메모비비기(일본어)

memowomome.hatenablog.com/entry/js_async_viz

JavaScript article

JavaScript의 동기 / 비동기 처리 동작의 차이와 구현 방법과 접근 방법에 대해 정리돼 있습니다.


슬라이드, 영상


JSConf EU 2019 - YouTube

www.youtube.com/playlist?list=PL37ZVnwpeshHwJPVBqEnZild7QHWhdufu

JavaScript イベント video

JSConf EU 2019의 영상이 공개됐습니다.


소프트웨어, 도구, 라이브러리


Zdog · Round, flat, designer-friendly pseudo-3D engine for canvas and SVG

zzz.dog/

SVG canvas library

유사 3D 효과를 표현할 수 있는 Canvas, SVG 라이브러리입니다.


atomicojs/atomico: Small library for the creation of interfaces based on web-components, only using functions and hooks.

github.com/atomicojs/atomico

WebComponents library

JSX를 이용한 DOM 정의와 React Hooks 스러운 API를 제공하는 Web Components 라이브러리입니다.


mholt/PapaParse: Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input

github.com/mholt/PapaParse

JavaScript library

CSV 파싱 라이브러리입니다.


Pull Request to this article
JSer.info Slackに参加する