177409849SXin LI 277409849SXin LI#------------------------------------------------------------------------------ 3995a16e0SXin LI# $File: javascript,v 1.7 2024/11/10 14:48:55 christos Exp $ 477409849SXin LI# javascript: magic for javascript and node.js scripts. 577409849SXin LI# 672d4668cSXin LI0 string/tw #!/bin/node Node.js script executable 777409849SXin LI!:mime application/javascript 872d4668cSXin LI0 string/tw #!/usr/bin/node Node.js script executable 977409849SXin LI!:mime application/javascript 1072d4668cSXin LI0 string/tw #!/bin/nodejs Node.js script executable 1177409849SXin LI!:mime application/javascript 1272d4668cSXin LI0 string/tw #!/usr/bin/nodejs Node.js script executable 1377409849SXin LI!:mime application/javascript 1472d4668cSXin LI0 string/t #!/usr/bin/env\ node Node.js script executable 1577409849SXin LI!:mime application/javascript 1672d4668cSXin LI0 string/t #!/usr/bin/env\ nodejs Node.js script executable 1777409849SXin LI!:mime application/javascript 1872d4668cSXin LI 1972d4668cSXin LI# JavaScript 20995a16e0SXin LI# The strength is increased to beat the C++ but lose to HTML rules, 21995a16e0SXin LI# because javascript is embedded in hmtl files typically 2272d4668cSXin LI0 search "use\x20strict" JavaScript source 23995a16e0SXin LI!:strength +20 2472d4668cSXin LI!:mime application/javascript 2572d4668cSXin LI!:ext js 2672d4668cSXin LI0 search 'use\x20strict' JavaScript source 27995a16e0SXin LI!:strength +20 2872d4668cSXin LI!:mime application/javascript 2972d4668cSXin LI!:ext js 3072d4668cSXin LI0 regex module(\\.|\\[["'])exports.*= JavaScript source 31995a16e0SXin LI!:strength +20 3272d4668cSXin LI!:mime application/javascript 3372d4668cSXin LI!:ext js 3472d4668cSXin LI0 regex \^(const|var|let).*=.*require\\( JavaScript source 35995a16e0SXin LI!:strength +20 3672d4668cSXin LI!:mime application/javascript 3772d4668cSXin LI!:ext js 3872d4668cSXin LI0 regex \^export\x20(function|class|default|const|var|let|async)\x20 JavaScript source 39995a16e0SXin LI!:strength +20 4072d4668cSXin LI!:mime application/javascript 4172d4668cSXin LI!:ext js 4272d4668cSXin LI0 regex \\((async\x20)?function[(\x20] JavaScript source 43995a16e0SXin LI!:strength +20 4472d4668cSXin LI!:mime application/javascript 4572d4668cSXin LI!:ext js 4672d4668cSXin LI0 regex \^(import|export).*\x20from\x20 JavaScript source 47995a16e0SXin LI!:strength +20 4872d4668cSXin LI!:mime application/javascript 4972d4668cSXin LI!:ext js 5072d4668cSXin LI0 regex \^(import|export)\x20["']\\./ JavaScript source 51995a16e0SXin LI!:strength +20 5272d4668cSXin LI!:mime application/javascript 5372d4668cSXin LI!:ext js 5472d4668cSXin LI0 regex typeof.*[!=]== JavaScript source 55995a16e0SXin LI!:strength +20 5672d4668cSXin LI!:mime application/javascript 5772d4668cSXin LI!:ext js 5872d4668cSXin LI 5972d4668cSXin LI# React Native minified JavaScript 6072d4668cSXin LI0 search/128 __BUNDLE_START_TIME__= React Native minified JavaScript 61995a16e0SXin LI!:strength +20 6272d4668cSXin LI!:mime application/javascript 6372d4668cSXin LI!:ext bundle/jsbundle 6472d4668cSXin LI 65f210d1e9SXin LI# Hermes by Facebook https://hermesengine.dev/ 66f210d1e9SXin LI# https://github.com/facebook/hermes/blob/master/include/hermes/\ 67f210d1e9SXin LI# BCGen/HBC/BytecodeFileFormat.h#L24 68f210d1e9SXin LI0 lequad 0x1F1903C103BC1FC6 Hermes JavaScript bytecode 69f210d1e9SXin LI>8 lelong x \b, version %d 70ac338006SXin LI 71ac338006SXin LI# v8 JavaScript engine bytecode 72ac338006SXin LI# From: Alexandre Iooss <erdnaxe@crans.org> 73ac338006SXin LI# URL: https://v8.dev/docs/ignition 74ac338006SXin LI# Note: used in bytenode and NW.js protected source code 75ac338006SXin LI# V8 bytecode extraction was added in NodeJS v5.7.0 (V8 4.6.85.31). 76ac338006SXin LI# Version information is provided for some v8 versions found in NodeJS releases. 77ac338006SXin LI2 uleshort =0xC0DE 78ac338006SXin LI>0 ulelong^0xC0DE0000 >0 79ac338006SXin LI# Reservation table starts at 40 80ac338006SXin LI>>40 ulelong&0xFFFFFF00 =0x80000000 81ac338006SXin LI# Stub keys present 82ac338006SXin LI>>>24 ulelong >0 83ac338006SXin LI>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 84ac338006SXin LI>>>>4 ulelong =0xEE4BF478 version 5.1.281.111, 85ac338006SXin LI>>>>4 ulelong =0xC4A0100C version 5.5.372.43, 86ac338006SXin LI>>>>8 ulelong x source size: %u bytes, 87ac338006SXin LI>>>>12 ulelong x cpu features: %#08X, 88ac338006SXin LI>>>>16 ulelong x flag hash: %#08X, 89ac338006SXin LI>>>>20 ulelong x %u reservations, 90ac338006SXin LI>>>>28 ulelong x payload size: %u bytes, 91ac338006SXin LI>>>>32 ulelong x checksum1: %#08X, 92ac338006SXin LI>>>>36 ulelong x checksum2: %#08X 93ac338006SXin LI# No stub keys 94ac338006SXin LI>>>24 ulelong =0 95ac338006SXin LI>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 96ac338006SXin LI>>>>4 ulelong =0x54F0AD81 version 6.2.414.46, 97ac338006SXin LI>>>>4 ulelong =0X7D1BF182 version 6.2.414.54, 98ac338006SXin LI>>>>4 ulelong =0x35BA122E version 6.2.414.77, 99ac338006SXin LI>>>>4 ulelong =0X9319F9C2 version 6.2.414.78, 100ac338006SXin LI>>>>4 ulelong =0xB1240060 version 6.6.346.32, 101ac338006SXin LI>>>>4 ulelong =0x2B757060 version 6.7.288.46, 102ac338006SXin LI>>>>4 ulelong =0x09D147AA version 6.7.288.49, 103ac338006SXin LI>>>>4 ulelong =0xF4D4F48A version 6.8.275.32, 104ac338006SXin LI>>>>4 ulelong =0xD3961326 version 7.0.276.38, 105ac338006SXin LI>>>>8 ulelong x source size: %u bytes, 106ac338006SXin LI>>>>12 ulelong x cpu features: %#08X, 107ac338006SXin LI>>>>16 ulelong x flag hash: %#08X, 108ac338006SXin LI>>>>20 ulelong x %u reservations, 109ac338006SXin LI>>>>28 ulelong x payload size: %u bytes, 110ac338006SXin LI>>>>32 ulelong x checksum1: %#08X, 111ac338006SXin LI>>>>36 ulelong x checksum2: %#08X 112ac338006SXin LI# Reservation table starts at 32 113ac338006SXin LI>>32 ulelong&0xFFFFFF00 =0x80000000 114ac338006SXin LI# Second checksum present 115ac338006SXin LI>>>28 ulelong >0 116ac338006SXin LI>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 117ac338006SXin LI>>>>4 ulelong =0x21DDF627 version 7.4.288.21, 118ac338006SXin LI>>>>4 ulelong =0x1FC9FE84 version 7.4.288.27, 119ac338006SXin LI>>>>4 ulelong =0x60A99E8B version 7.5.288.22, 120ac338006SXin LI>>>>4 ulelong =0x4F665E90 version 7.6.303.29, 121ac338006SXin LI>>>>4 ulelong =0xC7ACFCDE version 7.7.299.11, 122ac338006SXin LI>>>>4 ulelong =0x7F641D8F version 7.7.299.13, 123ac338006SXin LI>>>>4 ulelong =0xFD9A4F2E version 7.8.279.17, 124ac338006SXin LI>>>>4 ulelong =0x3A845324 version 7.8.279.23, 125ac338006SXin LI>>>>4 ulelong =0xFF52FEAF version 7.9.317.25, 126ac338006SXin LI>>>>8 ulelong x source size: %u bytes, 127ac338006SXin LI>>>>12 ulelong x flag hash: %#08X, 128ac338006SXin LI>>>>16 ulelong x %u reservations, 129ac338006SXin LI>>>>20 ulelong x payload size: %u bytes, 130ac338006SXin LI>>>>24 ulelong x checksum1: %#08X, 131ac338006SXin LI>>>>28 ulelong x checksum2: %#08X 132ac338006SXin LI# No second checksum 133ac338006SXin LI>>>28 ulelong =0 134ac338006SXin LI>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 135ac338006SXin LI>>>>4 ulelong =0x8725E0F8 version 8.1.307.30, 136ac338006SXin LI>>>>4 ulelong =0x09ED1289 version 8.1.307.31, 137ac338006SXin LI>>>>4 ulelong =0xA5728C87 version 8.3.110.9, 138ac338006SXin LI>>>>4 ulelong =0xB45C5D30 version 8.4.371.23, 139ac338006SXin LI>>>>4 ulelong =0xED9C278B version 8.4.371.19, 140ac338006SXin LI>>>>4 ulelong =0xD27BFF42 version 8.6.395.16, 141ac338006SXin LI>>>>8 ulelong x source size: %u bytes, 142ac338006SXin LI>>>>12 ulelong x flag hash: %#08X, 143ac338006SXin LI>>>>16 ulelong x %u reservations, 144ac338006SXin LI>>>>20 ulelong x payload size: %u bytes, 145ac338006SXin LI>>>>24 ulelong x payload checksum: %#08X 146ac338006SXin LI# No reservation table and code starts at 24 147ac338006SXin LI>>32 ulelong =0 148ac338006SXin LI>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 149ac338006SXin LI>>>4 ulelong =0x9A6F0B0F version 9.0.257.17, 150ac338006SXin LI>>>4 ulelong =0x271D5D1E version 9.0.257.24, 151ac338006SXin LI>>>4 ulelong =0x4EEA75DF version 9.0.257.25, 152ac338006SXin LI>>>4 ulelong =0x80809479 version 9.1.269.36, 153ac338006SXin LI>>>4 ulelong =0x55C46F65 version 9.1.269.38, 154ac338006SXin LI>>>4 ulelong =0x8A9C758A version 9.2.230.21, 155ac338006SXin LI>>>4 ulelong =0x9712F0E1 version 9.3.345.16, 156ac338006SXin LI>>>4 ulelong =0x29593715 version 9.4.146.19, 157ac338006SXin LI>>>4 ulelong =0xCD991825 version 9.4.146.24, 158ac338006SXin LI>>>4 ulelong =0xACDD64EE version 9.4.146.26, 159ac338006SXin LI>>>4 ulelong =0xC96B4CD5 version 9.5.172.21, 160ac338006SXin LI>>>4 ulelong =0xBCCE4578 version 9.5.172.25, 161ac338006SXin LI>>>4 ulelong =0xA2EEA077 version 9.6.180.15, 162ac338006SXin LI>>>4 ulelong =0xFD350011 version 10.1.124.8, 163ac338006SXin LI>>>4 ulelong =0xBEF4028F version 10.2.154.13, 164ac338006SXin LI>>>4 ulelong =0xAF632352 version 10.2.154.4, 165ac338006SXin LI>>>8 ulelong x source size: %u bytes, 166ac338006SXin LI>>>12 ulelong x flag hash: %#08X, 167ac338006SXin LI>>>16 ulelong x payload size: %u bytes, 168ac338006SXin LI>>>20 ulelong x payload checksum: %#08X 169