@depack/nodejs

1.1.4 • Public • Published

@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:

  • [ ] inspector
  • [ ] string_decoder
  • [ ] sys

Copyright

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

Package Sidebar

Install

npm i @depack/nodejs

Weekly Downloads

8

Version

1.1.4

License

MIT

Unpacked Size

25 kB

Total Files

51

Last publish

Collaborators

  • zvr