{"_id":"sdenv","_rev":"3667095","name":"sdenv","description":"补环境框架","dist-tags":{"latest":"0.2.2"},"maintainers":[{"name":"pysunday","email":""}],"time":{"modified":"2025-01-20T02:00:18.000Z","created":"2024-03-10T06:36:39.176Z","0.2.2":"2024-04-16T20:44:43.774Z","0.2.1":"2024-04-15T16:03:11.628Z","0.2.0":"2024-04-15T16:00:10.372Z","0.1.8":"2024-03-30T19:33:26.897Z","0.1.7":"2024-03-30T18:49:49.293Z","0.1.6":"2024-03-30T18:24:43.402Z","0.1.5":"2024-03-30T18:22:44.838Z","0.1.4":"2024-03-30T14:11:41.716Z","0.1.3":"2024-03-30T13:56:08.247Z","0.1.2":"2024-03-12T15:17:13.277Z","0.1.1":"2024-03-10T17:55:16.700Z","0.1.0":"2024-03-10T06:36:39.176Z"},"users":{},"author":{"name":"pysunday"},"repository":{"type":"git","url":"git+https://github.com/pysunday/sdenv.git"},"versions":{"0.2.2":{"name":"sdenv","version":"0.2.2","description":"补环境框架","directories":{"test":"test"},"main":"index.js","scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","repository":{"type":"git","url":"git+https://github.com/pysunday/sdenv.git"},"homepage":"https://github.com/pysunday/sdenv#readme","bugs":{"url":"https://github.com/pysunday/sdenv/issues"},"author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.3.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.2.2","gitHead":"da840d4245e3f04fd344b2a9bdddffc4c675743e","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"f81582e9dab4a2c4e30ec483c6f6f67c99af5ba5","size":13542,"noattachment":false,"key":"/sdenv/-/sdenv-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.2.2.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.2.2_1713300283612_0.97264542680996"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-16T20:44:43.774Z","publish_time":1713300283774,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1713300283774},"0.2.1":{"name":"sdenv","version":"0.2.1","description":"补环境框架","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","repository":{"type":"git","url":"git+https://github.com/pysunday/sdenv.git"},"homepage":"https://github.com/pysunday/sdenv#readme","bugs":{"url":"https://github.com/pysunday/sdenv/issues"},"author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.3.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.2.1","gitHead":"8ea1d8b3eeb04fec5bc9e316f5790830474ebd28","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"4fa2ba92ea3a5d1689a68411e9f48776f5fe6100","size":12248,"noattachment":false,"key":"/sdenv/-/sdenv-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.2.1.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.2.1_1713196991396_0.29057268646100876"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-15T16:03:11.628Z","publish_time":1713196991628,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1713196991628},"0.2.0":{"name":"sdenv","version":"0.2.0","description":"补环境框架","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","repository":{"type":"git","url":"git+https://github.com/pysunday/sdenv.git"},"homepage":"https://github.com/pysunday/sdenv#readme","bugs":{"url":"https://github.com/pysunday/sdenv/issues"},"author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.3.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.2.0","gitHead":"0acd2eaa6f3e273e40a528242e3ecd431b36604f","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"98f0943a6baf53bd6a3d59b5ce24b5522be9d4be","size":12086,"noattachment":false,"key":"/sdenv/-/sdenv-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.2.0.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.2.0_1713196810222_0.42990589107117483"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-04-15T16:00:10.372Z","publish_time":1713196810372,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1713196810372},"0.1.8":{"name":"sdenv","version":"0.1.8","description":"补环境框架","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.8","gitHead":"cd8958bfbb15d8501031999e38e9a9257f0c8086","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"71ab556cd2e9c5cb8544362953810ba483d1d38d","size":11394,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.8.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.8_1711827206669_0.5883979144429312"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T19:33:26.897Z","publish_time":1711827206897,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711827206897},"0.1.7":{"name":"sdenv","version":"0.1.7","description":"补环境框架","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.7","gitHead":"cd8958bfbb15d8501031999e38e9a9257f0c8086","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"2c46bfd5585824b4a6e7f0e7070b7ae39ece3f74","size":11367,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.7.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.7_1711824589114_0.9002175528057412"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T18:49:49.293Z","publish_time":1711824589293,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711824589293},"0.1.6":{"name":"sdenv","version":"0.1.6","description":"补环境框架","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.6","gitHead":"dad4462ed630828363d578da21db8cf9ef7b8efb","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"3a82762256888bfcac2d84b950c916e263288844","size":11067,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.6.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.6_1711823083246_0.6277574753790978"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T18:24:43.402Z","publish_time":1711823083402,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711823083402},"0.1.5":{"name":"sdenv","version":"0.1.5","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"https://github.com/pysunday/sdenv/blob/main/logo.png\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","install":"node-gyp rebuild","release":"release-it"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.5","gitHead":"dad4462ed630828363d578da21db8cf9ef7b8efb","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"ffa48a19b765e491e90e741e96be0bf8fbdb8f64","size":11065,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.5.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.5_1711822964704_0.8152196410161046"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T18:22:44.838Z","publish_time":1711822964838,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711822964838},"0.1.4":{"name":"sdenv","version":"0.1.4","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"logo.png\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","build":"node-gyp rebuild && cp build/Release/documentAll.node ./bin/","build:win":"node-gyp rebuild && copy .\\build\\Release\\documentAll.node .\\bin\\","release":"release-it","install":"node-gyp rebuild"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","node-gyp":"^10.1.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.4","gitHead":"3ed834854bb45f522883458da7754c8d2769fd3c","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"d54fdd2b63e0dc10e1be909b9c9e60be00d675a7","size":10879,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.4.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.4_1711807901557_0.006902160131298629"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T14:11:41.716Z","publish_time":1711807901716,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711807901716},"0.1.3":{"name":"sdenv","version":"0.1.3","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"logo.png\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","build":"node-gyp rebuild && cp build/Release/documentAll.node ./bin/","build:win":"node-gyp rebuild && copy .\\build\\Release\\documentAll.node .\\bin\\","release":"release-it","install":"node-gyp rebuild"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.3","gitHead":"f9ec8221cbeef2ff2591022988fdce2bc414a225","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"72be8d61e30e2c038d780a486357759955cd8c22","size":10870,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.3.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.3_1711806968044_0.23761669924465867"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-30T13:56:08.247Z","publish_time":1711806968247,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1711806968247},"0.1.2":{"name":"sdenv","version":"0.1.2","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"logo.png\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","build":"node-gyp rebuild && cp build/Release/documentAll.node ./bin/","build:win":"node-gyp rebuild && copy .\\build\\Release\\documentAll.node .\\bin\\","release":"release-it","install":"node-gyp rebuild"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.2.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.2","gitHead":"7f424dae64bbafde4b6a4b65679d30481aff8e8a","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"eaab3f0b91f7cb31669e4b2f7d5f613be80b39d5","size":10550,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.2.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.2_1710256633107_0.1865261304575656"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-12T15:17:13.277Z","publish_time":1710256633277,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1710256633277},"0.1.1":{"name":"sdenv","version":"0.1.1","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"logo.png\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","build":"node-gyp rebuild && cp build/Release/documentAll.node ./bin/","build:win":"node-gyp rebuild && copy .\\build\\Release\\documentAll.node .\\bin\\","release":"release-it","install":"node-gyp rebuild"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.1.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.1","gitHead":"a73c01331fa2c2f5c3fa719bf3d29d0562c86986","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"159aae6ec788b03864383a0370d07e860e587088","size":7282,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.1.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.1_1710093316551_0.653807128537294"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-10T17:55:16.700Z","publish_time":1710093316700,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1710093316700},"0.1.0":{"name":"sdenv","version":"0.1.0","description":"<h1 align=\"center\">     <img width=\"100\" height=\"100\" src=\"logo.svg\" alt=\"\"><br>     sdenv </h1>","main":"main.js","directories":{"test":"test"},"scripts":{"test":"jest ./test/","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand ./test/","build":"node-gyp rebuild && cp build/Release/*.node ./bin/","release":"release-it","install":"node-gyp rebuild"},"logLevel":"debug","author":{"name":"pysunday"},"license":"ISC","dependencies":{"bindings":"^1.5.0","canvas":"^2.11.2","jest":"^29.7.0","lodash":"^4.17.21","log4js":"^6.9.1","module-alias":"^2.2.3","node-addon-api":"^7.0.0","sdenv-extend":"^1.1.0","sdenv-jsdom":"^1.1.0"},"devDependencies":{"@release-it/conventional-changelog":"^8.0.1","release-it":"^17.0.1"},"gypfile":true,"jest":{"moduleNameMapper":{"@/(.*)":"<rootDir>/$1","@utils/(.*)":"<rootDir>/utils/$1","@handler/(.*)":"<rootDir>/handler/$1","@bin/(.*)":"<rootDir>/bin/$1"}},"engines":{"node":">=20.10.0"},"_id":"sdenv@0.1.0","gitHead":"09f7e3d17ba6ff29395d9b4dfcc1205f734195a3","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"shasum":"4d20bc48c4b4bb42ed1d89b3f6f6ad03f52da3bb","size":10283,"noattachment":false,"key":"/sdenv/-/sdenv-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/sdenv/download/sdenv-0.1.0.tgz"},"_npmUser":{"name":"pysunday","email":"chinaitlearner@gmail.com"},"maintainers":[{"name":"pysunday","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sdenv_0.1.0_1710052599021_0.6336570312102503"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-03-10T06:36:39.176Z","publish_time":1710052599176,"_source_registry_name":"default","hasInstallScript":true,"_cnpm_publish_time":1710052599176}},"readme":"<h1 align=\"center\">\n    <img width=\"100\" height=\"100\" src=\"https://github.com/pysunday/sdenv/blob/main/logo.png\" alt=\"\"><br>\n    sdenv\n</h1>\n\n[![NPM version](https://badge.fury.io/js/sdenv.svg)](http://badge.fury.io/js/sdenv)\n\n\nsdenv是一个javascript运行时补环境框架，与github上其它补环境框架存在较大区别，sdenv是站在巨人的肩膀上实现的，依赖于jsdom的强大dom仿真能力，sdenv可以真实模拟浏览器执行环境，作者在固定随机数与添加[sdenv-extend](https://github.com/pysunday/sdenv-extend)的部分插件后可以达到**瑞数vmp代码在sdenv运行生成的cookie值与浏览器生成的cookie值一致**。\n\n* sdenv专用jsdom版本：[sdenv-jsdom](https://github.com/pysunday/sdenv-jsdom)\n* sdenv多端环境提取：[sdenv-extend](https://github.com/pysunday/sdenv-extend)\n* 对瑞数算法逆向可参考项目：[rs-reverse](https://github.com/pysunday/rs-reverse)\n\n## 依赖\n\n作者开发时使用的是`v20.10.0`版本node，预期最低要求是18版本，由于未做其它版本可用性测试，因此建议使用sdenv的node版本大于等于`v20.10.0`。\n\n编译node插件用的是[node-gyp](https://github.com/nodejs/node-gyp)工具，该工具需要有python环境和c环境(如windows系统需安装Visual Studio，Mac系统需要安装XCode)，请根据[工具文档](https://github.com/nodejs/node-gyp)进行系统环境搭建。\n\n**需要注意windows中安装Visual Studio时需要勾选`使用C++的桌面开发`选项**\n\n![安装Visual Studio注意](https://github.com/pysunday/sdenv/blob/main/static/vs-tip.png)\n\n## 可能出现的问题\n\n1. npm安装node-gyp报错：请确保操作系统有c++编译环境与python环境，报错示例（感谢用户风流小混沌提供图片素材）:\n![npm安装报错](https://github.com/pysunday/sdenv/blob/main/static/install-error.jpeg)\n2. 安装缓慢及canvas报错：由于canvas安装会优先从github获取现成的包，因此请在安装前先设置代理或者其它国内源，如果安装仍然失败请使用npm官方源+代理方式重新尝试；\n\n**解决完报错后记得重新执行下依赖安装！**\n\n有其它问题请提issues！\n\n## 使用\n\n### npm包使用\n\n1. 创建自己的项目\n2. 项目中安装sdenv：`npm i sdenv`（请确保安装没有报错）\n3. 在项目中导入api并使用（可以参考example目录下的用例）：\n```javascript\nconst { jsdomFromText, jsdomFromUrl, browser } = require('sdenv');\n```\n\n### 样例代码运行\n\nclone项目仓库后执行依赖安装`npm i`，确保依赖安装成功后即可运行example目录下的样例文件了。\n\n注意：样例代码仅供参考，作者建议使用npm包方式使用sdenv框架!\n\n1. 运行本地代码：[use-local](./example/use-local/README.md)\n    ![样例调用](https://github.com/pysunday/sdenv/blob/main/static/example-use-local.png)\n2. 运行网站代码：[use-remote](./example/use-remote/README.md)\n    ![样例调用](https://github.com/pysunday/sdenv/blob/main/static/example-use-remote.png)\n\n## API\n\nsdenv设计极其简单，它的核心API只有一个，即browser！\n\n### browser(window: object, type: string)\n\n传入window对象，和需要拟真的浏览器类型，browser方法会自动将浏览器特性集成到window对象中。\n\n```javascript\nconst { browser } = require('sdenv');\n...\nbrowser(window, 'chrome')\n```\n\n浏览器类型及支持情况：\n\n类型 | 是否支持\n---- | --------\nChrome | Y\nFirefox | N\nSafari | N\n\n### jsdomFromText(config: object)\n\n返回回调方法，用于纯文本方式调用jsdom，第一个参数为配置对象，最终会作为第二个参数传入到jsdom中。\n\n```javascript\nconst { Script } = require(\"vm\");\nconst { jsdomFromText } = require('sdenv');\nconst [jsdomer, cookieJar] = jsdomFromText({\n    url: 'https://host/path',\n    referrer: 'https://host/path',\n    contentType: \"text/html\",\n    runScripts: \"outside-only\", // 不会执行html文本中的js代码\n})\nconst dom = jsdomer('<html>...</html>');\nnew Script('javascript代码').runInContext(dom.getInternalVMContext()); // 执行javascript代码\nconsole.log('cookie值：', cookieJar.getCookieStringSync('https://host'));\n```\n\n进一步阅读：\n\n[jsdom的JSDOM API](https://github.com/jsdom/jsdom?tab=readme-ov-file#customizing-jsdom)\n\n### jsdomFromUrl(config?: object, cookieJar?: CookieJar)\n\n返回回调方法用于链接形式调用jsdom，第一个参数为配置对象，与jsdomFromText方法不同，该配置对象用于配置ResourceLoader，建议至少传入ua值，否则请求header中的ua内容会有jsdom标识，需要注意的是，该ua仅在jsdom层使用，cookieJar非必传，当需要延续cookie时需要传入。\n\n```javascript\nconst { jsdomFromUrl } = require('sdenv');\nconst config = { userAgent: 'native browser userAgent' };\nconst [jsdomer, cookieJar] = jsdomFromUrl(config); // 返回自动生成的cookieJar\nconst oneDom = await jsdomer('https://host/path');\nconst twoDom = await jsdomFromUrl(config, cookieJar)[0]('https://host/path'); // 使用已经存在的cookieJar，因为要沿用上一次产生的cookie\nconsole.log('cookie值：', cookieJar.getCookieStringSync('https://host'));\n```\n\n进一步阅读：\n\n[jsdom的ResourceLoader API](https://github.com/jsdom/jsdom?tab=readme-ov-file#advanced-configuration)\n\n[jsdom的CookieJar API](https://github.com/jsdom/jsdom?tab=readme-ov-file#cookie-jars)\n\n[jsdom的fromURL API](https://github.com/jsdom/jsdom?tab=readme-ov-file#fromurl)\n\n## sdenv-extend使用说明\n\n为了模拟浏览器执行环境，需要将node环境与浏览器环境共有代码进行提取，并提供返回环境对象用于sdenv内window与dom内容补充使用。\n\nsdenv-extend具体功能可参考项目内[README文档](https://github.com/pysunday/sdenv-extend/blob/main/README.md)。\n\n## sdenv-jsdom使用说明\n\nsdenv-jsdom包是sdenv补环境框架能运行瑞数vmp网站并产生正确cookie的核心，该包仓库fork自jsdom仓库，并应对瑞数vmp对jsdom的检测做了代码修改，因此sdenv可以过网站对jsdom的检测!\n\n## 声明\n\n该项目的开发基于瑞数vmp网站，不能保证在其它反爬虫产品稳定使用，出现问题请及时提issues或者提pull参与共建!\n\n添加作者微信进技术交流群：howduudu_tech(备注sdenv)\n\n订阅号不定时发表版本动态及技术文章：码功\n\n<img src=\"https://github.com/pysunday/sdenv/raw/main/static/qrcode.png\" alt=\"订阅号：码功\" width=\"320\">\n","_attachments":{},"homepage":"https://github.com/pysunday/sdenv#readme","bugs":{"url":"https://github.com/pysunday/sdenv/issues"},"license":"ISC"}