@emnapi/ts-transform-emscripten-esm-library
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@emnapi/ts-transform-emscripten-esm-library

Example: see https://github.com/toyobayashi/emnapi/blob/main/packages/ts-transform-emscripten-esm-library/test

const {
  transformWithOptions
} = require('@emnapi/ts-transform-emscripten-esm-library')

/** @type {string} */
const output = transformWithOptions(
  'filename.js',
  /** @type {string} */ input,
  {
    /** @type {string[]} */
    defaultLibraryFuncsToInclude: [ /* ... */],

    /** @type {string[]} */
    exportedRuntimeMethods: [ /* ... */ ],

    /** @type {boolean} */
    processDirective: true,

    /** @type {boolean} */
    processParseTools: true,

    /** @type {string} */
    runtimeModuleSpecifier: 'emscripten:runtime',

    /** @type {string} */
    parseToolsModuleSpecifier: 'emscripten:parse-tools'
  }
)
input output
export function x () {
  return 42
}
function _x() {
  return 42
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  x: _x
})
export function $x () {
  return 42
}
function x() {
  return 42
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  $x: x
})
export const x = getX()

function getX() {
  return 42
}
const _x = getX()
function getX() {
    return 42;
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  $getX: getX,
  x: "getX()",
  x__deps: ["$getX"]
});
const localVar = 10

function f () {
  console.log(localVar)
}

function localFunc() {
  f()
  console.log(localVar)
}

export {
  localVar as exportedVar,
  localFunc as exportedFunc
}
const _exportedVar = 10
function f() {
  console.log(_exportedVar)
}
function _exportedFunc() {
  f()
  console.log(_exportedVar)
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  exportedVar: "10",
  $f: f,
  $f__deps: ["exportedVar"],
  exportedFunc: _exportedFunc,
  exportedFunc__deps: ["$f", "exportedVar"]
})
/** @__deps $external */
export function x() {}

/**
 * @__deps emscripten_resize_heap
 * @__deps $runtimeKeepalivePush
 * @__deps $runtimeKeepalivePop
 * @__sig v
 * @__postset
 * ```
 * console.log(42);
 * console.log(_y);
 * ```
 *
 * @returns {void}
 */
export function y() {
  runtimeKeepalivePush()
  runtimeKeepalivePop()
  _emscripten_resize_heap()
  return x()
}
/** @__deps $external */
function _x() { }
/**
 * @__deps emscripten_resize_heap
 * @__deps $runtimeKeepalivePush
 * @__deps $runtimeKeepalivePop
 * @__sig v
 * @__postset
 * ```
 * console.log(42);
 * console.log(_y);
 * ```
 *
 * @returns {void}
 */
function _y() {
  runtimeKeepalivePush()
  runtimeKeepalivePop()
  _emscripten_resize_heap()
  return _x()
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  x: _x,
  x__deps: ["$external"],
  y: _y,
  y__deps: [
    "x",
    "emscripten_resize_heap",
    "$runtimeKeepalivePush",
    "$runtimeKeepalivePop"
  ],
  y__sig: "v",
  y__postset: "console.log(42);\nconsole.log(_y);"
})
export function getPointerSize () {
  let result
  // #if MEMORY64
  result = 8
  // #else
  result = 4
  // #endif
  return result
}
function _getPointerSize() {
  let result
#if MEMORY64
  result = 8
#else
  result = 4
#endif
  return result
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  getPointerSize: _getPointerSize
})
import {
  from64,
  makeSetValue,
  SIZE_TYPE,
  POINTER_SIZE
} from 'emscripten:parse-tools'
import {
  wasmMemory,
  HEAPU8
} from 'emscripten:runtime'

export function getPointerSize (ret) {
  from64('ret')
  makeSetValue('ret', 0, POINTER_SIZE, SIZE_TYPE)
  console.log(HEAPU8.buffer === wasmMemory.buffer)
  return POINTER_SIZE
}
function _getPointerSize(ret) {
  {{{ from64('ret') }}}
  {{{ makeSetValue('ret', 0, POINTER_SIZE, SIZE_TYPE) }}}
  console.log(HEAPU8.buffer === wasmMemory.buffer)
  return {{{ POINTER_SIZE }}}
}
(typeof addToLibrary === "function"
  ? addToLibrary :
  (...args) => mergeInto(
    LibraryManager.library, ...args)
)({
  getPointerSize: _getPointerSize
});

Readme

Keywords

none

Package Sidebar

Install

npm i @emnapi/ts-transform-emscripten-esm-library

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

29.9 kB

Total Files

4

Last publish

Collaborators

  • toyobayashi