New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

nv-buf-data-to-code

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nv-buf-data-to-code

nv-buf-data-to-code ======================= - convert a js\_value to js\_code - support most js\_value, but NOT include: function, class, lambda, generator, iterator, promise, weakmap,weakset,weakref-if-deref-failed, native-func - for generate coding-

latest
npmnpm
Version
0.0.6
Version published
Maintainers
1
Created
Source

nv-buf-data-to-code

  • convert a js_value to js_code

  • support most js_value, but NOT include: function, class, lambda, generator, iterator, promise, weakmap,weakset,weakref-if-deref-failed, native-func

  • for generate coding-template AND fast-copy FIXED-DATA

  • this is used for collecting data IN your application, AND then insert the generated code to a DATABASE

  • IF you collected enough, you can use them to creat FIXED-SHAPE-FILE

install

  • npm install nv-buf-data-to-code

usage

nodejs cp ./DIST/nd.js

         const {to_code,to_script) = require("./DIST/nd.js");

         to_code(any_js_value,indent=" ") -> string;

         to_script(any_js_value,write_to_file_name,indent=" ") -> void 

         /*
			> to_script(d,"circular")
			dict_1_1686161646339.js 

			module.exports = ()=>{
			 let dict_1 = {};
			  let ary_2 = [];
			  ary_2.push(dict_1);
			  ary_2.push(-1);
			  ary_2.push(1);
			  ary_2.push(1.1);
			  ary_2.push(1n);
			  ary_2.push("string");
			   let st_8 = new Set();
			   st_8.add(undefined);
			   st_8.add(null);
			   st_8.add(true);
			   st_8.add(false);
			   st_8.add(dict_1);
			   st_8.add(ary_2);
			  ary_2["attr1"] = st_8;
			    let mp_13 = new Map();
			    mp_13.set(dict_1,ary_2);
			    mp_13.set(ary_2,dict_1);
			    mp_13.set(st_8,mp_13);
			    mp_13.set(mp_13,st_8);
			  ary_2["attr2"] = mp_13;
			 dict_1["ary"] = ary_2;
			 return(dict_1);
			}

			TEST# ls -l | egrep dict
			-rw-r--r-- 1 root root  570 Jun  7 18:14 dict_1_1686161646339.js
			TEST# 

			> x=require("./dict_1_1686161646339.js")()
			<ref *1> {
			  ary: <ref *2> [
			    [Circular *1],
			    -1,
			    1,
			    1.1,
			    1n,
			    'string',
			    attr1: Set(6) {
			      undefined,
			      null,
			      true,
			      false,
			      [Circular *1],
			      [Circular *2]
			    },
			    attr2: <ref *3> Map(4) {
			      [Circular *1] => [Circular *2],
			      [Circular *2] => [Circular *1],
			      [Set] => [Circular *3],
			      [Circular *3] => [Set]
			    }
			  ]
			}
			> 

                 
         */

browser cp ./DIST/bw.js global-name is nv_buf_data_to_code

         const {to_code,to_script) = window.nv_buf_data_to_code;

         to_code(any_js_value,name,indent=" ") -> string;

         to_script(any_js_value,name,indent=" ") -> [window_name,creat_func]  
              //this will insert a <script> to window, the prop-name is window_name, the content is creat_func
              //   use  window[window_name]() OR creat_func();

              /*
		nv_buf_data_to_code.to_script(d,"my_data");
		/*
		['dict_1_1686162848224', undefined]


		 var dupe = window.dict_1_1686162848224()

		*/
              */

              IF the browser tell you : Failed to set the 'src' property on 'HTMLScriptElement': This document requires 'TrustedScriptURL' assignment.
                 SO you CANT use .to_script JUST use .to_code AND manual eval("("+code+")") TO test it

for test

        const _creat = require("nv-buf-data-to-code");
             var code = _creat(<js_value>)[1]
             console.log(code)

example

empty-slot-ary-expr-element

	> var a = [,,1,,]
	> a
	[ <2 empty items>, 1, <1 empty item> ]
	> 
	> _creat(a)
	[
	  'ary_1',
	  '\n' +
	    '()=>{\n' +
	    '  let ary_1 = [];\n' +
	    '  ary_1.length =4;\n' +
	    '  ary_1[2] =1;\n' +
	    '  return(ary_1);\n' +
	    '}\n' +
	    '           '
	]
	> console.log(x(a)[1])

	()=>{
	  let ary_1 = [];
	  ary_1.length =4;
	  ary_1[2] =1;
	  return(ary_1);
	}
		   
	> var f = ()=>{
	...   let ary_1 = [];
	...   ary_1.length =4;
	...   ary_1[2] =1;
	...   return(ary_1);
	... }
	> f()
	[ <2 empty items>, 1, <1 empty item> ]
	> 
	> 

circular

		const eq = require("assert").deepStrictEqual;
		const _creat = require("nv-buf-data-to-code");

		const tst = (v) => {
		    var code= _creat(v)[1];
		    console.log(v,":",code);
		    var f = eval("("+code+")")
		    eq(f(),v)
		}


		var d  = {}
		d.ary  = []

		var a = d.ary

		a[0] = d ;
		a.push(-1,1,1.1,1n,"string");

		var st = new Set([undefined,null,true,false])
		var mp = new Map();
		a.attr1 = st;
		a.attr2 = mp;

		mp.set(d,a)
		mp.set(a,d);
		mp.set(st,mp);
		mp.set(mp,st);

		st.add(d);
		st.add(a)

		tst(d)

		/*
		<ref *1> {
		  ary: <ref *2> [
		    [Circular *1],
		    -1,
		    1,
		    1.1,
		    1n,
		    'string',
		    attr1: Set(6) {
		      undefined,
		      null,
		      true,
		      false,
		      [Circular *1],
		      [Circular *2]
		    },
		    attr2: <ref *3> Map(4) {
		      [Circular *1] => [Circular *2],
		      [Circular *2] => [Circular *1],
		      [Set] => [Circular *3],
		      [Circular *3] => [Set]
		    }
		  ]
		}
		*/

                    //---generated code, 

		/*  
		()=>{
		  let dict_1 = {};
		    let ary_2 = [];
		    ary_2.push(dict_1);
		    ary_2.push(-1);
		    ary_2.push(1);
		    ary_2.push(1.1);
		    ary_2.push(1n);
		    ary_2.push("string");
		      let st_8 = new Set();
		      st_8.add(undefined);
		      st_8.add(null);
		      st_8.add(true);
		      st_8.add(false);
		      st_8.add(dict_1);
		      st_8.add(ary_2);
		    ary_2["attr1"] = st_8;
			let mp_13 = new Map();
			mp_13.set(dict_1,ary_2);
			mp_13.set(ary_2,dict_1);
			mp_13.set(st_8,mp_13);
			mp_13.set(mp_13,st_8);
		    ary_2["attr2"] = mp_13;
		  dict_1["ary"] = ary_2;
		  return(dict_1);
		}
		*/

multi array-buffer-view share the-same-array-buffer

			const tst = (v) => {
			    var code= _creat(v)[1];
				console.log(v,":",code);
				console.log("-----------------------------------------------------")
			    var f = eval("("+code+")");
			    var abs = f();
			    let u8a  = new Uint8Array(ab);
			    for(let nv of abs) {
				let nu8a = new Uint8Array(nv.buffer);
				if(u8a.length === nu8a.length) {
				     for(let i=0;i<u8a.length;++i) {
					     if(u8a[i] !== nu8a[i]) {
						     throw([i,u8a[i],nu8a[i]])
						 } else {
						 }
					 }
				} else {
				     throw([u8a.length,nu8a.length])
				}
			    }
			}


			var ab   = new ArrayBuffer(100)
			var u8a  = new Uint8Array(ab,0,2);
			u8a[0] = 1
			u8a[1] = 2

			var u8ca = new Uint8ClampedArray(ab,2,2);   
			u8ca[0] = 3
			u8ca[1] = 4

			var i8a  = new Int8Array(ab,4,2);
			i8a[0] = -1
			i8a[1] = -2

			var u16a  = new Uint16Array(ab,6,2);
			u16a[0] = 65534
			u16a[1] = 65535

			var i16a  = new Int16Array(ab,10,3);
			i16a[0] = -3
			i16a[1] = -4
			i16a[2] = 0

			var u32a  = new Uint32Array(ab,16,2);
			u32a[0] = 2**32-2
			u32a[1] = 2**32-1

			var i32a  = new Int32Array(ab,24,2);
			i32a[0] = -5
			i32a[1] = -6

			var u64a  = new BigUint64Array(ab,32,2);
			u64a[0] = 2n**64n-1n
			u64a[1] = 2n**64n-2n

			var i64a  = new BigInt64Array(ab,48,2);
			i64a[0] = -7n
			i64a[1] = -8n

			var f32a  = new Float32Array(ab,64,2);
			f32a[0] = 1.1
			f32a[1] = -1.1

			var f64a  = new Float64Array(ab,80,2);
			f64a[0] = 2.2
			f64a[1] = 2.2

			var dv = new DataView(ab,96,4);
			dv.setUint32(0,555)

			abs = [u8a,u8ca,i8a,u16a,i16a,u32a,i32a,u64a,i64a,f32a,f64a,dv]

				/*
				[
				  Uint8Array(2) [ 1, 2 ],
				  Uint8ClampedArray(2) [ 3, 4 ],
				  Int8Array(2) [ -1, -2 ],
				  Uint16Array(2) [ 65534, 65535 ],
				  Int16Array(3) [ -3, -4, 0 ],
				  Uint32Array(2) [ 4294967294, 4294967295 ],
				  Int32Array(2) [ -5, -6 ],
				  BigUint64Array(2) [ 18446744073709551615n, 18446744073709551614n ],
				  BigInt64Array(2) [ -7n, -8n ],
				  Float32Array(2) [ 1.100000023841858, -1.100000023841858 ],
				  Float64Array(2) [ 2.2, 2.2 ],
				  DataView {
				    byteLength: 4,
				    byteOffset: 96,
				    buffer: ArrayBuffer {
				      [Uint8Contents]: <01 02 03 04 ff fe fe ff ff ff fd ff fc ff 00 00 fe ff ff ff ff ff ff ff fb ff ff ff fa ff ff ff ff ff ff ff ff ff ff ff fe ff ff ff ff ff ff ff f9 ff ff ff ff ff ff ff f8 ff ff ff ff ff ff ff cd cc 8c 3f cd cc 8c bf 00 00 00 00 00 00 00 00 9a 99 99 99 99 99 01 40 9a 99 99 99 99 99 01 40 00 00 02 2b>,
				      byteLength: 100
				    }
				  }
				]
				*/


			tst(abs);

                             // will generate code as below :

				/*
				()=>{
				  let ary_1 = [];
				    let ab_2 = new ArrayBuffer(100);
				    {
					let _2_ary_for_fill = [1,2,3,4,255,254,254,255,255,255,253,255,252,255,0,0,254,255,255,255,255,255,255,255,251,255,255,255,250,255,255,255,255,255,255,255,255,255,255,255,254,255,255,255,255,255,255,255,249,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,205,204,140,63,205,204,140,191,0,0,0,0,0,0,0,0,154,153,153,153,153,153,1,64,154,153,153,153,153,153,1,64,0,0,2,43];
					let _2_u8a_for_fill = new Uint8Array(ab_2);
					for(let i=0;i<_2_ary_for_fill.length;++i) {
					    _2_u8a_for_fill[i] = _2_ary_for_fill[i];
					}
				    }
				    let u8a_3 = new Uint8Array(ab_2,0,2);
				  ary_1.push(u8a_3);
				    let u8ca_4 = new Uint8ClampedArray(ab_2,2,2);
				  ary_1.push(u8ca_4);
				    let i8a_5 = new Int8Array(ab_2,4,2);
				  ary_1.push(i8a_5);
				    let u16a_6 = new Uint16Array(ab_2,6,2);
				  ary_1.push(u16a_6);
				    let i16a_7 = new Int16Array(ab_2,10,3);
				  ary_1.push(i16a_7);
				    let u32a_8 = new Uint32Array(ab_2,16,2);
				  ary_1.push(u32a_8);
				    let i32a_9 = new Int32Array(ab_2,24,2);
				  ary_1.push(i32a_9);
				    let u64a_10 = new BigUint64Array(ab_2,32,2);
				  ary_1.push(u64a_10);
				    let i64a_11 = new BigInt64Array(ab_2,48,2);
				  ary_1.push(i64a_11);
				    let f32a_12 = new Float32Array(ab_2,64,2);
				  ary_1.push(f32a_12);
				    let f64a_13 = new Float64Array(ab_2,80,2);
				  ary_1.push(f64a_13);
				    let dv_14 = new DataView(ab_2,96,4);
				  ary_1.push(dv_14);
				  return(ary_1);
				}
				*/

errors

			const tst = (v) => {
			    var code= _creat(v)[1];
				console.log(v,":",code);
				console.log("-----------------------------------------------------")
			    var f = eval("("+code+")")
			    var narr = f();
				if(v.length === narr.length) {
				    for(let i=0;i< v.length;++i) {
					    let err = v[i];
						let nerr = narr[i];
						if(
						   err.message === nerr.message &&
						   err.stack   === nerr.stack  &&
						   (err.cause   === nerr.cause) || (JSON.stringify(err.cause) === JSON.stringify(nerr.cause))
						) {
						} else {
						    throw(i)
						}
					}
				} else {
				    throw([v,length,narr.length])
			    }
			}


			var evl_err = new EvalError("evl");
			var rng_err = new RangeError("rng");
			var ref_err = new ReferenceError("ref");
			var uri_err = new URIError("uri");
			var typ_err = new TypeError("typ");
			var agg_errs = new AggregateError([evl_err,rng_err,ref_err,uri_err,typ_err],"agg");
			var err      = new Error("err",{cause:"cause"});

			var errs =[
			    evl_err,rng_err,ref_err,uri_err,typ_err,agg_errs,err
			]

			
                        tst(errs)
                        // will generate code as below :


			/*
			()=>{
			  let ary_1 = [];
			    let evl_err_2 = new EvalError("evl");
			    {
				evl_err_2.stack =
				    "EvalError: evl"                                                          +
				    "    at REPL29:1:15"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(evl_err_2);
			    let rng_err_3 = new RangeError("rng");
			    {
				rng_err_3.stack =
				    "RangeError: rng"                                                         +
				    "    at REPL30:1:15"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(rng_err_3);
			    let ref_err_4 = new ReferenceError("ref");
			    {
				ref_err_4.stack =
				    "ReferenceError: ref"                                                     +
				    "    at REPL31:1:15"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(ref_err_4);
			    let uri_err_5 = new URIError("uri");
			    {
				uri_err_5.stack =
				    "URIError: uri"                                                           +
				    "    at REPL32:1:15"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(uri_err_5);
			    let typ_err_6 = new TypeError("typ");
			    {
				typ_err_6.stack =
				    "TypeError: typ"                                                          +
				    "    at REPL33:1:15"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(typ_err_6);
			    let ary_7 = [];
			    ary_7.push(evl_err_2);
			    ary_7.push(rng_err_3);
			    ary_7.push(ref_err_4);
			    ary_7.push(uri_err_5);
			    ary_7.push(typ_err_6);
			    let agg_err_8 = new AggregateError(ary_7,  "agg");
			    {
				agg_err_8.stack =
				    "AggregateError: agg"                                                     +
				    "    at REPL34:1:16"                                                      +
				    "    at Script.runInThisContext (node:vm:122:12)"                         +
				    "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				    "    at bound (node:domain:433:15)"                                       +
				    "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				    "    at REPLServer.onLine (node:repl:900:10)"                             +
				    "    at REPLServer.emit (node:events:523:35)"                             +
				    "    at REPLServer.emit (node:domain:489:12)"                             +
				    "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				    "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				    "";
			    }
			  ary_1.push(agg_err_8);
			      let err_10 = new Error("err", {cause:"cause"});
			      {
				  err_10.stack =
				      "Error: err"                                                              +
				      "    at REPL35:1:16"                                                      +
				      "    at Script.runInThisContext (node:vm:122:12)"                         +
				      "    at REPLServer.defaultEval (node:repl:570:29)"                        +
				      "    at bound (node:domain:433:15)"                                       +
				      "    at REPLServer.runBound [as eval] (node:domain:444:12)"               +
				      "    at REPLServer.onLine (node:repl:900:10)"                             +
				      "    at REPLServer.emit (node:events:523:35)"                             +
				      "    at REPLServer.emit (node:domain:489:12)"                             +
				      "    at [_onLine] [as _onLine] (node:internal/readline/interface:415:12)" +
				      "    at [_line] [as _line] (node:internal/readline/interface:886:18)"     +
				      "";
			      }
			  ary_1.push(err_10);
			  return(ary_1);
			}
			*/

weakref IF can be deref

		const eq = require("assert").deepStrictEqual;


		const tst = (v) => {
		    var code= _creat(v)[1];
			console.log(v,":",code);
			console.log("-----------------------------------------------------")
		    var f = eval("("+code+")")
		    eq(f(),v)
		}

		var a = [];
		var wkref =new WeakRef(a)

		tst(wkref);

		/*
		()=>{
		  let ary_1 = [];
		  let wkref_ref_can_be_deref_2 = new WeakRef(ary_1);
		  return(wkref_ref_can_be_deref_2);
		}
		*/

odds

  undefined null true false  Infinity NaN -Infinity  -0 (this is special) 


		const eq = require("assert").deepStrictEqual;


		const tst = (v) => {
		    var code= _creat(v)[1];
			console.log(v,":",code);
			console.log("-----------------------------------------------------")
		    var f = eval("("+code+")")
		    eq(f(),v)
		}

		[-0,undefined,null,true,false,Infinity,-Infinity,NaN].forEach(v=>tst(v))

date

	+275760-09-13T00:00:00.000Z : 
	()=>{
	  let dt_1 = new Date("+275760-09-13T00:00:00.000Z");
	  return(dt_1);
	}
		   
	-----------------------------------------------------
	2023-06-07T18:00:44.011Z : 
	()=>{
	  let dt_1 = new Date("2023-06-07T18:00:44.011Z");
	  return(dt_1);
	}
		   
	-----------------------------------------------------
	-271821-04-20T00:00:00.000Z : 
	()=>{
	  let dt_1 = new Date("-271821-04-20T00:00:00.000Z");
	  return(dt_1);
	}

regexp

		/./ : 
		()=>{
		  let rgx_1 = /./;
		  return(rgx_1);
		}
			   
		-----------------------------------------------------
		/.*/gi : 
		()=>{
		  let rgx_1 = /.*/gi;
		  return(rgx_1);
		}
			   
		-----------------------------------------------------

literal :

        number | string | bigint


	const tst = (v) => {
	    var code= _creat(v)[1];
		console.log(v,":",code);
		console.log("-----------------------------------------------------")
	    var f = eval("("+code+")")
	    eq(f(),v)
	}

	[
	   Number.MIN_VALUE,                    Number.MAX_VALUE,
	   Number.MIN_SAFE_INTEGER,             Number.MAX_SAFE_INTEGER,
	   -1, -0, 0, 1,
	   +Infinity,NaN,-Infinity,
	   1.1,
	   ////
	   -1n, 0n, 1n,
	   2n**64n -1n,
	   -(2n**64n), 2n**64n,
	   ////
	   '\b\t\n\\x0b\f\r', 'aÿ我𝑒',
	   ////
	   
	].forEach(v=>tst(v))

prim-wrap

			const tst = (v) => {
			    var code= _creat(v)[1];
				console.log(v,":",code);
				console.log("-----------------------------------------------------")
			    var f = eval("("+code+")")
			    eq(f(),v)
			}


			var truo = new Boolean(true);
			var flso = new Boolean(false);
			var numos = [
			   Number.MIN_VALUE,                    Number.MAX_VALUE,
			   Number.MIN_SAFE_INTEGER,             Number.MAX_SAFE_INTEGER,
			   -1, -0, 0, 1,
			   +Infinity,NaN,-Infinity,
			   1.1
			].map(r=>new Number(r));
			var stros = [
			   '\b\t\n\\x0b\f\r', 'aÿ我𝑒',
			].map(r=>new String(r));


			var primos = [
			   truo,
			   flso, 
			   ...numos,
			   ...stros
			]

			primos.forEach(v=>tst(v))


                            /*
                                 ...
				[Number: -0] : 
				()=>{
				  let numo_1 = new Number(-0);
				  return(numo_1);
				}
                                 ...
                            */

                        

symbol this is special IF using Symbol.for

		const tst = (v) => {
		    var code= _creat(v)[1];
			console.log(v,":",code);
			console.log("-----------------------------------------------------")
		    var f = eval("("+code+")")
		    eq(f().description,v.description)
		}

		var syms = [
		     Symbol(),
			 Symbol.for(),
			 Symbol("sym")
		]

		syms.map(v=>tst(v));

                   /*
			Symbol() : 
			()=>{
			  let sym_1 = Symbol();
			  return(sym_1);
			}
				   
			-----------------------------------------------------
			Symbol(undefined) : 
			()=>{
			  let sym_1 = Symbol("undefined");
			  return(sym_1);
			}
				   
			-----------------------------------------------------
			Symbol(sym) : 
			()=>{
			  let sym_1 = Symbol("sym");
			  return(sym_1);
			}
				   
			-----------------------------------------------------
                   */

unsupported

    other data-type  will be convert to a special object(weakref-cant-be-deref IS belong to unsupported)

          #!node --expose-gc

		const eq = require("assert").deepStrictEqual;

		const _creat = require("../index");

		const tst = (v) => {
		    var code= _creat(v)[1];
			console.log(v,":",code);
			console.log("-----------------------------------------------------")
		}

		var unsupported = []
		var d = {}
		const wkmp = new WeakMap();
		wkmp.set(d,0);
		unsupported.push(wkmp);

		const wkst = new WeakSet();
		wkst.add(d);
		unsupported.push(wkst);




		function sfunc()       {}
		unsupported.push(sfunc);
		async function afunc() {}
		unsupported.push(afunc);

		function * sgen() {}
		unsupported.push(sgen);
		async function * agen(){}
		unsupported.push(agen);

		const slmbd = ()=> {}
		unsupported.push(slmbd);
		const almbd = async()=> {}
		unsupported.push(almbd);

		const native_code = Reflect.isExtensible;
		unsupported.push(native_code);


		const wkref = new WeakRef(d);
		unsupported.push(wkref);

		d= null 
		gc();             // this is for make wkref's reference: d  be released immediately
		gc();


		tst(unsupported)


                    /*
			[
			  WeakMap { <items unknown> },
			  WeakSet { <items unknown> },
			  [Function: sfunc],
			  [AsyncFunction: afunc],
			  [GeneratorFunction: sgen],
			  [AsyncGeneratorFunction: agen],
			  [Function: slmbd],
			  [AsyncFunction: almbd],
			  [Function: isExtensible],
			  WeakRef {}
			] : 
			()=>{
			  let ary_1 = [];
			    let wkmp_2 = {
				___unsupported___:true,
				Ctor:"WeakMap",
				hint:"\"\"",
				str:"\"[object WeakMap]\""
			    };
			  ary_1.push(wkmp_2);
			    let wkst_3 = {
				___unsupported___:true,
				Ctor:"WeakSet",
				hint:"\"\"",
				str:"\"[object WeakSet]\""
			    };
			  ary_1.push(wkst_3);
			    let sfunc_4 = {
				___unsupported___:true,
				Ctor:"Function",
				hint:"\"\"",
				str:"\"function sfunc()       {}\""
			    };
			  ary_1.push(sfunc_4);
			    let almbd_or_amthd_5 = {
				___unsupported___:true,
				Ctor:"AsyncFunction",
				hint:"\"\"",
				str:"\"async function afunc() {}\""
			    };
			  ary_1.push(almbd_or_amthd_5);
			    let agen_6 = {
				___unsupported___:true,
				Ctor:"GeneratorFunction",
				hint:"\"\"",
				str:"\"function * sgen() {}\""
			    };
			  ary_1.push(agen_6);
			    let agen_7 = {
				___unsupported___:true,
				Ctor:"AsyncGeneratorFunction",
				hint:"\"\"",
				str:"\"async function * agen(){}\""
			    };
			  ary_1.push(agen_7);
			    let cls_8 = {
				___unsupported___:true,
				Ctor:"Function",
				hint:"\"maybe_mthd\"",
				str:"\"()=> {}\""
			    };
			  ary_1.push(cls_8);
			    let almbd_or_amthd_9 = {
				___unsupported___:true,
				Ctor:"AsyncFunction",
				hint:"maybe_amthd",
				str:"\"async()=> {}\""
			    };
			  ary_1.push(almbd_or_amthd_9);
			    let native_code_10 = {
				___unsupported___:true,
				Ctor:"Function",
				hint:"\"\"",
				str:"\"function isExtensible() { [native code] }\""
			    };
			  ary_1.push(native_code_10);
			    let dict_11 = {};
			    let wkref_ref_can_be_deref_12 = new WeakRef(dict_11);
			  ary_1.push(wkref_ref_can_be_deref_12);
			  return(ary_1);
			}
                    */

perf

small circular

		var d  = {}
		d.ary  = []

		var a = d.ary

		a[0] = d ;
		a.push(-1,1,1.1,1n,"string");

		var st = new Set([undefined,null,true,false])
		var mp = new Map();
		a.attr1 = st;
		a.attr2 = mp;

		mp.set(d,a)
		mp.set(a,d);
		mp.set(st,mp);
		mp.set(mp,st);

		st.add(d);
		st.add(a)


		const {to_code,to_script}=require("../DIST/nd.js");
		let name = to_script(d);
		const load = require("./"+name);


		const {sync} = require("nv-facutil-simple-test");
		var dupe;

		var from_structured_clone = (o)=> {
		   dupe = structuredClone(o)
		}

		var from_load = (o) => {
		   dupe = load(o)
		}

		const eq = require("assert").deepStrictEqual;
		eq(from_structured_clone(d),from_load(d))


		console.log(sync(1000000,from_structured_clone,d));
		console.log(sync(1000000,from_load,d));

		const fs =require("fs")

		fs.rmSync(name)

                    /*
			{
			  rounds: 1000000,
			  f: [Function: from_structured_clone],
			  costed: 5622.591341018677
			}
			{
			  rounds: 1000000,
			  f: [Function: from_load],
			  costed: 416.41017508506775
			}
                    */  

4k-json

		TEST# ls -l tst.json 
		-rw-r--r-- 1 root root 4041 Jun  7 18:41 tst.json 


		/*
		const d = require("./tst.json")

		const {to_code,to_script}=require("../DIST/nd.js");
		let name = to_script(d);
		const load = require("./"+name);


		const {sync} = require("nv-facutil-simple-test");
		var dupe;

                    var s = JSON.stringify(d); 

		var from_json = (o)=> {
		   dupe = JSON.parse(s)
		}

		var from_load = (o) => {
		   dupe = load(o)
		}

		const eq = require("assert").deepStrictEqual;
		eq(from_json(d),from_load(d))


		console.log(sync(1000000,from_json,d));
		console.log(sync(1000000,from_load,d));

		const fs =require("fs")
		*/


                     /*  ---- generated code
			module.exports = ()=>{
			 let dict_1 = {};
			 dict_1["name"] = "nv-buf-data-to-code";
			 dict_1["lockfileVersion"] = 3;
			 dict_1["requires"] = true;
			  let dict_5 = {};
			   let dict_6 = {};
			    let dict_7 = {};
			    dict_7["nv-facutil-istis"] = "^1.0.8";
			    dict_7["nv-facutil-jswitch"] = "^1.0.10";
			    dict_7["nv-facutil-ppgflike-is"] = "^1.0.3";
			   dict_6["dependencies"] = dict_7;
			     let dict_11 = {};
			     dict_11["nv-facutil-simple-test"] = "^0.0.13";
			   dict_6["devDependencies"] = dict_11;
			  dict_5[""] = dict_6;
			      let dict_13 = {};
			      dict_13["version"] = "3.3.6";
			      dict_13["resolved"] = "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz";
			      dict_13["integrity"] = "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==";
			       let dict_17 = {};
			       dict_17["nanoid"] = "bin/nanoid.cjs";
			      dict_13["bin"] = dict_17;
				let dict_19 = {};
				dict_19["node"] = "^10 || ^12 || ^13.7 || ^14 || >=15.0.1";
			      dict_13["engines"] = dict_19;
			  dict_5["node_modules/nanoid"] = dict_13;
				 let dict_21 = {};
				 dict_21["version"] = "1.0.2";
				 dict_21["resolved"] = "https://registry.npmmirror.com/nv-error-simple-trace/-/nv-error-simple-trace-1.0.2.tgz";
				 dict_21["integrity"] = "sha512-/jXWrcoyGg3r61lDKmJhKYuDlZbxbqBK4RHwsJfeZ7C/9udL1WqpWyiNiEDbAGa1CzqARELaDB37qGlb4Yyx2Q==";
			  dict_5["node_modules/nv-error-simple-trace"] = dict_21;
				  let dict_25 = {};
				  dict_25["version"] = "1.3.20";
				  dict_25["resolved"] = "https://registry.npmmirror.com/nv-facutil-basic/-/nv-facutil-basic-1.3.20.tgz";
				  dict_25["integrity"] = "sha512-eGkAie/avH6ApghzuVApbszkwD8OX9d4u3Vl0pZnm0sV9etwdHn1trAFVTeMzadP9KMANCDI+ICwVY/a/KBKvw==";
				  dict_25["deprecated"] = "all-test-builtin-features-has-been-implemented-in-nvlang_this-is-useless-now";
				   let dict_30 = {};
				   dict_30["nanoid"] = "^3.1.22";
				   dict_30["nv-facutil-notandor"] = "^1.0.5";
				  dict_25["dependencies"] = dict_30;
			  dict_5["node_modules/nv-facutil-basic"] = dict_25;
				    let dict_33 = {};
				    dict_33["version"] = "1.0.8";
				    dict_33["resolved"] = "https://registry.npmjs.org/nv-facutil-istis/-/nv-facutil-istis-1.0.8.tgz";
				    dict_33["integrity"] = "sha512-/BbL8gW/Bv6KeFG5oL5lhxUntPtnYN6OWEJq5iCe2AQ9S+EeD/ubLEYEkwf8nys0XKdda5LiLBYcFfqL1AByog==";
				     let dict_37 = {};
				     dict_37["nv-facutil-simple-test"] = "^0.0.13";
				     dict_37["nv-facutil-typis"] = "^1.0.3";
				    dict_33["dependencies"] = dict_37;
			  dict_5["node_modules/nv-facutil-istis"] = dict_33;
				      let dict_40 = {};
				      dict_40["version"] = "1.0.10";
				      dict_40["resolved"] = "https://registry.npmmirror.com/nv-facutil-jswitch/-/nv-facutil-jswitch-1.0.10.tgz";
				      dict_40["integrity"] = "sha512-9yhta3e+R6antLtJydh0+LmVsicvfSodi1AWaSHNr9OqmJ8b1ECvZZf83rgfdgFh0XenTViRzs/cT0tVrz0X0w==";
				       let dict_44 = {};
				       dict_44["nv-facutil-typis"] = "^1.0.3";
				       dict_44["nv-facutil-untf"] = "^1.0.2";
				      dict_40["dependencies"] = dict_44;
			  dict_5["node_modules/nv-facutil-jswitch"] = dict_40;
					let dict_47 = {};
					dict_47["version"] = "1.0.5";
					dict_47["resolved"] = "https://registry.npmmirror.com/nv-facutil-notandor/-/nv-facutil-notandor-1.0.5.tgz";
					dict_47["integrity"] = "sha512-29H+w/g+VecoxPHtcm3ZNrhZgIDbUeoSbo9i/wvNnOWjfC7em0ZKboOJuLpV4WNUb3v+Z01AdKEz/AIJxIOe8Q==";
			  dict_5["node_modules/nv-facutil-notandor"] = dict_47;
					 let dict_51 = {};
					 dict_51["version"] = "1.0.3";
					 dict_51["resolved"] = "https://registry.npmmirror.com/nv-facutil-ppgflike-is/-/nv-facutil-ppgflike-is-1.0.3.tgz";
					 dict_51["integrity"] = "sha512-LlqYWxCQvtfsYzPUCO4ALGA8yy0m2jn9b3PF5u4sQzMFIXsfROC0sU+PlpDxcvm/B9EAikoKXsp4yez9mhK/DA==";
					  let dict_55 = {};
					  dict_55["nv-facutil-typis"] = "^1.0.5";
					  dict_55["nv-facutil-untf"] = "^1.0.2";
					 dict_51["dependencies"] = dict_55;
			  dict_5["node_modules/nv-facutil-ppgflike-is"] = dict_51;
					   let dict_58 = {};
					   dict_58["version"] = "0.0.13";
					   dict_58["resolved"] = "https://registry.npmjs.org/nv-facutil-simple-test/-/nv-facutil-simple-test-0.0.13.tgz";
					   dict_58["integrity"] = "sha512-0P/iqMrS7XLv4Od0Gfgur+5lVBUqS1fd4Jea9Bqz3rVunnnVuHvV0cOmSb07rq/RUrAw+iESiF70VJl7vYeV7Q==";
					    let dict_62 = {};
					    dict_62["nv-error-simple-trace"] = "^1.0.2";
					    dict_62["nv-facutil-basic"] = "^1.3.20";
					   dict_58["dependencies"] = dict_62;
			  dict_5["node_modules/nv-facutil-simple-test"] = dict_58;
					     let dict_65 = {};
					     dict_65["version"] = "1.0.5";
					     dict_65["resolved"] = "https://registry.npmmirror.com/nv-facutil-typis/-/nv-facutil-typis-1.0.5.tgz";
					     dict_65["integrity"] = "sha512-fnj+3DrNL7OhCSb5xISAOpf+i/zaJbg1ExCPCXWrtWdryyzY23VcjaRdf8Hl2qlmDQocyDg3x235wCcRyhAy8w==";
			  dict_5["node_modules/nv-facutil-typis"] = dict_65;
					      let dict_69 = {};
					      dict_69["version"] = "1.0.2";
					      dict_69["resolved"] = "https://registry.npmmirror.com/nv-facutil-untf/-/nv-facutil-untf-1.0.2.tgz";
					      dict_69["integrity"] = "sha512-gMF6gDLReo/kY4m4SSK7DwJ6ODIYy9WZl0EI6IsIa9czbs1tvOJimJBLNEGJFhsnNVsacf7EGKPrTdPqmclv5Q==";
			  dict_5["node_modules/nv-facutil-untf"] = dict_69;
			 dict_1["packages"] = dict_5;
			 return(dict_1);
			}
                         
                     */ 

                            { rounds: 1000000, f: [Function: from_json], costed: 10820.6332000494 }
                             // 3 times faster
			{
			  rounds: 1000000,
			  f: [Function: from_load],
			  costed: 323.99007296562195
			}

METHODS

APIS

nodejs

         to_code    (value:Any,                            indent=" ") : string;
         to_script  (value:Any, write_to_file_name:string, indent=" ") : void;

browser

         to_code    (value:Any, name:string,               indent=" ") : string;
         to_script  (value:Any, name:string,               indent=" ") : [window_prop_name:string, creat_func:Function] ;

LICENSE

  • ISC

FAQs

Package last updated on 25 Aug 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts