1
0
mirror of synced 2025-12-08 14:54:02 +08:00

Add: Sauce labs

This commit is contained in:
surunzi
2017-11-10 22:05:21 +08:00
parent 5cde181486
commit 03df2f2584
9 changed files with 491 additions and 112 deletions

View File

@@ -3,6 +3,7 @@ node_js:
- "8"
addons:
chrome: stable
sauce_connect: true
before_script:
- npm install -g codecov
script:
@@ -10,3 +11,4 @@ script:
after_script:
- npm run cov
- codecov --disable=gcov
- npm run test:sauce

View File

@@ -50,7 +50,6 @@ module.exports = function (config)
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['ChromeHeadless'],
singleRun: true,
concurrency: Infinity

65
karma.sauce.js Normal file
View File

@@ -0,0 +1,65 @@
module.exports = function (config)
{
var customLaunchers = {
sl_ios_safari_8: {
base: 'SauceLabs',
browserName: 'iphone',
version: '8.4'
},
sl_ios_safari_9: {
base: 'SauceLabs',
browserName: 'iphone',
version: '9.3'
},
sl_android_4_4: {
base: 'SauceLabs',
browserName: 'android',
version: '4.4'
},
sl_android_5_1: {
base: 'SauceLabs',
browserName: 'android',
version: '5.1'
}
};
config.set({
basePath: '',
frameworks: ['jquery-1.8.3'],
files: [
'eruda.js',
'test/init.js',
'node_modules/jasmine-core/lib/jasmine-core/jasmine.js',
'node_modules/karma-jasmine/lib/boot.js',
'node_modules/karma-jasmine/lib/adapter.js',
'node_modules/jasmine-jquery/lib/jasmine-jquery.js',
'test/util.js',
'test/console.js',
'test/elements.js',
'test/features.js',
'test/info.js',
'test/network.js',
'test/resources.js',
'test/snippets.js',
'test/sources.js',
'test/settings.js',
'test/eruda.js'
],
plugins: [
'karma-jasmine',
'karma-jquery',
'karma-sauce-launcher'
],
reporters: ['dots', 'saucelabs'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
sauceLabs: {
testName: 'eruda'
},
captureTimeout: 120000,
customLaunchers: customLaunchers,
browsers: Object.keys(customLaunchers),
singleRun: true
});
};

390
package-lock.json generated
View File

@@ -60,12 +60,36 @@
}
}
},
"adm-zip": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz",
"integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=",
"dev": true
},
"after": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
"integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
"dev": true
},
"agent-base": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
"integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
"dev": true,
"requires": {
"extend": "3.0.1",
"semver": "5.0.3"
},
"dependencies": {
"semver": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
"integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
"dev": true
}
}
},
"ajv": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz",
@@ -176,6 +200,48 @@
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true
},
"archiver": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz",
"integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=",
"dev": true,
"requires": {
"archiver-utils": "1.3.0",
"async": "2.6.0",
"buffer-crc32": "0.2.13",
"glob": "7.1.2",
"lodash": "4.17.4",
"readable-stream": "2.3.3",
"tar-stream": "1.5.4",
"walkdir": "0.0.11",
"zip-stream": "1.2.0"
},
"dependencies": {
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"dev": true,
"requires": {
"lodash": "4.17.4"
}
}
}
},
"archiver-utils": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
"integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
"dev": true,
"requires": {
"glob": "7.1.2",
"graceful-fs": "4.1.11",
"lazystream": "1.0.0",
"lodash": "4.17.4",
"normalize-path": "2.1.1",
"readable-stream": "2.3.3"
}
},
"are-we-there-yet": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
@@ -1126,6 +1192,15 @@
"integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
"dev": true
},
"bl": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
"integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
}
},
"blob": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
@@ -1312,6 +1387,12 @@
"isarray": "1.0.0"
}
},
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
"buffer-indexof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
@@ -1725,6 +1806,18 @@
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
"dev": true
},
"compress-commons": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
"integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
"dev": true,
"requires": {
"buffer-crc32": "0.2.13",
"crc32-stream": "2.0.0",
"normalize-path": "2.1.1",
"readable-stream": "2.3.3"
}
},
"compressible": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz",
@@ -1914,6 +2007,22 @@
}
}
},
"crc": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
"integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
"dev": true
},
"crc32-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
"integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
"dev": true,
"requires": {
"crc": "3.5.0",
"readable-stream": "2.3.3"
}
},
"create-ecdh": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
@@ -2613,6 +2722,15 @@
"integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
"dev": true
},
"end-of-stream": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
"dev": true,
"requires": {
"once": "1.4.0"
}
},
"engine.io": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
@@ -3634,6 +3752,21 @@
"globule": "1.2.0"
}
},
"generate-function": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
"integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
"dev": true
},
"generate-object-property": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"dev": true,
"requires": {
"is-property": "1.0.2"
}
},
"get-caller-file": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
@@ -4197,6 +4330,17 @@
"integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
"dev": true
},
"https-proxy-agent": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
"integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
"dev": true,
"requires": {
"agent-base": "2.1.1",
"debug": "2.6.9",
"extend": "3.0.1"
}
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
@@ -4532,6 +4676,18 @@
"is-extglob": "1.0.0"
}
},
"is-my-json-valid": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
"integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
"dev": true,
"requires": {
"generate-function": "2.0.0",
"generate-object-property": "1.2.0",
"jsonpointer": "4.0.1",
"xtend": "4.0.1"
}
},
"is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
@@ -4617,6 +4773,12 @@
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
},
"is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
"dev": true
},
"is-regex": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
@@ -4911,6 +5073,12 @@
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
"jsonpointer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -5038,6 +5206,18 @@
"integrity": "sha1-a+6TRU2LCWvMeBVXCoHnP93bXW8=",
"dev": true
},
"karma-sauce-launcher": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz",
"integrity": "sha512-lEhtGRGS+3Yw6JSx/vJY9iQyHNtTjcojrSwNzqNUOaDceKDu9dPZqA/kr69bUO9G2T6GKbu8AZgXqy94qo31Jg==",
"dev": true,
"requires": {
"q": "1.5.0",
"sauce-connect-launcher": "1.2.3",
"saucelabs": "1.4.0",
"wd": "1.4.1"
}
},
"karma-sourcemap-loader": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz",
@@ -5119,6 +5299,15 @@
"set-getter": "0.1.0"
}
},
"lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
}
},
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
@@ -9216,6 +9405,39 @@
}
}
},
"sauce-connect-launcher": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-1.2.3.tgz",
"integrity": "sha1-0vkxrXro/avxlopEDnsgQXrKf4Y=",
"dev": true,
"requires": {
"adm-zip": "0.4.7",
"async": "2.6.0",
"https-proxy-agent": "1.0.0",
"lodash": "4.17.4",
"rimraf": "2.6.2"
},
"dependencies": {
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"dev": true,
"requires": {
"lodash": "4.17.4"
}
}
}
},
"saucelabs": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.4.0.tgz",
"integrity": "sha1-uTSpr52ih0s/QKrh/N5QpEZvXzg=",
"dev": true,
"requires": {
"https-proxy-agent": "1.0.0"
}
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -9967,6 +10189,18 @@
"inherits": "2.0.3"
}
},
"tar-stream": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz",
"integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=",
"dev": true,
"requires": {
"bl": "1.2.1",
"end-of-stream": "1.4.0",
"readable-stream": "2.3.3",
"xtend": "4.0.1"
}
},
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -10404,6 +10638,12 @@
"spdx-expression-parse": "1.0.4"
}
},
"vargs": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz",
"integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=",
"dev": true
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -10461,6 +10701,12 @@
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
"dev": true
},
"walkdir": {
"version": "0.0.11",
"resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
"integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
"dev": true
},
"watchpack": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
@@ -10492,6 +10738,138 @@
"minimalistic-assert": "1.0.0"
}
},
"wd": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/wd/-/wd-1.4.1.tgz",
"integrity": "sha512-C0wWd2X4SWWcyx5qxaixiZE4Vb07sl0yDfWHPeml8lDHSbmI9erE9BmTHIqOGoDxGgJ3/hkFmODQ7ZLKiF8+8Q==",
"dev": true,
"requires": {
"archiver": "1.3.0",
"async": "2.0.1",
"lodash": "4.16.2",
"mkdirp": "0.5.1",
"q": "1.4.1",
"request": "2.79.0",
"underscore.string": "3.3.4",
"vargs": "0.1.0"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"async": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz",
"integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=",
"dev": true,
"requires": {
"lodash": "4.16.2"
}
},
"caseless": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
"integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"har-validator": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
"integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
"dev": true,
"requires": {
"chalk": "1.1.3",
"commander": "2.11.0",
"is-my-json-valid": "2.16.1",
"pinkie-promise": "2.0.1"
}
},
"lodash": {
"version": "4.16.2",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz",
"integrity": "sha1-PmJtuCcEimmSgaihJSJjJs/A5lI=",
"dev": true
},
"q": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
"integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
"dev": true
},
"qs": {
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
"integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
"dev": true
},
"request": {
"version": "2.79.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
"integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
"dev": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"caseless": "0.11.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.1.4",
"har-validator": "2.0.6",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"qs": "6.3.2",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.4.3",
"uuid": "3.1.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
},
"tunnel-agent": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
"integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
"dev": true
},
"underscore.string": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
"integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
"dev": true,
"requires": {
"sprintf-js": "1.0.3",
"util-deprecate": "1.0.2"
}
}
}
},
"webpack": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.7.1.tgz",
@@ -11047,6 +11425,18 @@
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
"dev": true
},
"zip-stream": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
"integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
"dev": true,
"requires": {
"archiver-utils": "1.3.0",
"compress-commons": "1.2.2",
"lodash": "4.17.4",
"readable-stream": "2.3.3"
}
}
}
}

View File

@@ -9,6 +9,7 @@
"cov": "npm run test && remap-istanbul -i coverage/coverage-final.json -o coverage/coverage-remapped.json -t json && node script/coverage",
"dev": "webpack-dev-server --config script/webpack.dev.js --host 0.0.0.0",
"test": "karma start",
"test:sauce": "karma start karma.sauce.js",
"lint": "eslint src",
"setup": "node script/cpTestLib",
"genScriptUtil": "eustia build script/*.js -o script/util.js",
@@ -27,11 +28,12 @@
},
"test": {
"files": [
"test/**/*.js",
"test/**/*.html"
"test/*.js",
"test/*.html"
],
"output": "test/util.js",
"format": "global"
"exclude": ["js"],
"namespace": "util",
"output": "test/util.js"
}
},
"repository": {
@@ -72,6 +74,7 @@
"karma-coverage": "^1.1.1",
"karma-jasmine": "^1.1.0",
"karma-jquery": "^0.2.2",
"karma-sauce-launcher": "^1.2.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-sourcemap-writer": "^0.1.2",
"karma-webpack": "^2.0.5",

View File

@@ -18,8 +18,6 @@ export default class Resources extends Tool
this._stylesheetData = [];
this._imageData = [];
this._tpl = require('./Resources.hbs');
this._observeScript()
}
init($el, parent)
{
@@ -30,6 +28,7 @@ export default class Resources extends Tool
this.refresh();
this._bindEvent();
this._initCfg();
this._observeScript();
}
refresh()
{
@@ -45,8 +44,7 @@ export default class Resources extends Tool
super.destroy();
util.evalCss.remove(this._style);
this._unobserveScript()
this._unobserveScript();
}
refreshScript()
{
@@ -355,20 +353,25 @@ export default class Resources extends Tool
}
_observeScript()
{
let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
let MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if (!MutationObserver) return;
this._scriptObserver = new MutationObserver(mutations =>
{
if (!this.active) return;
mutations.forEach(mutation =>
{
mutation.addedNodes.forEach(node => {
mutation.addedNodes.forEach(node =>
{
if (/^script$/i.test(node.tagName) && node.src !== '')
{
this._scriptData.push(node.src);
this._scriptData = util.unique(this._scriptData);
this._render();
}
});
this._scriptData = util.unique(this._scriptData);
this._render();
});
});
@@ -377,7 +380,7 @@ export default class Resources extends Tool
}
_unobserveScript()
{
this._scriptObserver.disconnect();
if (this._scriptObserver) this._scriptObserver.disconnect();
}
}

View File

@@ -13,7 +13,7 @@ describe('network', function ()
it('xhr', function (done)
{
$('.eruda-clear-xhr').click();
_.ajax.get(window.location.toString(), function ()
util.ajax.get(window.location.toString(), function ()
{
expect($('.eruda-requests li')).toHaveLength(1);
done();

View File

@@ -46,7 +46,7 @@ describe('resources', function ()
{
it('show', function ()
{
_.cookie.set('testKey', 'testVal');
util.cookie.set('testKey', 'testVal');
$tool.find('.eruda-refresh-cookie').click();
expect($tool.find('.eruda-cookie')).toContainText('testKey');
});

View File

@@ -1,9 +1,18 @@
// Built by eustia.
window._ = (function()
(function(root, factory)
{
if (typeof define === 'function' && define.amd)
{
define([], factory);
} else if (typeof module === 'object' && module.exports)
{
module.exports = factory();
} else { root.util = factory(); }
}(this, function ()
{
var _ = {};
if (typeof window === 'object' && window._) _ = window._;
if (typeof window === 'object' && window.util) _ = window.util;
/* ------------------------------ noop ------------------------------ */
@@ -172,38 +181,6 @@ window._ = (function()
return exports;
})();
/* ------------------------------ toStr ------------------------------ */
var toStr = _.toStr = (function ()
{
/* Convert value to a string.
*
* |Name |Type |Desc |
* |------|------|----------------|
* |val |* |Value to convert|
* |return|string|Resulted string |
*
* ```javascript
* toStr(null); // -> ''
* toStr(1); // -> '1'
* toStr(false); // -> 'false'
* toStr([1, 2, 3]); // -> '1,2,3'
* ```
*/
/* module
* env: all
* test: all
*/
function exports(val)
{
return val == null ? '' : val.toString();
}
return exports;
})();
/* ------------------------------ has ------------------------------ */
var has = _.has = (function ()
@@ -491,7 +468,7 @@ window._ = (function()
var each = _.each = (function ()
{
/* Iterates over elements of collection and invokes iteratee for each element.
/* Iterate over elements of collection and invokes iteratee for each element.
*
* |Name |Type |Desc |
* |--------|------------|------------------------------|
@@ -1105,66 +1082,6 @@ window._ = (function()
return exports;
})();
/* ------------------------------ evalCss ------------------------------ */
_.evalCss = (function ()
{
/* dependencies
* toStr each filter
*/
var styleList = [],
scale = 1;
function exports(css)
{
css = toStr(css);
for (var i = 0, len = styleList.length; i < len; i++)
{
if (styleList[i].css === css) return;
}
let container = exports.container || document.head,
el = document.createElement('style');
el.type = 'text/css';
container.appendChild(el);
let style = {css, el, container};
resetStyle(style);
styleList.push(style);
return style;
}
exports.setScale = function (s)
{
scale = s;
each(styleList, style => resetStyle(style));
};
exports.clear = function ()
{
each(styleList, ({container, el}) => container.removeChild(el));
styleList = [];
};
exports.remove = function (style)
{
styleList = filter(styleList, s => s !== style);
style.container.removeChild(style.el);
};
function resetStyle({css, el})
{
el.innerText = css.replace(/(\d+)px/g, ($0, $1) => (+$1 * scale) + 'px');
}
return exports;
})();
/* ------------------------------ map ------------------------------ */
var map = _.map = (function ()
@@ -1579,4 +1496,4 @@ window._ = (function()
})();
return _;
})();
}));