Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@depack/nodejs

dpck76MIT1.1.4

Mocks Of Built-In Node.JS Modules To Use For Compilation.

nodejs, depack, gcc, google closure compiler, bundle, bundler, nodejs

readme

@depack/nodejs

npm version

@depack/nodejs is Mocks Of Built-In Node.JS Modules To Use For Compilation. It is used in Depack for compilation of Node.JS programs using Google Closure Compiler.

yarn add -E @depack/nodejs

Table Of Contents

API

The package publishes the builtin-modules folder with the source code of modules that will be mocked. It provides a simple function to get the path to the folder that contains builtin-modules.

import nodejs from '@depack/nodejs'

getCorePath(
  version?: string,
): string

Returns the path to resolved builtin-modules within this package. Currently, only v8 is supported and will be returned by default.

/* alanode example/ */
import nodejs from '@depack/nodejs'

const res = nodejs()
console.log(res)
node_modules/@depack/nodejs/builtin-modules/v8

The process of generation of mocks consists of iterating though the list from require('module').builtinModules, requiring each of them and seeing what keys exist. They should align with the Node.JS externs generated using @depack/externs.

Example

This is an example of generated mock for the querystring built-in Node.JS module:

export default querystring
export const {
  decode,
  encode,
  escape,
  parse,
  stringify,
  unescape,
} = querystring

Ignored API

Some imported modules will contain API properties which are not documented and will not form part of externs. They are ignored and should not be used if not documented. There are also instances when externs have not implemented certain APIs. The full list is given below:

export default {
  os: ['getNetworkInterfaces', 'tmpDir'],
  fs: ['F_OK', 'FileReadStream', 'FileWriteStream', 'R_OK', 'W_OK', 'X_OK'],
  // missing in externs
  assert: ['strict', 'rejects', 'doesNotReject'],
  zlib: ['codes', 'Z_MIN_WINDOWBITS', 'Z_MIN_MEMLEVEL', 'Z_MIN_LEVEL',
    'Z_MIN_CHUNK', 'Z_MAX_WINDOWBITS', 'Z_MAX_MEMLEVEL', 'Z_MAX_LEVEL',
    'Z_MAX_CHUNK', 'Z_DEFAULT_WINDOWBITS', 'Z_DEFAULT_MEMLEVEL',
    'Z_DEFAULT_LEVEL', 'Z_DEFAULT_CHUNK', 'ZLIB_VERNUM', 'UNZIP',
    'INFLATERAW', 'INFLATE', 'GZIP', 'GUNZIP', 'DEFLATERAW', 'DEFLATE'],
  vm: ['createScript'],
  // missing in externs
  v8: ['serialize', 'deserialize', 'cachedDataVersionTag', 'Serializer',
    'Deserializer', 'DefaultSerializer', 'DefaultDeserializer'],
  // missing in externs
  cluster: ['domain', 'SCHED_NONE', 'SCHED_RR', 'schedulingPolicy'],
  module: ['wrapper', 'globalPaths'],
  stream: ['super_'],
  // missing in externs
  crypto: ['Cipheriv', 'Decipheriv', 'DiffieHellmanGroup', 'Sign', 'constants',
    'createDiffieHellmanGroup', 'prng', 'rng', 'setEngine'],
  url: ['resolveObject'],
  events: ['usingDomains', 'listenerCount', 'init', 'defaultMaxListeners'],
  querystring: ['unescapeBuffer'],
}

There also remains errors and warnings that have not been ignored or fixed yet, they can be found here: https://github.com/dpck/externs#wip.


Depack does not support:

  • <input disabled="" type="checkbox"> inspector
  • <input disabled="" type="checkbox"> string_decoder
  • <input disabled="" type="checkbox"> sys

Art Deco © Art Deco for Depack 2019 Tech Nation Visa Tech Nation Visa Sucks

changelog

30 July 2019

1.1.4

  • [ignore] Ignore events.
  • [ignore] Ignore unescapeBuffer in queryString.

24 April 2019

1.1.3

  • [ignore] Ignore resolveObject from url.

12 April 2019

1.1.2

  • [ignore] Ignore unimplemented crypto properties; ignore stream.super_.
  • [fix] Rename to crypto to _crypto.

10 April 2019

1.1.1

  • [ignore] Ignore module.wrapper and module.globalPaths.

9 April 2019

1.1.0

  • [feature] Ignore some missing methods and properties, doc WIP.

5 April 2019

1.0.2

  • [fix] Don't use quotes.

2 April 2019

1.0.1

  • [package] Publish source.

1 April 2019

1.0.0

  • [package] Publish the builtin-modules for v8.

0.0.0