12ae0d66fSchristos 22ae0d66fSchristos#------------------------------------------------------------------------------ 3*e15daa8bSchristos# $File: javascript,v 1.5 2023/01/12 00:02:16 christos Exp $ 42ae0d66fSchristos# javascript: magic for javascript and node.js scripts. 52ae0d66fSchristos# 6*e15daa8bSchristos0 string/tw #!/bin/node Node.js script executable 72ae0d66fSchristos!:mime application/javascript 8*e15daa8bSchristos0 string/tw #!/usr/bin/node Node.js script executable 92ae0d66fSchristos!:mime application/javascript 10*e15daa8bSchristos0 string/tw #!/bin/nodejs Node.js script executable 112ae0d66fSchristos!:mime application/javascript 12*e15daa8bSchristos0 string/tw #!/usr/bin/nodejs Node.js script executable 132ae0d66fSchristos!:mime application/javascript 14*e15daa8bSchristos0 string/t #!/usr/bin/env\ node Node.js script executable 152ae0d66fSchristos!:mime application/javascript 16*e15daa8bSchristos0 string/t #!/usr/bin/env\ nodejs Node.js script executable 172ae0d66fSchristos!:mime application/javascript 18*e15daa8bSchristos 19*e15daa8bSchristos# JavaScript 20*e15daa8bSchristos# The strength is increased to beat the C++ & HTML rules 21*e15daa8bSchristos0 search "use\x20strict" JavaScript source 22*e15daa8bSchristos!:strength +30 23*e15daa8bSchristos!:mime application/javascript 24*e15daa8bSchristos!:ext js 25*e15daa8bSchristos0 search 'use\x20strict' JavaScript source 26*e15daa8bSchristos!:strength +30 27*e15daa8bSchristos!:mime application/javascript 28*e15daa8bSchristos!:ext js 29*e15daa8bSchristos0 regex module(\\.|\\[["'])exports.*= JavaScript source 30*e15daa8bSchristos!:strength +30 31*e15daa8bSchristos!:mime application/javascript 32*e15daa8bSchristos!:ext js 33*e15daa8bSchristos0 regex \^(const|var|let).*=.*require\\( JavaScript source 34*e15daa8bSchristos!:strength +30 35*e15daa8bSchristos!:mime application/javascript 36*e15daa8bSchristos!:ext js 37*e15daa8bSchristos0 regex \^export\x20(function|class|default|const|var|let|async)\x20 JavaScript source 38*e15daa8bSchristos!:strength +30 39*e15daa8bSchristos!:mime application/javascript 40*e15daa8bSchristos!:ext js 41*e15daa8bSchristos0 regex \\((async\x20)?function[(\x20] JavaScript source 42*e15daa8bSchristos!:strength +30 43*e15daa8bSchristos!:mime application/javascript 44*e15daa8bSchristos!:ext js 45*e15daa8bSchristos0 regex \^(import|export).*\x20from\x20 JavaScript source 46*e15daa8bSchristos!:strength +30 47*e15daa8bSchristos!:mime application/javascript 48*e15daa8bSchristos!:ext js 49*e15daa8bSchristos0 regex \^(import|export)\x20["']\\./ JavaScript source 50*e15daa8bSchristos!:strength +30 51*e15daa8bSchristos!:mime application/javascript 52*e15daa8bSchristos!:ext js 53*e15daa8bSchristos0 regex \^require\\(["'] JavaScript source 54*e15daa8bSchristos!:strength +30 55*e15daa8bSchristos!:mime application/javascript 56*e15daa8bSchristos!:ext js 57*e15daa8bSchristos0 regex typeof.*[!=]== JavaScript source 58*e15daa8bSchristos!:strength +30 59*e15daa8bSchristos!:mime application/javascript 60*e15daa8bSchristos!:ext js 61*e15daa8bSchristos 62*e15daa8bSchristos# React Native minified JavaScript 63*e15daa8bSchristos0 search/128 __BUNDLE_START_TIME__= React Native minified JavaScript 64*e15daa8bSchristos!:strength +30 65*e15daa8bSchristos!:mime application/javascript 66*e15daa8bSchristos!:ext bundle/jsbundle 67*e15daa8bSchristos 68eff51ed2Schristos# Hermes by Facebook https://hermesengine.dev/ 69eff51ed2Schristos# https://github.com/facebook/hermes/blob/master/include/hermes/\ 70eff51ed2Schristos# BCGen/HBC/BytecodeFileFormat.h#L24 71eff51ed2Schristos0 lequad 0x1F1903C103BC1FC6 Hermes JavaScript bytecode 72eff51ed2Schristos>8 lelong x \b, version %d 73a77ebd86Schristos 74a77ebd86Schristos# v8 JavaScript engine bytecode 75a77ebd86Schristos# From: Alexandre Iooss <erdnaxe@crans.org> 76a77ebd86Schristos# URL: https://v8.dev/docs/ignition 77a77ebd86Schristos# Note: used in bytenode and NW.js protected source code 78a77ebd86Schristos# V8 bytecode extraction was added in NodeJS v5.7.0 (V8 4.6.85.31). 79a77ebd86Schristos# Version information is provided for some v8 versions found in NodeJS releases. 80a77ebd86Schristos2 uleshort =0xC0DE 81a77ebd86Schristos>0 ulelong^0xC0DE0000 >0 82a77ebd86Schristos# Reservation table starts at 40 83a77ebd86Schristos>>40 ulelong&0xFFFFFF00 =0x80000000 84a77ebd86Schristos# Stub keys present 85a77ebd86Schristos>>>24 ulelong >0 86a77ebd86Schristos>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 87a77ebd86Schristos>>>>4 ulelong =0xEE4BF478 version 5.1.281.111, 88a77ebd86Schristos>>>>4 ulelong =0xC4A0100C version 5.5.372.43, 89a77ebd86Schristos>>>>8 ulelong x source size: %u bytes, 90a77ebd86Schristos>>>>12 ulelong x cpu features: %#08X, 91a77ebd86Schristos>>>>16 ulelong x flag hash: %#08X, 92a77ebd86Schristos>>>>20 ulelong x %u reservations, 93a77ebd86Schristos>>>>28 ulelong x payload size: %u bytes, 94a77ebd86Schristos>>>>32 ulelong x checksum1: %#08X, 95a77ebd86Schristos>>>>36 ulelong x checksum2: %#08X 96a77ebd86Schristos# No stub keys 97a77ebd86Schristos>>>24 ulelong =0 98a77ebd86Schristos>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 99a77ebd86Schristos>>>>4 ulelong =0x54F0AD81 version 6.2.414.46, 100a77ebd86Schristos>>>>4 ulelong =0X7D1BF182 version 6.2.414.54, 101a77ebd86Schristos>>>>4 ulelong =0x35BA122E version 6.2.414.77, 102a77ebd86Schristos>>>>4 ulelong =0X9319F9C2 version 6.2.414.78, 103a77ebd86Schristos>>>>4 ulelong =0xB1240060 version 6.6.346.32, 104a77ebd86Schristos>>>>4 ulelong =0x2B757060 version 6.7.288.46, 105a77ebd86Schristos>>>>4 ulelong =0x09D147AA version 6.7.288.49, 106a77ebd86Schristos>>>>4 ulelong =0xF4D4F48A version 6.8.275.32, 107a77ebd86Schristos>>>>4 ulelong =0xD3961326 version 7.0.276.38, 108a77ebd86Schristos>>>>8 ulelong x source size: %u bytes, 109a77ebd86Schristos>>>>12 ulelong x cpu features: %#08X, 110a77ebd86Schristos>>>>16 ulelong x flag hash: %#08X, 111a77ebd86Schristos>>>>20 ulelong x %u reservations, 112a77ebd86Schristos>>>>28 ulelong x payload size: %u bytes, 113a77ebd86Schristos>>>>32 ulelong x checksum1: %#08X, 114a77ebd86Schristos>>>>36 ulelong x checksum2: %#08X 115a77ebd86Schristos# Reservation table starts at 32 116a77ebd86Schristos>>32 ulelong&0xFFFFFF00 =0x80000000 117a77ebd86Schristos# Second checksum present 118a77ebd86Schristos>>>28 ulelong >0 119a77ebd86Schristos>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 120a77ebd86Schristos>>>>4 ulelong =0x21DDF627 version 7.4.288.21, 121a77ebd86Schristos>>>>4 ulelong =0x1FC9FE84 version 7.4.288.27, 122a77ebd86Schristos>>>>4 ulelong =0x60A99E8B version 7.5.288.22, 123a77ebd86Schristos>>>>4 ulelong =0x4F665E90 version 7.6.303.29, 124a77ebd86Schristos>>>>4 ulelong =0xC7ACFCDE version 7.7.299.11, 125a77ebd86Schristos>>>>4 ulelong =0x7F641D8F version 7.7.299.13, 126a77ebd86Schristos>>>>4 ulelong =0xFD9A4F2E version 7.8.279.17, 127a77ebd86Schristos>>>>4 ulelong =0x3A845324 version 7.8.279.23, 128a77ebd86Schristos>>>>4 ulelong =0xFF52FEAF version 7.9.317.25, 129a77ebd86Schristos>>>>8 ulelong x source size: %u bytes, 130a77ebd86Schristos>>>>12 ulelong x flag hash: %#08X, 131a77ebd86Schristos>>>>16 ulelong x %u reservations, 132a77ebd86Schristos>>>>20 ulelong x payload size: %u bytes, 133a77ebd86Schristos>>>>24 ulelong x checksum1: %#08X, 134a77ebd86Schristos>>>>28 ulelong x checksum2: %#08X 135a77ebd86Schristos# No second checksum 136a77ebd86Schristos>>>28 ulelong =0 137a77ebd86Schristos>>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 138a77ebd86Schristos>>>>4 ulelong =0x8725E0F8 version 8.1.307.30, 139a77ebd86Schristos>>>>4 ulelong =0x09ED1289 version 8.1.307.31, 140a77ebd86Schristos>>>>4 ulelong =0xA5728C87 version 8.3.110.9, 141a77ebd86Schristos>>>>4 ulelong =0xB45C5D30 version 8.4.371.23, 142a77ebd86Schristos>>>>4 ulelong =0xED9C278B version 8.4.371.19, 143a77ebd86Schristos>>>>4 ulelong =0xD27BFF42 version 8.6.395.16, 144a77ebd86Schristos>>>>8 ulelong x source size: %u bytes, 145a77ebd86Schristos>>>>12 ulelong x flag hash: %#08X, 146a77ebd86Schristos>>>>16 ulelong x %u reservations, 147a77ebd86Schristos>>>>20 ulelong x payload size: %u bytes, 148a77ebd86Schristos>>>>24 ulelong x payload checksum: %#08X 149a77ebd86Schristos# No reservation table and code starts at 24 150a77ebd86Schristos>>32 ulelong =0 151a77ebd86Schristos>>>0 ulelong^0xC0DE0000 x v8 bytecode, external reference table size: %u bytes, 152a77ebd86Schristos>>>4 ulelong =0x9A6F0B0F version 9.0.257.17, 153a77ebd86Schristos>>>4 ulelong =0x271D5D1E version 9.0.257.24, 154a77ebd86Schristos>>>4 ulelong =0x4EEA75DF version 9.0.257.25, 155a77ebd86Schristos>>>4 ulelong =0x80809479 version 9.1.269.36, 156a77ebd86Schristos>>>4 ulelong =0x55C46F65 version 9.1.269.38, 157a77ebd86Schristos>>>4 ulelong =0x8A9C758A version 9.2.230.21, 158a77ebd86Schristos>>>4 ulelong =0x9712F0E1 version 9.3.345.16, 159a77ebd86Schristos>>>4 ulelong =0x29593715 version 9.4.146.19, 160a77ebd86Schristos>>>4 ulelong =0xCD991825 version 9.4.146.24, 161a77ebd86Schristos>>>4 ulelong =0xACDD64EE version 9.4.146.26, 162a77ebd86Schristos>>>4 ulelong =0xC96B4CD5 version 9.5.172.21, 163a77ebd86Schristos>>>4 ulelong =0xBCCE4578 version 9.5.172.25, 164a77ebd86Schristos>>>4 ulelong =0xA2EEA077 version 9.6.180.15, 165a77ebd86Schristos>>>4 ulelong =0xFD350011 version 10.1.124.8, 166a77ebd86Schristos>>>4 ulelong =0xBEF4028F version 10.2.154.13, 167a77ebd86Schristos>>>4 ulelong =0xAF632352 version 10.2.154.4, 168a77ebd86Schristos>>>8 ulelong x source size: %u bytes, 169a77ebd86Schristos>>>12 ulelong x flag hash: %#08X, 170a77ebd86Schristos>>>16 ulelong x payload size: %u bytes, 171a77ebd86Schristos>>>20 ulelong x payload checksum: %#08X 172