typenative 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/npm-publish-github-packages.yml +1 -1
- package/CHANGELOG.md +247 -0
- package/CONTRIBUTION.md +1 -1
- package/README.md +30 -21
- package/bin/cli.js +3 -1
- package/bin/go/bridge.js +919 -0
- package/bin/go/convert.js +238 -0
- package/bin/go/metadata.js +211 -0
- package/bin/go/overrides.js +68 -0
- package/bin/go/stdlib.generated.js +175 -0
- package/bin/index.js +98 -6
- package/bin/main.js +4 -1
- package/bin/node/assert.js +344 -0
- package/bin/node/async_hooks.js +273 -0
- package/bin/node/buffer.js +765 -0
- package/bin/node/child_process.js +600 -0
- package/bin/node/cluster.js +1002 -0
- package/bin/node/console.js +121 -0
- package/bin/node/core.js +111 -0
- package/bin/node/crypto.js +414 -0
- package/bin/node/crypto_keys.js +2685 -0
- package/bin/node/dgram.js +388 -0
- package/bin/node/diagnostics_channel.js +534 -0
- package/bin/node/dns.js +635 -0
- package/bin/node/events.js +743 -0
- package/bin/node/fetch.js +737 -0
- package/bin/node/fs.js +998 -0
- package/bin/node/http.js +1500 -0
- package/bin/node/http2.js +688 -0
- package/bin/node/net.js +1143 -0
- package/bin/node/os.js +257 -0
- package/bin/node/path.js +758 -0
- package/bin/node/process.js +316 -0
- package/bin/node/punycode.js +195 -0
- package/bin/node/querystring.js +143 -0
- package/bin/node/readline.js +299 -0
- package/bin/node/registry.js +161 -0
- package/bin/node/sqlite.js +1142 -0
- package/bin/node/stream.js +1221 -0
- package/bin/node/stream_web.js +2259 -0
- package/bin/node/string_decoder.js +101 -0
- package/bin/node/system_extra.js +661 -0
- package/bin/node/test.js +1068 -0
- package/bin/node/timers.js +250 -0
- package/bin/node/tls.js +719 -0
- package/bin/node/url.js +861 -0
- package/bin/node/util.js +1311 -0
- package/bin/node/util_extra.js +599 -0
- package/bin/node/worker_threads.js +745 -0
- package/bin/node/zlib.js +263 -0
- package/bin/parse-native.js +3 -2
- package/bin/parse-node.js +18 -2
- package/bin/transpiler.js +3529 -597
- package/bin/version.js +2 -0
- package/conformance.md +724 -258
- package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
- package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
- package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
- package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
- package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
- package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
- package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
- package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
- package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
- package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
- package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
- package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
- package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
- package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
- package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
- package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
- package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
- package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
- package/govendor/github.com/ncruces/julianday/README.md +9 -0
- package/govendor/github.com/ncruces/julianday/go.mod +3 -0
- package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
- package/govendor/golang.org/x/sys/LICENSE +27 -0
- package/govendor/golang.org/x/sys/PATENTS +22 -0
- package/govendor/golang.org/x/sys/go.mod +3 -0
- package/govendor/golang.org/x/sys/unix/README.md +184 -0
- package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
- package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
- package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
- package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
- package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
- package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
- package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
- package/govendor/golang.org/x/sys/unix/constants.go +13 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
- package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
- package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
- package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
- package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
- package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
- package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
- package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
- package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
- package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
- package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
- package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
- package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
- package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
- package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
- package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
- package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
- package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
- package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
- package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
- package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
- package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
- package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
- package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
- package/govendor/golang.org/x/sys/unix/race.go +30 -0
- package/govendor/golang.org/x/sys/unix/race0.go +25 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
- package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
- package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
- package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
- package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
- package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
- package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
- package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
- package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
- package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
- package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
- package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
- package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
- package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
- package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
- package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
- package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
- package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
- package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
- package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
- package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
- package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
- package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
- package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
- package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
- package/govendor/golang.org/x/sys/windows/race.go +30 -0
- package/govendor/golang.org/x/sys/windows/race0.go +25 -0
- package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
- package/govendor/golang.org/x/sys/windows/service.go +257 -0
- package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
- package/govendor/golang.org/x/sys/windows/str.go +22 -0
- package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
- package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
- package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
- package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
- package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
- package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
- package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
- package/govendor/manifest.txt +7 -0
- package/package.json +6 -1
- package/tsparser/main.go +37 -3
- package/tsparser/tsparser.exe +2 -2
- package/types/typenative-go.d.ts +15159 -5
- package/types/typenative-npm.d.ts +2637 -30
- package/types/typenative.d.ts +1092 -56
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// node:console + the global console's extra methods (count / group / time /
|
|
2
|
+
// assert / trace / dir). console.log / error / warn themselves are lowered in
|
|
3
|
+
// the transpiler (callHandlers); node:console's functions route there.
|
|
4
|
+
import { defineHelper, defineModule } from './registry.js';
|
|
5
|
+
const consoleHelper = `// console: group indentation, counters and timers (Node's output formats)
|
|
6
|
+
var tnConsoleIndent = ""
|
|
7
|
+
var tnConsoleCounts = map[string]int{}
|
|
8
|
+
var tnConsoleTimers = map[string]time.Time{}
|
|
9
|
+
var tnConsoleMu sync.Mutex
|
|
10
|
+
|
|
11
|
+
func TnConsoleWrite(w *os.File, line string) {
|
|
12
|
+
tnConsoleMu.Lock()
|
|
13
|
+
defer tnConsoleMu.Unlock()
|
|
14
|
+
if tnConsoleIndent != "" {
|
|
15
|
+
line = tnConsoleIndent + strings.ReplaceAll(line, "\\n", "\\n"+tnConsoleIndent)
|
|
16
|
+
}
|
|
17
|
+
fmt.Fprintln(w, line)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
func TnConsoleGroup(label ...interface{}) {
|
|
21
|
+
if len(label) > 0 {
|
|
22
|
+
TnConsoleWrite(os.Stdout, strings.TrimSuffix(fmt.Sprintln(label...), "\\n"))
|
|
23
|
+
}
|
|
24
|
+
tnConsoleMu.Lock()
|
|
25
|
+
tnConsoleIndent += " "
|
|
26
|
+
tnConsoleMu.Unlock()
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
func TnConsoleGroupEnd() {
|
|
30
|
+
tnConsoleMu.Lock()
|
|
31
|
+
if len(tnConsoleIndent) >= 2 {
|
|
32
|
+
tnConsoleIndent = tnConsoleIndent[2:]
|
|
33
|
+
}
|
|
34
|
+
tnConsoleMu.Unlock()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func TnConsoleCount(label ...string) {
|
|
38
|
+
name := "default"
|
|
39
|
+
if len(label) > 0 {
|
|
40
|
+
name = label[0]
|
|
41
|
+
}
|
|
42
|
+
tnConsoleMu.Lock()
|
|
43
|
+
tnConsoleCounts[name]++
|
|
44
|
+
n := tnConsoleCounts[name]
|
|
45
|
+
tnConsoleMu.Unlock()
|
|
46
|
+
TnConsoleWrite(os.Stdout, fmt.Sprintf("%s: %d", name, n))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
func TnConsoleCountReset(label ...string) {
|
|
50
|
+
name := "default"
|
|
51
|
+
if len(label) > 0 {
|
|
52
|
+
name = label[0]
|
|
53
|
+
}
|
|
54
|
+
tnConsoleMu.Lock()
|
|
55
|
+
delete(tnConsoleCounts, name)
|
|
56
|
+
tnConsoleMu.Unlock()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
func tnTimerLabel(label []string) string {
|
|
60
|
+
if len(label) > 0 {
|
|
61
|
+
return label[0]
|
|
62
|
+
}
|
|
63
|
+
return "default"
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
func TnConsoleTime(label ...string) {
|
|
67
|
+
tnConsoleMu.Lock()
|
|
68
|
+
tnConsoleTimers[tnTimerLabel(label)] = time.Now()
|
|
69
|
+
tnConsoleMu.Unlock()
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Node's duration format: 1.234ms, 1.234s, 1:02.345 (m:ss.mmm)
|
|
73
|
+
func tnFormatDuration(d time.Duration) string {
|
|
74
|
+
ms := float64(d.Nanoseconds()) / 1e6
|
|
75
|
+
if ms < 1000 {
|
|
76
|
+
return fmt.Sprintf("%.3fms", ms)
|
|
77
|
+
}
|
|
78
|
+
if ms < 60000 {
|
|
79
|
+
return fmt.Sprintf("%.3fs", ms/1000)
|
|
80
|
+
}
|
|
81
|
+
minutes := int(ms / 60000)
|
|
82
|
+
return fmt.Sprintf("%d:%06.3f (m:ss.mmm)", minutes, (ms-float64(minutes)*60000)/1000)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
func tnConsoleElapsed(label string, end bool) (string, bool) {
|
|
86
|
+
tnConsoleMu.Lock()
|
|
87
|
+
defer tnConsoleMu.Unlock()
|
|
88
|
+
start, ok := tnConsoleTimers[label]
|
|
89
|
+
if !ok {
|
|
90
|
+
return "", false
|
|
91
|
+
}
|
|
92
|
+
if end {
|
|
93
|
+
delete(tnConsoleTimers, label)
|
|
94
|
+
}
|
|
95
|
+
return label + ": " + tnFormatDuration(time.Since(start)), true
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
func TnConsoleTimeEnd(label ...string) {
|
|
99
|
+
name := tnTimerLabel(label)
|
|
100
|
+
if line, ok := tnConsoleElapsed(name, true); ok {
|
|
101
|
+
TnConsoleWrite(os.Stdout, line)
|
|
102
|
+
} else {
|
|
103
|
+
TnConsoleWrite(os.Stderr, "Warning: No such label '"+name+"' for console.timeEnd()")
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
func TnConsoleTimeLog(label string, extra string) {
|
|
108
|
+
if line, ok := tnConsoleElapsed(label, false); ok {
|
|
109
|
+
if extra != "" {
|
|
110
|
+
line += " " + extra
|
|
111
|
+
}
|
|
112
|
+
TnConsoleWrite(os.Stdout, line)
|
|
113
|
+
} else {
|
|
114
|
+
TnConsoleWrite(os.Stderr, "Warning: No such label '"+label+"' for console.timeLog()")
|
|
115
|
+
}
|
|
116
|
+
}`;
|
|
117
|
+
export function registerConsole(r) {
|
|
118
|
+
defineModule(r, 'console');
|
|
119
|
+
defineHelper(r, 'console', ['fmt', 'os', 'strings', 'sync', 'time'], [], consoleHelper);
|
|
120
|
+
r.namespaces['console.default'] = 'console';
|
|
121
|
+
}
|
package/bin/node/core.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Cross-cutting Node types: NodeJS.ErrnoException is the TnError every
|
|
2
|
+
// thrown Node error is (err.code / err.syscall / err.path / err.errno)
|
|
3
|
+
import { defineClass, defineHelper, defineModule } from './registry.js';
|
|
4
|
+
const invokeHelper = `// Node-style callbacks (cb(err, value)) take any arguments
|
|
5
|
+
type TnCallback = func(...interface{})
|
|
6
|
+
|
|
7
|
+
// Calls a JS callback of any Go func type with JS arguments: extra arguments
|
|
8
|
+
// are dropped, missing ones are zero values, numbers convert between kinds
|
|
9
|
+
func TnInvoke(fn interface{}, args ...interface{}) interface{} {
|
|
10
|
+
fv := reflect.ValueOf(fn)
|
|
11
|
+
if !fv.IsValid() || fv.Kind() != reflect.Func || fv.IsNil() {
|
|
12
|
+
return nil
|
|
13
|
+
}
|
|
14
|
+
ft := fv.Type()
|
|
15
|
+
in := []reflect.Value{}
|
|
16
|
+
n := ft.NumIn()
|
|
17
|
+
for i := 0; i < n; i++ {
|
|
18
|
+
if ft.IsVariadic() && i == n-1 {
|
|
19
|
+
elem := ft.In(i).Elem()
|
|
20
|
+
for j := i; j < len(args); j++ {
|
|
21
|
+
in = append(in, tnInvokeArg(args[j], elem))
|
|
22
|
+
}
|
|
23
|
+
break
|
|
24
|
+
}
|
|
25
|
+
var a interface{}
|
|
26
|
+
if i < len(args) {
|
|
27
|
+
a = args[i]
|
|
28
|
+
}
|
|
29
|
+
in = append(in, tnInvokeArg(a, ft.In(i)))
|
|
30
|
+
}
|
|
31
|
+
out := fv.Call(in)
|
|
32
|
+
if len(out) > 0 {
|
|
33
|
+
return out[0].Interface()
|
|
34
|
+
}
|
|
35
|
+
return nil
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func tnInvokeArg(a interface{}, t reflect.Type) reflect.Value {
|
|
39
|
+
if a == nil {
|
|
40
|
+
return reflect.Zero(t)
|
|
41
|
+
}
|
|
42
|
+
v := reflect.ValueOf(a)
|
|
43
|
+
if v.Type().AssignableTo(t) {
|
|
44
|
+
return v
|
|
45
|
+
}
|
|
46
|
+
// Nullable primitives (*string / *float64) take a pointer to the value
|
|
47
|
+
if t.Kind() == reflect.Pointer && v.Type().AssignableTo(t.Elem()) {
|
|
48
|
+
p := reflect.New(t.Elem())
|
|
49
|
+
p.Elem().Set(v)
|
|
50
|
+
return p
|
|
51
|
+
}
|
|
52
|
+
// A callback of another func type: adapt the arguments through TnInvoke
|
|
53
|
+
if t.Kind() == reflect.Func && v.Kind() == reflect.Func {
|
|
54
|
+
target := a
|
|
55
|
+
return reflect.MakeFunc(t, func(in []reflect.Value) []reflect.Value {
|
|
56
|
+
args := make([]interface{}, len(in))
|
|
57
|
+
for i, arg := range in {
|
|
58
|
+
if arg.Kind() == reflect.Pointer && arg.IsNil() {
|
|
59
|
+
args[i] = nil
|
|
60
|
+
} else if arg.Kind() == reflect.Pointer && arg.Elem().Kind() != reflect.Struct {
|
|
61
|
+
args[i] = arg.Elem().Interface()
|
|
62
|
+
} else {
|
|
63
|
+
args[i] = arg.Interface()
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
result := TnInvoke(target, args...)
|
|
67
|
+
out := []reflect.Value{}
|
|
68
|
+
for i := 0; i < t.NumOut(); i++ {
|
|
69
|
+
out = append(out, tnInvokeArg(result, t.Out(i)))
|
|
70
|
+
}
|
|
71
|
+
return out
|
|
72
|
+
})
|
|
73
|
+
}
|
|
74
|
+
numeric := func(k reflect.Kind) bool {
|
|
75
|
+
return (k >= reflect.Int && k <= reflect.Uint64) || k == reflect.Float32 || k == reflect.Float64
|
|
76
|
+
}
|
|
77
|
+
if numeric(v.Kind()) && numeric(t.Kind()) {
|
|
78
|
+
return v.Convert(t)
|
|
79
|
+
}
|
|
80
|
+
// Decoded JSON-like values into typed parameters (worker messages …)
|
|
81
|
+
if converted, ok := TnConvertDynamic(a, t); ok {
|
|
82
|
+
return converted
|
|
83
|
+
}
|
|
84
|
+
return reflect.Zero(t)
|
|
85
|
+
}`;
|
|
86
|
+
export function registerCore(r) {
|
|
87
|
+
defineHelper(r, 'nodeInvoke', ['reflect'], ['dynamic'], invokeHelper);
|
|
88
|
+
defineClass(r, 'NodeJS.ErrnoException', '*TnError', 'class', '', 'message=string; code=string', 'name=string; stack=string; cause=interface{}; syscall=string; path=string; errno=float64; hostname=string; address=string; port=float64; actual=interface{}; expected=interface{}; operator=string; generatedMessage=bool', '');
|
|
89
|
+
r.globals['NodeJS'] = 'NodeJS';
|
|
90
|
+
// Callback types of Node's typings (TransformCallback …)
|
|
91
|
+
for (const name of ['stream.TransformCallback', 'fs.NoParamCallback']) {
|
|
92
|
+
defineClass(r, name, 'TnCallback', 'class', '', '', '', '');
|
|
93
|
+
}
|
|
94
|
+
r.classByGoType['TnCallback'] = '';
|
|
95
|
+
}
|
|
96
|
+
// node:constants (deprecated): fs.constants and os.constants.signals merged.
|
|
97
|
+
// Registered after the fs and os modules.
|
|
98
|
+
export function registerConstants(r) {
|
|
99
|
+
defineModule(r, 'constants');
|
|
100
|
+
for (const key of Object.keys(r.values)) {
|
|
101
|
+
let name = '';
|
|
102
|
+
if (key.startsWith('fs.constants.'))
|
|
103
|
+
name = key.slice('fs.constants.'.length);
|
|
104
|
+
if (key.startsWith('os.constants.signals.'))
|
|
105
|
+
name = key.slice('os.constants.signals.'.length);
|
|
106
|
+
if (!name)
|
|
107
|
+
continue;
|
|
108
|
+
r.values[`constants.${name}`] = r.values[key];
|
|
109
|
+
r.valueTypes[`constants.${name}`] = r.valueTypes[key];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
// node:crypto (+ the global crypto): hashes / HMAC (md5, sha1, sha2, sha3),
|
|
2
|
+
// random bytes / UUIDs / ints, timingSafeEqual, PBKDF2 / HKDF, AES ciphers
|
|
3
|
+
// (cbc / ctr / gcm). Backed by Go's crypto packages.
|
|
4
|
+
import { defineClass, defineHelper, defineModule, setResults } from './registry.js';
|
|
5
|
+
const cryptoHelper = `// node:crypto
|
|
6
|
+
func tnHashFactory(alg string) func() hash.Hash {
|
|
7
|
+
switch strings.ToLower(alg) {
|
|
8
|
+
case "md5":
|
|
9
|
+
return md5.New
|
|
10
|
+
case "sha1", "sha-1":
|
|
11
|
+
return sha1.New
|
|
12
|
+
case "sha224", "sha-224":
|
|
13
|
+
return sha256.New224
|
|
14
|
+
case "sha256", "sha-256":
|
|
15
|
+
return sha256.New
|
|
16
|
+
case "sha384", "sha-384":
|
|
17
|
+
return sha512.New384
|
|
18
|
+
case "sha512", "sha-512":
|
|
19
|
+
return sha512.New
|
|
20
|
+
case "sha512-224":
|
|
21
|
+
return sha512.New512_224
|
|
22
|
+
case "sha512-256":
|
|
23
|
+
return sha512.New512_256
|
|
24
|
+
case "sha3-224":
|
|
25
|
+
return func() hash.Hash { return sha3.New224() }
|
|
26
|
+
case "sha3-256":
|
|
27
|
+
return func() hash.Hash { return sha3.New256() }
|
|
28
|
+
case "sha3-384":
|
|
29
|
+
return func() hash.Hash { return sha3.New384() }
|
|
30
|
+
case "sha3-512":
|
|
31
|
+
return func() hash.Hash { return sha3.New512() }
|
|
32
|
+
}
|
|
33
|
+
panic(TnNodeError("Error", "ERR_OSSL_EVP_UNSUPPORTED", "Digest method not supported"))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
func TnGetHashes() []string {
|
|
37
|
+
return []string{"md5", "sha1", "sha224", "sha256", "sha3-224", "sha3-256", "sha3-384", "sha3-512", "sha384", "sha512", "sha512-224", "sha512-256"}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Hash and Hmac objects (createHash / createHmac)
|
|
41
|
+
type TnHash struct {
|
|
42
|
+
h hash.Hash
|
|
43
|
+
alg string
|
|
44
|
+
finalized bool
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func TnCreateHash(alg string, options ...interface{}) *TnHash {
|
|
48
|
+
return &TnHash{h: tnHashFactory(alg)(), alg: alg}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func TnCreateHmac(alg string, key interface{}, options ...interface{}) *TnHash {
|
|
52
|
+
return &TnHash{h: hmac.New(tnHashFactory(alg), tnCryptoBytes(key, "")), alg: alg}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Bytes of data passed to crypto APIs: strings in an encoding (utf8 by default) or Buffers
|
|
56
|
+
func tnCryptoBytes(v interface{}, enc string) []byte {
|
|
57
|
+
switch x := v.(type) {
|
|
58
|
+
case string:
|
|
59
|
+
return TnBufferFromString(x, enc)
|
|
60
|
+
case []byte:
|
|
61
|
+
return x
|
|
62
|
+
}
|
|
63
|
+
return TnBufferFrom(v, enc)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
func (h *TnHash) update(data interface{}, enc ...string) *TnHash {
|
|
67
|
+
if h.finalized {
|
|
68
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_HASH_FINALIZED", "Digest already called"))
|
|
69
|
+
}
|
|
70
|
+
e := ""
|
|
71
|
+
if len(enc) > 0 {
|
|
72
|
+
e = enc[0]
|
|
73
|
+
}
|
|
74
|
+
h.h.Write(tnCryptoBytes(data, e))
|
|
75
|
+
return h
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
func (h *TnHash) digestBytes() []byte {
|
|
79
|
+
if h.finalized {
|
|
80
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_HASH_FINALIZED", "Digest already called"))
|
|
81
|
+
}
|
|
82
|
+
h.finalized = true
|
|
83
|
+
return h.h.Sum(nil)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
func (h *TnHash) digest() []byte { return h.digestBytes() }
|
|
87
|
+
|
|
88
|
+
func (h *TnHash) digestString(enc string) string { return TnBufferToString(h.digestBytes(), enc) }
|
|
89
|
+
|
|
90
|
+
// hash.copy(): the state so far, as an independent Hash
|
|
91
|
+
func (h *TnHash) copy() *TnHash {
|
|
92
|
+
m, ok := h.h.(encoding.BinaryMarshaler)
|
|
93
|
+
if !ok {
|
|
94
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_HASH_FINALIZED", "Digest already called"))
|
|
95
|
+
}
|
|
96
|
+
state, err := m.MarshalBinary()
|
|
97
|
+
if err != nil {
|
|
98
|
+
panic(err)
|
|
99
|
+
}
|
|
100
|
+
clone := tnHashFactory(h.alg)()
|
|
101
|
+
clone.(encoding.BinaryUnmarshaler).UnmarshalBinary(state)
|
|
102
|
+
return &TnHash{h: clone, alg: h.alg}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// crypto.hash(algorithm, data, outputEncoding = "hex")
|
|
106
|
+
func TnHashOnce(alg string, data interface{}, enc ...string) string {
|
|
107
|
+
out := "hex"
|
|
108
|
+
if len(enc) > 0 && enc[0] != "" {
|
|
109
|
+
out = enc[0]
|
|
110
|
+
}
|
|
111
|
+
h := tnHashFactory(alg)()
|
|
112
|
+
h.Write(tnCryptoBytes(data, ""))
|
|
113
|
+
return TnBufferToString(h.Sum(nil), out)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
func TnRandomBytes(n float64) []byte {
|
|
117
|
+
b := make([]byte, int(n))
|
|
118
|
+
if _, err := cryptorand.Read(b); err != nil {
|
|
119
|
+
panic(err)
|
|
120
|
+
}
|
|
121
|
+
return b
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
func TnRandomUUID() string {
|
|
125
|
+
b := TnRandomBytes(16)
|
|
126
|
+
b[6] = (b[6] & 0x0f) | 0x40
|
|
127
|
+
b[8] = (b[8] & 0x3f) | 0x80
|
|
128
|
+
h := hex.EncodeToString(b)
|
|
129
|
+
return h[0:8] + "-" + h[8:12] + "-" + h[12:16] + "-" + h[16:20] + "-" + h[20:32]
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// randomInt([min,] max): min <= n < max
|
|
133
|
+
func TnRandomInt(a float64, b ...float64) float64 {
|
|
134
|
+
min, max := 0.0, a
|
|
135
|
+
if len(b) > 0 {
|
|
136
|
+
min, max = a, b[0]
|
|
137
|
+
}
|
|
138
|
+
if max <= min {
|
|
139
|
+
panic(TnNodeError("RangeError", "ERR_OUT_OF_RANGE", "The value of \\"max\\" is out of range. It must be greater than the value of \\"min\\" ("+TnNumStr(min)+"). Received "+TnNumStr(max)))
|
|
140
|
+
}
|
|
141
|
+
n, err := cryptorand.Int(cryptorand.Reader, tnbig.NewInt(int64(max-min)))
|
|
142
|
+
if err != nil {
|
|
143
|
+
panic(err)
|
|
144
|
+
}
|
|
145
|
+
return min + float64(n.Int64())
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
func TnGetRandomValues(b []byte) []byte {
|
|
149
|
+
if _, err := cryptorand.Read(b); err != nil {
|
|
150
|
+
panic(err)
|
|
151
|
+
}
|
|
152
|
+
return b
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
func TnTimingSafeEqual(a []byte, b []byte) bool {
|
|
156
|
+
if len(a) != len(b) {
|
|
157
|
+
panic(TnNodeError("RangeError", "ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH", "Input buffers must have the same byte length"))
|
|
158
|
+
}
|
|
159
|
+
return subtle.ConstantTimeCompare(a, b) == 1
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
func TnPbkdf2(password interface{}, salt interface{}, iterations float64, keylen float64, digest string) []byte {
|
|
163
|
+
key, err := pbkdf2.Key(tnHashFactory(digest), string(tnCryptoBytes(password, "")), tnCryptoBytes(salt, ""), int(iterations), int(keylen))
|
|
164
|
+
if err != nil {
|
|
165
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_INVALID_KEYLEN", err.Error()))
|
|
166
|
+
}
|
|
167
|
+
return key
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
func TnHkdf(digest string, ikm interface{}, salt interface{}, info interface{}, keylen float64) []byte {
|
|
171
|
+
key, err := hkdf.Key(tnHashFactory(digest), tnCryptoBytes(ikm, ""), tnCryptoBytes(salt, ""), string(tnCryptoBytes(info, "")), int(keylen))
|
|
172
|
+
if err != nil {
|
|
173
|
+
panic(TnNodeError("RangeError", "ERR_CRYPTO_INVALID_KEYLEN", err.Error()))
|
|
174
|
+
}
|
|
175
|
+
return key
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Ciphers: aes-{128,192,256}-{cbc,ctr,gcm}; GCM authenticates on final()
|
|
179
|
+
type TnCipher struct {
|
|
180
|
+
decrypt bool
|
|
181
|
+
mode string
|
|
182
|
+
block cipher.Block
|
|
183
|
+
stream cipher.Stream
|
|
184
|
+
cbc cipher.BlockMode
|
|
185
|
+
aead cipher.AEAD
|
|
186
|
+
iv []byte
|
|
187
|
+
pending []byte
|
|
188
|
+
aad []byte
|
|
189
|
+
authTag []byte
|
|
190
|
+
autoPadding bool
|
|
191
|
+
finalized bool
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
func TnGetCiphers() []string {
|
|
195
|
+
return []string{"aes-128-cbc", "aes-128-ctr", "aes-128-gcm", "aes-192-cbc", "aes-192-ctr", "aes-192-gcm", "aes-256-cbc", "aes-256-ctr", "aes-256-gcm"}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
func TnCreateCipher(alg string, key interface{}, iv interface{}, decrypt bool, options ...interface{}) *TnCipher {
|
|
199
|
+
parts := strings.Split(strings.ToLower(alg), "-")
|
|
200
|
+
if len(parts) != 3 || parts[0] != "aes" {
|
|
201
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_UNKNOWN_CIPHER", "Unknown cipher"))
|
|
202
|
+
}
|
|
203
|
+
k := tnCryptoBytes(key, "")
|
|
204
|
+
if strconv.Itoa(len(k)*8) != parts[1] {
|
|
205
|
+
panic(TnNodeError("RangeError", "ERR_CRYPTO_INVALID_KEYLEN", "Invalid key length"))
|
|
206
|
+
}
|
|
207
|
+
block, err := aes.NewCipher(k)
|
|
208
|
+
if err != nil {
|
|
209
|
+
panic(TnNodeError("RangeError", "ERR_CRYPTO_INVALID_KEYLEN", "Invalid key length"))
|
|
210
|
+
}
|
|
211
|
+
c := &TnCipher{decrypt: decrypt, mode: parts[2], block: block, iv: tnCryptoBytes(iv, ""), autoPadding: true}
|
|
212
|
+
switch c.mode {
|
|
213
|
+
case "cbc":
|
|
214
|
+
if len(c.iv) != aes.BlockSize {
|
|
215
|
+
panic(TnNodeError("TypeError", "ERR_CRYPTO_INVALID_IV", "Invalid initialization vector"))
|
|
216
|
+
}
|
|
217
|
+
if decrypt {
|
|
218
|
+
c.cbc = cipher.NewCBCDecrypter(block, c.iv)
|
|
219
|
+
} else {
|
|
220
|
+
c.cbc = cipher.NewCBCEncrypter(block, c.iv)
|
|
221
|
+
}
|
|
222
|
+
case "ctr":
|
|
223
|
+
if len(c.iv) != aes.BlockSize {
|
|
224
|
+
panic(TnNodeError("TypeError", "ERR_CRYPTO_INVALID_IV", "Invalid initialization vector"))
|
|
225
|
+
}
|
|
226
|
+
c.stream = cipher.NewCTR(block, c.iv)
|
|
227
|
+
case "gcm":
|
|
228
|
+
aead, err := cipher.NewGCMWithNonceSize(block, len(c.iv))
|
|
229
|
+
if err != nil {
|
|
230
|
+
panic(TnNodeError("TypeError", "ERR_CRYPTO_INVALID_IV", "Invalid initialization vector"))
|
|
231
|
+
}
|
|
232
|
+
c.aead = aead
|
|
233
|
+
default:
|
|
234
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_UNKNOWN_CIPHER", "Unknown cipher"))
|
|
235
|
+
}
|
|
236
|
+
return c
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
func (c *TnCipher) process(data []byte) []byte {
|
|
240
|
+
switch c.mode {
|
|
241
|
+
case "ctr":
|
|
242
|
+
out := make([]byte, len(data))
|
|
243
|
+
c.stream.XORKeyStream(out, data)
|
|
244
|
+
return out
|
|
245
|
+
case "gcm":
|
|
246
|
+
c.pending = append(c.pending, data...)
|
|
247
|
+
return []byte{}
|
|
248
|
+
}
|
|
249
|
+
c.pending = append(c.pending, data...)
|
|
250
|
+
n := len(c.pending) / aes.BlockSize * aes.BlockSize
|
|
251
|
+
// Decryption keeps the last block back: it carries the padding
|
|
252
|
+
if c.decrypt && c.autoPadding && n == len(c.pending) && n > 0 {
|
|
253
|
+
n -= aes.BlockSize
|
|
254
|
+
}
|
|
255
|
+
out := make([]byte, n)
|
|
256
|
+
c.cbc.CryptBlocks(out, c.pending[:n])
|
|
257
|
+
c.pending = c.pending[n:]
|
|
258
|
+
return out
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
func (c *TnCipher) finish() []byte {
|
|
262
|
+
if c.finalized {
|
|
263
|
+
panic(TnNodeError("Error", "ERR_CRYPTO_INVALID_STATE", "Unsupported state"))
|
|
264
|
+
}
|
|
265
|
+
c.finalized = true
|
|
266
|
+
switch c.mode {
|
|
267
|
+
case "ctr":
|
|
268
|
+
return []byte{}
|
|
269
|
+
case "gcm":
|
|
270
|
+
if c.decrypt {
|
|
271
|
+
out, err := c.aead.Open(nil, c.iv, append(append([]byte{}, c.pending...), c.authTag...), c.aad)
|
|
272
|
+
if err != nil {
|
|
273
|
+
panic(TnNodeError("Error", "", "Unsupported state or unable to authenticate data"))
|
|
274
|
+
}
|
|
275
|
+
return out
|
|
276
|
+
}
|
|
277
|
+
sealed := c.aead.Seal(nil, c.iv, c.pending, c.aad)
|
|
278
|
+
tagStart := len(sealed) - c.aead.Overhead()
|
|
279
|
+
c.authTag = sealed[tagStart:]
|
|
280
|
+
return sealed[:tagStart]
|
|
281
|
+
}
|
|
282
|
+
if c.decrypt {
|
|
283
|
+
if len(c.pending) != aes.BlockSize && c.autoPadding {
|
|
284
|
+
panic(TnNodeError("Error", "ERR_OSSL_WRONG_FINAL_BLOCK_LENGTH", "wrong final block length"))
|
|
285
|
+
}
|
|
286
|
+
if len(c.pending) == 0 {
|
|
287
|
+
return []byte{}
|
|
288
|
+
}
|
|
289
|
+
out := make([]byte, len(c.pending))
|
|
290
|
+
c.cbc.CryptBlocks(out, c.pending)
|
|
291
|
+
if !c.autoPadding {
|
|
292
|
+
return out
|
|
293
|
+
}
|
|
294
|
+
pad := int(out[len(out)-1])
|
|
295
|
+
if pad == 0 || pad > aes.BlockSize {
|
|
296
|
+
panic(TnNodeError("Error", "ERR_OSSL_BAD_DECRYPT", "bad decrypt"))
|
|
297
|
+
}
|
|
298
|
+
return out[:len(out)-pad]
|
|
299
|
+
}
|
|
300
|
+
if !c.autoPadding {
|
|
301
|
+
if len(c.pending)%aes.BlockSize != 0 {
|
|
302
|
+
panic(TnNodeError("Error", "ERR_OSSL_WRONG_FINAL_BLOCK_LENGTH", "data not multiple of block length"))
|
|
303
|
+
}
|
|
304
|
+
out := make([]byte, len(c.pending))
|
|
305
|
+
c.cbc.CryptBlocks(out, c.pending)
|
|
306
|
+
return out
|
|
307
|
+
}
|
|
308
|
+
pad := aes.BlockSize - len(c.pending)%aes.BlockSize
|
|
309
|
+
padded := append(append([]byte{}, c.pending...), bytes.Repeat([]byte{byte(pad)}, pad)...)
|
|
310
|
+
out := make([]byte, len(padded))
|
|
311
|
+
c.cbc.CryptBlocks(out, padded)
|
|
312
|
+
return out
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
func (c *TnCipher) update(data interface{}, inputEncoding ...string) []byte {
|
|
316
|
+
enc := ""
|
|
317
|
+
if len(inputEncoding) > 0 {
|
|
318
|
+
enc = inputEncoding[0]
|
|
319
|
+
}
|
|
320
|
+
return c.process(tnCryptoBytes(data, enc))
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
func (c *TnCipher) updateString(data interface{}, inputEncoding string, outputEncoding string) string {
|
|
324
|
+
return TnBufferToString(c.process(tnCryptoBytes(data, inputEncoding)), outputEncoding)
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
func (c *TnCipher) final() []byte { return c.finish() }
|
|
328
|
+
|
|
329
|
+
func (c *TnCipher) finalString(enc string) string { return TnBufferToString(c.finish(), enc) }
|
|
330
|
+
|
|
331
|
+
func (c *TnCipher) setAAD(aad []byte, options ...interface{}) *TnCipher {
|
|
332
|
+
c.aad = aad
|
|
333
|
+
return c
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
func (c *TnCipher) setAuthTag(tag []byte) *TnCipher {
|
|
337
|
+
c.authTag = tag
|
|
338
|
+
return c
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
func (c *TnCipher) getAuthTag() []byte { return c.authTag }
|
|
342
|
+
|
|
343
|
+
func (c *TnCipher) setAutoPadding(pad ...bool) *TnCipher {
|
|
344
|
+
c.autoPadding = len(pad) == 0 || pad[0]
|
|
345
|
+
return c
|
|
346
|
+
}`;
|
|
347
|
+
export function registerCrypto(r) {
|
|
348
|
+
defineModule(r, 'crypto');
|
|
349
|
+
r.globals['crypto'] = 'crypto';
|
|
350
|
+
defineHelper(r, 'nodeCrypto', [
|
|
351
|
+
'bytes',
|
|
352
|
+
'crypto/aes',
|
|
353
|
+
'crypto/cipher',
|
|
354
|
+
'crypto/hkdf',
|
|
355
|
+
'crypto/hmac',
|
|
356
|
+
'crypto/md5',
|
|
357
|
+
'crypto/pbkdf2',
|
|
358
|
+
'crypto/rand',
|
|
359
|
+
'crypto/sha1',
|
|
360
|
+
'crypto/sha256',
|
|
361
|
+
'crypto/sha3',
|
|
362
|
+
'crypto/sha512',
|
|
363
|
+
'crypto/subtle',
|
|
364
|
+
'encoding',
|
|
365
|
+
'encoding/hex',
|
|
366
|
+
'hash',
|
|
367
|
+
'math/big',
|
|
368
|
+
'strconv',
|
|
369
|
+
'strings'
|
|
370
|
+
], ['error', 'buffer', 'dynamic'], cryptoHelper);
|
|
371
|
+
defineClass(r, 'crypto.Hash', '*TnHash', 'class', 'update=*TnHash; copy=*TnHash', '', '', '');
|
|
372
|
+
r.classes['crypto.Hmac'] = r.classes['crypto.Hash'];
|
|
373
|
+
defineClass(r, 'crypto.Cipher', '*TnCipher', 'class', 'setAAD=*TnCipher; setAuthTag=*TnCipher; getAuthTag=[]byte; setAutoPadding=*TnCipher', '', '', '');
|
|
374
|
+
r.classes['crypto.Cipheriv'] = r.classes['crypto.Cipher'];
|
|
375
|
+
r.classes['crypto.Decipheriv'] = r.classes['crypto.Cipher'];
|
|
376
|
+
r.classes['crypto.Decipher'] = r.classes['crypto.Cipher'];
|
|
377
|
+
const use = () => r.helper('nodeCrypto');
|
|
378
|
+
const fn = (name, result, emit) => {
|
|
379
|
+
r.functions[`crypto.${name}`] = (call) => {
|
|
380
|
+
use();
|
|
381
|
+
return emit(call);
|
|
382
|
+
};
|
|
383
|
+
r.results[`crypto.${name}`] = result;
|
|
384
|
+
};
|
|
385
|
+
fn('createHash', '*TnHash', (c) => `TnCreateHash(${c.args.join(', ')})`);
|
|
386
|
+
fn('createHmac', '*TnHash', (c) => `TnCreateHmac(${c.args.join(', ')})`);
|
|
387
|
+
fn('hash', 'string', (c) => `TnHashOnce(${c.args.join(', ')})`);
|
|
388
|
+
fn('getHashes', '[]string', (_c) => 'TnGetHashes()');
|
|
389
|
+
fn('getCiphers', '[]string', (_c) => 'TnGetCiphers()');
|
|
390
|
+
fn('randomBytes', '[]byte', (c) => `TnRandomBytes(${c.args[0]})`);
|
|
391
|
+
fn('randomUUID', 'string', (_c) => 'TnRandomUUID()');
|
|
392
|
+
fn('randomInt', 'float64', (c) => `TnRandomInt(${c.args.join(', ')})`);
|
|
393
|
+
fn('getRandomValues', '[]byte', (c) => `TnGetRandomValues(${c.args[0]})`);
|
|
394
|
+
fn('timingSafeEqual', 'bool', (c) => `TnTimingSafeEqual(${c.args[0]}, ${c.args[1]})`);
|
|
395
|
+
fn('pbkdf2Sync', '[]byte', (c) => `TnPbkdf2(${c.args.join(', ')})`);
|
|
396
|
+
fn('hkdfSync', '[]byte', (c) => `TnHkdf(${c.args.join(', ')})`);
|
|
397
|
+
fn('createCipheriv', '*TnCipher', (c) => `TnCreateCipher(${c.args[0]}, ${c.args[1]}, ${c.args[2]}, false)`);
|
|
398
|
+
fn('createDecipheriv', '*TnCipher', (c) => `TnCreateCipher(${c.args[0]}, ${c.args[1]}, ${c.args[2]}, true)`);
|
|
399
|
+
r.objects['crypto.webcrypto'] = true;
|
|
400
|
+
r.namespaces['crypto.webcrypto'] = 'crypto';
|
|
401
|
+
setResults(r, 'crypto', '');
|
|
402
|
+
// hash.digest(encoding?) → string with an encoding, Buffer without
|
|
403
|
+
r.methods['crypto.Hash#digest'] = (c) => (c.args.length > 0 ? `${c.recv}.digestString(${c.args[0]})` : `${c.recv}.digest()`);
|
|
404
|
+
r.typers['crypto.Hash#digest'] = (c) => (c.nodes.length > 0 ? 'string' : '[]byte');
|
|
405
|
+
// cipher.update(data, inputEncoding?, outputEncoding?) / final(outputEncoding?)
|
|
406
|
+
r.methods['crypto.Cipher#update'] = (c) => {
|
|
407
|
+
if (c.args.length >= 3)
|
|
408
|
+
return `${c.recv}.updateString(${c.args[0]}, ${c.args[1]}, ${c.args[2]})`;
|
|
409
|
+
return `${c.recv}.update(${c.args.join(', ')})`;
|
|
410
|
+
};
|
|
411
|
+
r.typers['crypto.Cipher#update'] = (c) => (c.nodes.length >= 3 ? 'string' : '[]byte');
|
|
412
|
+
r.methods['crypto.Cipher#final'] = (c) => (c.args.length > 0 ? `${c.recv}.finalString(${c.args[0]})` : `${c.recv}.final()`);
|
|
413
|
+
r.typers['crypto.Cipher#final'] = (c) => (c.nodes.length > 0 ? 'string' : '[]byte');
|
|
414
|
+
}
|